Update for latest changes.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16250 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
diego 2005-08-17 22:50:29 +00:00
parent 8bd9e129cb
commit 937a5d6993
1 changed files with 97 additions and 3 deletions

View File

@ -27,6 +27,14 @@
#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
@ -77,12 +85,21 @@
#include <stdio.h>
#if HAVE_SYS_TYPES_H
# include <sys/types.h>
@@ -311,7 +341,7 @@
@@ -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__))
+ #elif (defined(__i386__) && defined(__GNUC__)) && !defined(__MINGW32__)
- #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)
@ -104,3 +121,80 @@
#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