tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

defs.h (11070B)


      1 /*
      2 *
      3 * This file is part of FFmpeg.
      4 *
      5 * FFmpeg is free software; you can redistribute it and/or
      6 * modify it under the terms of the GNU Lesser General Public
      7 * License as published by the Free Software Foundation; either
      8 * version 2.1 of the License, or (at your option) any later version.
      9 *
     10 * FFmpeg is distributed in the hope that it will be useful,
     11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13 * Lesser General Public License for more details.
     14 *
     15 * You should have received a copy of the GNU Lesser General Public
     16 * License along with FFmpeg; if not, write to the Free Software
     17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     18 */
     19 
     20 #ifndef AVCODEC_DEFS_H
     21 #define AVCODEC_DEFS_H
     22 
     23 /**
     24 * @file
     25 * @ingroup libavc
     26 * Misc types and constants that do not belong anywhere else.
     27 */
     28 
     29 #include <stdint.h>
     30 #include <stdlib.h>
     31 
     32 /**
     33 * @ingroup lavc_decoding
     34 * Required number of additionally allocated bytes at the end of the input
     35 * bitstream for decoding. This is mainly needed because some optimized
     36 * bitstream readers read 32 or 64 bit at once and could read over the end.<br>
     37 * Note: If the first 23 bits of the additional bytes are not 0, then damaged
     38 * MPEG bitstreams could cause overread and segfault.
     39 */
     40 #define AV_INPUT_BUFFER_PADDING_SIZE 64
     41 
     42 /**
     43 * Verify checksums embedded in the bitstream (could be of either encoded or
     44 * decoded data, depending on the format) and print an error message on
     45 * mismatch. If AV_EF_EXPLODE is also set, a mismatching checksum will result in
     46 * the decoder/demuxer returning an error.
     47 */
     48 #define AV_EF_CRCCHECK (1 << 0)
     49 #define AV_EF_BITSTREAM (1 << 1)  ///< detect bitstream specification deviations
     50 #define AV_EF_BUFFER (1 << 2)     ///< detect improper bitstream length
     51 #define AV_EF_EXPLODE (1 << 3)    ///< abort decoding on minor error detection
     52 
     53 #define AV_EF_IGNORE_ERR (1 << 15)  ///< ignore errors and continue
     54 #define AV_EF_CAREFUL \
     55  (1 << 16)  ///< consider things that violate the spec, are fast to calculate
     56             ///< and have not been seen in the wild as errors
     57 #define AV_EF_COMPLIANT \
     58  (1 << 17)  ///< consider all spec non compliances as errors
     59 #define AV_EF_AGGRESSIVE \
     60  (1 << 18)  ///< consider things that a sane encoder/muxer should not do as an
     61             ///< error
     62 
     63 #define FF_COMPLIANCE_VERY_STRICT \
     64  2  ///< Strictly conform to an older more strict version of the spec or
     65     ///< reference software.
     66 #define FF_COMPLIANCE_STRICT \
     67  1  ///< Strictly conform to all the things in the spec no matter what
     68     ///< consequences.
     69 #define FF_COMPLIANCE_NORMAL 0
     70 #define FF_COMPLIANCE_UNOFFICIAL -1  ///< Allow unofficial extensions
     71 #define FF_COMPLIANCE_EXPERIMENTAL \
     72  -2  ///< Allow nonstandardized experimental things.
     73 
     74 #define AV_PROFILE_UNKNOWN -99
     75 #define AV_PROFILE_RESERVED -100
     76 
     77 #define AV_PROFILE_AAC_MAIN 0
     78 #define AV_PROFILE_AAC_LOW 1
     79 #define AV_PROFILE_AAC_SSR 2
     80 #define AV_PROFILE_AAC_LTP 3
     81 #define AV_PROFILE_AAC_HE 4
     82 #define AV_PROFILE_AAC_HE_V2 28
     83 #define AV_PROFILE_AAC_LD 22
     84 #define AV_PROFILE_AAC_ELD 38
     85 #define AV_PROFILE_MPEG2_AAC_LOW 128
     86 #define AV_PROFILE_MPEG2_AAC_HE 131
     87 
     88 #define AV_PROFILE_DNXHD 0
     89 #define AV_PROFILE_DNXHR_LB 1
     90 #define AV_PROFILE_DNXHR_SQ 2
     91 #define AV_PROFILE_DNXHR_HQ 3
     92 #define AV_PROFILE_DNXHR_HQX 4
     93 #define AV_PROFILE_DNXHR_444 5
     94 
     95 #define AV_PROFILE_DTS 20
     96 #define AV_PROFILE_DTS_ES 30
     97 #define AV_PROFILE_DTS_96_24 40
     98 #define AV_PROFILE_DTS_HD_HRA 50
     99 #define AV_PROFILE_DTS_HD_MA 60
    100 #define AV_PROFILE_DTS_EXPRESS 70
    101 #define AV_PROFILE_DTS_HD_MA_X 61
    102 #define AV_PROFILE_DTS_HD_MA_X_IMAX 62
    103 
    104 #define AV_PROFILE_EAC3_DDP_ATMOS 30
    105 
    106 #define AV_PROFILE_TRUEHD_ATMOS 30
    107 
    108 #define AV_PROFILE_MPEG2_422 0
    109 #define AV_PROFILE_MPEG2_HIGH 1
    110 #define AV_PROFILE_MPEG2_SS 2
    111 #define AV_PROFILE_MPEG2_SNR_SCALABLE 3
    112 #define AV_PROFILE_MPEG2_MAIN 4
    113 #define AV_PROFILE_MPEG2_SIMPLE 5
    114 
    115 #define AV_PROFILE_H264_CONSTRAINED (1 << 9)  // 8+1; constraint_set1_flag
    116 #define AV_PROFILE_H264_INTRA (1 << 11)       // 8+3; constraint_set3_flag
    117 
    118 #define AV_PROFILE_H264_BASELINE 66
    119 #define AV_PROFILE_H264_CONSTRAINED_BASELINE (66 | AV_PROFILE_H264_CONSTRAINED)
    120 #define AV_PROFILE_H264_MAIN 77
    121 #define AV_PROFILE_H264_EXTENDED 88
    122 #define AV_PROFILE_H264_HIGH 100
    123 #define AV_PROFILE_H264_HIGH_10 110
    124 #define AV_PROFILE_H264_HIGH_10_INTRA (110 | AV_PROFILE_H264_INTRA)
    125 #define AV_PROFILE_H264_MULTIVIEW_HIGH 118
    126 #define AV_PROFILE_H264_HIGH_422 122
    127 #define AV_PROFILE_H264_HIGH_422_INTRA (122 | AV_PROFILE_H264_INTRA)
    128 #define AV_PROFILE_H264_STEREO_HIGH 128
    129 #define AV_PROFILE_H264_HIGH_444 144
    130 #define AV_PROFILE_H264_HIGH_444_PREDICTIVE 244
    131 #define AV_PROFILE_H264_HIGH_444_INTRA (244 | AV_PROFILE_H264_INTRA)
    132 #define AV_PROFILE_H264_CAVLC_444 44
    133 
    134 #define AV_PROFILE_VC1_SIMPLE 0
    135 #define AV_PROFILE_VC1_MAIN 1
    136 #define AV_PROFILE_VC1_COMPLEX 2
    137 #define AV_PROFILE_VC1_ADVANCED 3
    138 
    139 #define AV_PROFILE_MPEG4_SIMPLE 0
    140 #define AV_PROFILE_MPEG4_SIMPLE_SCALABLE 1
    141 #define AV_PROFILE_MPEG4_CORE 2
    142 #define AV_PROFILE_MPEG4_MAIN 3
    143 #define AV_PROFILE_MPEG4_N_BIT 4
    144 #define AV_PROFILE_MPEG4_SCALABLE_TEXTURE 5
    145 #define AV_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
    146 #define AV_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
    147 #define AV_PROFILE_MPEG4_HYBRID 8
    148 #define AV_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
    149 #define AV_PROFILE_MPEG4_CORE_SCALABLE 10
    150 #define AV_PROFILE_MPEG4_ADVANCED_CODING 11
    151 #define AV_PROFILE_MPEG4_ADVANCED_CORE 12
    152 #define AV_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
    153 #define AV_PROFILE_MPEG4_SIMPLE_STUDIO 14
    154 #define AV_PROFILE_MPEG4_ADVANCED_SIMPLE 15
    155 
    156 #define AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1
    157 #define AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2
    158 #define AV_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768
    159 #define AV_PROFILE_JPEG2000_DCINEMA_2K 3
    160 #define AV_PROFILE_JPEG2000_DCINEMA_4K 4
    161 
    162 #define AV_PROFILE_VP9_0 0
    163 #define AV_PROFILE_VP9_1 1
    164 #define AV_PROFILE_VP9_2 2
    165 #define AV_PROFILE_VP9_3 3
    166 
    167 #define AV_PROFILE_HEVC_MAIN 1
    168 #define AV_PROFILE_HEVC_MAIN_10 2
    169 #define AV_PROFILE_HEVC_MAIN_STILL_PICTURE 3
    170 #define AV_PROFILE_HEVC_REXT 4
    171 #define AV_PROFILE_HEVC_SCC 9
    172 
    173 #define AV_PROFILE_VVC_MAIN_10 1
    174 #define AV_PROFILE_VVC_MAIN_10_444 33
    175 
    176 #define AV_PROFILE_AV1_MAIN 0
    177 #define AV_PROFILE_AV1_HIGH 1
    178 #define AV_PROFILE_AV1_PROFESSIONAL 2
    179 
    180 #define AV_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0
    181 #define AV_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1
    182 #define AV_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2
    183 #define AV_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3
    184 #define AV_PROFILE_MJPEG_JPEG_LS 0xf7
    185 
    186 #define AV_PROFILE_SBC_MSBC 1
    187 
    188 #define AV_PROFILE_PRORES_PROXY 0
    189 #define AV_PROFILE_PRORES_LT 1
    190 #define AV_PROFILE_PRORES_STANDARD 2
    191 #define AV_PROFILE_PRORES_HQ 3
    192 #define AV_PROFILE_PRORES_4444 4
    193 #define AV_PROFILE_PRORES_XQ 5
    194 
    195 #define AV_PROFILE_ARIB_PROFILE_A 0
    196 #define AV_PROFILE_ARIB_PROFILE_C 1
    197 
    198 #define AV_PROFILE_KLVA_SYNC 0
    199 #define AV_PROFILE_KLVA_ASYNC 1
    200 
    201 #define AV_PROFILE_EVC_BASELINE 0
    202 #define AV_PROFILE_EVC_MAIN 1
    203 
    204 #define AV_LEVEL_UNKNOWN -99
    205 
    206 enum AVFieldOrder {
    207  AV_FIELD_UNKNOWN,
    208  AV_FIELD_PROGRESSIVE,
    209  AV_FIELD_TT,  ///< Top coded_first, top displayed first
    210  AV_FIELD_BB,  ///< Bottom coded first, bottom displayed first
    211  AV_FIELD_TB,  ///< Top coded first, bottom displayed first
    212  AV_FIELD_BT,  ///< Bottom coded first, top displayed first
    213 };
    214 
    215 /**
    216 * @ingroup lavc_decoding
    217 */
    218 enum AVDiscard {
    219  /* We leave some space between them for extensions (drop some
    220   * keyframes for intra-only or drop just some bidir frames). */
    221  AVDISCARD_NONE = -16,  ///< discard nothing
    222  AVDISCARD_DEFAULT =
    223      0,                 ///< discard useless packets like 0 size packets in avi
    224  AVDISCARD_NONREF = 8,  ///< discard all non reference
    225  AVDISCARD_BIDIR = 16,  ///< discard all bidirectional frames
    226  AVDISCARD_NONINTRA = 24,  ///< discard all non intra frames
    227  AVDISCARD_NONKEY = 32,    ///< discard all frames except keyframes
    228  AVDISCARD_ALL = 48,       ///< discard all
    229 };
    230 
    231 enum AVAudioServiceType {
    232  AV_AUDIO_SERVICE_TYPE_MAIN = 0,
    233  AV_AUDIO_SERVICE_TYPE_EFFECTS = 1,
    234  AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2,
    235  AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3,
    236  AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4,
    237  AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5,
    238  AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6,
    239  AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7,
    240  AV_AUDIO_SERVICE_TYPE_KARAOKE = 8,
    241  AV_AUDIO_SERVICE_TYPE_NB,  ///< Not part of ABI
    242 };
    243 
    244 /**
    245 * Pan Scan area.
    246 * This specifies the area which should be displayed.
    247 * Note there may be multiple such areas for one frame.
    248 */
    249 typedef struct AVPanScan {
    250  /**
    251   * id
    252   * - encoding: Set by user.
    253   * - decoding: Set by libavcodec.
    254   */
    255  int id;
    256 
    257  /**
    258   * width and height in 1/16 pel
    259   * - encoding: Set by user.
    260   * - decoding: Set by libavcodec.
    261   */
    262  int width;
    263  int height;
    264 
    265  /**
    266   * position of the top left corner in 1/16 pel for up to 3 fields/frames
    267   * - encoding: Set by user.
    268   * - decoding: Set by libavcodec.
    269   */
    270  int16_t position[3][2];
    271 } AVPanScan;
    272 
    273 /**
    274 * This structure describes the bitrate properties of an encoded bitstream. It
    275 * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
    276 * parameters for H.264/HEVC.
    277 */
    278 typedef struct AVCPBProperties {
    279  /**
    280   * Maximum bitrate of the stream, in bits per second.
    281   * Zero if unknown or unspecified.
    282   */
    283  int64_t max_bitrate;
    284  /**
    285   * Minimum bitrate of the stream, in bits per second.
    286   * Zero if unknown or unspecified.
    287   */
    288  int64_t min_bitrate;
    289  /**
    290   * Average bitrate of the stream, in bits per second.
    291   * Zero if unknown or unspecified.
    292   */
    293  int64_t avg_bitrate;
    294 
    295  /**
    296   * The size of the buffer to which the ratecontrol is applied, in bits.
    297   * Zero if unknown or unspecified.
    298   */
    299  int64_t buffer_size;
    300 
    301  /**
    302   * The delay between the time the packet this structure is associated with
    303   * is received and the time when it should be decoded, in periods of a 27MHz
    304   * clock.
    305   *
    306   * UINT64_MAX when unknown or unspecified.
    307   */
    308  uint64_t vbv_delay;
    309 } AVCPBProperties;
    310 
    311 /**
    312 * Allocate a CPB properties structure and initialize its fields to default
    313 * values.
    314 *
    315 * @param size if non-NULL, the size of the allocated struct will be written
    316 *             here. This is useful for embedding it in side data.
    317 *
    318 * @return the newly allocated struct or NULL on failure
    319 */
    320 AVCPBProperties* av_cpb_properties_alloc(size_t* size);
    321 
    322 /**
    323 * This structure supplies correlation between a packet timestamp and a wall
    324 * clock production time. The definition follows the Producer Reference Time
    325 * ('prft') as defined in ISO/IEC 14496-12
    326 */
    327 typedef struct AVProducerReferenceTime {
    328  /**
    329   * A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
    330   */
    331  int64_t wallclock;
    332  int flags;
    333 } AVProducerReferenceTime;
    334 
    335 /**
    336 * Encode extradata length to a buffer. Used by xiph codecs.
    337 *
    338 * @param s buffer to write to; must be at least (v/255+1) bytes long
    339 * @param v size of extradata in bytes
    340 * @return number of bytes written to the buffer.
    341 */
    342 unsigned int av_xiphlacing(unsigned char* s, unsigned int v);
    343 
    344 #endif  // AVCODEC_DEFS_H