* commit '1274ea8dbaec44355bde07f6bb31fec0c4e6fd2d': Split off floating point AAN (I)DCT into separate components Conflicts: configure libavcodec/Makefile libavcodec/dct-test.c libavcodec/idctdsp.c Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.4
| @@ -145,6 +145,7 @@ Component options: | |||||
| --disable-mdct disable MDCT code | --disable-mdct disable MDCT code | ||||
| --disable-rdft disable RDFT code | --disable-rdft disable RDFT code | ||||
| --disable-fft disable FFT code | --disable-fft disable FFT code | ||||
| --disable-faan disable floating point AAN (I)DCT code | |||||
| --disable-pixelutils disable pixel utils in libavutil | --disable-pixelutils disable pixel utils in libavutil | ||||
| Hardware accelerators: | Hardware accelerators: | ||||
| @@ -1449,6 +1450,7 @@ SUBSYSTEM_LIST=" | |||||
| dct | dct | ||||
| dwt | dwt | ||||
| error_resilience | error_resilience | ||||
| faan | |||||
| fast_unaligned | fast_unaligned | ||||
| fft | fft | ||||
| lsp | lsp | ||||
| @@ -1823,6 +1825,8 @@ CONFIG_EXTRA=" | |||||
| cabac | cabac | ||||
| dvprofile | dvprofile | ||||
| exif | exif | ||||
| faandct | |||||
| faanidct | |||||
| fdctdsp | fdctdsp | ||||
| frame_thread_encoder | frame_thread_encoder | ||||
| gcrypt | gcrypt | ||||
| @@ -2024,6 +2028,8 @@ threads_if_any="$THREADS_LIST" | |||||
| # subsystems | # subsystems | ||||
| dct_select="rdft" | dct_select="rdft" | ||||
| error_resilience_select="me_cmp" | error_resilience_select="me_cmp" | ||||
| faandct_deps="faan fdctdsp" | |||||
| faanidct_deps="faan idctdsp" | |||||
| frame_thread_encoder_deps="encoders threads" | frame_thread_encoder_deps="encoders threads" | ||||
| intrax8_select="error_resilience" | intrax8_select="error_resilience" | ||||
| mdct_select="fft" | mdct_select="fft" | ||||
| @@ -2693,6 +2699,7 @@ enable stripping | |||||
| enable asm | enable asm | ||||
| enable debug | enable debug | ||||
| enable doc | enable doc | ||||
| enable faan faandct faanidct | |||||
| enable optimizations | enable optimizations | ||||
| enable runtime_cpudetect | enable runtime_cpudetect | ||||
| enable safe_bitstream_reader | enable safe_bitstream_reader | ||||
| @@ -44,8 +44,9 @@ OBJS-$(CONFIG_CRYSTALHD) += crystalhd.o | |||||
| OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o | OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o | ||||
| OBJS-$(CONFIG_ERROR_RESILIENCE) += error_resilience.o | OBJS-$(CONFIG_ERROR_RESILIENCE) += error_resilience.o | ||||
| OBJS-$(CONFIG_EXIF) += exif.o tiff_common.o | OBJS-$(CONFIG_EXIF) += exif.o tiff_common.o | ||||
| OBJS-$(CONFIG_FDCTDSP) += fdctdsp.o faandct.o \ | |||||
| jfdctfst.o jfdctint.o | |||||
| OBJS-$(CONFIG_FAANDCT) += faandct.o | |||||
| OBJS-$(CONFIG_FAANIDCT) += faanidct.o | |||||
| OBJS-$(CONFIG_FDCTDSP) += fdctdsp.o jfdctfst.o jfdctint.o | |||||
| FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o cos_fixed_tables.o | FFT-OBJS-$(CONFIG_HARDCODED_TABLES) += cos_tables.o cos_fixed_tables.o | ||||
| OBJS-$(CONFIG_FFT) += avfft.o fft_fixed.o fft_float.o \ | OBJS-$(CONFIG_FFT) += avfft.o fft_fixed.o fft_float.o \ | ||||
| fft_fixed_32.o fft_init_table.o \ | fft_fixed_32.o fft_init_table.o \ | ||||
| @@ -60,8 +61,7 @@ OBJS-$(CONFIG_HPELDSP) += hpeldsp.o | |||||
| OBJS-$(CONFIG_HUFFMAN) += huffman.o | OBJS-$(CONFIG_HUFFMAN) += huffman.o | ||||
| OBJS-$(CONFIG_HUFFYUVDSP) += huffyuvdsp.o | OBJS-$(CONFIG_HUFFYUVDSP) += huffyuvdsp.o | ||||
| OBJS-$(CONFIG_HUFFYUVENCDSP) += huffyuvencdsp.o | OBJS-$(CONFIG_HUFFYUVENCDSP) += huffyuvencdsp.o | ||||
| OBJS-$(CONFIG_IDCTDSP) += idctdsp.o faanidct.o \ | |||||
| simple_idct.o jrevdct.o | |||||
| OBJS-$(CONFIG_IDCTDSP) += idctdsp.o simple_idct.o jrevdct.o | |||||
| OBJS-$(CONFIG_IIRFILTER) += iirfilter.o | OBJS-$(CONFIG_IIRFILTER) += iirfilter.o | ||||
| OBJS-$(CONFIG_INTRAX8) += intrax8.o intrax8dsp.o | OBJS-$(CONFIG_INTRAX8) += intrax8.o intrax8dsp.o | ||||
| OBJS-$(CONFIG_LIBXVID) += libxvid_rc.o | OBJS-$(CONFIG_LIBXVID) += libxvid_rc.o | ||||
| @@ -58,9 +58,11 @@ struct algo { | |||||
| static const struct algo fdct_tab[] = { | static const struct algo fdct_tab[] = { | ||||
| { "REF-DBL", ff_ref_fdct, FF_IDCT_PERM_NONE }, | { "REF-DBL", ff_ref_fdct, FF_IDCT_PERM_NONE }, | ||||
| { "FAAN", ff_faandct, FF_IDCT_PERM_NONE }, | |||||
| { "IJG-AAN-INT", ff_fdct_ifast, FF_IDCT_PERM_NONE }, | { "IJG-AAN-INT", ff_fdct_ifast, FF_IDCT_PERM_NONE }, | ||||
| { "IJG-LLM-INT", ff_jpeg_fdct_islow_8, FF_IDCT_PERM_NONE }, | { "IJG-LLM-INT", ff_jpeg_fdct_islow_8, FF_IDCT_PERM_NONE }, | ||||
| #if CONFIG_FAANDCT | |||||
| { "FAAN", ff_faandct, FF_IDCT_PERM_NONE }, | |||||
| #endif /* CONFIG_FAANDCT */ | |||||
| }; | }; | ||||
| static void ff_prores_idct_wrap(int16_t *dst){ | static void ff_prores_idct_wrap(int16_t *dst){ | ||||
| @@ -77,11 +79,13 @@ static void ff_prores_idct_wrap(int16_t *dst){ | |||||
| } | } | ||||
| static const struct algo idct_tab[] = { | static const struct algo idct_tab[] = { | ||||
| { "FAANI", ff_faanidct, FF_IDCT_PERM_NONE }, | |||||
| { "REF-DBL", ff_ref_idct, FF_IDCT_PERM_NONE }, | { "REF-DBL", ff_ref_idct, FF_IDCT_PERM_NONE }, | ||||
| { "INT", ff_j_rev_dct, FF_IDCT_PERM_LIBMPEG2 }, | { "INT", ff_j_rev_dct, FF_IDCT_PERM_LIBMPEG2 }, | ||||
| { "SIMPLE-C", ff_simple_idct_8, FF_IDCT_PERM_NONE }, | { "SIMPLE-C", ff_simple_idct_8, FF_IDCT_PERM_NONE }, | ||||
| { "PR-C", ff_prores_idct_wrap, FF_IDCT_PERM_NONE, 0, 1 }, | { "PR-C", ff_prores_idct_wrap, FF_IDCT_PERM_NONE, 0, 1 }, | ||||
| #if CONFIG_FAANIDCT | |||||
| { "FAANI", ff_faanidct, FF_IDCT_PERM_NONE }, | |||||
| #endif /* CONFIG_FAANIDCT */ | |||||
| #if CONFIG_MPEG4_DECODER | #if CONFIG_MPEG4_DECODER | ||||
| { "XVID", ff_xvid_idct, FF_IDCT_PERM_NONE, 0, 1 }, | { "XVID", ff_xvid_idct, FF_IDCT_PERM_NONE, 0, 1 }, | ||||
| #endif /* CONFIG_MPEG4_DECODER */ | #endif /* CONFIG_MPEG4_DECODER */ | ||||
| @@ -33,9 +33,11 @@ av_cold void ff_fdctdsp_init(FDCTDSPContext *c, AVCodecContext *avctx) | |||||
| } else if (avctx->dct_algo == FF_DCT_FASTINT) { | } else if (avctx->dct_algo == FF_DCT_FASTINT) { | ||||
| c->fdct = ff_fdct_ifast; | c->fdct = ff_fdct_ifast; | ||||
| c->fdct248 = ff_fdct_ifast248; | c->fdct248 = ff_fdct_ifast248; | ||||
| #if CONFIG_FAANDCT | |||||
| } else if (avctx->dct_algo == FF_DCT_FAAN) { | } else if (avctx->dct_algo == FF_DCT_FAAN) { | ||||
| c->fdct = ff_faandct; | c->fdct = ff_faandct; | ||||
| c->fdct248 = ff_faandct248; | c->fdct248 = ff_faandct248; | ||||
| #endif /* CONFIG_FAANDCT */ | |||||
| } else { | } else { | ||||
| c->fdct = ff_jpeg_fdct_islow_8; // slow/accurate/default | c->fdct = ff_jpeg_fdct_islow_8; // slow/accurate/default | ||||
| c->fdct248 = ff_fdct248_islow_8; | c->fdct248 = ff_fdct248_islow_8; | ||||
| @@ -274,11 +274,13 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) | |||||
| c->idct_add = ff_jref_idct_add; | c->idct_add = ff_jref_idct_add; | ||||
| c->idct = ff_j_rev_dct; | c->idct = ff_j_rev_dct; | ||||
| c->perm_type = FF_IDCT_PERM_LIBMPEG2; | c->perm_type = FF_IDCT_PERM_LIBMPEG2; | ||||
| #if CONFIG_FAANIDCT | |||||
| } else if (avctx->idct_algo == FF_IDCT_FAAN) { | } else if (avctx->idct_algo == FF_IDCT_FAAN) { | ||||
| c->idct_put = ff_faanidct_put; | c->idct_put = ff_faanidct_put; | ||||
| c->idct_add = ff_faanidct_add; | c->idct_add = ff_faanidct_add; | ||||
| c->idct = ff_faanidct; | c->idct = ff_faanidct; | ||||
| c->perm_type = FF_IDCT_PERM_NONE; | c->perm_type = FF_IDCT_PERM_NONE; | ||||
| #endif /* CONFIG_FAANIDCT */ | |||||
| } else { // accurate/default | } else { // accurate/default | ||||
| c->idct_put = ff_simple_idct_put_8; | c->idct_put = ff_simple_idct_put_8; | ||||
| c->idct_add = ff_simple_idct_add_8; | c->idct_add = ff_simple_idct_add_8; | ||||
| @@ -90,8 +90,10 @@ void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64], | |||||
| for (qscale = qmin; qscale <= qmax; qscale++) { | for (qscale = qmin; qscale <= qmax; qscale++) { | ||||
| int i; | int i; | ||||
| if (fdsp->fdct == ff_jpeg_fdct_islow_8 || | if (fdsp->fdct == ff_jpeg_fdct_islow_8 || | ||||
| fdsp->fdct == ff_jpeg_fdct_islow_10 || | |||||
| fdsp->fdct == ff_faandct) { | |||||
| #if CONFIG_FAANDCT | |||||
| fdsp->fdct == ff_faandct || | |||||
| #endif /* CONFIG_FAANDCT */ | |||||
| fdsp->fdct == ff_jpeg_fdct_islow_10) { | |||||
| for (i = 0; i < 64; i++) { | for (i = 0; i < 64; i++) { | ||||
| const int j = s->idsp.idct_permutation[i]; | const int j = s->idsp.idct_permutation[i]; | ||||
| /* 16 <= qscale * quant_matrix[i] <= 7905 | /* 16 <= qscale * quant_matrix[i] <= 7905 | ||||