~broder/ubuntu/natty/gst-plugins-base0.10/perlsectomy

« back to all changes in this revision

Viewing changes to gst/audioconvert/audioconvert.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Dröge
  • Date: 2010-06-26 21:12:29 UTC
  • mfrom: (11.5.1 upstream) (33.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100626211229-0k34egbnd2octtpv
Tags: 0.10.29.2-1
* New upstream pre-release:
  + debian/rules,
    debian/compat,
    debian/control.in,
    debian/source/format,
    debian/patches/*:
    - Update to debhelper compat level 7.
    - Update to source format 3.0 (quilt).
    - Update to Standards-Version 3.8.4.
  + debian/build-deps.in,
    debian/rules:
    - Build depend on GLib 2.20 and GStreamer 0.10.29.2.
    - Build depend on ORC instead of liboil.
  + debian/patches/00*:
    - Dropped, merged upstream.
  + debian/libgstreamer-plugins-base.symbols:
    - Update symbols file with the new API.
  + debian/patches/01_videotestsrc-libm-linking.patch,
    debian/patches/02_videoscale-libm-linking.patch:
    - Link videotestsrc and videoscale with libm to fix FTBFS.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
#include "gstaudioquantize.h"
31
31
#include "audioconvert.h"
32
32
#include "gst/floatcast/floatcast.h"
 
33
#include "gstaudioconvertorc.h"
 
34
 
 
35
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
 
36
#define orc_audio_convert_unpack_u16_le orc_audio_convert_unpack_u16
 
37
#define orc_audio_convert_unpack_u16_be orc_audio_convert_unpack_u16_swap
 
38
#define orc_audio_convert_unpack_s16_le orc_audio_convert_unpack_s16
 
39
#define orc_audio_convert_unpack_s16_be orc_audio_convert_unpack_s16_swap
 
40
#define orc_audio_convert_unpack_u32_le orc_audio_convert_unpack_u32
 
41
#define orc_audio_convert_unpack_u32_be orc_audio_convert_unpack_u32_swap
 
42
#define orc_audio_convert_unpack_s32_le orc_audio_convert_unpack_s32
 
43
#define orc_audio_convert_unpack_s32_be orc_audio_convert_unpack_s32_swap
 
44
#define orc_audio_convert_pack_u16_le orc_audio_convert_pack_u16
 
45
#define orc_audio_convert_pack_u16_be orc_audio_convert_pack_u16_swap
 
46
#define orc_audio_convert_pack_s16_le orc_audio_convert_pack_s16
 
47
#define orc_audio_convert_pack_s16_be orc_audio_convert_pack_s16_swap
 
48
#define orc_audio_convert_pack_u32_le orc_audio_convert_pack_u32
 
49
#define orc_audio_convert_pack_u32_be orc_audio_convert_pack_u32_swap
 
50
#define orc_audio_convert_pack_s32_le orc_audio_convert_pack_s32
 
51
#define orc_audio_convert_pack_s32_be orc_audio_convert_pack_s32_swap
 
52
#else
 
53
#define orc_audio_convert_unpack_u16_be orc_audio_convert_unpack_u16
 
54
#define orc_audio_convert_unpack_u16_le orc_audio_convert_unpack_u16_swap
 
55
#define orc_audio_convert_unpack_s16_be orc_audio_convert_unpack_s16
 
56
#define orc_audio_convert_unpack_s16_le orc_audio_convert_unpack_s16_swap
 
57
#define orc_audio_convert_unpack_u32_be orc_audio_convert_unpack_u32
 
58
#define orc_audio_convert_unpack_u32_le orc_audio_convert_unpack_u32_swap
 
59
#define orc_audio_convert_unpack_s32_be orc_audio_convert_unpack_s32
 
60
#define orc_audio_convert_unpack_s32_le orc_audio_convert_unpack_s32_swap
 
61
#define orc_audio_convert_pack_u16_be orc_audio_convert_pack_u16
 
62
#define orc_audio_convert_pack_u16_le orc_audio_convert_pack_u16_swap
 
63
#define orc_audio_convert_pack_s16_be orc_audio_convert_pack_s16
 
64
#define orc_audio_convert_pack_s16_le orc_audio_convert_pack_s16_swap
 
65
#define orc_audio_convert_pack_u32_be orc_audio_convert_pack_u32
 
66
#define orc_audio_convert_pack_u32_le orc_audio_convert_pack_u32_swap
 
67
#define orc_audio_convert_pack_s32_be orc_audio_convert_pack_s32
 
68
#define orc_audio_convert_pack_s32_le orc_audio_convert_pack_s32_swap
 
69
#endif
33
70
 
34
71
/* sign bit in the intermediate format */
35
72
#define SIGNED  (1U<<31)
39
76
 */
40
77
#define MAKE_UNPACK_FUNC_NAME(name)                                     \
41
78
audio_convert_unpack_##name
 
79
#define MAKE_ORC_UNPACK_FUNC_NAME(name)                                 \
 
80
orc_audio_convert_unpack_##name
42
81
 
43
82
/* unpack from integer to signed integer 32 */
44
83
#define MAKE_UNPACK_FUNC_II(name, stride, sign, READ_FUNC)              \
52
91
  }                                                                     \
53
92
}
54
93
 
 
94
/* unpack from integer to signed integer 32 with orc */
 
95
#define MAKE_UNPACK_FUNC_ORC_II(name, stride, sign, READ_FUNC)             \
 
96
static void                                                             \
 
97
MAKE_UNPACK_FUNC_NAME (name) (guint8 *src, gint32 *dst,                 \
 
98
        gint scale, gint count)                                         \
 
99
{                                                                       \
 
100
  MAKE_ORC_UNPACK_FUNC_NAME (name) (dst, src, scale, count);            \
 
101
}
 
102
 
55
103
/* unpack from float to signed integer 32 */
56
104
#define MAKE_UNPACK_FUNC_FI(name, type, READ_FUNC)                            \
57
105
static void                                                                   \
98
146
#define READ32_FROM_LE(p) GST_READ_UINT32_LE (p)
99
147
#define READ32_FROM_BE(p) GST_READ_UINT32_BE (p)
100
148
 
101
 
MAKE_UNPACK_FUNC_II (u8, 1, SIGNED, READ8);
102
 
MAKE_UNPACK_FUNC_II (s8, 1, 0, READ8);
103
 
MAKE_UNPACK_FUNC_II (u16_le, 2, SIGNED, READ16_FROM_LE);
104
 
MAKE_UNPACK_FUNC_II (s16_le, 2, 0, READ16_FROM_LE);
105
 
MAKE_UNPACK_FUNC_II (u16_be, 2, SIGNED, READ16_FROM_BE);
106
 
MAKE_UNPACK_FUNC_II (s16_be, 2, 0, READ16_FROM_BE);
 
149
 
 
150
 
 
151
MAKE_UNPACK_FUNC_ORC_II (u8, 1, SIGNED, READ8);
 
152
MAKE_UNPACK_FUNC_ORC_II (s8, 1, 0, READ8);
 
153
MAKE_UNPACK_FUNC_ORC_II (u16_le, 2, SIGNED, READ16_FROM_LE);
 
154
MAKE_UNPACK_FUNC_ORC_II (s16_le, 2, 0, READ16_FROM_LE);
 
155
MAKE_UNPACK_FUNC_ORC_II (u16_be, 2, SIGNED, READ16_FROM_BE);
 
156
MAKE_UNPACK_FUNC_ORC_II (s16_be, 2, 0, READ16_FROM_BE);
107
157
MAKE_UNPACK_FUNC_II (u24_le, 3, SIGNED, READ24_FROM_LE);
108
158
MAKE_UNPACK_FUNC_II (s24_le, 3, 0, READ24_FROM_LE);
109
159
MAKE_UNPACK_FUNC_II (u24_be, 3, SIGNED, READ24_FROM_BE);
110
160
MAKE_UNPACK_FUNC_II (s24_be, 3, 0, READ24_FROM_BE);
111
 
MAKE_UNPACK_FUNC_II (u32_le, 4, SIGNED, READ32_FROM_LE);
112
 
MAKE_UNPACK_FUNC_II (s32_le, 4, 0, READ32_FROM_LE);
113
 
MAKE_UNPACK_FUNC_II (u32_be, 4, SIGNED, READ32_FROM_BE);
114
 
MAKE_UNPACK_FUNC_II (s32_be, 4, 0, READ32_FROM_BE);
 
161
MAKE_UNPACK_FUNC_ORC_II (u32_le, 4, SIGNED, READ32_FROM_LE);
 
162
MAKE_UNPACK_FUNC_ORC_II (s32_le, 4, 0, READ32_FROM_LE);
 
163
MAKE_UNPACK_FUNC_ORC_II (u32_be, 4, SIGNED, READ32_FROM_BE);
 
164
MAKE_UNPACK_FUNC_ORC_II (s32_be, 4, 0, READ32_FROM_BE);
115
165
MAKE_UNPACK_FUNC_FI (float_le, gfloat, GFLOAT_FROM_LE);
116
166
MAKE_UNPACK_FUNC_FI (float_be, gfloat, GFLOAT_FROM_BE);
117
167
MAKE_UNPACK_FUNC_FI (double_le, gdouble, GDOUBLE_FROM_LE);
143
193
 */
144
194
#define MAKE_PACK_FUNC_NAME(name)                                       \
145
195
audio_convert_pack_##name
 
196
#define MAKE_PACK_FUNC_NAME_ORC(name)                                       \
 
197
orc_audio_convert_pack_##name
146
198
 
147
199
/*
148
200
 * These functions convert the signed 32 bit integers to the
156
208
 *    function for the target width.
157
209
 */
158
210
 
 
211
/* pack from signed integer 32 to integer using Orc */
 
212
#define MAKE_PACK_FUNC_ORC_II(name, stride, sign, WRITE_FUNC)           \
 
213
static void                                                             \
 
214
MAKE_PACK_FUNC_NAME (name) (gint32 *src, guint8 * dst,                  \
 
215
        gint scale, gint count)                                         \
 
216
{                                                                       \
 
217
  MAKE_PACK_FUNC_NAME_ORC (name) (dst, src, scale, count);              \
 
218
}
 
219
 
159
220
/* pack from signed integer 32 to integer */
160
221
#define MAKE_PACK_FUNC_II(name, stride, sign, WRITE_FUNC)               \
161
222
static void                                                             \
234
295
#define WRITE32_TO_LE(p,v) GST_WRITE_UINT32_LE (p, (guint32)(v))
235
296
#define WRITE32_TO_BE(p,v) GST_WRITE_UINT32_BE (p, (guint32)(v))
236
297
 
237
 
MAKE_PACK_FUNC_II (u8, 1, SIGNED, WRITE8);
238
 
MAKE_PACK_FUNC_II (s8, 1, 0, WRITE8);
239
 
MAKE_PACK_FUNC_II (u16_le, 2, SIGNED, WRITE16_TO_LE);
240
 
MAKE_PACK_FUNC_II (s16_le, 2, 0, WRITE16_TO_LE);
241
 
MAKE_PACK_FUNC_II (u16_be, 2, SIGNED, WRITE16_TO_BE);
242
 
MAKE_PACK_FUNC_II (s16_be, 2, 0, WRITE16_TO_BE);
 
298
MAKE_PACK_FUNC_ORC_II (u8, 1, SIGNED, WRITE8);
 
299
MAKE_PACK_FUNC_ORC_II (s8, 1, 0, WRITE8);
 
300
MAKE_PACK_FUNC_ORC_II (u16_le, 2, SIGNED, WRITE16_TO_LE);
 
301
MAKE_PACK_FUNC_ORC_II (s16_le, 2, 0, WRITE16_TO_LE);
 
302
MAKE_PACK_FUNC_ORC_II (u16_be, 2, SIGNED, WRITE16_TO_BE);
 
303
MAKE_PACK_FUNC_ORC_II (s16_be, 2, 0, WRITE16_TO_BE);
243
304
MAKE_PACK_FUNC_II (u24_le, 3, SIGNED, WRITE24_TO_LE);
244
305
MAKE_PACK_FUNC_II (s24_le, 3, 0, WRITE24_TO_LE);
245
306
MAKE_PACK_FUNC_II (u24_be, 3, SIGNED, WRITE24_TO_BE);
246
307
MAKE_PACK_FUNC_II (s24_be, 3, 0, WRITE24_TO_BE);
247
 
MAKE_PACK_FUNC_II (u32_le, 4, SIGNED, WRITE32_TO_LE);
248
 
MAKE_PACK_FUNC_II (s32_le, 4, 0, WRITE32_TO_LE);
249
 
MAKE_PACK_FUNC_II (u32_be, 4, SIGNED, WRITE32_TO_BE);
250
 
MAKE_PACK_FUNC_II (s32_be, 4, 0, WRITE32_TO_BE);
 
308
MAKE_PACK_FUNC_ORC_II (u32_le, 4, SIGNED, WRITE32_TO_LE);
 
309
MAKE_PACK_FUNC_ORC_II (s32_le, 4, 0, WRITE32_TO_LE);
 
310
MAKE_PACK_FUNC_ORC_II (u32_be, 4, SIGNED, WRITE32_TO_BE);
 
311
MAKE_PACK_FUNC_ORC_II (s32_be, 4, 0, WRITE32_TO_BE);
251
312
MAKE_PACK_FUNC_IF (float_le, gfloat, GFLOAT_TO_LE);
252
313
MAKE_PACK_FUNC_IF (float_be, gfloat, GFLOAT_TO_BE);
253
314
MAKE_PACK_FUNC_IF (double_le, gdouble, GDOUBLE_TO_LE);
427
488
  ctx->in = *in;
428
489
  ctx->out = *out;
429
490
 
430
 
  /* Don't dither or apply noise shaping if out depth is bigger than 20 bits
 
491
  /* Don't dither or apply noise shaping if target depth is bigger than 20 bits
431
492
   * as DA converters only can do a SNR up to 20 bits in reality.
432
493
   * Also don't dither or apply noise shaping if target depth is larger than
433
494
   * source depth. */