mirror of https://github.com/mpv-player/mpv
201 lines
5.5 KiB
Diff
201 lines
5.5 KiB
Diff
--- libfaad/bits.h 2004-03-11 14:32:39.000000000 +0100
|
|
+++ libfaad2/bits.h 2004-06-24 10:47:02.000000000 +0200
|
|
@@ -58,7 +61,7 @@
|
|
|
|
#if defined (_WIN32) && !defined(_WIN32_WCE) && !defined(__MINGW32__)
|
|
#define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax
|
|
-#elif defined(LINUX) || defined(DJGPP) || defined(__MINGW32__)
|
|
+#elif defined(LINUX) || defined(DJGPP)
|
|
#define BSWAP(a) __asm__ ( "bswapl %0\n" : "=r" (a) : "0" (a) )
|
|
#else
|
|
#define BSWAP(a) \
|
|
--- libfaad/common.h 2004-06-30 14:45:56.000000000 +0200
|
|
+++ libfaad2/common.h 2004-10-19 03:16:03.000000000 +0200
|
|
@@ -32,10 +35,13 @@
|
|
extern "C" {
|
|
#endif
|
|
|
|
-#ifdef HAVE_CONFIG_H
|
|
-# include "../config.h"
|
|
+/* Allow build on Cygwin*/
|
|
+#if defined(__CYGWIN__)
|
|
+#define __STRICT_ANSI__
|
|
#endif
|
|
|
|
+#include "../config.h"
|
|
+
|
|
#define INLINE __inline
|
|
#if 0 //defined(_WIN32) && !defined(_WIN32_WCE)
|
|
#define ALIGN __declspec(align(16))
|
|
@@ -67,6 +67,6 @@
|
|
/* Use if target platform has address generators with autoincrement */
|
|
//#define PREFER_POINTERS
|
|
|
|
-#ifdef _WIN32_WCE
|
|
+#if defined(_WIN32_WCE) || defined(__arm__)
|
|
#define FIXED_POINT
|
|
#endif
|
|
@@ -117,6 +123,9 @@
|
|
# ifdef MAIN_DEC
|
|
# undef MAIN_DEC
|
|
# endif
|
|
+# ifdef SBR_DEC
|
|
+# undef SBR_DEC
|
|
+# endif
|
|
#endif // FIXED_POINT
|
|
|
|
#ifdef DRM
|
|
@@ -157,6 +166,7 @@
|
|
|
|
#include <stdlib.h>
|
|
|
|
+#if 0
|
|
typedef unsigned __int64 uint64_t;
|
|
typedef unsigned __int32 uint32_t;
|
|
typedef unsigned __int16 uint16_t;
|
|
@@ -165,11 +175,31 @@
|
|
typedef __int32 int32_t;
|
|
typedef __int16 int16_t;
|
|
typedef __int8 int8_t;
|
|
+#else
|
|
+#include <inttypes.h>
|
|
+#endif
|
|
+
|
|
typedef float float32_t;
|
|
|
|
|
|
#else
|
|
|
|
+/* #undef HAVE_FLOAT32_T */
|
|
+/* Define if you have the <inttypes.h> header file. */
|
|
+#define HAVE_INTTYPES_H 1
|
|
+
|
|
+/* Define if you have the `memcpy' function. */
|
|
+#define HAVE_MEMCPY 1
|
|
+
|
|
+/* Define if you have the <stdint.h> header file. */
|
|
+#define HAVE_STDINT_H 1
|
|
+
|
|
+/* Define if you have the `strchr' function. */
|
|
+#define HAVE_STRCHR 1
|
|
+
|
|
+/* Define if you have the ANSI C header files. */
|
|
+#define STDC_HEADERS 1
|
|
+
|
|
#include <stdio.h>
|
|
#if HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
@@ -329,7 +329,7 @@
|
|
}
|
|
|
|
|
|
- #if defined(_WIN32) && !defined(__MINGW32__)
|
|
+ #if defined(_WIN32) && !defined(__MINGW32__) && !defined(HAVE_LRINTF)
|
|
#define HAS_LRINTF
|
|
static INLINE int lrintf(float f)
|
|
{
|
|
@@ -341,7 +341,7 @@
|
|
}
|
|
return i;
|
|
}
|
|
- #elif (defined(__i386__) && defined(__GNUC__)) && !defined(__MINGW32__)
|
|
+ #elif (defined(__i386__) && defined(__GNUC__)) && !defined(__MINGW32__) && !defined(HAVE_LRINTF)
|
|
#define HAS_LRINTF
|
|
// from http://www.stereopsis.com/FPU.html
|
|
static INLINE int lrintf(float f)
|
|
@@ -340,6 +370,8 @@
|
|
|
|
#else
|
|
|
|
+#include <math.h>
|
|
+
|
|
#ifdef HAVE_LRINTF
|
|
# define HAS_LRINTF
|
|
# define _ISOC9X_SOURCE 1
|
|
@@ -348,8 +380,6 @@
|
|
# define __USE_ISOC99 1
|
|
#endif
|
|
|
|
- #include <math.h>
|
|
-
|
|
#ifdef HAVE_SINF
|
|
# define sin sinf
|
|
#error
|
|
--- main/libfaad2/output.c 2005/02/19 01:21:19 1.7
|
|
+++ main/libfaad2/output.c 2005/03/29 18:14:24 1.8
|
|
@@ -19,10 +19,9 @@
|
|
** Any non-GPL usage of this software or parts of this software is strictly
|
|
** forbidden.
|
|
**
|
|
-** Commercial non-GPL licensing of this software is possible.
|
|
-** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
|
|
-**
|
|
-** $Id: output.c,v 1.8 2005/03/29 18:14:24 rfelker Exp $
|
|
+** Initially modified for use with MPlayer by Rich Felker on 2005/03/29
|
|
+** $Id: output.c,v 1.11 2005/04/05 05:43:41 rfelker Exp $
|
|
+** detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
|
|
**/
|
|
|
|
#include "common.h"
|
|
@@ -462,7 +462,7 @@
|
|
}
|
|
}
|
|
|
|
-void* output_to_PCM(NeAACDecHandle hDecoder,
|
|
+void* output_to_PCM_sux(NeAACDecHandle hDecoder,
|
|
real_t **input, void *sample_buffer, uint8_t channels,
|
|
uint16_t frame_len, uint8_t format)
|
|
{
|
|
@@ -553,4 +553,51 @@
|
|
return sample_buffer;
|
|
}
|
|
|
|
+void* output_to_PCM(NeAACDecHandle hDecoder,
|
|
+ real_t **input, void *sample_buffer, uint8_t channels,
|
|
+ uint16_t frame_len, uint8_t format)
|
|
+{
|
|
+ int ch;
|
|
+ int i;
|
|
+ int16_t *short_sample_buffer = (int16_t*)sample_buffer;
|
|
+ real_t *ch0 = input[hDecoder->internal_channel[0]];
|
|
+ real_t *ch1 = input[hDecoder->internal_channel[1]];
|
|
+ real_t *ch2 = input[hDecoder->internal_channel[2]];
|
|
+ real_t *ch3 = input[hDecoder->internal_channel[3]];
|
|
+ real_t *ch4 = input[hDecoder->internal_channel[4]];
|
|
+
|
|
+ if (format != FAAD_FMT_16BIT)
|
|
+ return output_to_PCM_sux(hDecoder, input, sample_buffer, channels, frame_len, format);
|
|
+
|
|
+ if (hDecoder->downMatrix) {
|
|
+ for(i = 0; i < frame_len; i++)
|
|
+ {
|
|
+ int32_t tmp;
|
|
+ tmp = (ch1[i] + ((ch0[i]+ch3[i])>>1) + ((ch0[i]+ch3[i])>>2) + (1<<(REAL_BITS))) >> (REAL_BITS+1);
|
|
+ if ((tmp+0x8000) & ~0xffff) tmp = ~(tmp>>31)-0x8000;
|
|
+ short_sample_buffer[0] = tmp;
|
|
+ tmp = (ch2[i] + ((ch0[i]+ch4[i])>>1) + ((ch0[i]+ch4[i])>>2) + (1<<(REAL_BITS))) >> (REAL_BITS+1);
|
|
+ if ((tmp+0x8000) & ~0xffff) tmp = ~(tmp>>31)-0x8000;
|
|
+ short_sample_buffer[1] = tmp;
|
|
+ short_sample_buffer += channels;
|
|
+ }
|
|
+ return sample_buffer;
|
|
+ }
|
|
+
|
|
+ /* Copy output to a standard PCM buffer */
|
|
+ for(i = 0; i < frame_len; i++)
|
|
+ {
|
|
+ for (ch = 0; ch < channels; ch++)
|
|
+ {
|
|
+ int32_t tmp = input[ch][i];
|
|
+ tmp += (1 << (REAL_BITS-1));
|
|
+ tmp >>= REAL_BITS;
|
|
+ if ((tmp+0x8000) & ~0xffff) tmp = ~(tmp>>31)-0x8000;
|
|
+ *(short_sample_buffer++) = tmp;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return sample_buffer;
|
|
+}
|
|
+
|
|
#endif
|