23 #ifndef AVCODEC_APTX_H 24 #define AVCODEC_APTX_H 48 #define FILTER_TAPS 16 102 typedef const struct {
115 #define RSHIFT_SIZE(size) \ 117 static int##size##_t rshift##size(int##size##_t value, int shift) \ 119 int##size##_t rounding = (int##size##_t)1 << (shift - 1); \ 120 int##size##_t mask = ((int##size##_t)1 << (shift + 1)) - 1; \ 121 return ((value + rounding) >> shift) - ((value & mask) == rounding); \ 124 static int##size##_t rshift##size##_clip24(int##size##_t value, int shift) \ 126 return av_clip_intp2(rshift##size(value, shift), 23); \ 137 730, -413, -9611, 43626, -121026, 269973, -585547, 2801966,
138 697128, -160481, 27611, 8478, -10043, 3511, 688, -897,
141 -897, 688, 3511, -10043, 8478, 27611, -160481, 697128,
142 2801966, -585547, 269973, -121026, 43626, -9611, -413, 730,
152 1033, -584, -13592, 61697, -171156, 381799, -828088, 3962579,
153 985888, -226954, 39048, 11990, -14203, 4966, 973, -1268,
156 -1268, 973, 4966, -14203, 11990, 39048, -226954, 985888,
157 3962579, -828088, 381799, -171156, 61697, -13592, -584, 1033,
186 e +=
MUL64(sig[i], coeffs[i]);
188 return rshift64_clip24(e, shift);
196 for (subband = 0; subband <
NB_SUBBANDS; subband++)
209 int eighth = *idx == 7;
210 *idx = (*idx + 1) & 7;
212 return parity ^ eighth;
static int shift(int a, int b)
int32_t reconstructed_difference
static av_always_inline int32_t aptx_qmf_convolution(FilterSignal *signal, const int32_t coeffs[FILTER_TAPS], int shift)
const int32_t * quantize_dither_factors
static av_always_inline void aptx_qmf_filter_signal_push(FilterSignal *signal, int32_t sample)
static int32_t aptx_quantized_parity(Channel *channel)
const int16_t * quantize_factor_select_offset
Quantize quantize[NB_SUBBANDS]
static const int32_t aptx_qmf_inner_coeffs[NB_FILTERS][FILTER_TAPS]
static const int32_t aptx_qmf_outer_coeffs[NB_FILTERS][FILTER_TAPS]
static const uint8_t dither[8][8]
int32_t quantized_sample_parity_change
int32_t quantization_factor
int32_t previous_reconstructed_sample
Libavcodec external API header.
const int32_t * invert_quantize_dither_factors
main external API structure.
static int aptx_check_parity(Channel channels[NB_CHANNELS], int32_t *idx)
int ff_aptx_init(AVCodecContext *avctx)
void ff_aptx_generate_dither(Channel *channel)
common internal api header.
channel
Use these values when setting the channel map with ebur128_set_channel().
const int32_t * quantize_intervals
static int quantize(CinepakEncContext *s, int h, uint8_t *data[4], int linesize[4], int v1mode, strip_info *info, mb_encoding encoding)
ConstTables ff_aptx_quant_tables[2][NB_SUBBANDS]
#define RSHIFT_SIZE(size)
void ff_aptx_invert_quantize_and_prediction(Channel *channel, int hd)
int32_t predicted_difference
int32_t buffer[2 *FILTER_TAPS]