30
30
#include "gstaudioquantize.h"
31
31
#include "audioconvert.h"
32
32
#include "gst/floatcast/floatcast.h"
33
#include "gstaudioconvertorc.h"
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
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
34
71
/* sign bit in the intermediate format */
35
72
#define SIGNED (1U<<31)
94
/* unpack from integer to signed integer 32 with orc */
95
#define MAKE_UNPACK_FUNC_ORC_II(name, stride, sign, READ_FUNC) \
97
MAKE_UNPACK_FUNC_NAME (name) (guint8 *src, gint32 *dst, \
98
gint scale, gint count) \
100
MAKE_ORC_UNPACK_FUNC_NAME (name) (dst, src, scale, count); \
55
103
/* unpack from float to signed integer 32 */
56
104
#define MAKE_UNPACK_FUNC_FI(name, type, READ_FUNC) \
98
146
#define READ32_FROM_LE(p) GST_READ_UINT32_LE (p)
99
147
#define READ32_FROM_BE(p) GST_READ_UINT32_BE (p)
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);
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);
156
208
* function for the target width.
211
/* pack from signed integer 32 to integer using Orc */
212
#define MAKE_PACK_FUNC_ORC_II(name, stride, sign, WRITE_FUNC) \
214
MAKE_PACK_FUNC_NAME (name) (gint32 *src, guint8 * dst, \
215
gint scale, gint count) \
217
MAKE_PACK_FUNC_NAME_ORC (name) (dst, src, scale, count); \
159
220
/* pack from signed integer 32 to integer */
160
221
#define MAKE_PACK_FUNC_II(name, stride, sign, WRITE_FUNC) \
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))
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);