You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +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:
		
							
								
								
									
										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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user