misc/winutils/include/libavutil/intreadwrite.h
author Wuzzy <Wuzzy2@mail.ru>
Mon, 12 Mar 2018 02:09:21 +0100
changeset 13169 6869d27a2f3f
parent 7813 7ac83d79b897
permissions -rw-r--r--
ACF7: Add one pick hammer in crate Players often reported to screw up with the pick hammer, which is quite annoying. With one pick hammer more, this mission should be slightly less annoying.
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
 * This file is part of Libav.
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
 * Libav is free software; you can redistribute it and/or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     5
 * 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
     6
 * License as published by the Free Software Foundation; either
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     7
 * 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
     8
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     9
 * 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
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    12
 * Lesser General Public License for more details.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    13
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    14
 * 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
    15
 * 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
    16
 * 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
    17
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    18
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    19
#ifndef AVUTIL_INTREADWRITE_H
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    20
#define AVUTIL_INTREADWRITE_H
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
#include <stdint.h>
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    23
#include "libavutil/avconfig.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    24
#include "attributes.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    25
#include "bswap.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    26
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    27
typedef union {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    28
    uint64_t u64;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    29
    uint32_t u32[2];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    30
    uint16_t u16[4];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    31
    uint8_t  u8 [8];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    32
    double   f64;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    33
    float    f32[2];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    34
} av_alias av_alias64;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    35
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    36
typedef union {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    37
    uint32_t u32;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    38
    uint16_t u16[2];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    39
    uint8_t  u8 [4];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    40
    float    f32;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    41
} av_alias av_alias32;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    42
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    43
typedef union {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    44
    uint16_t u16;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    45
    uint8_t  u8 [2];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    46
} av_alias av_alias16;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    47
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
 * Arch-specific headers can provide any combination of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    50
 * AV_[RW][BLN](16|24|32|64) and AV_(COPY|SWAP|ZERO)(64|128) macros.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    51
 * Preprocessor symbols must be defined, even if these are implemented
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    52
 * as inline functions.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    53
 */
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
#ifdef HAVE_AV_CONFIG_H
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
#include "config.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    58
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    59
#if   ARCH_ARM
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    60
#   include "arm/intreadwrite.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    61
#elif ARCH_AVR32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    62
#   include "avr32/intreadwrite.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    63
#elif ARCH_MIPS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    64
#   include "mips/intreadwrite.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    65
#elif ARCH_PPC
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    66
#   include "ppc/intreadwrite.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    67
#elif ARCH_TOMI
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    68
#   include "tomi/intreadwrite.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    69
#elif ARCH_X86
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    70
#   include "x86/intreadwrite.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    71
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    72
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    73
#endif /* HAVE_AV_CONFIG_H */
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
/*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    76
 * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    77
 */
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
#if AV_HAVE_BIGENDIAN
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    80
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    81
#   if    defined(AV_RN16) && !defined(AV_RB16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    82
#       define AV_RB16(p) AV_RN16(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    83
#   elif !defined(AV_RN16) &&  defined(AV_RB16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    84
#       define AV_RN16(p) AV_RB16(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    85
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    86
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    87
#   if    defined(AV_WN16) && !defined(AV_WB16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    88
#       define AV_WB16(p, v) AV_WN16(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    89
#   elif !defined(AV_WN16) &&  defined(AV_WB16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    90
#       define AV_WN16(p, v) AV_WB16(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    91
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    92
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    93
#   if    defined(AV_RN24) && !defined(AV_RB24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    94
#       define AV_RB24(p) AV_RN24(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    95
#   elif !defined(AV_RN24) &&  defined(AV_RB24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    96
#       define AV_RN24(p) AV_RB24(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    97
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    98
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    99
#   if    defined(AV_WN24) && !defined(AV_WB24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   100
#       define AV_WB24(p, v) AV_WN24(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   101
#   elif !defined(AV_WN24) &&  defined(AV_WB24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   102
#       define AV_WN24(p, v) AV_WB24(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   103
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   104
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   105
#   if    defined(AV_RN32) && !defined(AV_RB32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   106
#       define AV_RB32(p) AV_RN32(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   107
#   elif !defined(AV_RN32) &&  defined(AV_RB32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   108
#       define AV_RN32(p) AV_RB32(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   109
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   110
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   111
#   if    defined(AV_WN32) && !defined(AV_WB32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   112
#       define AV_WB32(p, v) AV_WN32(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   113
#   elif !defined(AV_WN32) &&  defined(AV_WB32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   114
#       define AV_WN32(p, v) AV_WB32(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   115
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   116
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   117
#   if    defined(AV_RN64) && !defined(AV_RB64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   118
#       define AV_RB64(p) AV_RN64(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   119
#   elif !defined(AV_RN64) &&  defined(AV_RB64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   120
#       define AV_RN64(p) AV_RB64(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   121
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   122
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   123
#   if    defined(AV_WN64) && !defined(AV_WB64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   124
#       define AV_WB64(p, v) AV_WN64(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   125
#   elif !defined(AV_WN64) &&  defined(AV_WB64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   126
#       define AV_WN64(p, v) AV_WB64(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   127
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   128
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   129
#else /* AV_HAVE_BIGENDIAN */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   130
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   131
#   if    defined(AV_RN16) && !defined(AV_RL16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   132
#       define AV_RL16(p) AV_RN16(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   133
#   elif !defined(AV_RN16) &&  defined(AV_RL16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   134
#       define AV_RN16(p) AV_RL16(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   135
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   136
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   137
#   if    defined(AV_WN16) && !defined(AV_WL16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   138
#       define AV_WL16(p, v) AV_WN16(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   139
#   elif !defined(AV_WN16) &&  defined(AV_WL16)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   140
#       define AV_WN16(p, v) AV_WL16(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   141
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   142
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   143
#   if    defined(AV_RN24) && !defined(AV_RL24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   144
#       define AV_RL24(p) AV_RN24(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   145
#   elif !defined(AV_RN24) &&  defined(AV_RL24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   146
#       define AV_RN24(p) AV_RL24(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   147
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   148
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   149
#   if    defined(AV_WN24) && !defined(AV_WL24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   150
#       define AV_WL24(p, v) AV_WN24(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   151
#   elif !defined(AV_WN24) &&  defined(AV_WL24)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   152
#       define AV_WN24(p, v) AV_WL24(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   153
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   154
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   155
#   if    defined(AV_RN32) && !defined(AV_RL32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   156
#       define AV_RL32(p) AV_RN32(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   157
#   elif !defined(AV_RN32) &&  defined(AV_RL32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   158
#       define AV_RN32(p) AV_RL32(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   159
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   160
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   161
#   if    defined(AV_WN32) && !defined(AV_WL32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   162
#       define AV_WL32(p, v) AV_WN32(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   163
#   elif !defined(AV_WN32) &&  defined(AV_WL32)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   164
#       define AV_WN32(p, v) AV_WL32(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   165
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   166
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   167
#   if    defined(AV_RN64) && !defined(AV_RL64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   168
#       define AV_RL64(p) AV_RN64(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   169
#   elif !defined(AV_RN64) &&  defined(AV_RL64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   170
#       define AV_RN64(p) AV_RL64(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   171
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   172
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   173
#   if    defined(AV_WN64) && !defined(AV_WL64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   174
#       define AV_WL64(p, v) AV_WN64(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   175
#   elif !defined(AV_WN64) &&  defined(AV_WL64)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   176
#       define AV_WN64(p, v) AV_WL64(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   177
#   endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   178
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   179
#endif /* !AV_HAVE_BIGENDIAN */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   180
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   181
/*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   182
 * Define AV_[RW]N helper macros to simplify definitions not provided
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   183
 * by per-arch headers.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   184
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   185
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   186
#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   187
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   188
union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   189
union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   190
union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   191
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   192
#   define AV_RN(s, p) (((const union unaligned_##s *) (p))->l)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   193
#   define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   194
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   195
#elif defined(__DECC)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   196
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   197
#   define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p)))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   198
#   define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   199
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   200
#elif AV_HAVE_FAST_UNALIGNED
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   201
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   202
#   define AV_RN(s, p) (((const av_alias##s*)(p))->u##s)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   203
#   define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   204
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   205
#else
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   206
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   207
#ifndef AV_RB16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   208
#   define AV_RB16(x)                           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   209
    ((((const uint8_t*)(x))[0] << 8) |          \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   210
      ((const uint8_t*)(x))[1])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   211
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   212
#ifndef AV_WB16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   213
#   define AV_WB16(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   214
        ((uint8_t*)(p))[1] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   215
        ((uint8_t*)(p))[0] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   216
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   217
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   218
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   219
#ifndef AV_RL16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   220
#   define AV_RL16(x)                           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   221
    ((((const uint8_t*)(x))[1] << 8) |          \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   222
      ((const uint8_t*)(x))[0])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   223
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   224
#ifndef AV_WL16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   225
#   define AV_WL16(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   226
        ((uint8_t*)(p))[0] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   227
        ((uint8_t*)(p))[1] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   228
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   229
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   230
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   231
#ifndef AV_RB32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   232
#   define AV_RB32(x)                                \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   233
    (((uint32_t)((const uint8_t*)(x))[0] << 24) |    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   234
               (((const uint8_t*)(x))[1] << 16) |    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   235
               (((const uint8_t*)(x))[2] <<  8) |    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   236
                ((const uint8_t*)(x))[3])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   237
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   238
#ifndef AV_WB32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   239
#   define AV_WB32(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   240
        ((uint8_t*)(p))[3] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   241
        ((uint8_t*)(p))[2] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   242
        ((uint8_t*)(p))[1] = (d)>>16;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   243
        ((uint8_t*)(p))[0] = (d)>>24;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   244
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   245
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   246
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   247
#ifndef AV_RL32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   248
#   define AV_RL32(x)                                \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   249
    (((uint32_t)((const uint8_t*)(x))[3] << 24) |    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   250
               (((const uint8_t*)(x))[2] << 16) |    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   251
               (((const uint8_t*)(x))[1] <<  8) |    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   252
                ((const uint8_t*)(x))[0])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   253
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   254
#ifndef AV_WL32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   255
#   define AV_WL32(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   256
        ((uint8_t*)(p))[0] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   257
        ((uint8_t*)(p))[1] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   258
        ((uint8_t*)(p))[2] = (d)>>16;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   259
        ((uint8_t*)(p))[3] = (d)>>24;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   260
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   261
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   262
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   263
#ifndef AV_RB64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   264
#   define AV_RB64(x)                                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   265
    (((uint64_t)((const uint8_t*)(x))[0] << 56) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   266
     ((uint64_t)((const uint8_t*)(x))[1] << 48) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   267
     ((uint64_t)((const uint8_t*)(x))[2] << 40) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   268
     ((uint64_t)((const uint8_t*)(x))[3] << 32) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   269
     ((uint64_t)((const uint8_t*)(x))[4] << 24) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   270
     ((uint64_t)((const uint8_t*)(x))[5] << 16) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   271
     ((uint64_t)((const uint8_t*)(x))[6] <<  8) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   272
      (uint64_t)((const uint8_t*)(x))[7])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   273
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   274
#ifndef AV_WB64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   275
#   define AV_WB64(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   276
        ((uint8_t*)(p))[7] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   277
        ((uint8_t*)(p))[6] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   278
        ((uint8_t*)(p))[5] = (d)>>16;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   279
        ((uint8_t*)(p))[4] = (d)>>24;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   280
        ((uint8_t*)(p))[3] = (d)>>32;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   281
        ((uint8_t*)(p))[2] = (d)>>40;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   282
        ((uint8_t*)(p))[1] = (d)>>48;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   283
        ((uint8_t*)(p))[0] = (d)>>56;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   284
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   285
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   286
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   287
#ifndef AV_RL64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   288
#   define AV_RL64(x)                                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   289
    (((uint64_t)((const uint8_t*)(x))[7] << 56) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   290
     ((uint64_t)((const uint8_t*)(x))[6] << 48) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   291
     ((uint64_t)((const uint8_t*)(x))[5] << 40) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   292
     ((uint64_t)((const uint8_t*)(x))[4] << 32) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   293
     ((uint64_t)((const uint8_t*)(x))[3] << 24) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   294
     ((uint64_t)((const uint8_t*)(x))[2] << 16) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   295
     ((uint64_t)((const uint8_t*)(x))[1] <<  8) |       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   296
      (uint64_t)((const uint8_t*)(x))[0])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   297
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   298
#ifndef AV_WL64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   299
#   define AV_WL64(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   300
        ((uint8_t*)(p))[0] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   301
        ((uint8_t*)(p))[1] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   302
        ((uint8_t*)(p))[2] = (d)>>16;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   303
        ((uint8_t*)(p))[3] = (d)>>24;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   304
        ((uint8_t*)(p))[4] = (d)>>32;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   305
        ((uint8_t*)(p))[5] = (d)>>40;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   306
        ((uint8_t*)(p))[6] = (d)>>48;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   307
        ((uint8_t*)(p))[7] = (d)>>56;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   308
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   309
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   310
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   311
#if AV_HAVE_BIGENDIAN
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   312
#   define AV_RN(s, p)    AV_RB##s(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   313
#   define AV_WN(s, p, v) AV_WB##s(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   314
#else
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   315
#   define AV_RN(s, p)    AV_RL##s(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   316
#   define AV_WN(s, p, v) AV_WL##s(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   317
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   318
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   319
#endif /* HAVE_FAST_UNALIGNED */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   320
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   321
#ifndef AV_RN16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   322
#   define AV_RN16(p) AV_RN(16, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   323
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   324
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   325
#ifndef AV_RN32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   326
#   define AV_RN32(p) AV_RN(32, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   327
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   328
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   329
#ifndef AV_RN64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   330
#   define AV_RN64(p) AV_RN(64, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   331
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   332
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   333
#ifndef AV_WN16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   334
#   define AV_WN16(p, v) AV_WN(16, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   335
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   336
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   337
#ifndef AV_WN32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   338
#   define AV_WN32(p, v) AV_WN(32, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   339
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   340
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   341
#ifndef AV_WN64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   342
#   define AV_WN64(p, v) AV_WN(64, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   343
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   344
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   345
#if AV_HAVE_BIGENDIAN
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   346
#   define AV_RB(s, p)    AV_RN##s(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   347
#   define AV_WB(s, p, v) AV_WN##s(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   348
#   define AV_RL(s, p)    av_bswap##s(AV_RN##s(p))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   349
#   define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   350
#else
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   351
#   define AV_RB(s, p)    av_bswap##s(AV_RN##s(p))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   352
#   define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   353
#   define AV_RL(s, p)    AV_RN##s(p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   354
#   define AV_WL(s, p, v) AV_WN##s(p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   355
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   356
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   357
#define AV_RB8(x)     (((const uint8_t*)(x))[0])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   358
#define AV_WB8(p, d)  do { ((uint8_t*)(p))[0] = (d); } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   359
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   360
#define AV_RL8(x)     AV_RB8(x)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   361
#define AV_WL8(p, d)  AV_WB8(p, d)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   362
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   363
#ifndef AV_RB16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   364
#   define AV_RB16(p)    AV_RB(16, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   365
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   366
#ifndef AV_WB16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   367
#   define AV_WB16(p, v) AV_WB(16, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   368
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   369
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   370
#ifndef AV_RL16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   371
#   define AV_RL16(p)    AV_RL(16, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   372
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   373
#ifndef AV_WL16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   374
#   define AV_WL16(p, v) AV_WL(16, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   375
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   376
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   377
#ifndef AV_RB32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   378
#   define AV_RB32(p)    AV_RB(32, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   379
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   380
#ifndef AV_WB32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   381
#   define AV_WB32(p, v) AV_WB(32, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   382
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   383
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   384
#ifndef AV_RL32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   385
#   define AV_RL32(p)    AV_RL(32, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   386
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   387
#ifndef AV_WL32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   388
#   define AV_WL32(p, v) AV_WL(32, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   389
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   390
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   391
#ifndef AV_RB64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   392
#   define AV_RB64(p)    AV_RB(64, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   393
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   394
#ifndef AV_WB64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   395
#   define AV_WB64(p, v) AV_WB(64, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   396
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   397
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   398
#ifndef AV_RL64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   399
#   define AV_RL64(p)    AV_RL(64, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   400
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   401
#ifndef AV_WL64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   402
#   define AV_WL64(p, v) AV_WL(64, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   403
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   404
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   405
#ifndef AV_RB24
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   406
#   define AV_RB24(x)                           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   407
    ((((const uint8_t*)(x))[0] << 16) |         \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   408
     (((const uint8_t*)(x))[1] <<  8) |         \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   409
      ((const uint8_t*)(x))[2])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   410
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   411
#ifndef AV_WB24
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   412
#   define AV_WB24(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   413
        ((uint8_t*)(p))[2] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   414
        ((uint8_t*)(p))[1] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   415
        ((uint8_t*)(p))[0] = (d)>>16;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   416
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   417
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   418
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   419
#ifndef AV_RL24
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   420
#   define AV_RL24(x)                           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   421
    ((((const uint8_t*)(x))[2] << 16) |         \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   422
     (((const uint8_t*)(x))[1] <<  8) |         \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   423
      ((const uint8_t*)(x))[0])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   424
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   425
#ifndef AV_WL24
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   426
#   define AV_WL24(p, d) do {                   \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   427
        ((uint8_t*)(p))[0] = (d);               \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   428
        ((uint8_t*)(p))[1] = (d)>>8;            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   429
        ((uint8_t*)(p))[2] = (d)>>16;           \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   430
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   431
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   432
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   433
/*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   434
 * The AV_[RW]NA macros access naturally aligned data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   435
 * in a type-safe way.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   436
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   437
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   438
#define AV_RNA(s, p)    (((const av_alias##s*)(p))->u##s)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   439
#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   440
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   441
#ifndef AV_RN16A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   442
#   define AV_RN16A(p) AV_RNA(16, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   443
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   444
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   445
#ifndef AV_RN32A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   446
#   define AV_RN32A(p) AV_RNA(32, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   447
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   448
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   449
#ifndef AV_RN64A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   450
#   define AV_RN64A(p) AV_RNA(64, p)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   451
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   452
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   453
#ifndef AV_WN16A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   454
#   define AV_WN16A(p, v) AV_WNA(16, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   455
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   456
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   457
#ifndef AV_WN32A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   458
#   define AV_WN32A(p, v) AV_WNA(32, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   459
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   460
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   461
#ifndef AV_WN64A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   462
#   define AV_WN64A(p, v) AV_WNA(64, p, v)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   463
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   464
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   465
/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   466
 * naturally aligned. They may be implemented using MMX,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   467
 * so emms_c() must be called before using any float code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   468
 * afterwards.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   469
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   470
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   471
#define AV_COPY(n, d, s) \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   472
    (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   473
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   474
#ifndef AV_COPY16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   475
#   define AV_COPY16(d, s) AV_COPY(16, d, s)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   476
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   477
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   478
#ifndef AV_COPY32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   479
#   define AV_COPY32(d, s) AV_COPY(32, d, s)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   480
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   481
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   482
#ifndef AV_COPY64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   483
#   define AV_COPY64(d, s) AV_COPY(64, d, s)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   484
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   485
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   486
#ifndef AV_COPY128
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   487
#   define AV_COPY128(d, s)                    \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   488
    do {                                       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   489
        AV_COPY64(d, s);                       \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   490
        AV_COPY64((char*)(d)+8, (char*)(s)+8); \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   491
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   492
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   493
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   494
#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   495
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   496
#ifndef AV_SWAP64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   497
#   define AV_SWAP64(a, b) AV_SWAP(64, a, b)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   498
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   499
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   500
#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   501
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   502
#ifndef AV_ZERO16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   503
#   define AV_ZERO16(d) AV_ZERO(16, d)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   504
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   505
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   506
#ifndef AV_ZERO32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   507
#   define AV_ZERO32(d) AV_ZERO(32, d)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   508
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   509
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   510
#ifndef AV_ZERO64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   511
#   define AV_ZERO64(d) AV_ZERO(64, d)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   512
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   513
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   514
#ifndef AV_ZERO128
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   515
#   define AV_ZERO128(d)         \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   516
    do {                         \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   517
        AV_ZERO64(d);            \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   518
        AV_ZERO64((char*)(d)+8); \
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   519
    } while(0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   520
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   521
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   522
#endif /* AVUTIL_INTREADWRITE_H */