tor-browser

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

defs.h (12450B)


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