[FFmpeg-devel] [PATCH 1/2] aptx: implement the aptX bluetooth codec
Michael Niedermayer
michael at niedermayer.cc
Wed Nov 8 19:26:03 EET 2017
On Wed, Nov 08, 2017 at 02:06:09PM +0100, Aurelien Jacobs wrote:
[...]
> +typedef const struct {
> + const int32_t *quantize_intervals;
> + const int32_t *invert_quantize_dither_factors;
> + const int32_t *quantize_dither_factors;
> + const int32_t *quantize_factor_select_offset;
this would fit in int16_t *
> + int tables_size;
> + int32_t quantized_bits;
> + int32_t prediction_order;
> +} ConstTables;
> +
> +static ConstTables tables[NB_SUBBANDS] = {
> + [LF] = { quantize_intervals_LF,
> + invert_quantize_dither_factors_LF,
> + quantize_dither_factors_LF,
> + quantize_factor_select_offset_LF,
> + FF_ARRAY_ELEMS(quantize_intervals_LF),
> + 7, 24 },
> + [MLF] = { quantize_intervals_MLF,
> + invert_quantize_dither_factors_MLF,
> + quantize_dither_factors_MLF,
> + quantize_factor_select_offset_MLF,
> + FF_ARRAY_ELEMS(quantize_intervals_MLF),
> + 4, 12 },
> + [MHF] = { quantize_intervals_MHF,
> + invert_quantize_dither_factors_MHF,
> + quantize_dither_factors_MHF,
> + quantize_factor_select_offset_MHF,
> + FF_ARRAY_ELEMS(quantize_intervals_MHF),
> + 2, 6 },
> + [HF] = { quantize_intervals_HF,
> + invert_quantize_dither_factors_HF,
> + quantize_dither_factors_HF,
> + quantize_factor_select_offset_HF,
> + FF_ARRAY_ELEMS(quantize_intervals_HF),
> + 3, 12 },
> +};
> +
> +static const int32_t quantization_factors[32] = {
> + 2048, 2093, 2139, 2186, 2233, 2282, 2332, 2383,
> + 2435, 2489, 2543, 2599, 2656, 2714, 2774, 2834,
> + 2896, 2960, 3025, 3091, 3158, 3228, 3298, 3371,
> + 3444, 3520, 3597, 3676, 3756, 3838, 3922, 4008,
> +};
this too would fir in int16_t
[...]
> +/*
> + * Push one sample into a circular signal buffer.
> + */
> +av_always_inline
> +static void aptx_qmf_filter_signal_push(FilterSignal *signal, int32_t sample)
> +{
> + signal->buffer[signal->pos ] = sample;
> + signal->buffer[signal->pos+FILTER_TAPS] = sample;
> + signal->pos = (signal->pos + 1) % FILTER_TAPS;
% could be replaced by &
> +}
> +
> +/*
> + * Compute the convolution of the signal with the coefficients, and reduce
> + * to 24 bits by applying the specified right shifting.
> + */
> +av_always_inline
> +static int32_t aptx_qmf_convolution(FilterSignal *signal,
> + const int32_t coeffs[FILTER_TAPS],
> + int shift)
> +{
> + int32_t *sig = &signal->buffer[signal->pos];
> + int64_t e = 0;
> +
> + for (int i = 0; i < FILTER_TAPS; i++)
"for (int" is something we avoided as some comilers didnt like it,
iam not sure if this is still true but there are none in the codebase
also a fate test for this would be a good idea
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The real ebay dictionary, page 1
"Used only once" - "Some unspecified defect prevented a second use"
"In good condition" - "Can be repaird by experienced expert"
"As is" - "You wouldnt want it even if you were payed for it, if you knew ..."
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20171108/6b23201e/attachment.sig>
More information about the ffmpeg-devel
mailing list