summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/libatrac/atrac3.c39
-rw-r--r--apps/codecs/libatrac/bytestream.h70
-rw-r--r--apps/codecs/libatrac/libavutil/avutil.h63
-rw-r--r--apps/codecs/libatrac/libavutil/bswap.h99
-rw-r--r--apps/codecs/libatrac/libavutil/common.h279
-rw-r--r--apps/codecs/libatrac/libavutil/intreadwrite.h192
6 files changed, 26 insertions, 716 deletions
diff --git a/apps/codecs/libatrac/atrac3.c b/apps/codecs/libatrac/atrac3.c
index 26bffd42d4..9e61db1686 100644
--- a/apps/codecs/libatrac/atrac3.c
+++ b/apps/codecs/libatrac/atrac3.c
@@ -36,7 +36,6 @@
36#include <stddef.h> 36#include <stddef.h>
37#include <stdio.h> 37#include <stdio.h>
38 38
39#include "bytestream.h"
40#include "atrac3.h" 39#include "atrac3.h"
41#include "atrac3data.h" 40#include "atrac3data.h"
42#include "atrac3data_fixed.h" 41#include "atrac3data_fixed.h"
@@ -48,6 +47,20 @@
48 47
49#define AVERROR(...) -1 48#define AVERROR(...) -1
50 49
50/* FFMAX/MIN/SWAP and av_clip were taken from libavutil/common.h */
51#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
52#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
53#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
54
55/**
56 * Clips a signed integer value into the -32768,32767 range.
57 */
58static inline int16_t av_clip_int16(int a)
59{
60 if ((a+32768) & ~65535) return (a>>31) ^ 32767;
61 else return a;
62}
63
51static int32_t qmf_window[48]; 64static int32_t qmf_window[48];
52static VLC spectral_coeff_tab[7]; 65static VLC spectral_coeff_tab[7];
53static channel_unit channel_units[2]; 66static channel_unit channel_units[2];
@@ -169,7 +182,7 @@ static int decode_bytes(const uint8_t* inbuffer, uint8_t* out, int bytes){
169} 182}
170 183
171 184
172static av_cold void init_atrac3_transforms(ATRAC3Context *q) { 185static void init_atrac3_transforms(ATRAC3Context *q) {
173 int32_t s; 186 int32_t s;
174 int i; 187 int i;
175 188
@@ -830,7 +843,7 @@ int atrac3_decode_frame(RMContext *rmctx, ATRAC3Context *q,
830int atrac3_decode_init(ATRAC3Context *q, RMContext *rmctx) 843int atrac3_decode_init(ATRAC3Context *q, RMContext *rmctx)
831{ 844{
832 int i; 845 int i;
833 const uint8_t *edata_ptr = rmctx->codec_extradata; 846 uint8_t *edata_ptr = rmctx->codec_extradata;
834 static VLC_TYPE atrac3_vlc_table[4096][2]; 847 static VLC_TYPE atrac3_vlc_table[4096][2];
835 static int vlcs_initialized = 0; 848 static int vlcs_initialized = 0;
836 849
@@ -844,12 +857,12 @@ int atrac3_decode_init(ATRAC3Context *q, RMContext *rmctx)
844 /* Take care of the codec-specific extradata. */ 857 /* Take care of the codec-specific extradata. */
845 if (rmctx->extradata_size == 14) { 858 if (rmctx->extradata_size == 14) {
846 /* Parse the extradata, WAV format */ 859 /* Parse the extradata, WAV format */
847 DEBUGF("[0-1] %d\n",bytestream_get_le16(&edata_ptr)); //Unknown value always 1 860 DEBUGF("[0-1] %d\n",rm_get_uint16le(&edata_ptr[0])); //Unknown value always 1
848 q->samples_per_channel = bytestream_get_le32(&edata_ptr); 861 q->samples_per_channel = rm_get_uint32le(&edata_ptr[2]);
849 q->codingMode = bytestream_get_le16(&edata_ptr); 862 q->codingMode = rm_get_uint16le(&edata_ptr[6]);
850 DEBUGF("[8-9] %d\n",bytestream_get_le16(&edata_ptr)); //Dupe of coding mode 863 DEBUGF("[8-9] %d\n",rm_get_uint16le(&edata_ptr[8])); //Dupe of coding mode
851 q->frame_factor = bytestream_get_le16(&edata_ptr); //Unknown always 1 864 q->frame_factor = rm_get_uint16le(&edata_ptr[10]); //Unknown always 1
852 DEBUGF("[12-13] %d\n",bytestream_get_le16(&edata_ptr)); //Unknown always 0 865 DEBUGF("[12-13] %d\n",rm_get_uint16le(&edata_ptr[12])); //Unknown always 0
853 866
854 /* setup */ 867 /* setup */
855 q->samples_per_frame = 1024 * q->channels; 868 q->samples_per_frame = 1024 * q->channels;
@@ -869,10 +882,10 @@ int atrac3_decode_init(ATRAC3Context *q, RMContext *rmctx)
869 882
870 } else if (rmctx->extradata_size == 10) { 883 } else if (rmctx->extradata_size == 10) {
871 /* Parse the extradata, RM format. */ 884 /* Parse the extradata, RM format. */
872 q->atrac3version = bytestream_get_be32(&edata_ptr); 885 q->atrac3version = rm_get_uint32be(&edata_ptr[0]);
873 q->samples_per_frame = bytestream_get_be16(&edata_ptr); 886 q->samples_per_frame = rm_get_uint16be(&edata_ptr[4]);
874 q->delay = bytestream_get_be16(&edata_ptr); 887 q->delay = rm_get_uint16be(&edata_ptr[6]);
875 q->codingMode = bytestream_get_be16(&edata_ptr); 888 q->codingMode = rm_get_uint16be(&edata_ptr[8]);
876 889
877 q->samples_per_channel = q->samples_per_frame / q->channels; 890 q->samples_per_channel = q->samples_per_frame / q->channels;
878 q->scrambled_stream = 1; 891 q->scrambled_stream = 1;
diff --git a/apps/codecs/libatrac/bytestream.h b/apps/codecs/libatrac/bytestream.h
deleted file mode 100644
index cc4f7a62c7..0000000000
--- a/apps/codecs/libatrac/bytestream.h
+++ /dev/null
@@ -1,70 +0,0 @@
1/*
2 * Bytestream functions
3 * copyright (c) 2006 Baptiste Coudurier <baptiste.coudurier@free.fr>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#ifndef AVCODEC_BYTESTREAM_H
23#define AVCODEC_BYTESTREAM_H
24
25#include <string.h>
26#include "libavutil/intreadwrite.h"
27
28#define DEF_T(type, name, bytes, read, write) \
29static av_always_inline type bytestream_get_ ## name(const uint8_t **b){\
30 (*b) += bytes;\
31 return read(*b - bytes);\
32}\
33static av_always_inline void bytestream_put_ ##name(uint8_t **b, const type value){\
34 write(*b, value);\
35 (*b) += bytes;\
36}
37
38#define DEF(name, bytes, read, write) \
39 DEF_T(unsigned int, name, bytes, read, write)
40#define DEF64(name, bytes, read, write) \
41 DEF_T(uint64_t, name, bytes, read, write)
42
43DEF64(le64, 8, AV_RL64, AV_WL64)
44DEF (le32, 4, AV_RL32, AV_WL32)
45DEF (le24, 3, AV_RL24, AV_WL24)
46DEF (le16, 2, AV_RL16, AV_WL16)
47DEF64(be64, 8, AV_RB64, AV_WB64)
48DEF (be32, 4, AV_RB32, AV_WB32)
49DEF (be24, 3, AV_RB24, AV_WB24)
50DEF (be16, 2, AV_RB16, AV_WB16)
51DEF (byte, 1, AV_RB8 , AV_WB8 )
52
53#undef DEF
54#undef DEF64
55#undef DEF_T
56
57static av_always_inline unsigned int bytestream_get_buffer(const uint8_t **b, uint8_t *dst, unsigned int size)
58{
59 memcpy(dst, *b, size);
60 (*b) += size;
61 return size;
62}
63
64static av_always_inline void bytestream_put_buffer(uint8_t **b, const uint8_t *src, unsigned int size)
65{
66 memcpy(*b, src, size);
67 (*b) += size;
68}
69
70#endif /* AVCODEC_BYTESTREAM_H */
diff --git a/apps/codecs/libatrac/libavutil/avutil.h b/apps/codecs/libatrac/libavutil/avutil.h
deleted file mode 100644
index c07e44d660..0000000000
--- a/apps/codecs/libatrac/libavutil/avutil.h
+++ /dev/null
@@ -1,63 +0,0 @@
1/*
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef AVUTIL_AVUTIL_H
22#define AVUTIL_AVUTIL_H
23
24/**
25 * @file libavutil/avutil.h
26 * external API header
27 */
28
29
30#define AV_STRINGIFY(s) AV_TOSTRING(s)
31#define AV_TOSTRING(s) #s
32
33#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
34#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
35#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
36
37#define LIBAVUTIL_VERSION_MAJOR 50
38#define LIBAVUTIL_VERSION_MINOR 0
39#define LIBAVUTIL_VERSION_MICRO 0
40
41#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
42 LIBAVUTIL_VERSION_MINOR, \
43 LIBAVUTIL_VERSION_MICRO)
44#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \
45 LIBAVUTIL_VERSION_MINOR, \
46 LIBAVUTIL_VERSION_MICRO)
47#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT
48
49#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
50
51/**
52 * Returns the LIBAVUTIL_VERSION_INT constant.
53 */
54unsigned avutil_version(void);
55
56#include "common.h"
57//#include "mathematics.h"
58//#include "rational.h"
59//#include "intfloat_readwrite.h"
60#include "log.h"
61//#include "pixfmt.h"
62
63#endif /* AVUTIL_AVUTIL_H */
diff --git a/apps/codecs/libatrac/libavutil/bswap.h b/apps/codecs/libatrac/libavutil/bswap.h
deleted file mode 100644
index 9175cb24a5..0000000000
--- a/apps/codecs/libatrac/libavutil/bswap.h
+++ /dev/null
@@ -1,99 +0,0 @@
1/*
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21/**
22 * @file libavutil/bswap.h
23 * byte swapping routines
24 */
25
26#ifndef AVUTIL_BSWAP_H
27#define AVUTIL_BSWAP_H
28
29#include <stdint.h>
30//#include "ffmpeg_config.h"
31#include "common.h"
32
33#if ARCH_ARM
34# include "arm/bswap.h"
35#elif ARCH_BFIN
36# include "bfin/bswap.h"
37#elif ARCH_SH4
38# include "sh4/bswap.h"
39#elif ARCH_X86
40# include "x86/bswap.h"
41#endif
42
43#ifndef bswap_16
44static av_always_inline av_const uint16_t bswap_16(uint16_t x)
45{
46 x= (x>>8) | (x<<8);
47 return x;
48}
49#endif
50
51#ifndef bswap_32
52static av_always_inline av_const uint32_t bswap_32(uint32_t x)
53{
54 x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
55 x= (x>>16) | (x<<16);
56 return x;
57}
58#endif
59
60#ifndef bswap_64
61static inline uint64_t av_const bswap_64(uint64_t x)
62{
63#if 0
64 x= ((x<< 8)&0xFF00FF00FF00FF00ULL) | ((x>> 8)&0x00FF00FF00FF00FFULL);
65 x= ((x<<16)&0xFFFF0000FFFF0000ULL) | ((x>>16)&0x0000FFFF0000FFFFULL);
66 return (x>>32) | (x<<32);
67#else
68 union {
69 uint64_t ll;
70 uint32_t l[2];
71 } w, r;
72 w.ll = x;
73 r.l[0] = bswap_32 (w.l[1]);
74 r.l[1] = bswap_32 (w.l[0]);
75 return r.ll;
76#endif
77}
78#endif
79
80// be2me ... big-endian to machine-endian
81// le2me ... little-endian to machine-endian
82
83#ifdef WORDS_BIGENDIAN
84#define be2me_16(x) (x)
85#define be2me_32(x) (x)
86#define be2me_64(x) (x)
87#define le2me_16(x) bswap_16(x)
88#define le2me_32(x) bswap_32(x)
89#define le2me_64(x) bswap_64(x)
90#else
91#define be2me_16(x) bswap_16(x)
92#define be2me_32(x) bswap_32(x)
93#define be2me_64(x) bswap_64(x)
94#define le2me_16(x) (x)
95#define le2me_32(x) (x)
96#define le2me_64(x) (x)
97#endif
98
99#endif /* AVUTIL_BSWAP_H */
diff --git a/apps/codecs/libatrac/libavutil/common.h b/apps/codecs/libatrac/libavutil/common.h
deleted file mode 100644
index e369b43da7..0000000000
--- a/apps/codecs/libatrac/libavutil/common.h
+++ /dev/null
@@ -1,279 +0,0 @@
1/*
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
3 *
4 * This file is part of FFmpeg.
5 *
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21/**
22 * @file libavutil/common.h
23 * common internal and external API header
24 */
25
26#ifndef AVUTIL_COMMON_H
27#define AVUTIL_COMMON_H
28
29#include <ctype.h>
30#include <errno.h>
31#include <inttypes.h>
32#include <limits.h>
33#include <math.h>
34#include <stdio.h>
35#include <stdlib.h>
36#include <string.h>
37
38#ifdef __GNUC__
39# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y)
40#else
41# define AV_GCC_VERSION_AT_LEAST(x,y) 0
42#endif
43
44#ifndef av_always_inline
45#if AV_GCC_VERSION_AT_LEAST(3,1)
46# define av_always_inline __attribute__((always_inline)) inline
47#else
48# define av_always_inline inline
49#endif
50#endif
51
52#ifndef av_noinline
53#if AV_GCC_VERSION_AT_LEAST(3,1)
54# define av_noinline __attribute__((noinline))
55#else
56# define av_noinline
57#endif
58#endif
59
60#ifndef av_pure
61#if AV_GCC_VERSION_AT_LEAST(3,1)
62# define av_pure __attribute__((pure))
63#else
64# define av_pure
65#endif
66#endif
67
68#ifndef av_const
69#if AV_GCC_VERSION_AT_LEAST(2,6)
70# define av_const __attribute__((const))
71#else
72# define av_const
73#endif
74#endif
75
76#ifndef av_cold
77#if (!defined(__ICC) || __ICC > 1100) && AV_GCC_VERSION_AT_LEAST(4,3)
78# define av_cold __attribute__((cold))
79#else
80# define av_cold
81#endif
82#endif
83
84#ifndef av_flatten
85#if AV_GCC_VERSION_AT_LEAST(4,1)
86# define av_flatten __attribute__((flatten))
87#else
88# define av_flatten
89#endif
90#endif
91
92#ifndef attribute_deprecated
93#if AV_GCC_VERSION_AT_LEAST(3,1)
94# define attribute_deprecated __attribute__((deprecated))
95#else
96# define attribute_deprecated
97#endif
98#endif
99
100#ifndef av_unused
101#if defined(__GNUC__)
102# define av_unused __attribute__((unused))
103#else
104# define av_unused
105#endif
106#endif
107
108#ifndef av_uninit
109#if defined(__GNUC__) && !defined(__ICC)
110# define av_uninit(x) x=x
111#else
112# define av_uninit(x) x
113#endif
114#endif
115
116//rounded division & shift
117#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
118/* assume b>0 */
119#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
120#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
121#define FFSIGN(a) ((a) > 0 ? 1 : -1)
122
123#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
124#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
125#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
126#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c)
127
128#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
129#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
130
131/* misc math functions */
132extern const uint8_t ff_log2_tab[256];
133
134static inline av_const int av_log2(unsigned int v)
135{
136 int n = 0;
137 if (v & 0xffff0000) {
138 v >>= 16;
139 n += 16;
140 }
141 if (v & 0xff00) {
142 v >>= 8;
143 n += 8;
144 }
145 n += ff_log2_tab[v];
146
147 return n;
148}
149
150static inline av_const int av_log2_16bit(unsigned int v)
151{
152 int n = 0;
153 if (v & 0xff00) {
154 v >>= 8;
155 n += 8;
156 }
157 n += ff_log2_tab[v];
158
159 return n;
160}
161
162/**
163 * Clips a signed integer value into the amin-amax range.
164 * @param a value to clip
165 * @param amin minimum value of the clip range
166 * @param amax maximum value of the clip range
167 * @return clipped value
168 */
169static inline av_const int av_clip(int a, int amin, int amax)
170{
171 if (a < amin) return amin;
172 else if (a > amax) return amax;
173 else return a;
174}
175
176/**
177 * Clips a signed integer value into the 0-255 range.
178 * @param a value to clip
179 * @return clipped value
180 */
181static inline av_const uint8_t av_clip_uint8(int a)
182{
183 if (a&(~255)) return (-a)>>31;
184 else return a;
185}
186
187/**
188 * Clips a signed integer value into the -32768,32767 range.
189 * @param a value to clip
190 * @return clipped value
191 */
192static inline av_const int16_t av_clip_int16(int a)
193{
194 if ((a+32768) & ~65535) return (a>>31) ^ 32767;
195 else return a;
196}
197
198/**
199 * Clips a float value into the amin-amax range.
200 * @param a value to clip
201 * @param amin minimum value of the clip range
202 * @param amax maximum value of the clip range
203 * @return clipped value
204 */
205static inline av_const float av_clipf(float a, float amin, float amax)
206{
207 if (a < amin) return amin;
208 else if (a > amax) return amax;
209 else return a;
210}
211
212#define MKTAG(a,b,c,d) (a | (b << 8) | (c << 16) | (d << 24))
213#define MKBETAG(a,b,c,d) (d | (c << 8) | (b << 16) | (a << 24))
214
215/*!
216 * \def GET_UTF8(val, GET_BYTE, ERROR)
217 * Converts a UTF-8 character (up to 4 bytes long) to its 32-bit UCS-4 encoded form
218 * \param val is the output and should be of type uint32_t. It holds the converted
219 * UCS-4 character and should be a left value.
220 * \param GET_BYTE gets UTF-8 encoded bytes from any proper source. It can be
221 * a function or a statement whose return value or evaluated value is of type
222 * uint8_t. It will be executed up to 4 times for values in the valid UTF-8 range,
223 * and up to 7 times in the general case.
224 * \param ERROR action that should be taken when an invalid UTF-8 byte is returned
225 * from GET_BYTE. It should be a statement that jumps out of the macro,
226 * like exit(), goto, return, break, or continue.
227 */
228#define GET_UTF8(val, GET_BYTE, ERROR)\
229 val= GET_BYTE;\
230 {\
231 int ones= 7 - av_log2(val ^ 255);\
232 if(ones==1)\
233 ERROR\
234 val&= 127>>ones;\
235 while(--ones > 0){\
236 int tmp= GET_BYTE - 128;\
237 if(tmp>>6)\
238 ERROR\
239 val= (val<<6) + tmp;\
240 }\
241 }
242
243/*!
244 * \def PUT_UTF8(val, tmp, PUT_BYTE)
245 * Converts a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long).
246 * \param val is an input-only argument and should be of type uint32_t. It holds
247 * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If
248 * val is given as a function it is executed only once.
249 * \param tmp is a temporary variable and should be of type uint8_t. It
250 * represents an intermediate value during conversion that is to be
251 * output by PUT_BYTE.
252 * \param PUT_BYTE writes the converted UTF-8 bytes to any proper destination.
253 * It could be a function or a statement, and uses tmp as the input byte.
254 * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be
255 * executed up to 4 times for values in the valid UTF-8 range and up to
256 * 7 times in the general case, depending on the length of the converted
257 * Unicode character.
258 */
259#define PUT_UTF8(val, tmp, PUT_BYTE)\
260 {\
261 int bytes, shift;\
262 uint32_t in = val;\
263 if (in < 0x80) {\
264 tmp = in;\
265 PUT_BYTE\
266 } else {\
267 bytes = (av_log2(in) + 4) / 5;\
268 shift = (bytes - 1) * 6;\
269 tmp = (256 - (256 >> bytes)) | (in >> shift);\
270 PUT_BYTE\
271 while (shift >= 6) {\
272 shift -= 6;\
273 tmp = 0x80 | ((in >> shift) & 0x3f);\
274 PUT_BYTE\
275 }\
276 }\
277 }
278
279#endif /* AVUTIL_COMMON_H */
diff --git a/apps/codecs/libatrac/libavutil/intreadwrite.h b/apps/codecs/libatrac/libavutil/intreadwrite.h
deleted file mode 100644
index d27a50061e..0000000000
--- a/apps/codecs/libatrac/libavutil/intreadwrite.h
+++ /dev/null
@@ -1,192 +0,0 @@
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#ifndef AVUTIL_INTREADWRITE_H
20#define AVUTIL_INTREADWRITE_H
21
22#include <stdint.h>
23//#include "ffmpeg_config.h"
24#include "bswap.h"
25
26#ifdef __GNUC__
27
28struct unaligned_64 { uint64_t l; } __attribute__((packed));
29struct unaligned_32 { uint32_t l; } __attribute__((packed));
30struct unaligned_16 { uint16_t l; } __attribute__((packed));
31
32#define AV_RN16(a) (((const struct unaligned_16 *) (a))->l)
33#define AV_RN32(a) (((const struct unaligned_32 *) (a))->l)
34#define AV_RN64(a) (((const struct unaligned_64 *) (a))->l)
35
36#define AV_WN16(a, b) (((struct unaligned_16 *) (a))->l) = (b)
37#define AV_WN32(a, b) (((struct unaligned_32 *) (a))->l) = (b)
38#define AV_WN64(a, b) (((struct unaligned_64 *) (a))->l) = (b)
39
40#elif defined(__DECC)
41
42#define AV_RN16(a) (*((const __unaligned uint16_t*)(a)))
43#define AV_RN32(a) (*((const __unaligned uint32_t*)(a)))
44#define AV_RN64(a) (*((const __unaligned uint64_t*)(a)))
45
46#define AV_WN16(a, b) *((__unaligned uint16_t*)(a)) = (b)
47#define AV_WN32(a, b) *((__unaligned uint32_t*)(a)) = (b)
48#define AV_WN64(a, b) *((__unaligned uint64_t*)(a)) = (b)
49
50#else
51
52#define AV_RN16(a) (*((const uint16_t*)(a)))
53#define AV_RN32(a) (*((const uint32_t*)(a)))
54#define AV_RN64(a) (*((const uint64_t*)(a)))
55
56#define AV_WN16(a, b) *((uint16_t*)(a)) = (b)
57#define AV_WN32(a, b) *((uint32_t*)(a)) = (b)
58#define AV_WN64(a, b) *((uint64_t*)(a)) = (b)
59
60#endif /* !__GNUC__ */
61
62/* endian macros */
63#define AV_RB8(x) (((const uint8_t*)(x))[0])
64#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0)
65
66#define AV_RL8(x) AV_RB8(x)
67#define AV_WL8(p, d) AV_WB8(p, d)
68
69#if HAVE_FAST_UNALIGNED
70# ifdef WORDS_BIGENDIAN
71# define AV_RB16(x) AV_RN16(x)
72# define AV_WB16(p, d) AV_WN16(p, d)
73
74# define AV_RL16(x) bswap_16(AV_RN16(x))
75# define AV_WL16(p, d) AV_WN16(p, bswap_16(d))
76
77# define AV_RB32(x) AV_RN32(x)
78# define AV_WB32(p, d) AV_WN32(p, d)
79
80# define AV_RL32(x) bswap_32(AV_RN32(x))
81# define AV_WL32(p, d) AV_WN32(p, bswap_32(d))
82
83# define AV_RB64(x) AV_RN64(x)
84# define AV_WB64(p, d) AV_WN64(p, d)
85
86# define AV_RL64(x) bswap_64(AV_RN64(x))
87# define AV_WL64(p, d) AV_WN64(p, bswap_64(d))
88# else /* WORDS_BIGENDIAN */
89# define AV_RB16(x) bswap_16(AV_RN16(x))
90# define AV_WB16(p, d) AV_WN16(p, bswap_16(d))
91
92# define AV_RL16(x) AV_RN16(x)
93# define AV_WL16(p, d) AV_WN16(p, d)
94
95# define AV_RB32(x) bswap_32(AV_RN32(x))
96# define AV_WB32(p, d) AV_WN32(p, bswap_32(d))
97
98# define AV_RL32(x) AV_RN32(x)
99# define AV_WL32(p, d) AV_WN32(p, d)
100
101# define AV_RB64(x) bswap_64(AV_RN64(x))
102# define AV_WB64(p, d) AV_WN64(p, bswap_64(d))
103
104# define AV_RL64(x) AV_RN64(x)
105# define AV_WL64(p, d) AV_WN64(p, d)
106# endif
107#else /* HAVE_FAST_UNALIGNED */
108#define AV_RB16(x) ((((const uint8_t*)(x))[0] << 8) | ((const uint8_t*)(x))[1])
109#define AV_WB16(p, d) do { \
110 ((uint8_t*)(p))[1] = (d); \
111 ((uint8_t*)(p))[0] = (d)>>8; } while(0)
112
113#define AV_RL16(x) ((((const uint8_t*)(x))[1] << 8) | \
114 ((const uint8_t*)(x))[0])
115#define AV_WL16(p, d) do { \
116 ((uint8_t*)(p))[0] = (d); \
117 ((uint8_t*)(p))[1] = (d)>>8; } while(0)
118
119#define AV_RB32(x) ((((const uint8_t*)(x))[0] << 24) | \
120 (((const uint8_t*)(x))[1] << 16) | \
121 (((const uint8_t*)(x))[2] << 8) | \
122 ((const uint8_t*)(x))[3])
123#define AV_WB32(p, d) do { \
124 ((uint8_t*)(p))[3] = (d); \
125 ((uint8_t*)(p))[2] = (d)>>8; \
126 ((uint8_t*)(p))[1] = (d)>>16; \
127 ((uint8_t*)(p))[0] = (d)>>24; } while(0)
128
129#define AV_RL32(x) ((((const uint8_t*)(x))[3] << 24) | \
130 (((const uint8_t*)(x))[2] << 16) | \
131 (((const uint8_t*)(x))[1] << 8) | \
132 ((const uint8_t*)(x))[0])
133#define AV_WL32(p, d) do { \
134 ((uint8_t*)(p))[0] = (d); \
135 ((uint8_t*)(p))[1] = (d)>>8; \
136 ((uint8_t*)(p))[2] = (d)>>16; \
137 ((uint8_t*)(p))[3] = (d)>>24; } while(0)
138
139#define AV_RB64(x) (((uint64_t)((const uint8_t*)(x))[0] << 56) | \
140 ((uint64_t)((const uint8_t*)(x))[1] << 48) | \
141 ((uint64_t)((const uint8_t*)(x))[2] << 40) | \
142 ((uint64_t)((const uint8_t*)(x))[3] << 32) | \
143 ((uint64_t)((const uint8_t*)(x))[4] << 24) | \
144 ((uint64_t)((const uint8_t*)(x))[5] << 16) | \
145 ((uint64_t)((const uint8_t*)(x))[6] << 8) | \
146 (uint64_t)((const uint8_t*)(x))[7])
147#define AV_WB64(p, d) do { \
148 ((uint8_t*)(p))[7] = (d); \
149 ((uint8_t*)(p))[6] = (d)>>8; \
150 ((uint8_t*)(p))[5] = (d)>>16; \
151 ((uint8_t*)(p))[4] = (d)>>24; \
152 ((uint8_t*)(p))[3] = (d)>>32; \
153 ((uint8_t*)(p))[2] = (d)>>40; \
154 ((uint8_t*)(p))[1] = (d)>>48; \
155 ((uint8_t*)(p))[0] = (d)>>56; } while(0)
156
157#define AV_RL64(x) (((uint64_t)((const uint8_t*)(x))[7] << 56) | \
158 ((uint64_t)((const uint8_t*)(x))[6] << 48) | \
159 ((uint64_t)((const uint8_t*)(x))[5] << 40) | \
160 ((uint64_t)((const uint8_t*)(x))[4] << 32) | \
161 ((uint64_t)((const uint8_t*)(x))[3] << 24) | \
162 ((uint64_t)((const uint8_t*)(x))[2] << 16) | \
163 ((uint64_t)((const uint8_t*)(x))[1] << 8) | \
164 (uint64_t)((const uint8_t*)(x))[0])
165#define AV_WL64(p, d) do { \
166 ((uint8_t*)(p))[0] = (d); \
167 ((uint8_t*)(p))[1] = (d)>>8; \
168 ((uint8_t*)(p))[2] = (d)>>16; \
169 ((uint8_t*)(p))[3] = (d)>>24; \
170 ((uint8_t*)(p))[4] = (d)>>32; \
171 ((uint8_t*)(p))[5] = (d)>>40; \
172 ((uint8_t*)(p))[6] = (d)>>48; \
173 ((uint8_t*)(p))[7] = (d)>>56; } while(0)
174#endif /* HAVE_FAST_UNALIGNED */
175
176#define AV_RB24(x) ((((const uint8_t*)(x))[0] << 16) | \
177 (((const uint8_t*)(x))[1] << 8) | \
178 ((const uint8_t*)(x))[2])
179#define AV_WB24(p, d) do { \
180 ((uint8_t*)(p))[2] = (d); \
181 ((uint8_t*)(p))[1] = (d)>>8; \
182 ((uint8_t*)(p))[0] = (d)>>16; } while(0)
183
184#define AV_RL24(x) ((((const uint8_t*)(x))[2] << 16) | \
185 (((const uint8_t*)(x))[1] << 8) | \
186 ((const uint8_t*)(x))[0])
187#define AV_WL24(p, d) do { \
188 ((uint8_t*)(p))[0] = (d); \
189 ((uint8_t*)(p))[1] = (d)>>8; \
190 ((uint8_t*)(p))[2] = (d)>>16; } while(0)
191
192#endif /* AVUTIL_INTREADWRITE_H */