Mercurial > libavcodec.hg
comparison mpeg12enc.c @ 5210:b52fd9b223bb libavcodec
add proper ff_ prefix to new extern symbols
author | aurel |
---|---|
date | Thu, 05 Jul 2007 09:21:55 +0000 |
parents | 430f60820b21 |
children | 5581a40c673a |
comparison
equal
deleted
inserted
replaced
5209:2ac10c5e5885 | 5210:b52fd9b223bb |
---|---|
210 put_bits(&s->pb, 12, s->height); | 210 put_bits(&s->pb, 12, s->height); |
211 | 211 |
212 for(i=1; i<15; i++){ | 212 for(i=1; i<15; i++){ |
213 float error= aspect_ratio; | 213 float error= aspect_ratio; |
214 if(s->codec_id == CODEC_ID_MPEG1VIDEO || i <=1) | 214 if(s->codec_id == CODEC_ID_MPEG1VIDEO || i <=1) |
215 error-= 1.0/mpeg1_aspect[i]; | 215 error-= 1.0/ff_mpeg1_aspect[i]; |
216 else | 216 else |
217 error-= av_q2d(mpeg2_aspect[i])*s->height/s->width; | 217 error-= av_q2d(ff_mpeg2_aspect[i])*s->height/s->width; |
218 | 218 |
219 error= FFABS(error); | 219 error= FFABS(error); |
220 | 220 |
221 if(error < best_aspect_error){ | 221 if(error < best_aspect_error){ |
222 best_aspect_error= error; | 222 best_aspect_error= error; |
310 static inline void encode_mb_skip_run(MpegEncContext *s, int run){ | 310 static inline void encode_mb_skip_run(MpegEncContext *s, int run){ |
311 while (run >= 33) { | 311 while (run >= 33) { |
312 put_bits(&s->pb, 11, 0x008); | 312 put_bits(&s->pb, 11, 0x008); |
313 run -= 33; | 313 run -= 33; |
314 } | 314 } |
315 put_bits(&s->pb, mbAddrIncrTable[run][1], | 315 put_bits(&s->pb, ff_mpeg12_mbAddrIncrTable[run][1], |
316 mbAddrIncrTable[run][0]); | 316 ff_mpeg12_mbAddrIncrTable[run][0]); |
317 } | 317 } |
318 | 318 |
319 static av_always_inline void put_qscale(MpegEncContext *s) | 319 static av_always_inline void put_qscale(MpegEncContext *s) |
320 { | 320 { |
321 if(s->q_scale_type){ | 321 if(s->q_scale_type){ |
552 } | 552 } |
553 s->mv_bits+= get_bits_diff(s); | 553 s->mv_bits+= get_bits_diff(s); |
554 } | 554 } |
555 if(cbp) { | 555 if(cbp) { |
556 if (s->chroma_y_shift) { | 556 if (s->chroma_y_shift) { |
557 put_bits(&s->pb, mbPatTable[cbp][1], mbPatTable[cbp][0]); | 557 put_bits(&s->pb, ff_mpeg12_mbPatTable[cbp][1], ff_mpeg12_mbPatTable[cbp][0]); |
558 } else { | 558 } else { |
559 put_bits(&s->pb, mbPatTable[cbp>>2][1], mbPatTable[cbp>>2][0]); | 559 put_bits(&s->pb, ff_mpeg12_mbPatTable[cbp>>2][1], ff_mpeg12_mbPatTable[cbp>>2][0]); |
560 put_bits(&s->pb, 2, cbp & 3); | 560 put_bits(&s->pb, 2, cbp & 3); |
561 } | 561 } |
562 } | 562 } |
563 s->f_count++; | 563 s->f_count++; |
564 } else{ | 564 } else{ |
637 } | 637 } |
638 } | 638 } |
639 s->mv_bits += get_bits_diff(s); | 639 s->mv_bits += get_bits_diff(s); |
640 if(cbp) { | 640 if(cbp) { |
641 if (s->chroma_y_shift) { | 641 if (s->chroma_y_shift) { |
642 put_bits(&s->pb, mbPatTable[cbp][1], mbPatTable[cbp][0]); | 642 put_bits(&s->pb, ff_mpeg12_mbPatTable[cbp][1], ff_mpeg12_mbPatTable[cbp][0]); |
643 } else { | 643 } else { |
644 put_bits(&s->pb, mbPatTable[cbp>>2][1], mbPatTable[cbp>>2][0]); | 644 put_bits(&s->pb, ff_mpeg12_mbPatTable[cbp>>2][1], ff_mpeg12_mbPatTable[cbp>>2][0]); |
645 put_bits(&s->pb, 2, cbp & 3); | 645 put_bits(&s->pb, 2, cbp & 3); |
646 } | 646 } |
647 } | 647 } |
648 } | 648 } |
649 for(i=0;i<mb_block_count;i++) { | 649 for(i=0;i<mb_block_count;i++) { |
672 | 672 |
673 if (val == 0) { | 673 if (val == 0) { |
674 /* zero vector */ | 674 /* zero vector */ |
675 code = 0; | 675 code = 0; |
676 put_bits(&s->pb, | 676 put_bits(&s->pb, |
677 mbMotionVectorTable[0][1], | 677 ff_mpeg12_mbMotionVectorTable[0][1], |
678 mbMotionVectorTable[0][0]); | 678 ff_mpeg12_mbMotionVectorTable[0][0]); |
679 } else { | 679 } else { |
680 bit_size = f_or_b_code - 1; | 680 bit_size = f_or_b_code - 1; |
681 range = 1 << bit_size; | 681 range = 1 << bit_size; |
682 /* modulo encoding */ | 682 /* modulo encoding */ |
683 l= INT_BIT - 5 - bit_size; | 683 l= INT_BIT - 5 - bit_size; |
697 } | 697 } |
698 | 698 |
699 assert(code > 0 && code <= 16); | 699 assert(code > 0 && code <= 16); |
700 | 700 |
701 put_bits(&s->pb, | 701 put_bits(&s->pb, |
702 mbMotionVectorTable[code][1], | 702 ff_mpeg12_mbMotionVectorTable[code][1], |
703 mbMotionVectorTable[code][0]); | 703 ff_mpeg12_mbMotionVectorTable[code][0]); |
704 | 704 |
705 put_bits(&s->pb, 1, sign); | 705 put_bits(&s->pb, 1, sign); |
706 if (bit_size > 0) { | 706 if (bit_size > 0) { |
707 put_bits(&s->pb, bit_size, bits); | 707 put_bits(&s->pb, bit_size, bits); |
708 } | 708 } |
711 | 711 |
712 void ff_mpeg1_encode_init(MpegEncContext *s) | 712 void ff_mpeg1_encode_init(MpegEncContext *s) |
713 { | 713 { |
714 static int done=0; | 714 static int done=0; |
715 | 715 |
716 common_init(s); | 716 ff_mpeg12_common_init(s); |
717 | 717 |
718 if(!done){ | 718 if(!done){ |
719 int f_code; | 719 int f_code; |
720 int mv; | 720 int mv; |
721 int i; | 721 int i; |
722 | 722 |
723 done=1; | 723 done=1; |
724 init_rl(&rl_mpeg1, static_rl_table_store[0]); | 724 init_rl(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); |
725 init_rl(&rl_mpeg2, static_rl_table_store[1]); | 725 init_rl(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); |
726 | 726 |
727 for(i=0; i<64; i++) | 727 for(i=0; i<64; i++) |
728 { | 728 { |
729 mpeg1_max_level[0][i]= rl_mpeg1.max_level[0][i]; | 729 mpeg1_max_level[0][i]= ff_rl_mpeg1.max_level[0][i]; |
730 mpeg1_index_run[0][i]= rl_mpeg1.index_run[0][i]; | 730 mpeg1_index_run[0][i]= ff_rl_mpeg1.index_run[0][i]; |
731 } | 731 } |
732 | 732 |
733 init_uni_ac_vlc(&rl_mpeg1, uni_mpeg1_ac_vlc_len); | 733 init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); |
734 if(s->intra_vlc_format) | 734 if(s->intra_vlc_format) |
735 init_uni_ac_vlc(&rl_mpeg2, uni_mpeg2_ac_vlc_len); | 735 init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); |
736 | 736 |
737 /* build unified dc encoding tables */ | 737 /* build unified dc encoding tables */ |
738 for(i=-255; i<256; i++) | 738 for(i=-255; i<256; i++) |
739 { | 739 { |
740 int adiff, index; | 740 int adiff, index; |
743 | 743 |
744 adiff = FFABS(diff); | 744 adiff = FFABS(diff); |
745 if(diff<0) diff--; | 745 if(diff<0) diff--; |
746 index = av_log2(2*adiff); | 746 index = av_log2(2*adiff); |
747 | 747 |
748 bits= vlc_dc_lum_bits[index] + index; | 748 bits= ff_mpeg12_vlc_dc_lum_bits[index] + index; |
749 code= (vlc_dc_lum_code[index]<<index) + (diff & ((1 << index) - 1)); | 749 code= (ff_mpeg12_vlc_dc_lum_code[index]<<index) + (diff & ((1 << index) - 1)); |
750 mpeg1_lum_dc_uni[i+255]= bits + (code<<8); | 750 mpeg1_lum_dc_uni[i+255]= bits + (code<<8); |
751 | 751 |
752 bits= vlc_dc_chroma_bits[index] + index; | 752 bits= ff_mpeg12_vlc_dc_chroma_bits[index] + index; |
753 code= (vlc_dc_chroma_code[index]<<index) + (diff & ((1 << index) - 1)); | 753 code= (ff_mpeg12_vlc_dc_chroma_code[index]<<index) + (diff & ((1 << index) - 1)); |
754 mpeg1_chr_dc_uni[i+255]= bits + (code<<8); | 754 mpeg1_chr_dc_uni[i+255]= bits + (code<<8); |
755 } | 755 } |
756 | 756 |
757 for(f_code=1; f_code<=MAX_FCODE; f_code++){ | 757 for(f_code=1; f_code<=MAX_FCODE; f_code++){ |
758 for(mv=-MAX_MV; mv<=MAX_MV; mv++){ | 758 for(mv=-MAX_MV; mv<=MAX_MV; mv++){ |
759 int len; | 759 int len; |
760 | 760 |
761 if(mv==0) len= mbMotionVectorTable[0][1]; | 761 if(mv==0) len= ff_mpeg12_mbMotionVectorTable[0][1]; |
762 else{ | 762 else{ |
763 int val, bit_size, range, code; | 763 int val, bit_size, range, code; |
764 | 764 |
765 bit_size = f_code - 1; | 765 bit_size = f_code - 1; |
766 range = 1 << bit_size; | 766 range = 1 << bit_size; |
769 if (val < 0) | 769 if (val < 0) |
770 val = -val; | 770 val = -val; |
771 val--; | 771 val--; |
772 code = (val >> bit_size) + 1; | 772 code = (val >> bit_size) + 1; |
773 if(code<17){ | 773 if(code<17){ |
774 len= mbMotionVectorTable[code][1] + 1 + bit_size; | 774 len= ff_mpeg12_mbMotionVectorTable[code][1] + 1 + bit_size; |
775 }else{ | 775 }else{ |
776 len= mbMotionVectorTable[16][1] + 2 + bit_size; | 776 len= ff_mpeg12_mbMotionVectorTable[16][1] + 2 + bit_size; |
777 } | 777 } |
778 } | 778 } |
779 | 779 |
780 mv_penalty[f_code][mv+MAX_MV]= len; | 780 mv_penalty[f_code][mv+MAX_MV]= len; |
781 } | 781 } |
820 index= av_log2_16bit(2*diff); | 820 index= av_log2_16bit(2*diff); |
821 } | 821 } |
822 if (component == 0) { | 822 if (component == 0) { |
823 put_bits( | 823 put_bits( |
824 &s->pb, | 824 &s->pb, |
825 vlc_dc_lum_bits[index] + index, | 825 ff_mpeg12_vlc_dc_lum_bits[index] + index, |
826 (vlc_dc_lum_code[index]<<index) + (diff & ((1 << index) - 1))); | 826 (ff_mpeg12_vlc_dc_lum_code[index]<<index) + (diff & ((1 << index) - 1))); |
827 }else{ | 827 }else{ |
828 put_bits( | 828 put_bits( |
829 &s->pb, | 829 &s->pb, |
830 vlc_dc_chroma_bits[index] + index, | 830 ff_mpeg12_vlc_dc_chroma_bits[index] + index, |
831 (vlc_dc_chroma_code[index]<<index) + (diff & ((1 << index) - 1))); | 831 (ff_mpeg12_vlc_dc_chroma_code[index]<<index) + (diff & ((1 << index) - 1))); |
832 } | 832 } |
833 }else{ | 833 }else{ |
834 if (component == 0) { | 834 if (component == 0) { |
835 put_bits( | 835 put_bits( |
836 &s->pb, | 836 &s->pb, |
849 DCTELEM *block, | 849 DCTELEM *block, |
850 int n) | 850 int n) |
851 { | 851 { |
852 int alevel, level, last_non_zero, dc, diff, i, j, run, last_index, sign; | 852 int alevel, level, last_non_zero, dc, diff, i, j, run, last_index, sign; |
853 int code, component; | 853 int code, component; |
854 const uint16_t (*table_vlc)[2] = rl_mpeg1.table_vlc; | 854 const uint16_t (*table_vlc)[2] = ff_rl_mpeg1.table_vlc; |
855 | 855 |
856 last_index = s->block_last_index[n]; | 856 last_index = s->block_last_index[n]; |
857 | 857 |
858 /* DC coef */ | 858 /* DC coef */ |
859 if (s->mb_intra) { | 859 if (s->mb_intra) { |
862 diff = dc - s->last_dc[component]; | 862 diff = dc - s->last_dc[component]; |
863 encode_dc(s, diff, component); | 863 encode_dc(s, diff, component); |
864 s->last_dc[component] = dc; | 864 s->last_dc[component] = dc; |
865 i = 1; | 865 i = 1; |
866 if (s->intra_vlc_format) | 866 if (s->intra_vlc_format) |
867 table_vlc = rl_mpeg2.table_vlc; | 867 table_vlc = ff_rl_mpeg2.table_vlc; |
868 } else { | 868 } else { |
869 /* encode the first coefficient : needs to be done here because | 869 /* encode the first coefficient : needs to be done here because |
870 it is handled slightly differently */ | 870 it is handled slightly differently */ |
871 level = block[0]; | 871 level = block[0]; |
872 if (abs(level) == 1) { | 872 if (abs(level) == 1) { |