diff --git a/libavcodec/mlpenc.c b/libavcodec/mlpenc.c index ce7ad2d5ea..cb4eabbae2 100644 --- a/libavcodec/mlpenc.c +++ b/libavcodec/mlpenc.c @@ -1259,16 +1259,9 @@ static void input_to_sample_buffer(MLPEncodeContext *ctx) ****************************************************************************/ /** 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); - - /* All samples are 0. TODO Return previous quant_step_size to avoid - * writing a new header. */ - if (bits >= wordlength) - return 0; - - return bits; + return FFMIN(15, ff_ctz(sample)); } /** 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; RestartHeader *rh = ctx->cur_restart_header; MatrixParams *mp = &dp->matrix_params; - const int wordlength = ctx->wordlength; int32_t *sample_buffer = ctx->sample_buffer; 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++) - 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