Commit 78e01900 authored by alex's avatar alex

explain extradata and pass avctx to av_log's


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@5042 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent a31bb297
...@@ -32,6 +32,22 @@ ...@@ -32,6 +32,22 @@
* bytes 0-3 atom size (0x24), big-endian * bytes 0-3 atom size (0x24), big-endian
* bytes 4-7 atom type ('alac', not the 'alac' tag from start of stsd) * bytes 4-7 atom type ('alac', not the 'alac' tag from start of stsd)
* bytes 8-35 data bytes needed by decoder * bytes 8-35 data bytes needed by decoder
*
* Extradata:
* 32bit size
* 32bit tag (=alac)
* 32bit zero?
* 32bit max sample per frame
* 8bit ?? (zero?)
* 8bit sample size
* 8bit history mult
* 8bit initial history
* 8bit kmodifier
* 8bit channels?
* 16bit ??
* 32bit max coded frame size
* 32bit bitrate?
* 32bit samplerate
*/ */
...@@ -99,14 +115,14 @@ static void alac_set_info(ALACContext *alac) ...@@ -99,14 +115,14 @@ static void alac_set_info(ALACContext *alac)
alac->setinfo_rice_historymult = *ptr++; alac->setinfo_rice_historymult = *ptr++;
alac->setinfo_rice_initialhistory = *ptr++; alac->setinfo_rice_initialhistory = *ptr++;
alac->setinfo_rice_kmodifier = *ptr++; alac->setinfo_rice_kmodifier = *ptr++;
alac->setinfo_7f = *ptr++; alac->setinfo_7f = *ptr++; // channels?
alac->setinfo_80 = BE_16(ptr); alac->setinfo_80 = BE_16(ptr);
ptr += 2; ptr += 2;
alac->setinfo_82 = BE_32(ptr); alac->setinfo_82 = BE_32(ptr); // max coded frame size
ptr += 4; ptr += 4;
alac->setinfo_86 = BE_32(ptr); alac->setinfo_86 = BE_32(ptr); // bitrate ?
ptr += 4; ptr += 4;
alac->setinfo_8a_rate = BE_32(ptr); alac->setinfo_8a_rate = BE_32(ptr); // samplerate
ptr += 4; ptr += 4;
allocate_buffers(alac); allocate_buffers(alac);
...@@ -444,7 +460,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -444,7 +460,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
/* initialize from the extradata */ /* initialize from the extradata */
if (!alac->context_initialized) { if (!alac->context_initialized) {
if (alac->avctx->extradata_size != ALAC_EXTRADATA_SIZE) { if (alac->avctx->extradata_size != ALAC_EXTRADATA_SIZE) {
av_log(NULL, AV_LOG_ERROR, "alac: expected %d extradata bytes\n", av_log(avctx, AV_LOG_ERROR, "alac: expected %d extradata bytes\n",
ALAC_EXTRADATA_SIZE); ALAC_EXTRADATA_SIZE);
return input_buffer_size; return input_buffer_size;
} }
...@@ -500,7 +516,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -500,7 +516,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
int prediction_quantitization; int prediction_quantitization;
int i; int i;
/* skip 16 bits, not sure what they are. seem to be used in /* FIXME: skip 16 bits, not sure what they are. seem to be used in
* two channel case */ * two channel case */
get_bits(&alac->gb, 8); get_bits(&alac->gb, 8);
get_bits(&alac->gb, 8); get_bits(&alac->gb, 8);
...@@ -520,7 +536,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -520,7 +536,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
/* these bytes seem to have something to do with /* these bytes seem to have something to do with
* > 2 channel files. * > 2 channel files.
*/ */
av_log(NULL, AV_LOG_ERROR, "FIXME: unimplemented, unhandling of wasted_bytes\n"); av_log(avctx, AV_LOG_ERROR, "FIXME: unimplemented, unhandling of wasted_bytes\n");
} }
bastardized_rice_decompress(alac, bastardized_rice_decompress(alac,
...@@ -542,7 +558,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -542,7 +558,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
predictor_coef_num, predictor_coef_num,
prediction_quantitization); prediction_quantitization);
} else { } else {
av_log(NULL, AV_LOG_ERROR, "FIXME: unhandled prediction type: %i\n", prediction_type); av_log(avctx, AV_LOG_ERROR, "FIXME: unhandled prediction type: %i\n", prediction_type);
/* i think the only other prediction type (or perhaps this is just a /* i think the only other prediction type (or perhaps this is just a
* boolean?) runs adaptive fir twice.. like: * boolean?) runs adaptive fir twice.. like:
* predictor_decompress_fir_adapt(predictor_error, tempout, ...) * predictor_decompress_fir_adapt(predictor_error, tempout, ...)
...@@ -594,7 +610,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -594,7 +610,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
case 20: case 20:
case 24: case 24:
case 32: case 32:
av_log(NULL, AV_LOG_ERROR, "FIXME: unimplemented sample size %i\n", alac->setinfo_sample_size); av_log(avctx, AV_LOG_ERROR, "FIXME: unimplemented sample size %i\n", alac->setinfo_sample_size);
break; break;
default: default:
break; break;
...@@ -679,7 +695,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -679,7 +695,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
/*********************/ /*********************/
if (wasted_bytes) { if (wasted_bytes) {
/* see mono case */ /* see mono case */
av_log(NULL, AV_LOG_ERROR, "FIXME: unimplemented, unhandling of wasted_bytes\n"); av_log(avctx, AV_LOG_ERROR, "FIXME: unimplemented, unhandling of wasted_bytes\n");
} }
/* channel 1 */ /* channel 1 */
...@@ -703,7 +719,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -703,7 +719,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
prediction_quantitization_a); prediction_quantitization_a);
} else { } else {
/* see mono case */ /* see mono case */
av_log(NULL, AV_LOG_ERROR, "FIXME: unhandled prediction type: %i\n", prediction_type_a); av_log(avctx, AV_LOG_ERROR, "FIXME: unhandled prediction type: %i\n", prediction_type_a);
} }
/* channel 2 */ /* channel 2 */
...@@ -726,7 +742,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -726,7 +742,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
predictor_coef_num_b, predictor_coef_num_b,
prediction_quantitization_b); prediction_quantitization_b);
} else { } else {
av_log(NULL, AV_LOG_ERROR, "FIXME: unhandled prediction type: %i\n", prediction_type_b); av_log(avctx, AV_LOG_ERROR, "FIXME: unhandled prediction type: %i\n", prediction_type_b);
} }
} else { } else {
/* not compressed, easy case */ /* not compressed, easy case */
...@@ -782,7 +798,7 @@ static int alac_decode_frame(AVCodecContext *avctx, ...@@ -782,7 +798,7 @@ static int alac_decode_frame(AVCodecContext *avctx,
case 20: case 20:
case 24: case 24:
case 32: case 32:
av_log(NULL, AV_LOG_ERROR, "FIXME: unimplemented sample size %i\n", alac->setinfo_sample_size); av_log(avctx, AV_LOG_ERROR, "FIXME: unimplemented sample size %i\n", alac->setinfo_sample_size);
break; break;
default: default:
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment