annotate ffmpeg/libavutil/bswap.h @ 13:844d341cf643 tip

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