[FFmpeg-cvslog] Split off floating point AAN (I)DCT into separate components

Diego Biurrun git at videolan.org
Mon Sep 8 01:25:19 CEST 2014


ffmpeg | branch: master | Diego Biurrun <diego at biurrun.de> | Thu Aug 28 19:32:45 2014 -0700| [1274ea8dbaec44355bde07f6bb31fec0c4e6fd2d] | committer: Diego Biurrun

Split off floating point AAN (I)DCT into separate components

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1274ea8dbaec44355bde07f6bb31fec0c4e6fd2d
---

 configure                  |    7 +++++++
 libavcodec/Makefile        |    8 ++++----
 libavcodec/dct-test.c      |   10 +++++++---
 libavcodec/fdctdsp.c       |    2 ++
 libavcodec/idctdsp.c       |    2 ++
 libavcodec/mpegvideo_enc.c |    6 ++++--
 6 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/configure b/configure
index ba9d7a6..81e1d3f 100755
--- a/configure
+++ b/configure
@@ -130,6 +130,7 @@ Component options:
   --disable-mdct           disable MDCT code
   --disable-rdft           disable RDFT code
   --disable-fft            disable FFT code
+  --disable-faan           disable floating point AAN (I)DCT code
 
 Hardware accelerators:
   --enable-dxva2           enable DXVA2 code
@@ -1220,6 +1221,7 @@ SUBSYSTEM_LIST="
     dct
     doc
     error_resilience
+    faan
     fft
     lsp
     lzo
@@ -1547,6 +1549,8 @@ CONFIG_EXTRA="
     bswapdsp
     cabac
     dvprofile
+    faandct
+    faanidct
     fdctdsp
     gcrypt
     golomb
@@ -1725,6 +1729,8 @@ threads_if_any="$THREADS_LIST"
 # subsystems
 dct_select="rdft"
 error_resilience_select="me_cmp"
+faandct_deps="faan fdctdsp"
+faanidct_deps="faan idctdsp"
 intrax8_select="error_resilience"
 mdct_select="fft"
 rdft_select="fft"
@@ -2221,6 +2227,7 @@ enable $EXAMPLE_LIST $LIBRARY_LIST $PROGRAM_LIST
 enable asm
 enable debug
 enable doc
+enable faan faandct faanidct
 enable optimizations
 enable safe_bitstream_reader
 enable static
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index c8d820b..178b61e 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -36,8 +36,9 @@ OBJS-$(CONFIG_BSWAPDSP)                += bswapdsp.o
 OBJS-$(CONFIG_CABAC)                   += cabac.o
 OBJS-$(CONFIG_DCT)                     += dct.o dct32_fixed.o dct32_float.o
 OBJS-$(CONFIG_ERROR_RESILIENCE)        += error_resilience.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
 OBJS-$(CONFIG_FFT)                     += avfft.o fft_fixed.o fft_float.o \
                                           $(FFT-OBJS-yes)
@@ -51,8 +52,7 @@ OBJS-$(CONFIG_HPELDSP)                 += hpeldsp.o
 OBJS-$(CONFIG_HUFFMAN)                 += huffman.o
 OBJS-$(CONFIG_HUFFYUVDSP)              += huffyuvdsp.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_INTRAX8)                 += intrax8.o intrax8dsp.o
 OBJS-$(CONFIG_LIBXVID)                 += libxvid_rc.o
diff --git a/libavcodec/dct-test.c b/libavcodec/dct-test.c
index fed5ff2..32cbe8c 100644
--- a/libavcodec/dct-test.c
+++ b/libavcodec/dct-test.c
@@ -56,18 +56,22 @@ struct algo {
     int nonspec;
 };
 
-static const struct algo fdct_tab[4] = {
+static const struct algo fdct_tab[] = {
     { "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-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 const struct algo idct_tab[] = {
-    { "FAANI",       ff_faanidct,          FF_IDCT_PERM_NONE },
     { "REF-DBL",     ff_ref_idct,          FF_IDCT_PERM_NONE },
     { "INT",         ff_j_rev_dct,         FF_IDCT_PERM_LIBMPEG2 },
     { "SIMPLE-C",    ff_simple_idct_8,     FF_IDCT_PERM_NONE },
+#if CONFIG_FAANIDCT
+    { "FAANI",       ff_faanidct,          FF_IDCT_PERM_NONE },
+#endif /* CONFIG_FAANIDCT */
 #if CONFIG_MPEG4_DECODER
     { "XVID",        ff_xvid_idct,         FF_IDCT_PERM_NONE, 0, 1 },
 #endif /* CONFIG_MPEG4_DECODER */
diff --git a/libavcodec/fdctdsp.c b/libavcodec/fdctdsp.c
index 696fa01..f299eae 100644
--- a/libavcodec/fdctdsp.c
+++ b/libavcodec/fdctdsp.c
@@ -33,9 +33,11 @@ av_cold void ff_fdctdsp_init(FDCTDSPContext *c, AVCodecContext *avctx)
     } else if (avctx->dct_algo == FF_DCT_FASTINT) {
         c->fdct    = ff_fdct_ifast;
         c->fdct248 = ff_fdct_ifast248;
+#if CONFIG_FAANDCT
     } else if (avctx->dct_algo == FF_DCT_FAAN) {
         c->fdct    = ff_faandct;
         c->fdct248 = ff_faandct248;
+#endif /* CONFIG_FAANDCT */
     } else {
         c->fdct    = ff_jpeg_fdct_islow_8; // slow/accurate/default
         c->fdct248 = ff_fdct248_islow_8;
diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c
index 2a979bc..a9b8727 100644
--- a/libavcodec/idctdsp.c
+++ b/libavcodec/idctdsp.c
@@ -158,11 +158,13 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
         c->idct_add  = ff_jref_idct_add;
         c->idct      = ff_j_rev_dct;
         c->perm_type = FF_IDCT_PERM_LIBMPEG2;
+#if CONFIG_FAANIDCT
     } else if (avctx->idct_algo == FF_IDCT_FAAN) {
         c->idct_put  = ff_faanidct_put;
         c->idct_add  = ff_faanidct_add;
         c->idct      = ff_faanidct;
         c->perm_type = FF_IDCT_PERM_NONE;
+#endif /* CONFIG_FAANIDCT */
     } else { // accurate/default
         c->idct_put  = ff_simple_idct_put_8;
         c->idct_add  = ff_simple_idct_add_8;
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 380eff6..17322e5 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -89,8 +89,10 @@ void ff_convert_matrix(MpegEncContext *s, int (*qmat)[64],
     for (qscale = qmin; qscale <= qmax; qscale++) {
         int i;
         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++) {
                 const int j = s->idsp.idct_permutation[i];
                 /* 16 <= qscale * quant_matrix[i] <= 7905



More information about the ffmpeg-cvslog mailing list