alac: cosmetics: rename some ALACContext parameters

This commit is contained in:
Justin Ruggles 2012-07-09 10:23:47 -04:00
parent 2ac1737583
commit 836e8b9ba0

View File

@ -37,7 +37,7 @@
* 8bit sample size * 8bit sample size
* 8bit history mult (40) * 8bit history mult (40)
* 8bit initial history (14) * 8bit initial history (14)
* 8bit kmodifier (10) * 8bit rice param limit (10)
* 8bit channels * 8bit channels
* 16bit maxRun (255) * 16bit maxRun (255)
* 32bit max coded frame size (0 means unknown) * 32bit max coded frame size (0 means unknown)
@ -61,20 +61,18 @@ typedef struct {
AVFrame frame; AVFrame frame;
GetBitContext gb; GetBitContext gb;
int numchannels; int channels;
/* buffers */ /* buffers */
int32_t *predicterror_buffer[MAX_CHANNELS]; int32_t *predict_error_buffer[MAX_CHANNELS];
int32_t *output_samples_buffer[MAX_CHANNELS];
int32_t *outputsamples_buffer[MAX_CHANNELS];
int32_t *extra_bits_buffer[MAX_CHANNELS]; int32_t *extra_bits_buffer[MAX_CHANNELS];
uint32_t setinfo_max_samples_per_frame; uint32_t max_samples_per_frame;
uint8_t setinfo_sample_size; uint8_t sample_size;
uint8_t setinfo_rice_historymult; uint8_t rice_history_mult;
uint8_t setinfo_rice_initialhistory; uint8_t rice_initial_history;
uint8_t setinfo_rice_kmodifier; uint8_t rice_limit;
int extra_bits; /**< number of extra bits beyond 16-bit */ int extra_bits; /**< number of extra bits beyond 16-bit */
} ALACContext; } ALACContext;
@ -109,13 +107,13 @@ static void bastardized_rice_decompress(ALACContext *alac,
int32_t *output_buffer, int32_t *output_buffer,
int output_size, int output_size,
int readsamplesize, int readsamplesize,
int rice_initialhistory, int rice_initial_history,
int rice_kmodifier, int rice_limit,
int rice_historymult, int rice_history_mult,
int rice_kmodifier_mask) int rice_kmodifier_mask)
{ {
int output_count; int output_count;
unsigned int history = rice_initialhistory; unsigned int history = rice_initial_history;
int sign_modifier = 0; int sign_modifier = 0;
for (output_count = 0; output_count < output_size; output_count++) { for (output_count = 0; output_count < output_size; output_count++) {
@ -128,7 +126,7 @@ static void bastardized_rice_decompress(ALACContext *alac,
/* read k, that is bits as is */ /* read k, that is bits as is */
k = av_log2((history >> 9) + 3); k = av_log2((history >> 9) + 3);
x= decode_scalar(&alac->gb, k, rice_kmodifier, readsamplesize); x= decode_scalar(&alac->gb, k, rice_limit, readsamplesize);
x_modified = sign_modifier + x; x_modified = sign_modifier + x;
final_val = (x_modified + 1) / 2; final_val = (x_modified + 1) / 2;
@ -139,8 +137,8 @@ static void bastardized_rice_decompress(ALACContext *alac,
sign_modifier = 0; sign_modifier = 0;
/* now update the history */ /* now update the history */
history += x_modified * rice_historymult history += x_modified * rice_history_mult -
- ((history * rice_historymult) >> 9); ((history * rice_history_mult) >> 9);
if (x_modified > 0xffff) if (x_modified > 0xffff)
history = 0xffff; history = 0xffff;
@ -154,7 +152,7 @@ static void bastardized_rice_decompress(ALACContext *alac,
k = 7 - av_log2(history) + ((history + 16) >> 6 /* / 64 */); k = 7 - av_log2(history) + ((history + 16) >> 6 /* / 64 */);
block_size= decode_scalar(&alac->gb, k, rice_kmodifier, 16); block_size = decode_scalar(&alac->gb, k, rice_limit, 16);
if (block_size > 0) { if (block_size > 0) {
if(block_size >= output_size - output_count){ if(block_size >= output_size - output_count){
@ -377,12 +375,13 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
if (hassize) { if (hassize) {
/* now read the number of samples as a 32bit integer */ /* now read the number of samples as a 32bit integer */
outputsamples = get_bits_long(&alac->gb, 32); outputsamples = get_bits_long(&alac->gb, 32);
if(outputsamples > alac->setinfo_max_samples_per_frame){ if (outputsamples > alac->max_samples_per_frame) {
av_log(avctx, AV_LOG_ERROR, "outputsamples %d > %d\n", outputsamples, alac->setinfo_max_samples_per_frame); av_log(avctx, AV_LOG_ERROR, "outputsamples %d > %d\n",
outputsamples, alac->max_samples_per_frame);
return -1; return -1;
} }
} else } else
outputsamples = alac->setinfo_max_samples_per_frame; outputsamples = alac->max_samples_per_frame;
/* get output buffer */ /* get output buffer */
if (outputsamples > INT32_MAX) { if (outputsamples > INT32_MAX) {
@ -395,7 +394,7 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
return ret; return ret;
} }
readsamplesize = alac->setinfo_sample_size - alac->extra_bits + channels - 1; readsamplesize = alac->sample_size - alac->extra_bits + channels - 1;
if (readsamplesize > MIN_CACHE_BITS) { if (readsamplesize > MIN_CACHE_BITS) {
av_log(avctx, AV_LOG_ERROR, "readsamplesize too big (%d)\n", readsamplesize); av_log(avctx, AV_LOG_ERROR, "readsamplesize too big (%d)\n", readsamplesize);
return -1; return -1;
@ -432,13 +431,13 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
} }
for (ch = 0; ch < channels; ch++) { for (ch = 0; ch < channels; ch++) {
bastardized_rice_decompress(alac, bastardized_rice_decompress(alac,
alac->predicterror_buffer[ch], alac->predict_error_buffer[ch],
outputsamples, outputsamples,
readsamplesize, readsamplesize,
alac->setinfo_rice_initialhistory, alac->rice_initial_history,
alac->setinfo_rice_kmodifier, alac->rice_limit,
ricemodifier[ch] * alac->setinfo_rice_historymult / 4, ricemodifier[ch] * alac->rice_history_mult / 4,
(1 << alac->setinfo_rice_kmodifier) - 1); (1 << alac->rice_limit) - 1);
/* adaptive FIR filter */ /* adaptive FIR filter */
if (prediction_type[ch] == 15) { if (prediction_type[ch] == 15) {
@ -449,16 +448,16 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
* However, this prediction type is not currently used by the * However, this prediction type is not currently used by the
* reference encoder. * reference encoder.
*/ */
predictor_decompress_fir_adapt(alac->predicterror_buffer[ch], predictor_decompress_fir_adapt(alac->predict_error_buffer[ch],
alac->predicterror_buffer[ch], alac->predict_error_buffer[ch],
outputsamples, readsamplesize, outputsamples, readsamplesize,
NULL, 31, 0); NULL, 31, 0);
} else if (prediction_type[ch] > 0) { } else if (prediction_type[ch] > 0) {
av_log(avctx, AV_LOG_WARNING, "unknown prediction type: %i\n", av_log(avctx, AV_LOG_WARNING, "unknown prediction type: %i\n",
prediction_type[ch]); prediction_type[ch]);
} }
predictor_decompress_fir_adapt(alac->predicterror_buffer[ch], predictor_decompress_fir_adapt(alac->predict_error_buffer[ch],
alac->outputsamples_buffer[ch], alac->output_samples_buffer[ch],
outputsamples, readsamplesize, outputsamples, readsamplesize,
predictor_coef_table[ch], predictor_coef_table[ch],
predictor_coef_num[ch], predictor_coef_num[ch],
@ -468,8 +467,8 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
/* not compressed, easy case */ /* not compressed, easy case */
for (i = 0; i < outputsamples; i++) { for (i = 0; i < outputsamples; i++) {
for (ch = 0; ch < channels; ch++) { for (ch = 0; ch < channels; ch++) {
alac->outputsamples_buffer[ch][i] = get_sbits_long(&alac->gb, alac->output_samples_buffer[ch][i] = get_sbits_long(&alac->gb,
alac->setinfo_sample_size); alac->sample_size);
} }
} }
alac->extra_bits = 0; alac->extra_bits = 0;
@ -480,35 +479,35 @@ static int alac_decode_frame(AVCodecContext *avctx, void *data,
av_log(avctx, AV_LOG_ERROR, "Error : Wrong End Of Frame\n"); av_log(avctx, AV_LOG_ERROR, "Error : Wrong End Of Frame\n");
if (channels == 2 && interlacing_leftweight) { if (channels == 2 && interlacing_leftweight) {
decorrelate_stereo(alac->outputsamples_buffer, outputsamples, decorrelate_stereo(alac->output_samples_buffer, outputsamples,
interlacing_shift, interlacing_leftweight); interlacing_shift, interlacing_leftweight);
} }
if (alac->extra_bits) { if (alac->extra_bits) {
append_extra_bits(alac->outputsamples_buffer, alac->extra_bits_buffer, append_extra_bits(alac->output_samples_buffer, alac->extra_bits_buffer,
alac->extra_bits, alac->numchannels, outputsamples); alac->extra_bits, alac->channels, outputsamples);
} }
switch(alac->setinfo_sample_size) { switch(alac->sample_size) {
case 16: case 16:
if (channels == 2) { if (channels == 2) {
interleave_stereo_16(alac->outputsamples_buffer, interleave_stereo_16(alac->output_samples_buffer,
(int16_t *)alac->frame.data[0], outputsamples); (int16_t *)alac->frame.data[0], outputsamples);
} else { } else {
int16_t *outbuffer = (int16_t *)alac->frame.data[0]; int16_t *outbuffer = (int16_t *)alac->frame.data[0];
for (i = 0; i < outputsamples; i++) { for (i = 0; i < outputsamples; i++) {
outbuffer[i] = alac->outputsamples_buffer[0][i]; outbuffer[i] = alac->output_samples_buffer[0][i];
} }
} }
break; break;
case 24: case 24:
if (channels == 2) { if (channels == 2) {
interleave_stereo_24(alac->outputsamples_buffer, interleave_stereo_24(alac->output_samples_buffer,
(int32_t *)alac->frame.data[0], outputsamples); (int32_t *)alac->frame.data[0], outputsamples);
} else { } else {
int32_t *outbuffer = (int32_t *)alac->frame.data[0]; int32_t *outbuffer = (int32_t *)alac->frame.data[0];
for (i = 0; i < outputsamples; i++) for (i = 0; i < outputsamples; i++)
outbuffer[i] = alac->outputsamples_buffer[0][i] << 8; outbuffer[i] = alac->output_samples_buffer[0][i] << 8;
} }
break; break;
} }
@ -527,9 +526,9 @@ static av_cold int alac_decode_close(AVCodecContext *avctx)
ALACContext *alac = avctx->priv_data; ALACContext *alac = avctx->priv_data;
int ch; int ch;
for (ch = 0; ch < alac->numchannels; ch++) { for (ch = 0; ch < alac->channels; ch++) {
av_freep(&alac->predicterror_buffer[ch]); av_freep(&alac->predict_error_buffer[ch]);
av_freep(&alac->outputsamples_buffer[ch]); av_freep(&alac->output_samples_buffer[ch]);
av_freep(&alac->extra_bits_buffer[ch]); av_freep(&alac->extra_bits_buffer[ch]);
} }
@ -539,13 +538,13 @@ static av_cold int alac_decode_close(AVCodecContext *avctx)
static int allocate_buffers(ALACContext *alac) static int allocate_buffers(ALACContext *alac)
{ {
int ch; int ch;
for (ch = 0; ch < alac->numchannels; ch++) { for (ch = 0; ch < alac->channels; ch++) {
int buf_size = alac->setinfo_max_samples_per_frame * sizeof(int32_t); int buf_size = alac->max_samples_per_frame * sizeof(int32_t);
FF_ALLOC_OR_GOTO(alac->avctx, alac->predicterror_buffer[ch], FF_ALLOC_OR_GOTO(alac->avctx, alac->predict_error_buffer[ch],
buf_size, buf_alloc_fail); buf_size, buf_alloc_fail);
FF_ALLOC_OR_GOTO(alac->avctx, alac->outputsamples_buffer[ch], FF_ALLOC_OR_GOTO(alac->avctx, alac->output_samples_buffer[ch],
buf_size, buf_alloc_fail); buf_size, buf_alloc_fail);
FF_ALLOC_OR_GOTO(alac->avctx, alac->extra_bits_buffer[ch], FF_ALLOC_OR_GOTO(alac->avctx, alac->extra_bits_buffer[ch],
@ -566,18 +565,18 @@ static int alac_set_info(ALACContext *alac)
bytestream2_skipu(&gb, 12); // size:4, alac:4, version:4 bytestream2_skipu(&gb, 12); // size:4, alac:4, version:4
alac->setinfo_max_samples_per_frame = bytestream2_get_be32u(&gb); alac->max_samples_per_frame = bytestream2_get_be32u(&gb);
if (alac->setinfo_max_samples_per_frame >= UINT_MAX/4){ if (alac->max_samples_per_frame >= UINT_MAX/4){
av_log(alac->avctx, AV_LOG_ERROR, av_log(alac->avctx, AV_LOG_ERROR,
"setinfo_max_samples_per_frame too large\n"); "max_samples_per_frame too large\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
bytestream2_skipu(&gb, 1); // compatible version bytestream2_skipu(&gb, 1); // compatible version
alac->setinfo_sample_size = bytestream2_get_byteu(&gb); alac->sample_size = bytestream2_get_byteu(&gb);
alac->setinfo_rice_historymult = bytestream2_get_byteu(&gb); alac->rice_history_mult = bytestream2_get_byteu(&gb);
alac->setinfo_rice_initialhistory = bytestream2_get_byteu(&gb); alac->rice_initial_history = bytestream2_get_byteu(&gb);
alac->setinfo_rice_kmodifier = bytestream2_get_byteu(&gb); alac->rice_limit = bytestream2_get_byteu(&gb);
alac->numchannels = bytestream2_get_byteu(&gb); alac->channels = bytestream2_get_byteu(&gb);
bytestream2_get_be16u(&gb); // maxRun bytestream2_get_be16u(&gb); // maxRun
bytestream2_get_be32u(&gb); // max coded frame size bytestream2_get_be32u(&gb); // max coded frame size
bytestream2_get_be32u(&gb); // average bitrate bytestream2_get_be32u(&gb); // average bitrate
@ -603,24 +602,24 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
return -1; return -1;
} }
switch (alac->setinfo_sample_size) { switch (alac->sample_size) {
case 16: avctx->sample_fmt = AV_SAMPLE_FMT_S16; case 16: avctx->sample_fmt = AV_SAMPLE_FMT_S16;
break; break;
case 24: avctx->sample_fmt = AV_SAMPLE_FMT_S32; case 24: avctx->sample_fmt = AV_SAMPLE_FMT_S32;
break; break;
default: av_log_ask_for_sample(avctx, "Sample depth %d is not supported.\n", default: av_log_ask_for_sample(avctx, "Sample depth %d is not supported.\n",
alac->setinfo_sample_size); alac->sample_size);
return AVERROR_PATCHWELCOME; return AVERROR_PATCHWELCOME;
} }
if (alac->numchannels < 1) { if (alac->channels < 1) {
av_log(avctx, AV_LOG_WARNING, "Invalid channel count\n"); av_log(avctx, AV_LOG_WARNING, "Invalid channel count\n");
alac->numchannels = avctx->channels; alac->channels = avctx->channels;
} else { } else {
if (alac->numchannels > MAX_CHANNELS) if (alac->channels > MAX_CHANNELS)
alac->numchannels = avctx->channels; alac->channels = avctx->channels;
else else
avctx->channels = alac->numchannels; avctx->channels = alac->channels;
} }
if (avctx->channels > MAX_CHANNELS) { if (avctx->channels > MAX_CHANNELS) {
av_log(avctx, AV_LOG_ERROR, "Unsupported channel count: %d\n", av_log(avctx, AV_LOG_ERROR, "Unsupported channel count: %d\n",