Mercurial > libavcodec.hg
changeset 2214:de5ed621effc libavcodec
try to select w/h from tables
author | alex |
---|---|
date | Wed, 08 Sep 2004 17:57:25 +0000 |
parents | c17d0cbbdf66 |
children | 2a767157935e |
files | svq1.c |
diffstat | 1 files changed, 18 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/svq1.c Wed Sep 08 10:07:08 2004 +0000 +++ b/svq1.c Wed Sep 08 17:57:25 2004 +0000 @@ -880,6 +880,8 @@ static void svq1_write_header(SVQ1Context *s, int frame_type) { + int i; + /* frame code */ put_bits(&s->pb, 22, 0x20); @@ -898,12 +900,22 @@ /* output 5 unknown bits (2 + 2 + 1) */ put_bits(&s->pb, 5, 0); - /* forget about matching up resolutions, just use the free-form - * resolution code (7) for now */ - put_bits(&s->pb, 3, 7); - put_bits(&s->pb, 12, s->frame_width); - put_bits(&s->pb, 12, s->frame_height); - + for (i = 0; i < 7; i++) + { + if ((svq1_frame_size_table[i].width == s->frame_width) && + (svq1_frame_size_table[i].height == s->frame_height)) + { + put_bits(&s->pb, 3, i); + break; + } + } + + if (i == 7) + { + put_bits(&s->pb, 3, 7); + put_bits(&s->pb, 12, s->frame_width); + put_bits(&s->pb, 12, s->frame_height); + } } /* no checksum or extra data (next 2 bits get 0) */