Mercurial > libavcodec.hg
diff h263.c @ 697:c622224012f0 libavcodec
mpeg4 interlaced dct encoding
author | michaelni |
---|---|
date | Thu, 26 Sep 2002 00:22:25 +0000 |
parents | 3525da287ee2 |
children | e050a053e259 |
line wrap: on
line diff
--- a/h263.c Tue Sep 24 23:57:17 2002 +0000 +++ b/h263.c Thu Sep 26 00:22:25 2002 +0000 @@ -458,6 +458,13 @@ put_bits(&s->pb, 1, 0); }else s->qscale -= s->dquant; + + if(!s->progressive_sequence){ + if(cbp) + put_bits(&s->pb, 1, s->interlaced_dct); + if(mb_type) // not diect mode + put_bits(&s->pb, 1, 0); // no interlaced ME yet + } if(interleaved_stats){ bits= get_bit_count(&s->pb); @@ -580,6 +587,12 @@ put_bits(pb2, cbpy_tab[cbpy][1], cbpy_tab[cbpy][0]); if(s->dquant) put_bits(pb2, 2, dquant_code[s->dquant+2]); + + if(!s->progressive_sequence){ + if(cbp) + put_bits(pb2, 1, s->interlaced_dct); + put_bits(pb2, 1, 0); // no interlaced ME yet + } if(interleaved_stats){ bits= get_bit_count(&s->pb); @@ -701,6 +714,10 @@ if(s->dquant) put_bits(dc_pb, 2, dquant_code[s->dquant+2]); + if(!s->progressive_sequence){ + put_bits(dc_pb, 1, s->interlaced_dct); + } + if(interleaved_stats){ bits= get_bit_count(&s->pb); s->misc_bits+= bits - s->last_bits; @@ -1511,7 +1528,7 @@ put_bits(&s->pb, 1, 1); /* marker bit */ put_bits(&s->pb, 13, s->height); /* vol height */ put_bits(&s->pb, 1, 1); /* marker bit */ - put_bits(&s->pb, 1, 0); /* interlace */ + put_bits(&s->pb, 1, s->progressive_sequence ? 0 : 1); put_bits(&s->pb, 1, 1); /* obmc disable */ if (vo_ver_id == 1) { put_bits(&s->pb, 1, s->vol_sprite_usage=0); /* sprite enable */ @@ -1586,6 +1603,10 @@ put_bits(&s->pb, 1, s->no_rounding); /* rounding type */ } put_bits(&s->pb, 3, 0); /* intra dc VLC threshold */ + if(!s->progressive_sequence){ + put_bits(&s->pb, 1, s->top_field_first); + put_bits(&s->pb, 1, s->alternate_scan); + } //FIXME sprite stuff put_bits(&s->pb, 5, s->qscale); @@ -4215,7 +4236,7 @@ check_marker(&s->gb, "before time_increment"); time_increment= get_bits(&s->gb, s->time_increment_bits); -//printf(" type:%d incr:%d increment:%d\n", s->pict_type, time_incr, time_increment); +//printf(" type:%d modulo_time_base:%d increment:%d\n", s->pict_type, time_incr, time_increment); if(s->pict_type!=B_TYPE){ s->last_time_base= s->time_base; s->time_base+= time_incr;