Mercurial > libavcodec.hg
changeset 918:f9e54ade14a1 libavcodec
aspect ratio encoding for mpeg1
author | michaelni |
---|---|
date | Fri, 06 Dec 2002 16:19:25 +0000 |
parents | d3aa313dc373 |
children | c87eee6da7b1 |
files | mpeg12.c |
diffstat | 1 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mpeg12.c Fri Dec 06 16:04:30 2002 +0000 +++ b/mpeg12.c Fri Dec 06 16:19:25 2002 +0000 @@ -131,8 +131,12 @@ { 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 @@ 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)