aspect ratio encoding for mpeg1
Originally committed as revision 1319 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
945f15b740
commit
426b80615b
@ -131,8 +131,12 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
|
||||
{
|
||||
unsigned int vbv_buffer_size;
|
||||
unsigned int fps, v;
|
||||
int n;
|
||||
int n, i;
|
||||
UINT64 time_code;
|
||||
float best_aspect_error= 1E10;
|
||||
float aspect_ratio= s->avctx->aspect_ratio;
|
||||
|
||||
if(aspect_ratio==0.0) aspect_ratio= s->width / (float)s->height; //pixel aspect 1:1 (VGA)
|
||||
|
||||
if (s->current_picture.key_frame) {
|
||||
/* mpeg1 header repeated every gop */
|
||||
@ -154,7 +158,18 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s)
|
||||
|
||||
put_bits(&s->pb, 12, s->width);
|
||||
put_bits(&s->pb, 12, s->height);
|
||||
put_bits(&s->pb, 4, 1); /* 1/1 aspect ratio */
|
||||
|
||||
for(i=1; i<15; i++){
|
||||
float error= mpeg1_aspect[i] - s->width/(s->height*aspect_ratio);
|
||||
error= ABS(error);
|
||||
|
||||
if(error < best_aspect_error){
|
||||
best_aspect_error= error;
|
||||
s->aspect_ratio_info= i;
|
||||
}
|
||||
}
|
||||
|
||||
put_bits(&s->pb, 4, s->aspect_ratio_info);
|
||||
put_bits(&s->pb, 4, s->frame_rate_index);
|
||||
v = s->bit_rate / 400;
|
||||
if (v > 0x3ffff)
|
||||
|
Loading…
Reference in New Issue
Block a user