Mercurial > libavcodec.hg
comparison h263.c @ 697:c622224012f0 libavcodec
mpeg4 interlaced dct encoding
author | michaelni |
---|---|
date | Thu, 26 Sep 2002 00:22:25 +0000 |
parents | 3525da287ee2 |
children | e050a053e259 |
comparison
equal
deleted
inserted
replaced
696:477bcb3b2f0a | 697:c622224012f0 |
---|---|
456 put_bits(&s->pb, 2, (s->dquant>>2)+3); | 456 put_bits(&s->pb, 2, (s->dquant>>2)+3); |
457 else | 457 else |
458 put_bits(&s->pb, 1, 0); | 458 put_bits(&s->pb, 1, 0); |
459 }else | 459 }else |
460 s->qscale -= s->dquant; | 460 s->qscale -= s->dquant; |
461 | |
462 if(!s->progressive_sequence){ | |
463 if(cbp) | |
464 put_bits(&s->pb, 1, s->interlaced_dct); | |
465 if(mb_type) // not diect mode | |
466 put_bits(&s->pb, 1, 0); // no interlaced ME yet | |
467 } | |
461 | 468 |
462 if(interleaved_stats){ | 469 if(interleaved_stats){ |
463 bits= get_bit_count(&s->pb); | 470 bits= get_bit_count(&s->pb); |
464 s->misc_bits+= bits - s->last_bits; | 471 s->misc_bits+= bits - s->last_bits; |
465 s->last_bits=bits; | 472 s->last_bits=bits; |
578 cbpy = cbp >> 2; | 585 cbpy = cbp >> 2; |
579 cbpy ^= 0xf; | 586 cbpy ^= 0xf; |
580 put_bits(pb2, cbpy_tab[cbpy][1], cbpy_tab[cbpy][0]); | 587 put_bits(pb2, cbpy_tab[cbpy][1], cbpy_tab[cbpy][0]); |
581 if(s->dquant) | 588 if(s->dquant) |
582 put_bits(pb2, 2, dquant_code[s->dquant+2]); | 589 put_bits(pb2, 2, dquant_code[s->dquant+2]); |
590 | |
591 if(!s->progressive_sequence){ | |
592 if(cbp) | |
593 put_bits(pb2, 1, s->interlaced_dct); | |
594 put_bits(pb2, 1, 0); // no interlaced ME yet | |
595 } | |
583 | 596 |
584 if(interleaved_stats){ | 597 if(interleaved_stats){ |
585 bits= get_bit_count(&s->pb); | 598 bits= get_bit_count(&s->pb); |
586 s->misc_bits+= bits - s->last_bits; | 599 s->misc_bits+= bits - s->last_bits; |
587 s->last_bits=bits; | 600 s->last_bits=bits; |
698 put_bits(pb2, 1, s->ac_pred); | 711 put_bits(pb2, 1, s->ac_pred); |
699 cbpy = cbp >> 2; | 712 cbpy = cbp >> 2; |
700 put_bits(pb2, cbpy_tab[cbpy][1], cbpy_tab[cbpy][0]); | 713 put_bits(pb2, cbpy_tab[cbpy][1], cbpy_tab[cbpy][0]); |
701 if(s->dquant) | 714 if(s->dquant) |
702 put_bits(dc_pb, 2, dquant_code[s->dquant+2]); | 715 put_bits(dc_pb, 2, dquant_code[s->dquant+2]); |
716 | |
717 if(!s->progressive_sequence){ | |
718 put_bits(dc_pb, 1, s->interlaced_dct); | |
719 } | |
703 | 720 |
704 if(interleaved_stats){ | 721 if(interleaved_stats){ |
705 bits= get_bit_count(&s->pb); | 722 bits= get_bit_count(&s->pb); |
706 s->misc_bits+= bits - s->last_bits; | 723 s->misc_bits+= bits - s->last_bits; |
707 s->last_bits=bits; | 724 s->last_bits=bits; |
1509 put_bits(&s->pb, 1, 1); /* marker bit */ | 1526 put_bits(&s->pb, 1, 1); /* marker bit */ |
1510 put_bits(&s->pb, 13, s->width); /* vol width */ | 1527 put_bits(&s->pb, 13, s->width); /* vol width */ |
1511 put_bits(&s->pb, 1, 1); /* marker bit */ | 1528 put_bits(&s->pb, 1, 1); /* marker bit */ |
1512 put_bits(&s->pb, 13, s->height); /* vol height */ | 1529 put_bits(&s->pb, 13, s->height); /* vol height */ |
1513 put_bits(&s->pb, 1, 1); /* marker bit */ | 1530 put_bits(&s->pb, 1, 1); /* marker bit */ |
1514 put_bits(&s->pb, 1, 0); /* interlace */ | 1531 put_bits(&s->pb, 1, s->progressive_sequence ? 0 : 1); |
1515 put_bits(&s->pb, 1, 1); /* obmc disable */ | 1532 put_bits(&s->pb, 1, 1); /* obmc disable */ |
1516 if (vo_ver_id == 1) { | 1533 if (vo_ver_id == 1) { |
1517 put_bits(&s->pb, 1, s->vol_sprite_usage=0); /* sprite enable */ | 1534 put_bits(&s->pb, 1, s->vol_sprite_usage=0); /* sprite enable */ |
1518 }else{ /* vo_ver_id == 2 */ | 1535 }else{ /* vo_ver_id == 2 */ |
1519 put_bits(&s->pb, 2, s->vol_sprite_usage=0); /* sprite enable */ | 1536 put_bits(&s->pb, 2, s->vol_sprite_usage=0); /* sprite enable */ |
1584 || (s->pict_type == S_TYPE && s->vol_sprite_usage==GMC_SPRITE)) { | 1601 || (s->pict_type == S_TYPE && s->vol_sprite_usage==GMC_SPRITE)) { |
1585 s->no_rounding ^= 1; | 1602 s->no_rounding ^= 1; |
1586 put_bits(&s->pb, 1, s->no_rounding); /* rounding type */ | 1603 put_bits(&s->pb, 1, s->no_rounding); /* rounding type */ |
1587 } | 1604 } |
1588 put_bits(&s->pb, 3, 0); /* intra dc VLC threshold */ | 1605 put_bits(&s->pb, 3, 0); /* intra dc VLC threshold */ |
1606 if(!s->progressive_sequence){ | |
1607 put_bits(&s->pb, 1, s->top_field_first); | |
1608 put_bits(&s->pb, 1, s->alternate_scan); | |
1609 } | |
1589 //FIXME sprite stuff | 1610 //FIXME sprite stuff |
1590 | 1611 |
1591 put_bits(&s->pb, 5, s->qscale); | 1612 put_bits(&s->pb, 5, s->qscale); |
1592 | 1613 |
1593 if (s->pict_type != I_TYPE) | 1614 if (s->pict_type != I_TYPE) |
4213 while (get_bits1(&s->gb) != 0) | 4234 while (get_bits1(&s->gb) != 0) |
4214 time_incr++; | 4235 time_incr++; |
4215 | 4236 |
4216 check_marker(&s->gb, "before time_increment"); | 4237 check_marker(&s->gb, "before time_increment"); |
4217 time_increment= get_bits(&s->gb, s->time_increment_bits); | 4238 time_increment= get_bits(&s->gb, s->time_increment_bits); |
4218 //printf(" type:%d incr:%d increment:%d\n", s->pict_type, time_incr, time_increment); | 4239 //printf(" type:%d modulo_time_base:%d increment:%d\n", s->pict_type, time_incr, time_increment); |
4219 if(s->pict_type!=B_TYPE){ | 4240 if(s->pict_type!=B_TYPE){ |
4220 s->last_time_base= s->time_base; | 4241 s->last_time_base= s->time_base; |
4221 s->time_base+= time_incr; | 4242 s->time_base+= time_incr; |
4222 s->time= s->time_base*s->time_increment_resolution + time_increment; | 4243 s->time= s->time_base*s->time_increment_resolution + time_increment; |
4223 if(s->time < s->last_non_b_time && s->workaround_bugs==3){ | 4244 if(s->time < s->last_non_b_time && s->workaround_bugs==3){ |