Mercurial > libavcodec.hg
comparison msmpeg4.c @ 483:97da217aed7f libavcodec
fixed multiple allocation bug
author | bellard |
---|---|
date | Thu, 06 Jun 2002 14:31:18 +0000 |
parents | 1e23eae32087 |
children | 8b7a54d58549 |
comparison
equal
deleted
inserted
replaced
482:1a4d5101a224 | 483:97da217aed7f |
---|---|
758 } | 758 } |
759 | 759 |
760 /* init all vlc decoding tables */ | 760 /* init all vlc decoding tables */ |
761 int msmpeg4_decode_init_vlc(MpegEncContext *s) | 761 int msmpeg4_decode_init_vlc(MpegEncContext *s) |
762 { | 762 { |
763 static int done = 0; | |
763 int i; | 764 int i; |
764 MVTable *mv; | 765 MVTable *mv; |
765 | 766 |
766 for(i=0;i<NB_RL_TABLES;i++) { | 767 |
767 init_rl(&rl_table[i]); | 768 if (!done) { |
768 init_vlc_rl(&rl_table[i]); | 769 done = 1; |
769 } | 770 |
770 for(i=0;i<2;i++) { | 771 for(i=0;i<NB_RL_TABLES;i++) { |
771 mv = &mv_tables[i]; | 772 init_rl(&rl_table[i]); |
772 init_vlc(&mv->vlc, 9, mv->n + 1, | 773 init_vlc_rl(&rl_table[i]); |
773 mv->table_mv_bits, 1, 1, | 774 } |
774 mv->table_mv_code, 2, 2); | 775 for(i=0;i<2;i++) { |
775 } | 776 mv = &mv_tables[i]; |
776 | 777 init_vlc(&mv->vlc, 9, mv->n + 1, |
777 init_vlc(&dc_lum_vlc[0], 9, 120, | 778 mv->table_mv_bits, 1, 1, |
778 &table0_dc_lum[0][1], 8, 4, | 779 mv->table_mv_code, 2, 2); |
779 &table0_dc_lum[0][0], 8, 4); | 780 } |
780 init_vlc(&dc_chroma_vlc[0], 9, 120, | 781 |
781 &table0_dc_chroma[0][1], 8, 4, | 782 init_vlc(&dc_lum_vlc[0], 9, 120, |
782 &table0_dc_chroma[0][0], 8, 4); | 783 &table0_dc_lum[0][1], 8, 4, |
783 init_vlc(&dc_lum_vlc[1], 9, 120, | 784 &table0_dc_lum[0][0], 8, 4); |
784 &table1_dc_lum[0][1], 8, 4, | 785 init_vlc(&dc_chroma_vlc[0], 9, 120, |
785 &table1_dc_lum[0][0], 8, 4); | 786 &table0_dc_chroma[0][1], 8, 4, |
786 init_vlc(&dc_chroma_vlc[1], 9, 120, | 787 &table0_dc_chroma[0][0], 8, 4); |
787 &table1_dc_chroma[0][1], 8, 4, | 788 init_vlc(&dc_lum_vlc[1], 9, 120, |
788 &table1_dc_chroma[0][0], 8, 4); | 789 &table1_dc_lum[0][1], 8, 4, |
790 &table1_dc_lum[0][0], 8, 4); | |
791 init_vlc(&dc_chroma_vlc[1], 9, 120, | |
792 &table1_dc_chroma[0][1], 8, 4, | |
793 &table1_dc_chroma[0][0], 8, 4); | |
789 | 794 |
790 init_h263_dc_for_msmpeg4(); | 795 init_h263_dc_for_msmpeg4(); |
791 init_vlc(&v2_dc_lum_vlc, 9, 512, | 796 init_vlc(&v2_dc_lum_vlc, 9, 512, |
792 &v2_dc_lum_table[0][1], 8, 4, | 797 &v2_dc_lum_table[0][1], 8, 4, |
793 &v2_dc_lum_table[0][0], 8, 4); | 798 &v2_dc_lum_table[0][0], 8, 4); |
794 init_vlc(&v2_dc_chroma_vlc, 9, 512, | 799 init_vlc(&v2_dc_chroma_vlc, 9, 512, |
795 &v2_dc_chroma_table[0][1], 8, 4, | 800 &v2_dc_chroma_table[0][1], 8, 4, |
796 &v2_dc_chroma_table[0][0], 8, 4); | 801 &v2_dc_chroma_table[0][0], 8, 4); |
797 | 802 |
798 init_vlc(&cbpy_vlc, 6, 16, | 803 init_vlc(&cbpy_vlc, 6, 16, |
799 &cbpy_tab[0][1], 2, 1, | 804 &cbpy_tab[0][1], 2, 1, |
800 &cbpy_tab[0][0], 2, 1); | 805 &cbpy_tab[0][0], 2, 1); |
801 init_vlc(&v2_intra_cbpc_vlc, 3, 4, | 806 init_vlc(&v2_intra_cbpc_vlc, 3, 4, |
802 &v2_intra_cbpc[0][1], 2, 1, | 807 &v2_intra_cbpc[0][1], 2, 1, |
803 &v2_intra_cbpc[0][0], 2, 1); | 808 &v2_intra_cbpc[0][0], 2, 1); |
804 init_vlc(&v2_mb_type_vlc, 5, 8, | 809 init_vlc(&v2_mb_type_vlc, 5, 8, |
805 &v2_mb_type[0][1], 2, 1, | 810 &v2_mb_type[0][1], 2, 1, |
806 &v2_mb_type[0][0], 2, 1); | 811 &v2_mb_type[0][0], 2, 1); |
807 init_vlc(&v2_mv_vlc, 9, 33, | 812 init_vlc(&v2_mv_vlc, 9, 33, |
808 &mvtab[0][1], 2, 1, | 813 &mvtab[0][1], 2, 1, |
809 &mvtab[0][0], 2, 1); | 814 &mvtab[0][0], 2, 1); |
810 | 815 |
811 init_vlc(&mb_non_intra_vlc, 9, 128, | 816 init_vlc(&mb_non_intra_vlc, 9, 128, |
812 &table_mb_non_intra[0][1], 8, 4, | 817 &table_mb_non_intra[0][1], 8, 4, |
813 &table_mb_non_intra[0][0], 8, 4); | 818 &table_mb_non_intra[0][0], 8, 4); |
814 init_vlc(&mb_intra_vlc, 9, 64, | 819 init_vlc(&mb_intra_vlc, 9, 64, |
815 &table_mb_intra[0][1], 4, 2, | 820 &table_mb_intra[0][1], 4, 2, |
816 &table_mb_intra[0][0], 4, 2); | 821 &table_mb_intra[0][0], 4, 2); |
817 | 822 |
818 init_vlc(&v1_intra_cbpc_vlc, 6, 8, | 823 init_vlc(&v1_intra_cbpc_vlc, 6, 8, |
819 intra_MCBPC_bits, 1, 1, | 824 intra_MCBPC_bits, 1, 1, |
820 intra_MCBPC_code, 1, 1); | 825 intra_MCBPC_code, 1, 1); |
821 init_vlc(&v1_inter_cbpc_vlc, 6, 25, | 826 init_vlc(&v1_inter_cbpc_vlc, 6, 25, |
822 inter_MCBPC_bits, 1, 1, | 827 inter_MCBPC_bits, 1, 1, |
823 inter_MCBPC_code, 1, 1); | 828 inter_MCBPC_code, 1, 1); |
824 | 829 } |
825 return 0; | 830 return 0; |
826 } | 831 } |
827 | 832 |
828 static int decode012(GetBitContext *gb) | 833 static int decode012(GetBitContext *gb) |
829 { | 834 { |