annotate lib/libavutil/bswap.h @ 2202:44d956d4f838

Merge
author Grumpy7
date Mon, 03 Feb 2014 23:07:15 +0100
parents 992d2e6f907d
children
rev   line source
2134
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
1 /*
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
3 *
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
4 * This file is part of FFmpeg.
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
5 *
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
10 *
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
14 * Lesser General Public License for more details.
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
15 *
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
19 */
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
20
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
21 /**
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
22 * @file
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
23 * byte swapping routines
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
24 */
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
25
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
26 #ifndef AVUTIL_BSWAP_H
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
27 #define AVUTIL_BSWAP_H
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
28
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
29 #include <stdint.h>
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
30 #include "libavutil/avconfig.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
31 #include "attributes.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
32
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
33 #ifdef HAVE_AV_CONFIG_H
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
34
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
35 #include "config.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
36
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
37 #if ARCH_ARM
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
38 # include "arm/bswap.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
39 #elif ARCH_AVR32
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
40 # include "avr32/bswap.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
41 #elif ARCH_BFIN
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
42 # include "bfin/bswap.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
43 #elif ARCH_SH4
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
44 # include "sh4/bswap.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
45 #elif ARCH_X86
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
46 # include "x86/bswap.h"
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
47 #endif
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
48
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
49 #endif /* HAVE_AV_CONFIG_H */
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
50
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
51 #define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff))
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
52 #define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16))
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
53 #define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32))
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
54
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
55 #define AV_BSWAPC(s, x) AV_BSWAP##s##C(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
56
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
57 #ifndef av_bswap16
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
58 static av_always_inline av_const uint16_t av_bswap16(uint16_t x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
59 {
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
60 x= (x>>8) | (x<<8);
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
61 return x;
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
62 }
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
63 #endif
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
64
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
65 #ifndef av_bswap32
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
66 static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
67 {
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
68 return AV_BSWAP32C(x);
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
69 }
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
70 #endif
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
71
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
72 #ifndef av_bswap64
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
73 static inline uint64_t av_const av_bswap64(uint64_t x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
74 {
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
75 return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32);
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
76 }
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
77 #endif
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
78
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
79 // be2ne ... big-endian to native-endian
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
80 // le2ne ... little-endian to native-endian
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
81
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
82 #if AV_HAVE_BIGENDIAN
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
83 #define av_be2ne16(x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
84 #define av_be2ne32(x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
85 #define av_be2ne64(x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
86 #define av_le2ne16(x) av_bswap16(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
87 #define av_le2ne32(x) av_bswap32(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
88 #define av_le2ne64(x) av_bswap64(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
89 #define AV_BE2NEC(s, x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
90 #define AV_LE2NEC(s, x) AV_BSWAPC(s, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
91 #else
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
92 #define av_be2ne16(x) av_bswap16(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
93 #define av_be2ne32(x) av_bswap32(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
94 #define av_be2ne64(x) av_bswap64(x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
95 #define av_le2ne16(x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
96 #define av_le2ne32(x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
97 #define av_le2ne64(x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
98 #define AV_BE2NEC(s, x) AV_BSWAPC(s, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
99 #define AV_LE2NEC(s, x) (x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
100 #endif
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
101
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
102 #define AV_BE2NE16C(x) AV_BE2NEC(16, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
103 #define AV_BE2NE32C(x) AV_BE2NEC(32, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
104 #define AV_BE2NE64C(x) AV_BE2NEC(64, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
105 #define AV_LE2NE16C(x) AV_LE2NEC(16, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
106 #define AV_LE2NE32C(x) AV_LE2NEC(32, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
107 #define AV_LE2NE64C(x) AV_LE2NEC(64, x)
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
108
992d2e6f907d preparation for libavcodec
zipi
parents:
diff changeset
109 #endif /* AVUTIL_BSWAP_H */