Merge commit '1274ea8dbaec44355bde07f6bb31fec0c4e6fd2d'

* 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>
This commit is contained in:
Michael Niedermayer 2014-09-08 00:54:55 +02:00
commit f044fc0372
6 changed files with 25 additions and 8 deletions

7
configure vendored
View File

@ -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

View File

@ -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 \ OBJS-$(CONFIG_FAANDCT) += faandct.o
jfdctfst.o jfdctint.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 \ OBJS-$(CONFIG_IDCTDSP) += idctdsp.o simple_idct.o jrevdct.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

View File

@ -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 */

View File

@ -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;

View File

@ -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;

View File

@ -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 || #if CONFIG_FAANDCT
fdsp->fdct == ff_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