Update to MPlayer SVN rev 29473 and FFmpeg SVN rev 19572.
[vaapi:athaifas-mplayer.git] / libfaad2 / .svn / text-base / local_changes.diff.svn-base
1 --- libfaad2.orig/bits.h        2006-03-16 20:15:04.000000000 +0100
2 +++ libfaad2/bits.h     2006-03-16 20:37:21.000000000 +0100
3 @@ -58,7 +61,7 @@
4
5  #if defined (_WIN32) && !defined(_WIN32_WCE) && !defined(__MINGW32__)
6  #define BSWAP(a) __asm mov eax,a __asm bswap eax __asm mov a, eax
7 -#elif defined(LINUX) || defined(DJGPP) || defined(__MINGW32__)
8 +#elif defined(LINUX) || defined(DJGPP)
9  #define BSWAP(a) __asm__ ( "bswapl %0\n" : "=r" (a) : "0" (a) )
10  #else
11  #define BSWAP(a) \
12 --- libfaad2.orig/common.h      2006-03-16 20:15:04.000000000 +0100
13 +++ libfaad2/common.h   2006-03-16 20:56:56.000000000 +0100
14 @@ -32,8 +37,13 @@
15
16  #ifdef HAVE_CONFIG_H
17  #  include "../config.h"
18  #endif
19 +
20 +/* Allow build on Cygwin*/
21 +#if defined(__CYGWIN__)
22 +#define __STRICT_ANSI__
23 +#endif
24
25  #define INLINE __inline
26  #if 0 //defined(_WIN32) && !defined(_WIN32_WCE)
27  #define ALIGN __declspec(align(16))
28 @@ -61,7 +69,7 @@
29  /* Use if target platform has address generators with autoincrement */
30  //#define PREFER_POINTERS
31
32 -#ifdef _WIN32_WCE
33 +#if defined(_WIN32_WCE) || defined(__arm__) || defined(__avr32__)
34  #define FIXED_POINT
35  #endif
36
37 @@ -117,6 +125,9 @@
38  # ifdef MAIN_DEC
39  #  undef MAIN_DEC
40  # endif
41 +# ifdef SBR_DEC
42 +#  undef SBR_DEC
43 +# endif
44  #endif // FIXED_POINT
45
46  #ifdef DRM
47 @@ -151,6 +162,7 @@
48
49  #include <stdlib.h>
50
51 +#if 0
52  typedef unsigned __int64 uint64_t;
53  typedef unsigned __int32 uint32_t;
54  typedef unsigned __int16 uint16_t;
55 @@ -159,5 +171,9 @@
56  typedef __int32 int32_t;
57  typedef __int16 int16_t;
58  typedef __int8  int8_t;
59 +#else
60 +#include <inttypes.h>
61 +#endif
62 +
63  typedef float float32_t;
64
65 @@ -245,7 +245,7 @@
66  
67  #endif
68  
69 -#ifdef WORDS_BIGENDIAN
70 +#if HAVE_BIGENDIAN
71  #define ARCH_IS_BIG_ENDIAN
72  #endif
73  
74 @@ -289,7 +305,7 @@
75    }
76
77
78 -  #if defined(_WIN32) && !defined(__MINGW32__)
79 +  #if defined(_WIN32) && !defined(__MINGW32__) && !HAVE_LRINTF
80      #define HAS_LRINTF
81      static INLINE int lrintf(float f)
82      {
83 @@ -301,7 +317,7 @@
84          }
85          return i;
86      }
87 -  #elif (defined(__i386__) && defined(__GNUC__))
88 +  #elif (defined(__i386__) && defined(__GNUC__)) && !HAVE_LRINTF
89      #define HAS_LRINTF
90      // from http://www.stereopsis.com/FPU.html
91      static INLINE int lrintf(float f)
92 @@ -330,6 +346,8 @@
93
94    #else
95
96 +#include <math.h>
97 +
98 -#ifdef HAVE_LRINTF
99 +#if HAVE_LRINTF
100  #  define HAS_LRINTF
101  #  define _ISOC9X_SOURCE 1
102 @@ -338,8 +356,6 @@
103  #  define __USE_ISOC99   1
104  #endif
105
106 -    #include <math.h>
107 -
108  #ifdef HAVE_SINF
109  #  define sin sinf
110  #error
111 --- libfaad2.orig/output.c      2006-03-16 20:15:04.000000000 +0100
112 +++ libfaad2/output.c   2006-04-18 19:50:26.000000000 +0200
113 @@ -463,7 +462,7 @@
114      }
115  }
116
117 -void* output_to_PCM(NeAACDecHandle hDecoder,
118 +void* output_to_PCM_sux(NeAACDecHandle hDecoder,
119                      real_t **input, void *sample_buffer, uint8_t channels,
120                      uint16_t frame_len, uint8_t format)
121  {
122 @@ -554,4 +553,51 @@
123      return sample_buffer;
124  }
125
126 +void* output_to_PCM(NeAACDecHandle hDecoder,
127 +                    real_t **input, void *sample_buffer, uint8_t channels,
128 +                    uint16_t frame_len, uint8_t format)
129 +{
130 +    int ch;
131 +    int i;
132 +    int16_t *short_sample_buffer = (int16_t*)sample_buffer;
133 +    real_t *ch0 = input[hDecoder->internal_channel[0]];
134 +    real_t *ch1 = input[hDecoder->internal_channel[1]];
135 +    real_t *ch2 = input[hDecoder->internal_channel[2]];
136 +    real_t *ch3 = input[hDecoder->internal_channel[3]];
137 +    real_t *ch4 = input[hDecoder->internal_channel[4]];
138 +
139 +    if (format != FAAD_FMT_16BIT)
140 +        return output_to_PCM_sux(hDecoder, input, sample_buffer, channels, frame_len, format);
141 +
142 +    if (hDecoder->downMatrix) {
143 +        for(i = 0; i < frame_len; i++)
144 +        {
145 +           int32_t tmp;
146 +           tmp = (ch1[i] + ((ch0[i]+ch3[i])>>1) + ((ch0[i]+ch3[i])>>2) + (1<<(REAL_BITS))) >> (REAL_BITS+1);
147 +           if ((tmp+0x8000) & ~0xffff) tmp = ~(tmp>>31)-0x8000;
148 +            short_sample_buffer[0] = tmp;
149 +           tmp = (ch2[i] + ((ch0[i]+ch4[i])>>1) + ((ch0[i]+ch4[i])>>2) + (1<<(REAL_BITS))) >> (REAL_BITS+1);
150 +           if ((tmp+0x8000) & ~0xffff) tmp = ~(tmp>>31)-0x8000;
151 +            short_sample_buffer[1] = tmp;
152 +           short_sample_buffer += channels;
153 +        }
154 +        return sample_buffer;
155 +    }
156 +
157 +    /* Copy output to a standard PCM buffer */
158 +    for(i = 0; i < frame_len; i++)
159 +    {
160 +        for (ch = 0; ch < channels; ch++)
161 +        {
162 +            int32_t tmp = input[hDecoder->internal_channel[ch]][i];
163 +            tmp += (1 << (REAL_BITS-1));
164 +            tmp >>= REAL_BITS;
165 +           if ((tmp+0x8000) & ~0xffff) tmp = ~(tmp>>31)-0x8000;
166 +            *(short_sample_buffer++) = tmp;
167 +        }
168 +    }
169 +
170 +    return sample_buffer;
171 +}
172 +
173  #endif
174 --- libfaad2.orig/ps_dec.c      2006-03-16 20:15:04.000000000 +0100
175 +++ libfaad2/ps_dec.c   2006-04-18 20:29:38.000000000 +0200
176 @@ -159,7 +162,7 @@
177
178  /* static function declarations */
179  static void ps_data_decode(ps_info *ps);
180 -static hyb_info *hybrid_init();
181 +static hyb_info *hybrid_init(void);
182  static void channel_filter2(hyb_info *hyb, uint8_t frame_len, const real_t *filter,
183                              qmf_t *buffer, qmf_t **X_hybrid);
184  static void INLINE DCT3_4_unscaled(real_t *y, real_t *x);
185 @@ -189,7 +192,7 @@
186  /*  */
187
188
189 -static hyb_info *hybrid_init()
190 +static hyb_info *hybrid_init(void)
191  {
192      uint8_t i;
193
194 @@ -1935,8 +1938,8 @@
195  /* main Parametric Stereo decoding function */
196  uint8_t ps_decode(ps_info *ps, qmf_t X_left[38][64], qmf_t X_right[38][64])
197  {
198 -    qmf_t X_hybrid_left[32][32] = {{0}};
199 -    qmf_t X_hybrid_right[32][32] = {{0}};
200 +    qmf_t X_hybrid_left[32][32] = {{{0}}};
201 +    qmf_t X_hybrid_right[32][32] = {{{0}}};
202
203      /* delta decoding of the bitstream data */
204      ps_data_decode(ps);
205 --- libfaad2.orig/sbr_dec.c     2006-03-16 20:15:04.000000000 +0100
206 +++ libfaad2/sbr_dec.c  2006-04-18 20:33:57.000000000 +0200
207 @@ -526,8 +529,8 @@
208      uint8_t l, k;
209      uint8_t dont_process = 0;
210      uint8_t ret = 0;
211 -    ALIGN qmf_t X_left[38][64] = {{0}};
212 -    ALIGN qmf_t X_right[38][64] = {{0}}; /* must set this to 0 */
213 +    ALIGN qmf_t X_left[38][64] = {{{0}}};
214 +    ALIGN qmf_t X_right[38][64] = {{{0}}}; /* must set this to 0 */
215
216      if (sbr == NULL)
217          return 20;
218 --- libfaad2.orig/specrec.c     2006-03-16 20:15:04.000000000 +0100
219 +++ libfaad2/specrec.c  2006-04-18 20:38:09.000000000 +0200
220 @@ -673,29 +673,19 @@
221      /* MAIN object type prediction */
222      if (hDecoder->object_type == MAIN)
223      {
224 -        /* allocate the state only when needed */
225 -        if (hDecoder->pred_stat[channel] == NULL)
226 -        {
227 -            hDecoder->pred_stat[channel] = (pred_state*)faad_malloc(hDecoder->frameLength * sizeof(pred_state));
228 +            hDecoder->pred_stat[channel] = (pred_state*)realloc(hDecoder->pred_stat[channel], hDecoder->frameLength * sizeof(pred_state));
229              reset_all_predictors(hDecoder->pred_stat[channel], hDecoder->frameLength);
230 -        }
231      }
232  #endif
233
234  #ifdef LTP_DEC
235      if (is_ltp_ot(hDecoder->object_type))
236      {
237 -        /* allocate the state only when needed */
238 -        if (hDecoder->lt_pred_stat[channel] == NULL)
239 -        {
240 -            hDecoder->lt_pred_stat[channel] = (int16_t*)faad_malloc(hDecoder->frameLength*4 * sizeof(int16_t));
241 +            hDecoder->lt_pred_stat[channel] = (int16_t*)realloc(hDecoder->lt_pred_stat[channel], hDecoder->frameLength*4 * sizeof(int16_t));
242              memset(hDecoder->lt_pred_stat[channel], 0, hDecoder->frameLength*4 * sizeof(int16_t));
243 -        }
244      }
245  #endif
246
247 -    if (hDecoder->time_out[channel] == NULL)
248 -    {
249          mul = 1;
250  #ifdef SBR_DEC
251          hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 0;
252 @@ -706,41 +696,28 @@
253              hDecoder->sbr_alloced[hDecoder->fr_ch_ele] = 1;
254          }
255  #endif
256 -        hDecoder->time_out[channel] = (real_t*)faad_malloc(mul*hDecoder->frameLength*sizeof(real_t));
257 +        hDecoder->time_out[channel] = (real_t*)realloc(hDecoder->time_out[channel], mul*hDecoder->frameLength*sizeof(real_t));
258          memset(hDecoder->time_out[channel], 0, mul*hDecoder->frameLength*sizeof(real_t));
259 -    }
260  #if (defined(PS_DEC) || defined(DRM_PS))
261      if (output_channels == 2)
262      {
263 -        if (hDecoder->time_out[channel+1] == NULL)
264 -        {
265 -            hDecoder->time_out[channel+1] = (real_t*)faad_malloc(mul*hDecoder->frameLength*sizeof(real_t));
266 +            hDecoder->time_out[channel+1] = (real_t*)realloc(hDecoder->time_out[channel+1], mul*hDecoder->frameLength*sizeof(real_t));
267              memset(hDecoder->time_out[channel+1], 0, mul*hDecoder->frameLength*sizeof(real_t));
268 -        }
269      }
270  #endif
271
272 -    if (hDecoder->fb_intermed[channel] == NULL)
273 -    {
274 -        hDecoder->fb_intermed[channel] = (real_t*)faad_malloc(hDecoder->frameLength*sizeof(real_t));
275 +        hDecoder->fb_intermed[channel] = (real_t*)realloc(hDecoder->fb_intermed[channel], hDecoder->frameLength*sizeof(real_t));
276          memset(hDecoder->fb_intermed[channel], 0, hDecoder->frameLength*sizeof(real_t));
277 -    }
278
279  #ifdef SSR_DEC
280      if (hDecoder->object_type == SSR)
281      {
282 -        if (hDecoder->ssr_overlap[channel] == NULL)
283 -        {
284 -            hDecoder->ssr_overlap[channel] = (real_t*)faad_malloc(2*hDecoder->frameLength*sizeof(real_t));
285 -            memset(hDecoder->ssr_overlap[channel], 0, 2*hDecoder->frameLength*sizeof(real_t));
286 -        }
287 -        if (hDecoder->prev_fmd[channel] == NULL)
288 -        {
289              uint16_t k;
290 -            hDecoder->prev_fmd[channel] = (real_t*)faad_malloc(2*hDecoder->frameLength*sizeof(real_t));
291 +            hDecoder->ssr_overlap[channel] = (real_t*)realloc(hDecoder->ssr_overlap[channel], 2*hDecoder->frameLength*sizeof(real_t));
292 +            memset(hDecoder->ssr_overlap[channel], 0, 2*hDecoder->frameLength*sizeof(real_t));
293 +            hDecoder->prev_fmd[channel] = (real_t*)realloc(hDecoder->prev_fmd[channel], 2*hDecoder->frameLength*sizeof(real_t));
294              for (k = 0; k < 2*hDecoder->frameLength; k++)
295                  hDecoder->prev_fmd[channel][k] = REAL_CONST(-1);
296 -        }
297      }
298  #endif
299
300 @@ -865,22 +842,14 @@
301
302      /* always allocate 2 channels, PS can always "suddenly" turn up */
303  #if (defined(PS_DEC) || defined(DRM_PS))
304 -    output_channels = 2;
305 +    output_channels = hDecoder->ps_used[hDecoder->fr_ch_ele] ? 2 : 1;
306  #else
307      output_channels = 1;
308  #endif
309
310 -    if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] == 0)
311 -    {
312 -        /* element_output_channels not set yet */
313 +    if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0 ||
314 +        hDecoder->element_output_channels[hDecoder->fr_ch_ele] < output_channels) {
315          hDecoder->element_output_channels[hDecoder->fr_ch_ele] = output_channels;
316 -    } else if (hDecoder->element_output_channels[hDecoder->fr_ch_ele] != output_channels) {
317 -        /* element inconsistency */
318 -        return 21;
319 -    }
320 -
321 -    if (hDecoder->element_alloced[hDecoder->fr_ch_ele] == 0)
322 -    {
323          retval = allocate_single_channel(hDecoder, sce->channel, output_channels);
324          if (retval > 0)
325              return retval;
326 @@ -1026,11 +995,10 @@
327      {
328          return 23;
329      }
330 -#endif
331
332      /* copy L to R when no PS is used */
333  #if (defined(PS_DEC) || defined(DRM_PS))
334 -    if ((hDecoder->ps_used[hDecoder->fr_ch_ele] == 0))
335 +    if ((hDecoder->ps_used[hDecoder->fr_ch_ele] == 0) && (output_channels == 2))
336      {
337          uint8_t ele = hDecoder->fr_ch_ele;
338          uint8_t ch = sce->channel;
339 @@ -1040,6 +1008,7 @@
340          memcpy(hDecoder->time_out[ch+1], hDecoder->time_out[ch], frame_size);
341      }
342  #endif
343 +#endif
344
345      return 0;
346  }