Merge remote-tracking branch 'newdev/master'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 21 Mar 2011 02:09:46 +0000 (03:09 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 21 Mar 2011 02:33:28 +0000 (03:33 +0100)
Merged-by: Michael Niedermayer <michaelni@gmx.at>
43 files changed:
1  2 
configure
doc/ffmpeg.texi
ffmpeg.c
libavcodec/Makefile
libavcodec/aacdec.c
libavcodec/aacenc.c
libavcodec/aacsbr.c
libavcodec/ac3dec.c
libavcodec/ac3enc_float.c
libavcodec/arm/fft_init_arm.c
libavcodec/atrac1.c
libavcodec/atrac3.c
libavcodec/avfft.c
libavcodec/binkaudio.c
libavcodec/cook.c
libavcodec/costablegen.c
libavcodec/dct.c
libavcodec/dct.h
libavcodec/fft-test.c
libavcodec/fft.h
libavcodec/imc.c
libavcodec/kbdwin.c
libavcodec/kbdwin.h
libavcodec/mdct.c
libavcodec/mpegaudio.h
libavcodec/nellymoserenc.c
libavcodec/qdm2.c
libavcodec/rdft.c
libavcodec/rdft.h
libavcodec/sinewin.c
libavcodec/sinewin.h
libavcodec/sinewin_tablegen.c
libavcodec/sinewin_tablegen.h
libavcodec/synth_filter.c
libavcodec/twinvq.c
libavcodec/vorbis_dec.c
libavcodec/vorbis_enc.c
libavcodec/wma.c
libavcodec/wmadec.c
libavcodec/wmaenc.c
libavcodec/wmaprodec.c
libavcodec/wmavoice.c
libavcodec/x86/fft.c

diff --cc configure
+++ b/configure
@@@ -1343,9 -1333,8 +1344,9 @@@ tiff_decoder_suggest="zlib
  tiff_encoder_suggest="zlib"
  truehd_decoder_select="mlp_decoder"
  tscc_decoder_select="zlib"
- twinvq_decoder_select="mdct lsp"
+ twinvq_decoder_select="mdct lsp sinewin"
  vc1_decoder_select="h263_decoder"
 +vc1_crystalhd_decoder_select="crystalhd"
  vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
  vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
  vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
diff --cc doc/ffmpeg.texi
Simple merge
diff --cc ffmpeg.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000,141518d..44cf04d
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,50 +1,50 @@@
 - * This file is part of Libav.
+ /*
+  * (I)DCT Transforms
+  * Copyright (c) 2009 Peter Ross <pross@xvid.org>
+  * Copyright (c) 2010 Alex Converse <alex.converse@gmail.com>
+  * Copyright (c) 2010 Vitor Sessak
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+  */
+ #ifndef AVCODEC_DCT_H
+ #define AVCODEC_DCT_H
+ #include "rdft.h"
+ struct DCTContext {
+     int nbits;
+     int inverse;
+     RDFTContext rdft;
+     const float *costab;
+     FFTSample *csc2;
+     void (*dct_calc)(struct DCTContext *s, FFTSample *data);
+     void (*dct32)(FFTSample *out, const FFTSample *in);
+ };
+ /**
+  * Set up DCT.
+  * @param nbits           size of the input array:
+  *                        (1 << nbits)     for DCT-II, DCT-III and DST-I
+  *                        (1 << nbits) + 1 for DCT-I
+  *
+  * @note the first element of the input of DST-I is ignored
+  */
+ int  ff_dct_init(DCTContext *s, int nbits, enum DCTTransformType type);
+ void ff_dct_end (DCTContext *s);
+ #endif
Simple merge
Simple merge
Simple merge
index 0000000,c2c1c59..8b33861
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,48 +1,48 @@@
 - * This file is part of Libav.
+ /*
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include <assert.h>
+ #include <libavutil/mathematics.h>
+ #include "libavutil/attributes.h"
+ #include "kbdwin.h"
+ #define BESSEL_I0_ITER 50 // default: 50 iterations of Bessel I0 approximation
+ av_cold void ff_kbd_window_init(float *window, float alpha, int n)
+ {
+    int i, j;
+    double sum = 0.0, bessel, tmp;
+    double local_window[FF_KBD_WINDOW_MAX];
+    double alpha2 = (alpha * M_PI / n) * (alpha * M_PI / n);
+    assert(n <= FF_KBD_WINDOW_MAX);
+    for (i = 0; i < n; i++) {
+        tmp = i * (n - i) * alpha2;
+        bessel = 1.0;
+        for (j = BESSEL_I0_ITER; j > 0; j--)
+            bessel = bessel * tmp / (j * j) + 1;
+        sum += bessel;
+        local_window[i] = sum;
+    }
+    sum++;
+    for (i = 0; i < n; i++)
+        window[i] = sqrt(local_window[i] / sum);
+ }
index 0000000,5ac2b8c..e762105
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,35 +1,35 @@@
 - * This file is part of Libav.
+ /*
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #ifndef AVCODEC_KBDWIN_H
+ #define AVCODEC_KBDWIN_H
+ /**
+  * Maximum window size for ff_kbd_window_init.
+  */
+ #define FF_KBD_WINDOW_MAX 1024
+ /**
+  * Generate a Kaiser-Bessel Derived Window.
+  * @param   window  pointer to half window
+  * @param   alpha   determines window shape
+  * @param   n       size of half window, max FF_KBD_WINDOW_MAX
+  */
+ void ff_kbd_window_init(float *window, float alpha, int n);
+ #endif
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000,7572c6c..cf50aba
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,74 +1,74 @@@
 - * This file is part of Libav.
+ /*
+  * (I)RDFT transforms
+  * Copyright (c) 2009 Alex Converse <alex dot converse at gmail dot com>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #ifndef AVCODEC_RDFT_H
+ #define AVCODEC_RDFT_H
+ #include "config.h"
+ #include "fft.h"
+ #if CONFIG_HARDCODED_TABLES
+ #   define SINTABLE_CONST const
+ #else
+ #   define SINTABLE_CONST
+ #endif
+ #define SINTABLE(size) \
+     SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2]
+ extern SINTABLE(16);
+ extern SINTABLE(32);
+ extern SINTABLE(64);
+ extern SINTABLE(128);
+ extern SINTABLE(256);
+ extern SINTABLE(512);
+ extern SINTABLE(1024);
+ extern SINTABLE(2048);
+ extern SINTABLE(4096);
+ extern SINTABLE(8192);
+ extern SINTABLE(16384);
+ extern SINTABLE(32768);
+ extern SINTABLE(65536);
+ struct RDFTContext {
+     int nbits;
+     int inverse;
+     int sign_convention;
+     /* pre/post rotation tables */
+     const FFTSample *tcos;
+     SINTABLE_CONST FFTSample *tsin;
+     FFTContext fft;
+     void (*rdft_calc)(struct RDFTContext *s, FFTSample *z);
+ };
+ /**
+  * Set up a real FFT.
+  * @param nbits           log2 of the length of the input array
+  * @param trans           the type of transform
+  */
+ int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans);
+ void ff_rdft_end(RDFTContext *s);
+ void ff_rdft_init_arm(RDFTContext *s);
+ #endif
index 0000000,be38dbc..1fa0e95
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,20 +1,20 @@@
 - * This file is part of Libav.
+ /*
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include "sinewin.h"
+ #include "sinewin_tablegen.h"
index 0000000,2ed386a..33f7d68
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,59 +1,59 @@@
 - * This file is part of Libav.
+ /*
+  * Copyright (c) 2008 Robert Swain
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #ifndef AVCODEC_SINEWIN_H
+ #define AVCODEC_SINEWIN_H
+ #include "config.h"
+ #include "libavutil/mem.h"
+ #if CONFIG_HARDCODED_TABLES
+ #   define SINETABLE_CONST const
+ #else
+ #   define SINETABLE_CONST
+ #endif
+ #define SINETABLE(size) \
+     SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size]
+ /**
+  * Generate a sine window.
+  * @param   window  pointer to half window
+  * @param   n       size of half window
+  */
+ void ff_sine_window_init(float *window, int n);
+ /**
+  * initialize the specified entry of ff_sine_windows
+  */
+ void ff_init_ff_sine_windows(int index);
+ extern SINETABLE(  32);
+ extern SINETABLE(  64);
+ extern SINETABLE( 128);
+ extern SINETABLE( 256);
+ extern SINETABLE( 512);
+ extern SINETABLE(1024);
+ extern SINETABLE(2048);
+ extern SINETABLE(4096);
+ extern SINETABLE_CONST float * const ff_sine_windows[13];
+ #endif
index 0000000,2f4d1aa..48eb771
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,49 +1,49 @@@
 - * This file is part of Libav.
+ /*
+  * Generate a header file for hardcoded sine windows
+  *
+  * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include <stdlib.h>
+ #define CONFIG_HARDCODED_TABLES 0
+ #define SINETABLE_CONST
+ #define SINETABLE(size) \
+     float ff_sine_##size[size]
+ #define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
+ #ifndef M_PI
+ #define M_PI 3.14159265358979323846
+ #endif
+ #include "sinewin_tablegen.h"
+ #include "tableprint.h"
+ int main(void)
+ {
+     int i;
+     write_fileheader();
+     for (i = 5; i <= 12; i++) {
+         ff_init_ff_sine_windows(i);
+         printf("SINETABLE(%4i) = {\n", 1 << i);
+         write_float_array(ff_sine_windows[i], 1 << i);
+         printf("};\n");
+     }
+     return 0;
+ }
index 0000000,91c26c1..1c85d79
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,60 +1,60 @@@
 - * This file is part of Libav.
+ /*
+  * Header file for hardcoded sine windows
+  *
+  * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2.1 of the License, or (at your option) any later version.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
++ * License along with FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include <assert.h>
+ // do not use libavutil/libm.h since this is compiled both
+ // for the host and the target and config.h is only valid for the target
+ #include <math.h>
+ #include "libavutil/attributes.h"
+ #if !CONFIG_HARDCODED_TABLES
+ SINETABLE(  32);
+ SINETABLE(  64);
+ SINETABLE( 128);
+ SINETABLE( 256);
+ SINETABLE( 512);
+ SINETABLE(1024);
+ SINETABLE(2048);
+ SINETABLE(4096);
+ #else
+ #include "libavcodec/sinewin_tables.h"
+ #endif
+ SINETABLE_CONST float * const ff_sine_windows[] = {
+     NULL, NULL, NULL, NULL, NULL, // unused
+     ff_sine_32 , ff_sine_64 ,
+     ff_sine_128, ff_sine_256, ff_sine_512, ff_sine_1024, ff_sine_2048, ff_sine_4096
+ };
+ // Generate a sine window.
+ av_cold void ff_sine_window_init(float *window, int n) {
+     int i;
+     for(i = 0; i < n; i++)
+         window[i] = sinf((i + 0.5) * (M_PI / (2.0 * n)));
+ }
+ av_cold void ff_init_ff_sine_windows(int index) {
+     assert(index >= 0 && index < FF_ARRAY_ELEMS(ff_sine_windows));
+ #if !CONFIG_HARDCODED_TABLES
+     ff_sine_window_init(ff_sine_windows[index], 1 << index);
+ #endif
+ }
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge