mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avcodec/mlpenc: increase compression ratio when input is of lower bit depth
This commit is contained in:
parent
b36f3d5330
commit
0be5da9cfa
@ -1259,16 +1259,9 @@ static void input_to_sample_buffer(MLPEncodeContext *ctx)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/** Counts the number of trailing zeroes in a value */
|
/** Counts the number of trailing zeroes in a value */
|
||||||
static int number_trailing_zeroes(int32_t sample, const int wordlength)
|
static int number_trailing_zeroes(int32_t sample)
|
||||||
{
|
{
|
||||||
int bits = ff_ctz(sample);
|
return FFMIN(15, ff_ctz(sample));
|
||||||
|
|
||||||
/* All samples are 0. TODO Return previous quant_step_size to avoid
|
|
||||||
* writing a new header. */
|
|
||||||
if (bits >= wordlength)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return bits;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Determines how many bits are zero at the end of all samples so they can be
|
/** Determines how many bits are zero at the end of all samples so they can be
|
||||||
@ -1279,7 +1272,6 @@ static void determine_quant_step_size(MLPEncodeContext *ctx)
|
|||||||
DecodingParams *dp = ctx->cur_decoding_params;
|
DecodingParams *dp = ctx->cur_decoding_params;
|
||||||
RestartHeader *rh = ctx->cur_restart_header;
|
RestartHeader *rh = ctx->cur_restart_header;
|
||||||
MatrixParams *mp = &dp->matrix_params;
|
MatrixParams *mp = &dp->matrix_params;
|
||||||
const int wordlength = ctx->wordlength;
|
|
||||||
int32_t *sample_buffer = ctx->sample_buffer;
|
int32_t *sample_buffer = ctx->sample_buffer;
|
||||||
int32_t sample_mask[MAX_CHANNELS];
|
int32_t sample_mask[MAX_CHANNELS];
|
||||||
|
|
||||||
@ -1293,7 +1285,7 @@ static void determine_quant_step_size(MLPEncodeContext *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned int channel = 0; channel <= rh->max_channel; channel++)
|
for (unsigned int channel = 0; channel <= rh->max_channel; channel++)
|
||||||
dp->quant_step_size[channel] = number_trailing_zeroes(sample_mask[channel], wordlength) - mp->shift[channel];
|
dp->quant_step_size[channel] = number_trailing_zeroes(sample_mask[channel]) - mp->shift[channel];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Determines the smallest number of bits needed to encode the filter
|
/** Determines the smallest number of bits needed to encode the filter
|
||||||
|
Loading…
Reference in New Issue
Block a user