explain extradata and pass avctx to av_log's
Originally committed as revision 5042 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b0ca57356e
commit
a1db1fc445
@ -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)
|
|||||||
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,
|
|||||||
/* 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,
|
|||||||
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,
|
|||||||
/* 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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
/*********************/
|
/*********************/
|
||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user