mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
aacdec: convert to lavu/tx and support fixed-point 960-sample decoding
This patch replaces the transform used in AAC with lavu/tx and removes the limitation on only being able to decode 960-sample files with the float decoder. This commit also removes a whole bunch of unnecessary and slow lifting steps the decoder did to compensate for the poor accuracy of the old integer transformation code. Overall float decoder speedup on Zen 3 for 64kbps: 32%
This commit is contained in:
parent
4cee7ebd75
commit
469cd8d7fa
4
configure
vendored
4
configure
vendored
@ -2763,8 +2763,8 @@ vc1dsp_select="h264chroma qpeldsp startcode"
|
|||||||
rdft_select="fft"
|
rdft_select="fft"
|
||||||
|
|
||||||
# decoders / encoders
|
# decoders / encoders
|
||||||
aac_decoder_select="adts_header mdct15 mdct mpeg4audio sinewin"
|
aac_decoder_select="adts_header mpeg4audio sinewin"
|
||||||
aac_fixed_decoder_select="adts_header mdct mpeg4audio"
|
aac_fixed_decoder_select="adts_header mpeg4audio"
|
||||||
aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
|
aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
|
||||||
aac_latm_decoder_select="aac_decoder aac_latm_parser"
|
aac_latm_decoder_select="aac_decoder aac_latm_parser"
|
||||||
ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert"
|
ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert"
|
||||||
|
@ -36,11 +36,8 @@
|
|||||||
#include "libavutil/float_dsp.h"
|
#include "libavutil/float_dsp.h"
|
||||||
#include "libavutil/fixed_dsp.h"
|
#include "libavutil/fixed_dsp.h"
|
||||||
#include "libavutil/mem_internal.h"
|
#include "libavutil/mem_internal.h"
|
||||||
|
#include "libavutil/tx.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#if !USE_FIXED
|
|
||||||
#include "mdct15.h"
|
|
||||||
#endif
|
|
||||||
#include "fft.h"
|
|
||||||
#include "mpeg4audio.h"
|
#include "mpeg4audio.h"
|
||||||
#include "sbr.h"
|
#include "sbr.h"
|
||||||
|
|
||||||
@ -326,16 +323,24 @@ struct AACContext {
|
|||||||
* @name Computed / set up during initialization
|
* @name Computed / set up during initialization
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
FFTContext mdct;
|
AVTXContext *mdct120;
|
||||||
FFTContext mdct_small;
|
AVTXContext *mdct128;
|
||||||
FFTContext mdct_ld;
|
AVTXContext *mdct480;
|
||||||
FFTContext mdct_ltp;
|
AVTXContext *mdct512;
|
||||||
|
AVTXContext *mdct960;
|
||||||
|
AVTXContext *mdct1024;
|
||||||
|
AVTXContext *mdct_ltp;
|
||||||
|
|
||||||
|
av_tx_fn mdct120_fn;
|
||||||
|
av_tx_fn mdct128_fn;
|
||||||
|
av_tx_fn mdct480_fn;
|
||||||
|
av_tx_fn mdct512_fn;
|
||||||
|
av_tx_fn mdct960_fn;
|
||||||
|
av_tx_fn mdct1024_fn;
|
||||||
|
av_tx_fn mdct_ltp_fn;
|
||||||
#if USE_FIXED
|
#if USE_FIXED
|
||||||
AVFixedDSPContext *fdsp;
|
AVFixedDSPContext *fdsp;
|
||||||
#else
|
#else
|
||||||
MDCT15Context *mdct120;
|
|
||||||
MDCT15Context *mdct480;
|
|
||||||
MDCT15Context *mdct960;
|
|
||||||
AVFloatDSPContext *fdsp;
|
AVFloatDSPContext *fdsp;
|
||||||
#endif /* USE_FIXED */
|
#endif /* USE_FIXED */
|
||||||
int random_state;
|
int random_state;
|
||||||
|
@ -29,8 +29,6 @@
|
|||||||
|
|
||||||
#include "libavutil/softfloat.h"
|
#include "libavutil/softfloat.h"
|
||||||
|
|
||||||
#define FFT_FLOAT 0
|
|
||||||
|
|
||||||
#define AAC_RENAME(x) x ## _fixed
|
#define AAC_RENAME(x) x ## _fixed
|
||||||
#define AAC_RENAME_32(x) x ## _fixed_32
|
#define AAC_RENAME_32(x) x ## _fixed_32
|
||||||
#define AAC_RENAME2(x) x ## _fixed
|
#define AAC_RENAME2(x) x ## _fixed
|
||||||
@ -45,7 +43,7 @@ typedef int AAC_SIGNE;
|
|||||||
#define Q23(a) (int)((a) * 8388608.0 + 0.5)
|
#define Q23(a) (int)((a) * 8388608.0 + 0.5)
|
||||||
#define Q30(x) (int)((x)*1073741824.0 + 0.5)
|
#define Q30(x) (int)((x)*1073741824.0 + 0.5)
|
||||||
#define Q31(x) (int)((x)*2147483648.0 + 0.5)
|
#define Q31(x) (int)((x)*2147483648.0 + 0.5)
|
||||||
#define RANGE15(x) x
|
#define TX_SCALE(x) ((x) * 128.0f)
|
||||||
#define GET_GAIN(x, y) (-(y) * (1 << (x))) + 1024
|
#define GET_GAIN(x, y) (-(y) * (1 << (x))) + 1024
|
||||||
#define AAC_MUL16(x, y) (int)(((int64_t)(x) * (y) + 0x8000) >> 16)
|
#define AAC_MUL16(x, y) (int)(((int64_t)(x) * (y) + 0x8000) >> 16)
|
||||||
#define AAC_MUL26(x, y) (int)(((int64_t)(x) * (y) + 0x2000000) >> 26)
|
#define AAC_MUL26(x, y) (int)(((int64_t)(x) * (y) + 0x2000000) >> 26)
|
||||||
@ -78,8 +76,6 @@ typedef int AAC_SIGNE;
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define FFT_FLOAT 1
|
|
||||||
|
|
||||||
#define AAC_RENAME(x) x
|
#define AAC_RENAME(x) x
|
||||||
#define AAC_RENAME_32(x) x
|
#define AAC_RENAME_32(x) x
|
||||||
#define AAC_RENAME2(x) ff_ ## x
|
#define AAC_RENAME2(x) ff_ ## x
|
||||||
@ -94,7 +90,7 @@ typedef unsigned AAC_SIGNE;
|
|||||||
#define Q23(x) ((float)(x))
|
#define Q23(x) ((float)(x))
|
||||||
#define Q30(x) ((float)(x))
|
#define Q30(x) ((float)(x))
|
||||||
#define Q31(x) ((float)(x))
|
#define Q31(x) ((float)(x))
|
||||||
#define RANGE15(x) (32768.0 * (x))
|
#define TX_SCALE(x) ((x) / 32768.0f)
|
||||||
#define GET_GAIN(x, y) powf((x), -(y))
|
#define GET_GAIN(x, y) powf((x), -(y))
|
||||||
#define AAC_MUL16(x, y) ((x) * (y))
|
#define AAC_MUL16(x, y) ((x) * (y))
|
||||||
#define AAC_MUL26(x, y) ((x) * (y))
|
#define AAC_MUL26(x, y) ((x) * (y))
|
||||||
|
@ -32,16 +32,14 @@
|
|||||||
* @author Maxim Gavrilov ( maxim.gavrilov gmail com )
|
* @author Maxim Gavrilov ( maxim.gavrilov gmail com )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define FFT_FLOAT 1
|
|
||||||
#define USE_FIXED 0
|
#define USE_FIXED 0
|
||||||
|
#define TX_TYPE AV_TX_FLOAT_MDCT
|
||||||
|
|
||||||
#include "libavutil/float_dsp.h"
|
#include "libavutil/float_dsp.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "codec_internal.h"
|
#include "codec_internal.h"
|
||||||
#include "get_bits.h"
|
#include "get_bits.h"
|
||||||
#include "fft.h"
|
|
||||||
#include "mdct15.h"
|
|
||||||
#include "lpc.h"
|
#include "lpc.h"
|
||||||
#include "kbdwin.h"
|
#include "kbdwin.h"
|
||||||
#include "sinewin.h"
|
#include "sinewin.h"
|
||||||
|
@ -58,15 +58,14 @@
|
|||||||
* @author Stanislav Ocovaj ( stanislav.ocovaj imgtec com )
|
* @author Stanislav Ocovaj ( stanislav.ocovaj imgtec com )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define FFT_FLOAT 0
|
|
||||||
#define USE_FIXED 1
|
#define USE_FIXED 1
|
||||||
|
#define TX_TYPE AV_TX_INT32_MDCT
|
||||||
|
|
||||||
#include "libavutil/fixed_dsp.h"
|
#include "libavutil/fixed_dsp.h"
|
||||||
#include "libavutil/opt.h"
|
#include "libavutil/opt.h"
|
||||||
#include "avcodec.h"
|
#include "avcodec.h"
|
||||||
#include "codec_internal.h"
|
#include "codec_internal.h"
|
||||||
#include "get_bits.h"
|
#include "get_bits.h"
|
||||||
#include "fft.h"
|
|
||||||
#include "lpc.h"
|
#include "lpc.h"
|
||||||
#include "kbdwin.h"
|
#include "kbdwin.h"
|
||||||
#include "sinewin_fixed_tablegen.h"
|
#include "sinewin_fixed_tablegen.h"
|
||||||
@ -87,6 +86,8 @@
|
|||||||
|
|
||||||
DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_long_1024))[1024];
|
DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_long_1024))[1024];
|
||||||
DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_short_128))[128];
|
DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_short_128))[128];
|
||||||
|
DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_long_960))[960];
|
||||||
|
DECLARE_ALIGNED(32, static int, AAC_RENAME2(aac_kbd_short_120))[120];
|
||||||
|
|
||||||
static av_always_inline void reset_predict_state(PredictorState *ps)
|
static av_always_inline void reset_predict_state(PredictorState *ps)
|
||||||
{
|
{
|
||||||
|
@ -845,13 +845,6 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx,
|
|||||||
uint8_t layout_map[MAX_ELEM_ID*4][3];
|
uint8_t layout_map[MAX_ELEM_ID*4][3];
|
||||||
int tags = 0;
|
int tags = 0;
|
||||||
|
|
||||||
#if USE_FIXED
|
|
||||||
if (get_bits1(gb)) { // frameLengthFlag
|
|
||||||
avpriv_report_missing_feature(avctx, "Fixed point 960/120 MDCT window");
|
|
||||||
return AVERROR_PATCHWELCOME;
|
|
||||||
}
|
|
||||||
m4ac->frame_length_short = 0;
|
|
||||||
#else
|
|
||||||
m4ac->frame_length_short = get_bits1(gb);
|
m4ac->frame_length_short = get_bits1(gb);
|
||||||
if (m4ac->frame_length_short && m4ac->sbr == 1) {
|
if (m4ac->frame_length_short && m4ac->sbr == 1) {
|
||||||
avpriv_report_missing_feature(avctx, "SBR with 960 frame length");
|
avpriv_report_missing_feature(avctx, "SBR with 960 frame length");
|
||||||
@ -859,7 +852,6 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx,
|
|||||||
m4ac->sbr = 0;
|
m4ac->sbr = 0;
|
||||||
m4ac->ps = 0;
|
m4ac->ps = 0;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (get_bits1(gb)) // dependsOnCoreCoder
|
if (get_bits1(gb)) // dependsOnCoreCoder
|
||||||
skip_bits(gb, 14); // coreCoderDelay
|
skip_bits(gb, 14); // coreCoderDelay
|
||||||
@ -936,14 +928,8 @@ static int decode_eld_specific_config(AACContext *ac, AVCodecContext *avctx,
|
|||||||
|
|
||||||
m4ac->ps = 0;
|
m4ac->ps = 0;
|
||||||
m4ac->sbr = 0;
|
m4ac->sbr = 0;
|
||||||
#if USE_FIXED
|
|
||||||
if (get_bits1(gb)) { // frameLengthFlag
|
|
||||||
avpriv_request_sample(avctx, "960/120 MDCT window");
|
|
||||||
return AVERROR_PATCHWELCOME;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
m4ac->frame_length_short = get_bits1(gb);
|
m4ac->frame_length_short = get_bits1(gb);
|
||||||
#endif
|
|
||||||
res_flags = get_bits(gb, 3);
|
res_flags = get_bits(gb, 3);
|
||||||
if (res_flags) {
|
if (res_flags) {
|
||||||
avpriv_report_missing_feature(avctx,
|
avpriv_report_missing_feature(avctx,
|
||||||
@ -1170,9 +1156,10 @@ static av_cold void aac_static_table_init(void)
|
|||||||
352);
|
352);
|
||||||
|
|
||||||
// window initialization
|
// window initialization
|
||||||
#if !USE_FIXED
|
|
||||||
AAC_RENAME(ff_kbd_window_init)(AAC_RENAME(aac_kbd_long_960), 4.0, 960);
|
AAC_RENAME(ff_kbd_window_init)(AAC_RENAME(aac_kbd_long_960), 4.0, 960);
|
||||||
AAC_RENAME(ff_kbd_window_init)(AAC_RENAME(aac_kbd_short_120), 6.0, 120);
|
AAC_RENAME(ff_kbd_window_init)(AAC_RENAME(aac_kbd_short_120), 6.0, 120);
|
||||||
|
|
||||||
|
#if !USE_FIXED
|
||||||
AAC_RENAME(ff_sine_window_init)(AAC_RENAME(sine_960), 960);
|
AAC_RENAME(ff_sine_window_init)(AAC_RENAME(sine_960), 960);
|
||||||
AAC_RENAME(ff_sine_window_init)(AAC_RENAME(sine_120), 120);
|
AAC_RENAME(ff_sine_window_init)(AAC_RENAME(sine_120), 120);
|
||||||
AAC_RENAME(ff_init_ff_sine_windows)(9);
|
AAC_RENAME(ff_init_ff_sine_windows)(9);
|
||||||
@ -1190,6 +1177,7 @@ static AVOnce aac_table_init = AV_ONCE_INIT;
|
|||||||
|
|
||||||
static av_cold int aac_decode_init(AVCodecContext *avctx)
|
static av_cold int aac_decode_init(AVCodecContext *avctx)
|
||||||
{
|
{
|
||||||
|
float scale;
|
||||||
AACContext *ac = avctx->priv_data;
|
AACContext *ac = avctx->priv_data;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -1262,21 +1250,25 @@ static av_cold int aac_decode_init(AVCodecContext *avctx)
|
|||||||
|
|
||||||
ac->random_state = 0x1f2e3d4c;
|
ac->random_state = 0x1f2e3d4c;
|
||||||
|
|
||||||
AAC_RENAME_32(ff_mdct_init)(&ac->mdct, 11, 1, 1.0 / RANGE15(1024.0));
|
#define MDCT_INIT(s, fn, len, sval) \
|
||||||
AAC_RENAME_32(ff_mdct_init)(&ac->mdct_ld, 10, 1, 1.0 / RANGE15(512.0));
|
scale = sval; \
|
||||||
AAC_RENAME_32(ff_mdct_init)(&ac->mdct_small, 8, 1, 1.0 / RANGE15(128.0));
|
ret = av_tx_init(&s, &fn, TX_TYPE, 1, len, &scale, 0); \
|
||||||
AAC_RENAME_32(ff_mdct_init)(&ac->mdct_ltp, 11, 0, RANGE15(-2.0));
|
if (ret < 0) \
|
||||||
#if !USE_FIXED
|
return ret;
|
||||||
ret = ff_mdct15_init(&ac->mdct120, 1, 3, 1.0f/(16*1024*120*2));
|
|
||||||
|
MDCT_INIT(ac->mdct120, ac->mdct120_fn, 120, TX_SCALE(1.0/120))
|
||||||
|
MDCT_INIT(ac->mdct128, ac->mdct128_fn, 128, TX_SCALE(1.0/128))
|
||||||
|
MDCT_INIT(ac->mdct480, ac->mdct480_fn, 480, TX_SCALE(1.0/480))
|
||||||
|
MDCT_INIT(ac->mdct512, ac->mdct512_fn, 512, TX_SCALE(1.0/512))
|
||||||
|
MDCT_INIT(ac->mdct960, ac->mdct960_fn, 960, TX_SCALE(1.0/960))
|
||||||
|
MDCT_INIT(ac->mdct1024, ac->mdct1024_fn, 1024, TX_SCALE(1.0/1024))
|
||||||
|
#undef MDCT_INIT
|
||||||
|
|
||||||
|
/* LTP forward MDCT */
|
||||||
|
scale = USE_FIXED ? -1.0 : -32786.0*2 + 36;
|
||||||
|
ret = av_tx_init(&ac->mdct_ltp, &ac->mdct_ltp_fn, TX_TYPE, 0, 1024, &scale, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
ret = ff_mdct15_init(&ac->mdct480, 1, 5, 1.0f/(16*1024*960));
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
ret = ff_mdct15_init(&ac->mdct960, 1, 6, 1.0f/(16*1024*960*2));
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2605,7 +2597,7 @@ static void windowing_and_mdct_ltp(AACContext *ac, INTFLOAT *out,
|
|||||||
ac->fdsp->vector_fmul_reverse(in + 1024 + 448, in + 1024 + 448, swindow, 128);
|
ac->fdsp->vector_fmul_reverse(in + 1024 + 448, in + 1024 + 448, swindow, 128);
|
||||||
memset(in + 1024 + 576, 0, 448 * sizeof(*in));
|
memset(in + 1024 + 576, 0, 448 * sizeof(*in));
|
||||||
}
|
}
|
||||||
ac->mdct_ltp.mdct_calc(&ac->mdct_ltp, out, in);
|
ac->mdct_ltp_fn(ac->mdct_ltp, out, in, sizeof(INTFLOAT));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2697,13 +2689,9 @@ static void imdct_and_windowing(AACContext *ac, SingleChannelElement *sce)
|
|||||||
// imdct
|
// imdct
|
||||||
if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
|
if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
|
||||||
for (i = 0; i < 1024; i += 128)
|
for (i = 0; i < 1024; i += 128)
|
||||||
ac->mdct_small.imdct_half(&ac->mdct_small, buf + i, in + i);
|
ac->mdct128_fn(ac->mdct128, buf + i, in + i, sizeof(INTFLOAT));
|
||||||
} else {
|
} else {
|
||||||
ac->mdct.imdct_half(&ac->mdct, buf, in);
|
ac->mdct1024_fn(ac->mdct1024, buf, in, sizeof(INTFLOAT));
|
||||||
#if USE_FIXED
|
|
||||||
for (i=0; i<1024; i++)
|
|
||||||
buf[i] = (buf[i] + 4LL) >> 3;
|
|
||||||
#endif /* USE_FIXED */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* window overlapping
|
/* window overlapping
|
||||||
@ -2751,7 +2739,6 @@ static void imdct_and_windowing(AACContext *ac, SingleChannelElement *sce)
|
|||||||
*/
|
*/
|
||||||
static void imdct_and_windowing_960(AACContext *ac, SingleChannelElement *sce)
|
static void imdct_and_windowing_960(AACContext *ac, SingleChannelElement *sce)
|
||||||
{
|
{
|
||||||
#if !USE_FIXED
|
|
||||||
IndividualChannelStream *ics = &sce->ics;
|
IndividualChannelStream *ics = &sce->ics;
|
||||||
INTFLOAT *in = sce->coeffs;
|
INTFLOAT *in = sce->coeffs;
|
||||||
INTFLOAT *out = sce->ret;
|
INTFLOAT *out = sce->ret;
|
||||||
@ -2766,9 +2753,9 @@ static void imdct_and_windowing_960(AACContext *ac, SingleChannelElement *sce)
|
|||||||
// imdct
|
// imdct
|
||||||
if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
|
if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
|
||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
ac->mdct120->imdct_half(ac->mdct120, buf + i * 120, in + i * 128, 1);
|
ac->mdct120_fn(ac->mdct120, buf + i * 120, in + i * 128, sizeof(INTFLOAT));
|
||||||
} else {
|
} else {
|
||||||
ac->mdct960->imdct_half(ac->mdct960, buf, in, 1);
|
ac->mdct960_fn(ac->mdct960, buf, in, sizeof(INTFLOAT));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* window overlapping
|
/* window overlapping
|
||||||
@ -2810,7 +2797,6 @@ static void imdct_and_windowing_960(AACContext *ac, SingleChannelElement *sce)
|
|||||||
} else { // LONG_STOP or ONLY_LONG
|
} else { // LONG_STOP or ONLY_LONG
|
||||||
memcpy( saved, buf + 480, 480 * sizeof(*saved));
|
memcpy( saved, buf + 480, 480 * sizeof(*saved));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
static void imdct_and_windowing_ld(AACContext *ac, SingleChannelElement *sce)
|
static void imdct_and_windowing_ld(AACContext *ac, SingleChannelElement *sce)
|
||||||
{
|
{
|
||||||
@ -2819,17 +2805,9 @@ static void imdct_and_windowing_ld(AACContext *ac, SingleChannelElement *sce)
|
|||||||
INTFLOAT *out = sce->ret;
|
INTFLOAT *out = sce->ret;
|
||||||
INTFLOAT *saved = sce->saved;
|
INTFLOAT *saved = sce->saved;
|
||||||
INTFLOAT *buf = ac->buf_mdct;
|
INTFLOAT *buf = ac->buf_mdct;
|
||||||
#if USE_FIXED
|
|
||||||
int i;
|
|
||||||
#endif /* USE_FIXED */
|
|
||||||
|
|
||||||
// imdct
|
// imdct
|
||||||
ac->mdct.imdct_half(&ac->mdct_ld, buf, in);
|
ac->mdct512_fn(ac->mdct512, buf, in, sizeof(INTFLOAT));
|
||||||
|
|
||||||
#if USE_FIXED
|
|
||||||
for (i = 0; i < 1024; i++)
|
|
||||||
buf[i] = (buf[i] + 2) >> 2;
|
|
||||||
#endif /* USE_FIXED */
|
|
||||||
|
|
||||||
// window overlapping
|
// window overlapping
|
||||||
if (ics->use_kb_window[1]) {
|
if (ics->use_kb_window[1]) {
|
||||||
@ -2868,20 +2846,15 @@ static void imdct_and_windowing_eld(AACContext *ac, SingleChannelElement *sce)
|
|||||||
temp = in[i ]; in[i ] = -in[n - 1 - i]; in[n - 1 - i] = temp;
|
temp = in[i ]; in[i ] = -in[n - 1 - i]; in[n - 1 - i] = temp;
|
||||||
temp = -in[i + 1]; in[i + 1] = in[n - 2 - i]; in[n - 2 - i] = temp;
|
temp = -in[i + 1]; in[i + 1] = in[n - 2 - i]; in[n - 2 - i] = temp;
|
||||||
}
|
}
|
||||||
#if !USE_FIXED
|
|
||||||
if (n == 480)
|
|
||||||
ac->mdct480->imdct_half(ac->mdct480, buf, in, 1);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
ac->mdct.imdct_half(&ac->mdct_ld, buf, in);
|
|
||||||
|
|
||||||
#if USE_FIXED
|
if (n == 480)
|
||||||
for (i = 0; i < 1024; i++)
|
ac->mdct480_fn(ac->mdct480, buf, in, sizeof(INTFLOAT));
|
||||||
buf[i] = (buf[i] + 1) >> 1;
|
else
|
||||||
#endif /* USE_FIXED */
|
ac->mdct512_fn(ac->mdct512, buf, in, sizeof(INTFLOAT));
|
||||||
|
|
||||||
for (i = 0; i < n; i+=2) {
|
for (i = 0; i < n; i+=2) {
|
||||||
buf[i] = -buf[i];
|
buf[i + 0] = -(USE_FIXED + 1)*buf[i + 0];
|
||||||
|
buf[i + 1] = (USE_FIXED + 1)*buf[i + 1];
|
||||||
}
|
}
|
||||||
// Like with the regular IMDCT at this point we still have the middle half
|
// Like with the regular IMDCT at this point we still have the middle half
|
||||||
// of a transform but with even symmetry on the left and odd symmetry on
|
// of a transform but with even symmetry on the left and odd symmetry on
|
||||||
@ -3443,15 +3416,14 @@ static av_cold int aac_decode_close(AVCodecContext *avctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ff_mdct_end(&ac->mdct);
|
av_tx_uninit(&ac->mdct120);
|
||||||
ff_mdct_end(&ac->mdct_small);
|
av_tx_uninit(&ac->mdct128);
|
||||||
ff_mdct_end(&ac->mdct_ld);
|
av_tx_uninit(&ac->mdct480);
|
||||||
ff_mdct_end(&ac->mdct_ltp);
|
av_tx_uninit(&ac->mdct512);
|
||||||
#if !USE_FIXED
|
av_tx_uninit(&ac->mdct960);
|
||||||
ff_mdct15_uninit(&ac->mdct120);
|
av_tx_uninit(&ac->mdct1024);
|
||||||
ff_mdct15_uninit(&ac->mdct480);
|
av_tx_uninit(&ac->mdct_ltp);
|
||||||
ff_mdct15_uninit(&ac->mdct960);
|
|
||||||
#endif
|
|
||||||
av_freep(&ac->fdsp);
|
av_freep(&ac->fdsp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
#include "sbr.h"
|
#include "sbr.h"
|
||||||
#include "aacsbr.h"
|
#include "aacsbr.h"
|
||||||
#include "aacsbrdata.h"
|
#include "aacsbrdata.h"
|
||||||
#include "fft.h"
|
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
#include "aacps.h"
|
#include "aacps.h"
|
||||||
#include "sbrdsp.h"
|
#include "sbrdsp.h"
|
||||||
|
@ -60,7 +60,6 @@
|
|||||||
#include "sbr.h"
|
#include "sbr.h"
|
||||||
#include "aacsbr.h"
|
#include "aacsbr.h"
|
||||||
#include "aacsbrdata.h"
|
#include "aacsbrdata.h"
|
||||||
#include "fft.h"
|
|
||||||
#include "aacps.h"
|
#include "aacps.h"
|
||||||
#include "sbrdsp.h"
|
#include "sbrdsp.h"
|
||||||
#include "libavutil/internal.h"
|
#include "libavutil/internal.h"
|
||||||
|
@ -126,9 +126,9 @@ static void imdct_and_windowing_mips(AACContext *ac, SingleChannelElement *sce)
|
|||||||
|
|
||||||
if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
|
if (ics->window_sequence[0] == EIGHT_SHORT_SEQUENCE) {
|
||||||
for (i = 0; i < 1024; i += 128)
|
for (i = 0; i < 1024; i += 128)
|
||||||
ac->mdct_small.imdct_half(&ac->mdct_small, buf + i, in + i);
|
ac->mdct128_fn(ac->mdct128, buf + i, in + i, sizeof(float));
|
||||||
} else
|
} else
|
||||||
ac->mdct.imdct_half(&ac->mdct, buf, in);
|
ac->mdct1024_fn(ac->mdct1024, buf, in, sizeof(float));
|
||||||
|
|
||||||
/* window overlapping
|
/* window overlapping
|
||||||
* NOTE: To simplify the overlapping code, all 'meaningless' short to long
|
* NOTE: To simplify the overlapping code, all 'meaningless' short to long
|
||||||
|
@ -35,8 +35,11 @@ int main(void)
|
|||||||
printf("SINETABLE("#size") = {\n"); \
|
printf("SINETABLE("#size") = {\n"); \
|
||||||
write_int32_t_array(sine_ ## size ## _fixed, size); \
|
write_int32_t_array(sine_ ## size ## _fixed, size); \
|
||||||
printf("};\n")
|
printf("};\n")
|
||||||
|
PRINT_TABLE(120);
|
||||||
PRINT_TABLE(128);
|
PRINT_TABLE(128);
|
||||||
|
PRINT_TABLE(480);
|
||||||
PRINT_TABLE(512);
|
PRINT_TABLE(512);
|
||||||
|
PRINT_TABLE(960);
|
||||||
PRINT_TABLE(1024);
|
PRINT_TABLE(1024);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -44,8 +44,11 @@
|
|||||||
#include "libavutil/attributes.h"
|
#include "libavutil/attributes.h"
|
||||||
|
|
||||||
#define SINETABLE_CONST
|
#define SINETABLE_CONST
|
||||||
|
SINETABLE( 120);
|
||||||
SINETABLE( 128);
|
SINETABLE( 128);
|
||||||
|
SINETABLE( 480);
|
||||||
SINETABLE( 512);
|
SINETABLE( 512);
|
||||||
|
SINETABLE( 960);
|
||||||
SINETABLE(1024);
|
SINETABLE(1024);
|
||||||
|
|
||||||
#define SIN_FIX(a) (int)floor((a) * 0x80000000 + 0.5)
|
#define SIN_FIX(a) (int)floor((a) * 0x80000000 + 0.5)
|
||||||
@ -59,8 +62,11 @@ static av_cold void sine_window_init_fixed(int *window, int n)
|
|||||||
|
|
||||||
static av_cold void init_sine_windows_fixed(void)
|
static av_cold void init_sine_windows_fixed(void)
|
||||||
{
|
{
|
||||||
|
sine_window_init_fixed(sine_120_fixed, 120);
|
||||||
sine_window_init_fixed(sine_128_fixed, 128);
|
sine_window_init_fixed(sine_128_fixed, 128);
|
||||||
|
sine_window_init_fixed(sine_480_fixed, 480);
|
||||||
sine_window_init_fixed(sine_512_fixed, 512);
|
sine_window_init_fixed(sine_512_fixed, 512);
|
||||||
|
sine_window_init_fixed(sine_960_fixed, 960);
|
||||||
sine_window_init_fixed(sine_1024_fixed, 1024);
|
sine_window_init_fixed(sine_1024_fixed, 1024);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_HARDCODED_TABLES */
|
#endif /* CONFIG_HARDCODED_TABLES */
|
||||||
|
@ -16,254 +16,254 @@ dc213aee944a55af2f41950921fd62d7 *tests/data/fate/filter-meta-4560-rotate0.mov
|
|||||||
0, 1, 1, 1, 195840, 0xcad55625
|
0, 1, 1, 1, 195840, 0xcad55625
|
||||||
1, 2048, 2048, 1024, 2048, 0x9275068a
|
1, 2048, 2048, 1024, 2048, 0x9275068a
|
||||||
0, 2, 2, 1, 195840, 0x1a47a5ca
|
0, 2, 2, 1, 195840, 0x1a47a5ca
|
||||||
1, 3072, 3072, 1024, 2048, 0xcd35a7ce
|
1, 3072, 3072, 1024, 2048, 0xcecba7cf
|
||||||
1, 4096, 4096, 1024, 2048, 0x3f846a1e
|
1, 4096, 4096, 1024, 2048, 0x39006a1d
|
||||||
0, 3, 3, 1, 195840, 0x5cd02d7c
|
0, 3, 3, 1, 195840, 0x5cd02d7c
|
||||||
1, 5120, 5120, 1024, 2048, 0x60ff5fd1
|
1, 5120, 5120, 1024, 2048, 0x59795fd0
|
||||||
0, 4, 4, 1, 195840, 0x07d08f16
|
0, 4, 4, 1, 195840, 0x07d08f16
|
||||||
1, 6144, 6144, 1024, 2048, 0x9e9d96ee
|
1, 6144, 6144, 1024, 2048, 0x9a7796ec
|
||||||
1, 7168, 7168, 1024, 2048, 0xb2622c29
|
1, 7168, 7168, 1024, 2048, 0xb7da2c2b
|
||||||
0, 5, 5, 1, 195840, 0xe8abf6dd
|
0, 5, 5, 1, 195840, 0xe8abf6dd
|
||||||
1, 8192, 8192, 1024, 2048, 0xdeddcd6a
|
1, 8192, 8192, 1024, 2048, 0xe4efcd6a
|
||||||
0, 6, 6, 1, 195840, 0x096a5c58
|
0, 6, 6, 1, 195840, 0x096a5c58
|
||||||
1, 9216, 9216, 1024, 2048, 0xc8798b23
|
1, 9216, 9216, 1024, 2048, 0xbfa78b21
|
||||||
1, 10240, 10240, 1024, 2048, 0xea1dac49
|
1, 10240, 10240, 1024, 2048, 0xeeddac49
|
||||||
0, 7, 7, 1, 195840, 0x4e1a17bd
|
0, 7, 7, 1, 195840, 0x4e1a17bd
|
||||||
1, 11264, 11264, 1024, 2048, 0x6b50813e
|
1, 11264, 11264, 1024, 2048, 0x72d28140
|
||||||
0, 8, 8, 1, 195840, 0x96349c20
|
0, 8, 8, 1, 195840, 0x96349c20
|
||||||
1, 12288, 12288, 1024, 2048, 0x89698347
|
1, 12288, 12288, 1024, 2048, 0xa03f834c
|
||||||
0, 9, 9, 1, 195840, 0x6bb16907
|
0, 9, 9, 1, 195840, 0x6bb16907
|
||||||
1, 13312, 13312, 1024, 2048, 0xaa608a47
|
1, 13312, 13312, 1024, 2048, 0xb1168a48
|
||||||
1, 14336, 14336, 1024, 2048, 0x169b8cf7
|
1, 14336, 14336, 1024, 2048, 0x1b258cf9
|
||||||
0, 10, 10, 1, 195840, 0x7e44e4dd
|
0, 10, 10, 1, 195840, 0x7e44e4dd
|
||||||
1, 15360, 15360, 1024, 2048, 0x2f127455
|
1, 15360, 15360, 1024, 2048, 0x35e07458
|
||||||
0, 11, 11, 1, 195840, 0x4c3c0cf1
|
0, 11, 11, 1, 195840, 0x4c3c0cf1
|
||||||
1, 16384, 16384, 1024, 2048, 0x269c7583
|
1, 16384, 16384, 1024, 2048, 0x21d07582
|
||||||
1, 17408, 17408, 1024, 2048, 0x917f7279
|
1, 17408, 17408, 1024, 2048, 0x847f7276
|
||||||
0, 12, 12, 1, 195840, 0x4f2e3f2d
|
0, 12, 12, 1, 195840, 0x4f2e3f2d
|
||||||
1, 18432, 18432, 1024, 2048, 0x27055ffb
|
1, 18432, 18432, 1024, 2048, 0x080f5ff4
|
||||||
0, 13, 13, 1, 195840, 0xcba539cd
|
0, 13, 13, 1, 195840, 0xcba539cd
|
||||||
1, 19456, 19456, 1024, 2048, 0x7eca49e4
|
1, 19456, 19456, 1024, 2048, 0x714049e3
|
||||||
1, 20480, 20480, 1024, 2048, 0xad067184
|
1, 20480, 20480, 1024, 2048, 0xaf8c7186
|
||||||
0, 14, 14, 1, 195840, 0xf2811c9b
|
0, 14, 14, 1, 195840, 0xf2811c9b
|
||||||
1, 21504, 21504, 1024, 2048, 0xca406454
|
1, 21504, 21504, 1024, 2048, 0xc3666452
|
||||||
0, 15, 15, 1, 195840, 0x8357eab2
|
0, 15, 15, 1, 195840, 0x8357eab2
|
||||||
1, 22528, 22528, 1024, 2048, 0x69d48a55
|
1, 22528, 22528, 1024, 2048, 0x5b088a52
|
||||||
0, 16, 16, 1, 195840, 0xdba9c438
|
0, 16, 16, 1, 195840, 0xdba9c438
|
||||||
1, 23552, 23552, 1024, 2048, 0x0a836c14
|
1, 23552, 23552, 1024, 2048, 0x0bab6c14
|
||||||
1, 24576, 24576, 1024, 2048, 0xa9e967f9
|
1, 24576, 24576, 1024, 2048, 0xaaa967f8
|
||||||
0, 17, 17, 1, 195840, 0x58bcb594
|
0, 17, 17, 1, 195840, 0x58bcb594
|
||||||
1, 25600, 25600, 1024, 2048, 0xd7f73f35
|
1, 25600, 25600, 1024, 2048, 0xcc3d3f34
|
||||||
0, 18, 18, 1, 195840, 0x3edc5a1c
|
0, 18, 18, 1, 195840, 0x3edc5a1c
|
||||||
1, 26624, 26624, 1024, 2048, 0x70ed8364
|
1, 26624, 26624, 1024, 2048, 0x6bdd8363
|
||||||
1, 27648, 27648, 1024, 2048, 0x913f9b73
|
1, 27648, 27648, 1024, 2048, 0xdc6a9d71
|
||||||
0, 19, 19, 1, 195840, 0x94e4c186
|
0, 19, 19, 1, 195840, 0x94e4c186
|
||||||
1, 28672, 28672, 1024, 2048, 0x7db083eb
|
1, 28672, 28672, 1024, 2048, 0x751883ea
|
||||||
0, 20, 20, 1, 195840, 0xffad5f59
|
0, 20, 20, 1, 195840, 0xffad5f59
|
||||||
1, 29696, 29696, 1024, 2048, 0x951b97a9
|
1, 29696, 29696, 1024, 2048, 0x922997a8
|
||||||
1, 30720, 30720, 1024, 2048, 0x072ea78e
|
1, 30720, 30720, 1024, 2048, 0x0626a78f
|
||||||
0, 21, 21, 1, 195840, 0x84d1b114
|
0, 21, 21, 1, 195840, 0x84d1b114
|
||||||
1, 31744, 31744, 1024, 2048, 0x9b127ba5
|
1, 31744, 31744, 1024, 2048, 0x9c347ba6
|
||||||
0, 22, 22, 1, 195840, 0x358c1d0a
|
0, 22, 22, 1, 195840, 0x358c1d0a
|
||||||
1, 32768, 32768, 1024, 2048, 0x051c90c0
|
1, 32768, 32768, 1024, 2048, 0x020e90bf
|
||||||
1, 33792, 33792, 1024, 2048, 0x232d93b5
|
1, 33792, 33792, 1024, 2048, 0x2c4993b6
|
||||||
0, 23, 23, 1, 195840, 0x3ed1ffc8
|
0, 23, 23, 1, 195840, 0x3ed1ffc8
|
||||||
1, 34816, 34816, 1024, 2048, 0x76b89477
|
1, 34816, 34816, 1024, 2048, 0x7a989478
|
||||||
0, 24, 24, 1, 195840, 0xf048f47c
|
0, 24, 24, 1, 195840, 0xf048f47c
|
||||||
1, 35840, 35840, 1024, 2048, 0x50b2568d
|
1, 35840, 35840, 1024, 2048, 0x3e7c568a
|
||||||
0, 25, 25, 1, 195840, 0x3c2a3de6
|
0, 25, 25, 1, 195840, 0x3c2a3de6
|
||||||
1, 36864, 36864, 1024, 2048, 0x97947e5e
|
1, 36864, 36864, 1024, 2048, 0x8e5e7e5d
|
||||||
1, 37888, 37888, 1024, 2048, 0x21569819
|
1, 37888, 37888, 1024, 2048, 0x16349816
|
||||||
0, 26, 26, 1, 195840, 0x7ca208b1
|
0, 26, 26, 1, 195840, 0x7ca208b1
|
||||||
1, 38912, 38912, 1024, 2048, 0xc4358de4
|
1, 38912, 38912, 1024, 2048, 0xccef8de5
|
||||||
0, 27, 27, 1, 195840, 0x105cf9fc
|
0, 27, 27, 1, 195840, 0x105cf9fc
|
||||||
1, 39936, 39936, 1024, 2048, 0x69964977
|
1, 39936, 39936, 1024, 2048, 0x6e904977
|
||||||
1, 40960, 40960, 1024, 2048, 0xef81892e
|
1, 40960, 40960, 1024, 2048, 0xa69f872d
|
||||||
0, 28, 28, 1, 195840, 0x9fe50c29
|
0, 28, 28, 1, 195840, 0x9fe50c29
|
||||||
1, 41984, 41984, 1024, 2048, 0x6f7084e7
|
1, 41984, 41984, 1024, 2048, 0x7dc788e5
|
||||||
0, 29, 29, 1, 195840, 0xb459720f
|
0, 29, 29, 1, 195840, 0xb459720f
|
||||||
1, 43008, 43008, 1024, 2048, 0x7be080f7
|
1, 43008, 43008, 1024, 2048, 0x7b7c80f7
|
||||||
1, 44032, 44032, 1024, 2048, 0xadb18939
|
1, 44032, 44032, 1024, 2048, 0xa9ef8939
|
||||||
0, 30, 30, 1, 195840, 0x6eda17b0
|
0, 30, 30, 1, 195840, 0x6eda17b0
|
||||||
1, 45056, 45056, 1024, 2048, 0x6cd9506d
|
1, 45056, 45056, 1024, 2048, 0x6b9b506d
|
||||||
0, 31, 31, 1, 195840, 0x098871b0
|
0, 31, 31, 1, 195840, 0x098871b0
|
||||||
1, 46080, 46080, 1024, 2048, 0xba88ab8b
|
1, 46080, 46080, 1024, 2048, 0xb55cab8a
|
||||||
0, 32, 32, 1, 195840, 0xc664cc79
|
0, 32, 32, 1, 195840, 0xc664cc79
|
||||||
1, 47104, 47104, 1024, 2048, 0xe0bd726b
|
1, 47104, 47104, 1024, 2048, 0xd1eb7268
|
||||||
1, 48128, 48128, 1024, 2048, 0x15604a65
|
1, 48128, 48128, 1024, 2048, 0x104e4a65
|
||||||
0, 33, 33, 1, 195840, 0x8d02708d
|
0, 33, 33, 1, 195840, 0x8d02708d
|
||||||
1, 49152, 49152, 1024, 2048, 0x2a89f85b
|
1, 49152, 49152, 1024, 2048, 0x28f1f85a
|
||||||
0, 34, 34, 1, 195840, 0xe90a8705
|
0, 34, 34, 1, 195840, 0xe90a8705
|
||||||
1, 50176, 50176, 1024, 2048, 0xd71857dd
|
1, 50176, 50176, 1024, 2048, 0x841a55de
|
||||||
1, 51200, 51200, 1024, 2048, 0x93d98aee
|
1, 51200, 51200, 1024, 2048, 0x90f58aed
|
||||||
0, 35, 35, 1, 195840, 0x55f6c5b6
|
0, 35, 35, 1, 195840, 0x55f6c5b6
|
||||||
1, 52224, 52224, 1024, 2048, 0xcc537c08
|
1, 52224, 52224, 1024, 2048, 0xbeb17c04
|
||||||
0, 36, 36, 1, 195840, 0xe4ad145d
|
0, 36, 36, 1, 195840, 0xe4ad145d
|
||||||
1, 53248, 53248, 1024, 2048, 0xe0ea7c21
|
1, 53248, 53248, 1024, 2048, 0xe9247c23
|
||||||
1, 54272, 54272, 1024, 2048, 0x883ba380
|
1, 54272, 54272, 1024, 2048, 0x8995a383
|
||||||
0, 37, 37, 1, 195840, 0x9e766d50
|
0, 37, 37, 1, 195840, 0x9e766d50
|
||||||
1, 55296, 55296, 1024, 2048, 0xaaf65ca7
|
1, 55296, 55296, 1024, 2048, 0xa4805ca7
|
||||||
0, 38, 38, 1, 195840, 0xc2eac289
|
0, 38, 38, 1, 195840, 0xc2eac289
|
||||||
1, 56320, 56320, 1024, 2048, 0xe01e98ca
|
1, 56320, 56320, 1024, 2048, 0xedec98ca
|
||||||
0, 39, 39, 1, 195840, 0x0baf5871
|
0, 39, 39, 1, 195840, 0x0baf5871
|
||||||
1, 57344, 57344, 1024, 2048, 0xca85a551
|
1, 57344, 57344, 1024, 2048, 0xc495a551
|
||||||
1, 58368, 58368, 1024, 2048, 0x6fea7f82
|
1, 58368, 58368, 1024, 2048, 0x76d07f84
|
||||||
0, 40, 40, 1, 195840, 0x15f85f38
|
0, 40, 40, 1, 195840, 0x15f85f38
|
||||||
1, 59392, 59392, 1024, 2048, 0x9fd59843
|
1, 59392, 59392, 1024, 2048, 0x9a159842
|
||||||
0, 41, 41, 1, 195840, 0x77b03072
|
0, 41, 41, 1, 195840, 0x77b03072
|
||||||
1, 60416, 60416, 1024, 2048, 0xd7419d35
|
1, 60416, 60416, 1024, 2048, 0xddcb9d36
|
||||||
1, 61440, 61440, 1024, 2048, 0xc285bc0e
|
1, 61440, 61440, 1024, 2048, 0xc1abbc0d
|
||||||
0, 42, 42, 1, 195840, 0x0abb7abf
|
0, 42, 42, 1, 195840, 0x0abb7abf
|
||||||
1, 62464, 62464, 1024, 2048, 0x5180419c
|
1, 62464, 62464, 1024, 2048, 0x5754419e
|
||||||
0, 43, 43, 1, 195840, 0x05076724
|
0, 43, 43, 1, 195840, 0x05076724
|
||||||
1, 63488, 63488, 1024, 2048, 0xac9fd91b
|
1, 63488, 63488, 1024, 2048, 0xabd3d91a
|
||||||
1, 64512, 64512, 1024, 2048, 0x6de689b3
|
1, 64512, 64512, 1024, 2048, 0x6de689b3
|
||||||
0, 44, 44, 1, 195840, 0x2e8c6163
|
0, 44, 44, 1, 195840, 0x2e8c6163
|
||||||
1, 65536, 65536, 1024, 2048, 0x655bb415
|
1, 65536, 65536, 1024, 2048, 0x6c67b415
|
||||||
0, 45, 45, 1, 195840, 0x4f350cde
|
0, 45, 45, 1, 195840, 0x4f350cde
|
||||||
1, 66560, 66560, 1024, 2048, 0xe59d7404
|
1, 66560, 66560, 1024, 2048, 0xdb637402
|
||||||
1, 67584, 67584, 1024, 2048, 0xaa9356b9
|
1, 67584, 67584, 1024, 2048, 0xb56156bb
|
||||||
0, 46, 46, 1, 195840, 0xefc6bda1
|
0, 46, 46, 1, 195840, 0xefc6bda1
|
||||||
1, 68608, 68608, 1024, 2048, 0xe193549d
|
1, 68608, 68608, 1024, 2048, 0xebf5549e
|
||||||
0, 47, 47, 1, 195840, 0xe2cdee68
|
0, 47, 47, 1, 195840, 0xe2cdee68
|
||||||
1, 69632, 69632, 1024, 2048, 0xd05c9736
|
1, 69632, 69632, 1024, 2048, 0xccda9735
|
||||||
0, 48, 48, 1, 195840, 0xcc62401e
|
0, 48, 48, 1, 195840, 0xcc62401e
|
||||||
1, 70656, 70656, 1024, 2048, 0x086f6829
|
1, 70656, 70656, 1024, 2048, 0xff4e6828
|
||||||
1, 71680, 71680, 1024, 2048, 0x79624f93
|
1, 71680, 71680, 1024, 2048, 0x77d84f92
|
||||||
0, 49, 49, 1, 195840, 0x4ed76e1b
|
0, 49, 49, 1, 195840, 0x4ed76e1b
|
||||||
1, 72704, 72704, 1024, 2048, 0xf70a2f21
|
1, 72704, 72704, 1024, 2048, 0xf28a2f20
|
||||||
0, 50, 50, 1, 195840, 0xf4f8599a
|
0, 50, 50, 1, 195840, 0xf4f8599a
|
||||||
1, 73728, 73728, 1024, 2048, 0xd32c643c
|
1, 73728, 73728, 1024, 2048, 0xda70643c
|
||||||
1, 74752, 74752, 1024, 2048, 0xd6f07035
|
1, 74752, 74752, 1024, 2048, 0xd6f07035
|
||||||
0, 51, 51, 1, 195840, 0xb05edf96
|
0, 51, 51, 1, 195840, 0xb05edf96
|
||||||
1, 75776, 75776, 1024, 2048, 0x137c6ca0
|
1, 75776, 75776, 1024, 2048, 0x23e66ca2
|
||||||
0, 52, 52, 1, 195840, 0xfb1a1e15
|
0, 52, 52, 1, 195840, 0xfb1a1e15
|
||||||
1, 76800, 76800, 1024, 2048, 0x916242de
|
1, 76800, 76800, 1024, 2048, 0x8f5842dd
|
||||||
1, 77824, 77824, 1024, 2048, 0x0d910367
|
1, 77824, 77824, 1024, 2048, 0xfd580364
|
||||||
0, 53, 53, 1, 195840, 0x970ebb58
|
0, 53, 53, 1, 195840, 0x970ebb58
|
||||||
1, 78848, 78848, 1024, 2048, 0x460b8f1e
|
1, 78848, 78848, 1024, 2048, 0x441d8f1e
|
||||||
0, 54, 54, 1, 195840, 0xf4046957
|
0, 54, 54, 1, 195840, 0xf4046957
|
||||||
1, 79872, 79872, 1024, 2048, 0x616a6102
|
1, 79872, 79872, 1024, 2048, 0x5fcc6101
|
||||||
0, 55, 55, 1, 195840, 0xd5eca339
|
0, 55, 55, 1, 195840, 0xd5eca339
|
||||||
1, 80896, 80896, 1024, 2048, 0xfc507e1d
|
1, 80896, 80896, 1024, 2048, 0x05097c1f
|
||||||
1, 81920, 81920, 1024, 2048, 0x34accc94
|
1, 81920, 81920, 1024, 2048, 0x3226cc96
|
||||||
0, 56, 56, 1, 195840, 0x52d3cb24
|
0, 56, 56, 1, 195840, 0x52d3cb24
|
||||||
1, 82944, 82944, 1024, 2048, 0xcf679f1a
|
1, 82944, 82944, 1024, 2048, 0xa981a118
|
||||||
0, 57, 57, 1, 195840, 0x259cac47
|
0, 57, 57, 1, 195840, 0x259cac47
|
||||||
1, 83968, 83968, 1024, 2048, 0x72c45d8a
|
1, 83968, 83968, 1024, 2048, 0x7d705d8e
|
||||||
1, 84992, 84992, 1024, 2048, 0xfd21264a
|
1, 84992, 84992, 1024, 2048, 0xfd8d264a
|
||||||
0, 58, 58, 1, 195840, 0x9190a95b
|
0, 58, 58, 1, 195840, 0x9190a95b
|
||||||
1, 86016, 86016, 1024, 2048, 0x02895c31
|
1, 86016, 86016, 1024, 2048, 0x01875c2f
|
||||||
0, 59, 59, 1, 195840, 0x5baccfb5
|
0, 59, 59, 1, 195840, 0x5baccfb5
|
||||||
1, 87040, 87040, 1024, 2048, 0xdc041e9c
|
1, 87040, 87040, 1024, 2048, 0xdaf01e9d
|
||||||
1, 88064, 88064, 1024, 2048, 0x266407a5
|
1, 88064, 88064, 1024, 2048, 0x266407a5
|
||||||
0, 60, 60, 1, 195840, 0x80d19a09
|
0, 60, 60, 1, 195840, 0x80d19a09
|
||||||
1, 89088, 89088, 1024, 2048, 0x8f111c49
|
1, 89088, 89088, 1024, 2048, 0x92951c49
|
||||||
0, 61, 61, 1, 195840, 0x5ad44ce3
|
0, 61, 61, 1, 195840, 0x5ad44ce3
|
||||||
1, 90112, 90112, 1024, 2048, 0xead031dd
|
1, 90112, 90112, 1024, 2048, 0xec2031dd
|
||||||
1, 91136, 91136, 1024, 2048, 0x238325d4
|
1, 91136, 91136, 1024, 2048, 0x18bf25d2
|
||||||
0, 62, 62, 1, 195840, 0x7b1ad12b
|
0, 62, 62, 1, 195840, 0x7b1ad12b
|
||||||
1, 92160, 92160, 1024, 2048, 0x24171913
|
1, 92160, 92160, 1024, 2048, 0x21a71912
|
||||||
0, 63, 63, 1, 195840, 0x57e1a5e5
|
0, 63, 63, 1, 195840, 0x57e1a5e5
|
||||||
1, 93184, 93184, 1024, 2048, 0xbcda41c5
|
1, 93184, 93184, 1024, 2048, 0xc25841c7
|
||||||
0, 64, 64, 1, 195840, 0x70cb6d38
|
0, 64, 64, 1, 195840, 0x70cb6d38
|
||||||
1, 94208, 94208, 1024, 2048, 0x124f5eed
|
1, 94208, 94208, 1024, 2048, 0x05955eeb
|
||||||
1, 95232, 95232, 1024, 2048, 0x4cadc088
|
1, 95232, 95232, 1024, 2048, 0x490dc087
|
||||||
0, 65, 65, 1, 195840, 0x39dac35a
|
0, 65, 65, 1, 195840, 0x39dac35a
|
||||||
1, 96256, 96256, 1024, 2048, 0x062cd95a
|
1, 96256, 96256, 1024, 2048, 0x055ed95a
|
||||||
0, 66, 66, 1, 195840, 0x4f9fccca
|
0, 66, 66, 1, 195840, 0x4f9fccca
|
||||||
1, 97280, 97280, 1024, 2048, 0xc26a888d
|
1, 97280, 97280, 1024, 2048, 0xc356888f
|
||||||
1, 98304, 98304, 1024, 2048, 0x864f1a68
|
1, 98304, 98304, 1024, 2048, 0x93bf1a6c
|
||||||
0, 67, 67, 1, 195840, 0xadcb5585
|
0, 67, 67, 1, 195840, 0xadcb5585
|
||||||
1, 99328, 99328, 1024, 2048, 0x4bb1ecf4
|
1, 99328, 99328, 1024, 2048, 0x4a5decf6
|
||||||
0, 68, 68, 1, 195840, 0xe596c1b4
|
0, 68, 68, 1, 195840, 0xe596c1b4
|
||||||
1, 100352, 100352, 1024, 2048, 0xb4ddc0a7
|
1, 100352, 100352, 1024, 2048, 0xfcf1c2a5
|
||||||
1, 101376, 101376, 1024, 2048, 0x665badb3
|
1, 101376, 101376, 1024, 2048, 0x5ba9adaf
|
||||||
0, 69, 69, 1, 195840, 0x64a05339
|
0, 69, 69, 1, 195840, 0x64a05339
|
||||||
1, 102400, 102400, 1024, 2048, 0x70beaa68
|
1, 102400, 102400, 1024, 2048, 0x4da1a86b
|
||||||
0, 70, 70, 1, 195840, 0xaefa0990
|
0, 70, 70, 1, 195840, 0xaefa0990
|
||||||
1, 103424, 103424, 1024, 2048, 0x8ac7c7de
|
1, 103424, 103424, 1024, 2048, 0x7bcfc7da
|
||||||
0, 71, 71, 1, 195840, 0x9c0b5c3d
|
0, 71, 71, 1, 195840, 0x9c0b5c3d
|
||||||
1, 104448, 104448, 1024, 2048, 0x158cad8e
|
1, 104448, 104448, 1024, 2048, 0x2274ad91
|
||||||
1, 105472, 105472, 1024, 2048, 0x0ab8faf2
|
1, 105472, 105472, 1024, 2048, 0x0484faf2
|
||||||
0, 72, 72, 1, 195840, 0xbae8bd6b
|
0, 72, 72, 1, 195840, 0xbae8bd6b
|
||||||
1, 106496, 106496, 1024, 2048, 0x994e79f1
|
1, 106496, 106496, 1024, 2048, 0x994479f0
|
||||||
0, 73, 73, 1, 195840, 0xb2ac7857
|
0, 73, 73, 1, 195840, 0xb2ac7857
|
||||||
1, 107520, 107520, 1024, 2048, 0xc727104e
|
1, 107520, 107520, 1024, 2048, 0xcfff104f
|
||||||
1, 108544, 108544, 1024, 2048, 0x1e1f720a
|
1, 108544, 108544, 1024, 2048, 0x17877208
|
||||||
0, 74, 74, 1, 195840, 0xcf2865e3
|
0, 74, 74, 1, 195840, 0xcf2865e3
|
||||||
1, 109568, 109568, 1024, 2048, 0x7232bede
|
1, 109568, 109568, 1024, 2048, 0x79eabedf
|
||||||
0, 75, 75, 1, 195840, 0x4e8589af
|
0, 75, 75, 1, 195840, 0x4e8589af
|
||||||
1, 110592, 110592, 1024, 2048, 0x015fd697
|
1, 110592, 110592, 1024, 2048, 0xfe84d697
|
||||||
1, 111616, 111616, 1024, 2048, 0x4b33ebc9
|
1, 111616, 111616, 1024, 2048, 0x5751ebcc
|
||||||
0, 76, 76, 1, 195840, 0x31c21938
|
0, 76, 76, 1, 195840, 0x31c21938
|
||||||
1, 112640, 112640, 1024, 2048, 0x8e61948a
|
1, 112640, 112640, 1024, 2048, 0x8ae59488
|
||||||
0, 77, 77, 1, 195840, 0xe6163c50
|
0, 77, 77, 1, 195840, 0xe6163c50
|
||||||
1, 113664, 113664, 1024, 2048, 0x83fab6ac
|
1, 113664, 113664, 1024, 2048, 0x8870b6ae
|
||||||
0, 78, 78, 1, 195840, 0x888ef74f
|
0, 78, 78, 1, 195840, 0x888ef74f
|
||||||
1, 114688, 114688, 1024, 2048, 0x8d55d683
|
1, 114688, 114688, 1024, 2048, 0x9255d684
|
||||||
1, 115712, 115712, 1024, 2048, 0x4e91a2c7
|
1, 115712, 115712, 1024, 2048, 0x4e91a2c7
|
||||||
0, 79, 79, 1, 195840, 0x00d822f7
|
0, 79, 79, 1, 195840, 0x00d822f7
|
||||||
1, 116736, 116736, 1024, 2048, 0x8c79c692
|
1, 116736, 116736, 1024, 2048, 0x9895c693
|
||||||
0, 80, 80, 1, 195840, 0xcbe77d2b
|
0, 80, 80, 1, 195840, 0xcbe77d2b
|
||||||
1, 117760, 117760, 1024, 2048, 0xe744d102
|
1, 117760, 117760, 1024, 2048, 0xee96d102
|
||||||
1, 118784, 118784, 1024, 2048, 0x2bf4e6b1
|
1, 118784, 118784, 1024, 2048, 0x3508e6b3
|
||||||
0, 81, 81, 1, 195840, 0x9f2ff6e5
|
0, 81, 81, 1, 195840, 0x9f2ff6e5
|
||||||
1, 119808, 119808, 1024, 2048, 0xd6fd9b91
|
1, 119808, 119808, 1024, 2048, 0xd7a79b90
|
||||||
0, 82, 82, 1, 195840, 0x08f65f5f
|
0, 82, 82, 1, 195840, 0x08f65f5f
|
||||||
1, 120832, 120832, 1024, 2048, 0xedcd8e8a
|
1, 120832, 120832, 1024, 2048, 0xe77f8e88
|
||||||
1, 121856, 121856, 1024, 2048, 0x67b422bd
|
1, 121856, 121856, 1024, 2048, 0x623c22bd
|
||||||
0, 83, 83, 1, 195840, 0xd3950469
|
0, 83, 83, 1, 195840, 0xd3950469
|
||||||
1, 122880, 122880, 1024, 2048, 0xa0329606
|
1, 122880, 122880, 1024, 2048, 0x9f989605
|
||||||
0, 84, 84, 1, 195840, 0xb8e014b8
|
0, 84, 84, 1, 195840, 0xb8e014b8
|
||||||
1, 123904, 123904, 1024, 2048, 0xae47c015
|
1, 123904, 123904, 1024, 2048, 0xbbe1c017
|
||||||
1, 124928, 124928, 1024, 2048, 0xaec1dfb2
|
1, 124928, 124928, 1024, 2048, 0xaec1dfb2
|
||||||
0, 85, 85, 1, 195840, 0xa4399742
|
0, 85, 85, 1, 195840, 0xa4399742
|
||||||
1, 125952, 125952, 1024, 2048, 0x719e9bac
|
1, 125952, 125952, 1024, 2048, 0x7c709bae
|
||||||
0, 86, 86, 1, 195840, 0x84b5a8ec
|
0, 86, 86, 1, 195840, 0x84b5a8ec
|
||||||
1, 126976, 126976, 1024, 2048, 0x5d99a16c
|
1, 126976, 126976, 1024, 2048, 0x55a1a16b
|
||||||
0, 87, 87, 1, 195840, 0x1bfaa027
|
0, 87, 87, 1, 195840, 0x1bfaa027
|
||||||
1, 128000, 128000, 1024, 2048, 0x87aacd09
|
1, 128000, 128000, 1024, 2048, 0x9a9ccd0e
|
||||||
1, 129024, 129024, 1024, 2048, 0x1473be08
|
1, 129024, 129024, 1024, 2048, 0x1087be07
|
||||||
0, 88, 88, 1, 195840, 0x7bdbb172
|
0, 88, 88, 1, 195840, 0x7bdbb172
|
||||||
1, 130048, 130048, 1024, 2048, 0xdee3d975
|
1, 130048, 130048, 1024, 2048, 0xcd3bd974
|
||||||
0, 89, 89, 1, 195840, 0x00f2b3f7
|
0, 89, 89, 1, 195840, 0x00f2b3f7
|
||||||
1, 131072, 131072, 1024, 2048, 0x0180b050
|
1, 131072, 131072, 1024, 2048, 0xfd43b04e
|
||||||
1, 132096, 132096, 1024, 2048, 0xb035d915
|
1, 132096, 132096, 1024, 2048, 0xb2add916
|
||||||
0, 90, 90, 1, 195840, 0x86503bc7
|
0, 90, 90, 1, 195840, 0x86503bc7
|
||||||
1, 133120, 133120, 1024, 2048, 0x1b77a3fd
|
1, 133120, 133120, 1024, 2048, 0x156da3fc
|
||||||
0, 91, 91, 1, 195840, 0xc4ab358e
|
0, 91, 91, 1, 195840, 0xc4ab358e
|
||||||
1, 134144, 134144, 1024, 2048, 0xf233b7bc
|
1, 134144, 134144, 1024, 2048, 0xf29fb7bb
|
||||||
1, 135168, 135168, 1024, 2048, 0xf1fad173
|
1, 135168, 135168, 1024, 2048, 0xf19ed172
|
||||||
0, 92, 92, 1, 195840, 0x1b330ba0
|
0, 92, 92, 1, 195840, 0x1b330ba0
|
||||||
1, 136192, 136192, 1024, 2048, 0x8b6ac5b9
|
1, 136192, 136192, 1024, 2048, 0x8094c5b7
|
||||||
0, 93, 93, 1, 195840, 0xccc9822f
|
0, 93, 93, 1, 195840, 0xccc9822f
|
||||||
1, 137216, 137216, 1024, 2048, 0x1228c03f
|
1, 137216, 137216, 1024, 2048, 0x16d0c040
|
||||||
0, 94, 94, 1, 195840, 0xffe3486d
|
0, 94, 94, 1, 195840, 0xffe3486d
|
||||||
1, 138240, 138240, 1024, 2048, 0xbe99cc61
|
1, 138240, 138240, 1024, 2048, 0xc895cc63
|
||||||
1, 139264, 139264, 1024, 2048, 0x8486bad7
|
1, 139264, 139264, 1024, 2048, 0xd260b8d9
|
||||||
0, 95, 95, 1, 195840, 0x30dc0efe
|
0, 95, 95, 1, 195840, 0x30dc0efe
|
||||||
1, 140288, 140288, 1024, 2048, 0x423ca644
|
1, 140288, 140288, 1024, 2048, 0x3dcca644
|
||||||
0, 96, 96, 1, 195840, 0x6bfae71e
|
0, 96, 96, 1, 195840, 0x6bfae71e
|
||||||
1, 141312, 141312, 1024, 2048, 0x33afb5a3
|
1, 141312, 141312, 1024, 2048, 0x241bb5a1
|
||||||
1, 142336, 142336, 1024, 2048, 0x90c33f49
|
1, 142336, 142336, 1024, 2048, 0x980b3f4a
|
||||||
0, 97, 97, 1, 195840, 0x0fa017b8
|
0, 97, 97, 1, 195840, 0x0fa017b8
|
||||||
1, 143360, 143360, 1024, 2048, 0x0e59f9d7
|
1, 143360, 143360, 1024, 2048, 0x05edf9d5
|
||||||
0, 98, 98, 1, 195840, 0x1d0c9810
|
0, 98, 98, 1, 195840, 0x1d0c9810
|
||||||
1, 144384, 144384, 1024, 2048, 0x4f513d3d
|
1, 144384, 144384, 1024, 2048, 0x4f8b3d3d
|
||||||
1, 145408, 145408, 1024, 2048, 0xe2f1406b
|
1, 145408, 145408, 1024, 2048, 0xe6b5406c
|
||||||
0, 99, 99, 1, 195840, 0x775778f0
|
0, 99, 99, 1, 195840, 0x775778f0
|
||||||
1, 146432, 146432, 1024, 2048, 0xe55d2a99
|
1, 146432, 146432, 1024, 2048, 0xe9792a9a
|
||||||
0, 100, 100, 1, 195840, 0xdcb0ede5
|
0, 100, 100, 1, 195840, 0xdcb0ede5
|
||||||
1, 147456, 147456, 1024, 2048, 0xb0e236c2
|
1, 147456, 147456, 1024, 2048, 0xb54e36c3
|
||||||
0, 101, 101, 1, 195840, 0x67624270
|
0, 101, 101, 1, 195840, 0x67624270
|
||||||
1, 148480, 148480, 1024, 2048, 0xdc80c8fb
|
1, 148480, 148480, 1024, 2048, 0xd8ecc8f8
|
||||||
1, 149504, 149504, 1024, 2048, 0x97c30778
|
1, 149504, 149504, 1024, 2048, 0x9f150779
|
||||||
0, 102, 102, 1, 195840, 0xce86f6a3
|
0, 102, 102, 1, 195840, 0xce86f6a3
|
||||||
1, 150528, 150528, 1024, 2048, 0x6e403113
|
1, 150528, 150528, 1024, 2048, 0x6e403113
|
||||||
0, 103, 103, 1, 195840, 0xa4b3e032
|
0, 103, 103, 1, 195840, 0xa4b3e032
|
||||||
1, 151552, 151552, 1024, 2048, 0x429605a1
|
1, 151552, 151552, 1024, 2048, 0x473a05a3
|
||||||
1, 152576, 152576, 1024, 2048, 0x25d61b75
|
1, 152576, 152576, 1024, 2048, 0x26721b75
|
||||||
0, 104, 104, 1, 195840, 0x46851b87
|
0, 104, 104, 1, 195840, 0x46851b87
|
||||||
1, 153600, 153600, 1024, 2048, 0xa32cf42d
|
1, 153600, 153600, 1024, 2048, 0x97a2f42c
|
||||||
0, 105, 105, 1, 195840, 0x02d97dc4
|
0, 105, 105, 1, 195840, 0x02d97dc4
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#sample_rate 1: 48000
|
#sample_rate 1: 48000
|
||||||
#channel_layout_name 1: stereo
|
#channel_layout_name 1: stereo
|
||||||
0, 0, 0, 1, 1658880, 0x43d9c9e2
|
0, 0, 0, 1, 1658880, 0x43d9c9e2
|
||||||
1, 0, 0, 1024, 4096, 0x6c8a9a18
|
1, 0, 0, 1024, 4096, 0x543c9a17
|
||||||
1, 1024, 1024, 1024, 4096, 0x960dadcf
|
1, 1024, 1024, 1024, 4096, 0x9aedadd1
|
||||||
0, 1, 1, 1, 1658880, 0xa2a72f9b
|
0, 1, 1, 1, 1658880, 0xa2a72f9b
|
||||||
1, 2048, 2048, 1024, 4096, 0xa913cd55
|
1, 2048, 2048, 1024, 4096, 0xa0c9cd55
|
||||||
|
Loading…
Reference in New Issue
Block a user