[flac-dev] [PATCH] stream_encoder : Improve selection of residual accumulator width

lvqcl lvqcl.mail at gmail.com
Thu Jun 19 04:30:22 PDT 2014


Miroslav Lichvar wrote:

> In the precompute_partition_info_sums_ function, instead of selecting
> 64-bit accumulator when the signal bps is larger than 16, revert to the
> original approach based on partition size, but make room for few extra
> bits to not overflow with unusual signals where the average residual
> magnitude may be larger than bps.
>
> It slightly improves the performance with standard encoding levels and
> 16-bit files as the 17-bit side channel can still be processed with the
> 32-bit accumulator and correctly selects the 64-bit accumulator with
> very large 16-bit partitions.
>

BTW, what can you say about the following place in stream_decoder.c
in read_subframe_lpc_() function:

     /*@@@@@@ technically not pessimistic enough, should be more like
     if( (FLAC__uint64)order * ((((FLAC__uint64)1)<<bps)-1) * ((1<<subframe->qlp_coeff_precision)-1) < (((FLAC__uint64)-1) << 32) )
     */
     if(bps + subframe->qlp_coeff_precision + FLAC__bitmath_ilog2(order) <= 32)

Is it really "not pessimistic enough"? Can it be changed similarly to your patch
for stream_encoder.c?


More information about the flac-dev mailing list