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){