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.