Mercurial > libavcodec.hg
comparison h263.c @ 2370:26560d4fdb1f libavcodec
Memory leak fix patch by (Burkhard Plaum <plaum >at< ipf.uni-stuttgart )dot( de>)
author | michael |
---|---|
date | Sat, 27 Nov 2004 18:10:06 +0000 |
parents | 859535b5eb57 |
children | 25a24139f296 |
comparison
equal
deleted
inserted
replaced
2369:ce47b1d51cb1 | 2370:26560d4fdb1f |
---|---|
1929 if (!done) { | 1929 if (!done) { |
1930 done = 1; | 1930 done = 1; |
1931 | 1931 |
1932 init_uni_dc_tab(); | 1932 init_uni_dc_tab(); |
1933 | 1933 |
1934 init_rl(&rl_inter); | 1934 init_rl(&rl_inter, 1); |
1935 init_rl(&rl_intra); | 1935 init_rl(&rl_intra, 1); |
1936 init_rl(&rl_intra_aic); | 1936 init_rl(&rl_intra_aic, 1); |
1937 | 1937 |
1938 init_uni_mpeg4_rl_tab(&rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); | 1938 init_uni_mpeg4_rl_tab(&rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); |
1939 init_uni_mpeg4_rl_tab(&rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); | 1939 init_uni_mpeg4_rl_tab(&rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); |
1940 | 1940 |
1941 init_uni_h263_rl_tab(&rl_intra_aic, NULL, uni_h263_intra_aic_rl_len); | 1941 init_uni_h263_rl_tab(&rl_intra_aic, NULL, uni_h263_intra_aic_rl_len); |
2795 static VLC sprite_trajectory; | 2795 static VLC sprite_trajectory; |
2796 static VLC mb_type_b_vlc; | 2796 static VLC mb_type_b_vlc; |
2797 static VLC h263_mbtype_b_vlc; | 2797 static VLC h263_mbtype_b_vlc; |
2798 static VLC cbpc_b_vlc; | 2798 static VLC cbpc_b_vlc; |
2799 | 2799 |
2800 void init_vlc_rl(RLTable *rl) | 2800 void init_vlc_rl(RLTable *rl, int use_static) |
2801 { | 2801 { |
2802 int i, q; | 2802 int i, q; |
2803 | 2803 |
2804 /* Return if static table is already initialized */ | |
2805 if(use_static && rl->rl_vlc[0]) | |
2806 return; | |
2807 | |
2804 init_vlc(&rl->vlc, 9, rl->n + 1, | 2808 init_vlc(&rl->vlc, 9, rl->n + 1, |
2805 &rl->table_vlc[0][1], 4, 2, | 2809 &rl->table_vlc[0][1], 4, 2, |
2806 &rl->table_vlc[0][0], 4, 2); | 2810 &rl->table_vlc[0][0], 4, 2, use_static); |
2807 | 2811 |
2808 | 2812 |
2809 for(q=0; q<32; q++){ | 2813 for(q=0; q<32; q++){ |
2810 int qmul= q*2; | 2814 int qmul= q*2; |
2811 int qadd= (q-1)|1; | 2815 int qadd= (q-1)|1; |
2812 | 2816 |
2813 if(q==0){ | 2817 if(q==0){ |
2814 qmul=1; | 2818 qmul=1; |
2815 qadd=0; | 2819 qadd=0; |
2816 } | 2820 } |
2817 | 2821 if(use_static) |
2818 rl->rl_vlc[q]= av_malloc(rl->vlc.table_size*sizeof(RL_VLC_ELEM)); | 2822 rl->rl_vlc[q]= av_mallocz_static(rl->vlc.table_size*sizeof(RL_VLC_ELEM)); |
2823 else | |
2824 rl->rl_vlc[q]= av_malloc(rl->vlc.table_size*sizeof(RL_VLC_ELEM)); | |
2819 for(i=0; i<rl->vlc.table_size; i++){ | 2825 for(i=0; i<rl->vlc.table_size; i++){ |
2820 int code= rl->vlc.table[i][0]; | 2826 int code= rl->vlc.table[i][0]; |
2821 int len = rl->vlc.table[i][1]; | 2827 int len = rl->vlc.table[i][1]; |
2822 int level, run; | 2828 int level, run; |
2823 | 2829 |
2854 if (!done) { | 2860 if (!done) { |
2855 done = 1; | 2861 done = 1; |
2856 | 2862 |
2857 init_vlc(&intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 9, | 2863 init_vlc(&intra_MCBPC_vlc, INTRA_MCBPC_VLC_BITS, 9, |
2858 intra_MCBPC_bits, 1, 1, | 2864 intra_MCBPC_bits, 1, 1, |
2859 intra_MCBPC_code, 1, 1); | 2865 intra_MCBPC_code, 1, 1, 1); |
2860 init_vlc(&inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 28, | 2866 init_vlc(&inter_MCBPC_vlc, INTER_MCBPC_VLC_BITS, 28, |
2861 inter_MCBPC_bits, 1, 1, | 2867 inter_MCBPC_bits, 1, 1, |
2862 inter_MCBPC_code, 1, 1); | 2868 inter_MCBPC_code, 1, 1, 1); |
2863 init_vlc(&cbpy_vlc, CBPY_VLC_BITS, 16, | 2869 init_vlc(&cbpy_vlc, CBPY_VLC_BITS, 16, |
2864 &cbpy_tab[0][1], 2, 1, | 2870 &cbpy_tab[0][1], 2, 1, |
2865 &cbpy_tab[0][0], 2, 1); | 2871 &cbpy_tab[0][0], 2, 1, 1); |
2866 init_vlc(&mv_vlc, MV_VLC_BITS, 33, | 2872 init_vlc(&mv_vlc, MV_VLC_BITS, 33, |
2867 &mvtab[0][1], 2, 1, | 2873 &mvtab[0][1], 2, 1, |
2868 &mvtab[0][0], 2, 1); | 2874 &mvtab[0][0], 2, 1, 1); |
2869 init_rl(&rl_inter); | 2875 init_rl(&rl_inter, 1); |
2870 init_rl(&rl_intra); | 2876 init_rl(&rl_intra, 1); |
2871 init_rl(&rvlc_rl_inter); | 2877 init_rl(&rvlc_rl_inter, 1); |
2872 init_rl(&rvlc_rl_intra); | 2878 init_rl(&rvlc_rl_intra, 1); |
2873 init_rl(&rl_intra_aic); | 2879 init_rl(&rl_intra_aic, 1); |
2874 init_vlc_rl(&rl_inter); | 2880 init_vlc_rl(&rl_inter, 1); |
2875 init_vlc_rl(&rl_intra); | 2881 init_vlc_rl(&rl_intra, 1); |
2876 init_vlc_rl(&rvlc_rl_inter); | 2882 init_vlc_rl(&rvlc_rl_inter, 1); |
2877 init_vlc_rl(&rvlc_rl_intra); | 2883 init_vlc_rl(&rvlc_rl_intra, 1); |
2878 init_vlc_rl(&rl_intra_aic); | 2884 init_vlc_rl(&rl_intra_aic, 1); |
2879 init_vlc(&dc_lum, DC_VLC_BITS, 10 /* 13 */, | 2885 init_vlc(&dc_lum, DC_VLC_BITS, 10 /* 13 */, |
2880 &DCtab_lum[0][1], 2, 1, | 2886 &DCtab_lum[0][1], 2, 1, |
2881 &DCtab_lum[0][0], 2, 1); | 2887 &DCtab_lum[0][0], 2, 1, 1); |
2882 init_vlc(&dc_chrom, DC_VLC_BITS, 10 /* 13 */, | 2888 init_vlc(&dc_chrom, DC_VLC_BITS, 10 /* 13 */, |
2883 &DCtab_chrom[0][1], 2, 1, | 2889 &DCtab_chrom[0][1], 2, 1, |
2884 &DCtab_chrom[0][0], 2, 1); | 2890 &DCtab_chrom[0][0], 2, 1, 1); |
2885 init_vlc(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15, | 2891 init_vlc(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15, |
2886 &sprite_trajectory_tab[0][1], 4, 2, | 2892 &sprite_trajectory_tab[0][1], 4, 2, |
2887 &sprite_trajectory_tab[0][0], 4, 2); | 2893 &sprite_trajectory_tab[0][0], 4, 2, 1); |
2888 init_vlc(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4, | 2894 init_vlc(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4, |
2889 &mb_type_b_tab[0][1], 2, 1, | 2895 &mb_type_b_tab[0][1], 2, 1, |
2890 &mb_type_b_tab[0][0], 2, 1); | 2896 &mb_type_b_tab[0][0], 2, 1, 1); |
2891 init_vlc(&h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, | 2897 init_vlc(&h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, |
2892 &h263_mbtype_b_tab[0][1], 2, 1, | 2898 &h263_mbtype_b_tab[0][1], 2, 1, |
2893 &h263_mbtype_b_tab[0][0], 2, 1); | 2899 &h263_mbtype_b_tab[0][0], 2, 1, 1); |
2894 init_vlc(&cbpc_b_vlc, CBPC_B_VLC_BITS, 4, | 2900 init_vlc(&cbpc_b_vlc, CBPC_B_VLC_BITS, 4, |
2895 &cbpc_b_tab[0][1], 2, 1, | 2901 &cbpc_b_tab[0][1], 2, 1, |
2896 &cbpc_b_tab[0][0], 2, 1); | 2902 &cbpc_b_tab[0][0], 2, 1, 1); |
2897 } | 2903 } |
2898 } | 2904 } |
2899 | 2905 |
2900 /** | 2906 /** |
2901 * Get the GOB height based on picture height. | 2907 * Get the GOB height based on picture height. |