comparison cook.c @ 9174:4d8d8fe29d4d libavcodec

save avctx in cook decoder context and use it for av_log
author banan
date Sun, 15 Mar 2009 14:11:11 +0000
parents fb675a9727f0
children da3196ebcf99
comparison
equal deleted inserted replaced
9173:fb675a9727f0 9174:4d8d8fe29d4d
89 void (* interpolate) (struct cook *q, float* buffer, 89 void (* interpolate) (struct cook *q, float* buffer,
90 int gain_index, int gain_index_next); 90 int gain_index, int gain_index_next);
91 91
92 void (* saturate_output) (struct cook *q, int chan, int16_t *out); 92 void (* saturate_output) (struct cook *q, int chan, int16_t *out);
93 93
94 AVCodecContext* avctx;
94 GetBitContext gb; 95 GetBitContext gb;
95 /* stream data */ 96 /* stream data */
96 int nb_channels; 97 int nb_channels;
97 int joint_stereo; 98 int joint_stereo;
98 int bit_rate; 99 int bit_rate;
209 for (i=0 ; i<13 ; i++) { 210 for (i=0 ; i<13 ; i++) {
210 result |= init_vlc (&q->envelope_quant_index[i], 9, 24, 211 result |= init_vlc (&q->envelope_quant_index[i], 9, 24,
211 envelope_quant_index_huffbits[i], 1, 1, 212 envelope_quant_index_huffbits[i], 1, 1,
212 envelope_quant_index_huffcodes[i], 2, 2, 0); 213 envelope_quant_index_huffcodes[i], 2, 2, 0);
213 } 214 }
214 av_log(NULL,AV_LOG_DEBUG,"sqvh VLC init\n"); 215 av_log(q->avctx,AV_LOG_DEBUG,"sqvh VLC init\n");
215 for (i=0 ; i<7 ; i++) { 216 for (i=0 ; i<7 ; i++) {
216 result |= init_vlc (&q->sqvh[i], vhvlcsize_tab[i], vhsize_tab[i], 217 result |= init_vlc (&q->sqvh[i], vhvlcsize_tab[i], vhsize_tab[i],
217 cvh_huffbits[i], 1, 1, 218 cvh_huffbits[i], 1, 1,
218 cvh_huffcodes[i], 2, 2, 0); 219 cvh_huffcodes[i], 2, 2, 0);
219 } 220 }
220 221
221 if (q->nb_channels==2 && q->joint_stereo==1){ 222 if (q->nb_channels==2 && q->joint_stereo==1){
222 result |= init_vlc (&q->ccpl, 6, (1<<q->js_vlc_bits)-1, 223 result |= init_vlc (&q->ccpl, 6, (1<<q->js_vlc_bits)-1,
223 ccpl_huffbits[q->js_vlc_bits-2], 1, 1, 224 ccpl_huffbits[q->js_vlc_bits-2], 1, 1,
224 ccpl_huffcodes[q->js_vlc_bits-2], 2, 2, 0); 225 ccpl_huffcodes[q->js_vlc_bits-2], 2, 2, 0);
225 av_log(NULL,AV_LOG_DEBUG,"Joint-stereo VLC used.\n"); 226 av_log(q->avctx,AV_LOG_DEBUG,"Joint-stereo VLC used.\n");
226 } 227 }
227 228
228 av_log(NULL,AV_LOG_DEBUG,"VLC tables initialized.\n"); 229 av_log(q->avctx,AV_LOG_DEBUG,"VLC tables initialized.\n");
229 return result; 230 return result;
230 } 231 }
231 232
232 static av_cold int init_cook_mlt(COOKContext *q) { 233 static av_cold int init_cook_mlt(COOKContext *q) {
233 int j; 234 int j;
244 /* Initialize the MDCT. */ 245 /* Initialize the MDCT. */
245 if (ff_mdct_init(&q->mdct_ctx, av_log2(mlt_size)+1, 1)) { 246 if (ff_mdct_init(&q->mdct_ctx, av_log2(mlt_size)+1, 1)) {
246 av_free(q->mlt_window); 247 av_free(q->mlt_window);
247 return -1; 248 return -1;
248 } 249 }
249 av_log(NULL,AV_LOG_DEBUG,"MDCT initialized, order = %d.\n", 250 av_log(q->avctx,AV_LOG_DEBUG,"MDCT initialized, order = %d.\n",
250 av_log2(mlt_size)+1); 251 av_log2(mlt_size)+1);
251 252
252 return 0; 253 return 0;
253 } 254 }
254 255
336 } 337 }
337 if(q->nb_channels==2 && q->joint_stereo==1 ){ 338 if(q->nb_channels==2 && q->joint_stereo==1 ){
338 free_vlc(&q->ccpl); 339 free_vlc(&q->ccpl);
339 } 340 }
340 341
341 av_log(NULL,AV_LOG_DEBUG,"Memory deallocated.\n"); 342 av_log(avctx,AV_LOG_DEBUG,"Memory deallocated.\n");
342 343
343 return 0; 344 return 0;
344 } 345 }
345 346
346 /** 347 /**
417 bits_left = q->bits_per_subpacket - get_bits_count(&q->gb); 418 bits_left = q->bits_per_subpacket - get_bits_count(&q->gb);
418 419
419 if(bits_left > q->samples_per_channel) { 420 if(bits_left > q->samples_per_channel) {
420 bits_left = q->samples_per_channel + 421 bits_left = q->samples_per_channel +
421 ((bits_left - q->samples_per_channel)*5)/8; 422 ((bits_left - q->samples_per_channel)*5)/8;
422 //av_log(NULL, AV_LOG_ERROR, "bits_left = %d\n",bits_left); 423 //av_log(q->avctx, AV_LOG_ERROR, "bits_left = %d\n",bits_left);
423 } 424 }
424 425
425 memset(&exp_index1,0,102*sizeof(int)); 426 memset(&exp_index1,0,102*sizeof(int));
426 memset(&exp_index2,0,102*sizeof(int)); 427 memset(&exp_index2,0,102*sizeof(int));
427 memset(&tmp_categorize_array,0,128*2*sizeof(int)); 428 memset(&tmp_categorize_array,0,128*2*sizeof(int));
933 934
934 static int decode_subpacket(COOKContext *q, const uint8_t *inbuffer, 935 static int decode_subpacket(COOKContext *q, const uint8_t *inbuffer,
935 int sub_packet_size, int16_t *outbuffer) { 936 int sub_packet_size, int16_t *outbuffer) {
936 /* packet dump */ 937 /* packet dump */
937 // for (i=0 ; i<sub_packet_size ; i++) { 938 // for (i=0 ; i<sub_packet_size ; i++) {
938 // av_log(NULL, AV_LOG_ERROR, "%02x", inbuffer[i]); 939 // av_log(q->avctx, AV_LOG_ERROR, "%02x", inbuffer[i]);
939 // } 940 // }
940 // av_log(NULL, AV_LOG_ERROR, "\n"); 941 // av_log(q->avctx, AV_LOG_ERROR, "\n");
941 942
942 decode_bytes_and_gain(q, inbuffer, &q->gains1); 943 decode_bytes_and_gain(q, inbuffer, &q->gains1);
943 944
944 if (q->joint_stereo) { 945 if (q->joint_stereo) {
945 joint_decode(q, q->decode_buffer_1, q->decode_buffer_2); 946 joint_decode(q, q->decode_buffer_1, q->decode_buffer_2);
992 993
993 #ifdef COOKDEBUG 994 #ifdef COOKDEBUG
994 static void dump_cook_context(COOKContext *q) 995 static void dump_cook_context(COOKContext *q)
995 { 996 {
996 //int i=0; 997 //int i=0;
997 #define PRINT(a,b) av_log(NULL,AV_LOG_ERROR," %s = %d\n", a, b); 998 #define PRINT(a,b) av_log(q->avctx,AV_LOG_ERROR," %s = %d\n", a, b);
998 av_log(NULL,AV_LOG_ERROR,"COOKextradata\n"); 999 av_log(q->avctx,AV_LOG_ERROR,"COOKextradata\n");
999 av_log(NULL,AV_LOG_ERROR,"cookversion=%x\n",q->cookversion); 1000 av_log(q->avctx,AV_LOG_ERROR,"cookversion=%x\n",q->cookversion);
1000 if (q->cookversion > STEREO) { 1001 if (q->cookversion > STEREO) {
1001 PRINT("js_subband_start",q->js_subband_start); 1002 PRINT("js_subband_start",q->js_subband_start);
1002 PRINT("js_vlc_bits",q->js_vlc_bits); 1003 PRINT("js_vlc_bits",q->js_vlc_bits);
1003 } 1004 }
1004 av_log(NULL,AV_LOG_ERROR,"COOKContext\n"); 1005 av_log(q->avctx,AV_LOG_ERROR,"COOKContext\n");
1005 PRINT("nb_channels",q->nb_channels); 1006 PRINT("nb_channels",q->nb_channels);
1006 PRINT("bit_rate",q->bit_rate); 1007 PRINT("bit_rate",q->bit_rate);
1007 PRINT("sample_rate",q->sample_rate); 1008 PRINT("sample_rate",q->sample_rate);
1008 PRINT("samples_per_channel",q->samples_per_channel); 1009 PRINT("samples_per_channel",q->samples_per_channel);
1009 PRINT("samples_per_frame",q->samples_per_frame); 1010 PRINT("samples_per_frame",q->samples_per_frame);
1024 1025
1025 static av_cold int cook_decode_init(AVCodecContext *avctx) 1026 static av_cold int cook_decode_init(AVCodecContext *avctx)
1026 { 1027 {
1027 COOKContext *q = avctx->priv_data; 1028 COOKContext *q = avctx->priv_data;
1028 const uint8_t *edata_ptr = avctx->extradata; 1029 const uint8_t *edata_ptr = avctx->extradata;
1030 q->avctx = avctx;
1029 1031
1030 /* Take care of the codec specific extradata. */ 1032 /* Take care of the codec specific extradata. */
1031 if (avctx->extradata_size <= 0) { 1033 if (avctx->extradata_size <= 0) {
1032 av_log(avctx,AV_LOG_ERROR,"Necessary extradata missing!\n"); 1034 av_log(avctx,AV_LOG_ERROR,"Necessary extradata missing!\n");
1033 return -1; 1035 return -1;
1062 /* Initialize default data states. */ 1064 /* Initialize default data states. */
1063 q->log2_numvector_size = 5; 1065 q->log2_numvector_size = 5;
1064 q->total_subbands = q->subbands; 1066 q->total_subbands = q->subbands;
1065 1067
1066 /* Initialize version-dependent variables */ 1068 /* Initialize version-dependent variables */
1067 av_log(NULL,AV_LOG_DEBUG,"q->cookversion=%x\n",q->cookversion); 1069 av_log(avctx,AV_LOG_DEBUG,"q->cookversion=%x\n",q->cookversion);
1068 q->joint_stereo = 0; 1070 q->joint_stereo = 0;
1069 switch (q->cookversion) { 1071 switch (q->cookversion) {
1070 case MONO: 1072 case MONO:
1071 if (q->nb_channels != 1) { 1073 if (q->nb_channels != 1) {
1072 av_log(avctx,AV_LOG_ERROR,"Container channels != 1, report sample!\n"); 1074 av_log(avctx,AV_LOG_ERROR,"Container channels != 1, report sample!\n");