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