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