1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * 3cabdff1aSopenharmony_ci * This file is part of FFmpeg. 4cabdff1aSopenharmony_ci * 5cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 6cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 7cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 8cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 9cabdff1aSopenharmony_ci * 10cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 11cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 12cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13cabdff1aSopenharmony_ci * Lesser General Public License for more details. 14cabdff1aSopenharmony_ci * 15cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 16cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 17cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18cabdff1aSopenharmony_ci */ 19cabdff1aSopenharmony_ci 20cabdff1aSopenharmony_ci#ifndef AVCODEC_DEFS_H 21cabdff1aSopenharmony_ci#define AVCODEC_DEFS_H 22cabdff1aSopenharmony_ci 23cabdff1aSopenharmony_ci/** 24cabdff1aSopenharmony_ci * @file 25cabdff1aSopenharmony_ci * @ingroup libavc 26cabdff1aSopenharmony_ci * Misc types and constants that do not belong anywhere else. 27cabdff1aSopenharmony_ci */ 28cabdff1aSopenharmony_ci 29cabdff1aSopenharmony_ci#include <stdint.h> 30cabdff1aSopenharmony_ci#include <stdlib.h> 31cabdff1aSopenharmony_ci 32cabdff1aSopenharmony_ci/** 33cabdff1aSopenharmony_ci * @ingroup lavc_decoding 34cabdff1aSopenharmony_ci * Required number of additionally allocated bytes at the end of the input bitstream for decoding. 35cabdff1aSopenharmony_ci * This is mainly needed because some optimized bitstream readers read 36cabdff1aSopenharmony_ci * 32 or 64 bit at once and could read over the end.<br> 37cabdff1aSopenharmony_ci * Note: If the first 23 bits of the additional bytes are not 0, then damaged 38cabdff1aSopenharmony_ci * MPEG bitstreams could cause overread and segfault. 39cabdff1aSopenharmony_ci */ 40cabdff1aSopenharmony_ci#define AV_INPUT_BUFFER_PADDING_SIZE 64 41cabdff1aSopenharmony_ci 42cabdff1aSopenharmony_ci/** 43cabdff1aSopenharmony_ci * @ingroup lavc_decoding 44cabdff1aSopenharmony_ci */ 45cabdff1aSopenharmony_cienum AVDiscard{ 46cabdff1aSopenharmony_ci /* We leave some space between them for extensions (drop some 47cabdff1aSopenharmony_ci * keyframes for intra-only or drop just some bidir frames). */ 48cabdff1aSopenharmony_ci AVDISCARD_NONE =-16, ///< discard nothing 49cabdff1aSopenharmony_ci AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi 50cabdff1aSopenharmony_ci AVDISCARD_NONREF = 8, ///< discard all non reference 51cabdff1aSopenharmony_ci AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames 52cabdff1aSopenharmony_ci AVDISCARD_NONINTRA= 24, ///< discard all non intra frames 53cabdff1aSopenharmony_ci AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes 54cabdff1aSopenharmony_ci AVDISCARD_ALL = 48, ///< discard all 55cabdff1aSopenharmony_ci}; 56cabdff1aSopenharmony_ci 57cabdff1aSopenharmony_cienum AVAudioServiceType { 58cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_MAIN = 0, 59cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, 60cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, 61cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, 62cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, 63cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, 64cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, 65cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, 66cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, 67cabdff1aSopenharmony_ci AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI 68cabdff1aSopenharmony_ci}; 69cabdff1aSopenharmony_ci 70cabdff1aSopenharmony_ci/** 71cabdff1aSopenharmony_ci * Pan Scan area. 72cabdff1aSopenharmony_ci * This specifies the area which should be displayed. 73cabdff1aSopenharmony_ci * Note there may be multiple such areas for one frame. 74cabdff1aSopenharmony_ci */ 75cabdff1aSopenharmony_citypedef struct AVPanScan { 76cabdff1aSopenharmony_ci /** 77cabdff1aSopenharmony_ci * id 78cabdff1aSopenharmony_ci * - encoding: Set by user. 79cabdff1aSopenharmony_ci * - decoding: Set by libavcodec. 80cabdff1aSopenharmony_ci */ 81cabdff1aSopenharmony_ci int id; 82cabdff1aSopenharmony_ci 83cabdff1aSopenharmony_ci /** 84cabdff1aSopenharmony_ci * width and height in 1/16 pel 85cabdff1aSopenharmony_ci * - encoding: Set by user. 86cabdff1aSopenharmony_ci * - decoding: Set by libavcodec. 87cabdff1aSopenharmony_ci */ 88cabdff1aSopenharmony_ci int width; 89cabdff1aSopenharmony_ci int height; 90cabdff1aSopenharmony_ci 91cabdff1aSopenharmony_ci /** 92cabdff1aSopenharmony_ci * position of the top left corner in 1/16 pel for up to 3 fields/frames 93cabdff1aSopenharmony_ci * - encoding: Set by user. 94cabdff1aSopenharmony_ci * - decoding: Set by libavcodec. 95cabdff1aSopenharmony_ci */ 96cabdff1aSopenharmony_ci int16_t position[3][2]; 97cabdff1aSopenharmony_ci} AVPanScan; 98cabdff1aSopenharmony_ci 99cabdff1aSopenharmony_ci/** 100cabdff1aSopenharmony_ci * This structure describes the bitrate properties of an encoded bitstream. It 101cabdff1aSopenharmony_ci * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD 102cabdff1aSopenharmony_ci * parameters for H.264/HEVC. 103cabdff1aSopenharmony_ci */ 104cabdff1aSopenharmony_citypedef struct AVCPBProperties { 105cabdff1aSopenharmony_ci /** 106cabdff1aSopenharmony_ci * Maximum bitrate of the stream, in bits per second. 107cabdff1aSopenharmony_ci * Zero if unknown or unspecified. 108cabdff1aSopenharmony_ci */ 109cabdff1aSopenharmony_ci int64_t max_bitrate; 110cabdff1aSopenharmony_ci /** 111cabdff1aSopenharmony_ci * Minimum bitrate of the stream, in bits per second. 112cabdff1aSopenharmony_ci * Zero if unknown or unspecified. 113cabdff1aSopenharmony_ci */ 114cabdff1aSopenharmony_ci int64_t min_bitrate; 115cabdff1aSopenharmony_ci /** 116cabdff1aSopenharmony_ci * Average bitrate of the stream, in bits per second. 117cabdff1aSopenharmony_ci * Zero if unknown or unspecified. 118cabdff1aSopenharmony_ci */ 119cabdff1aSopenharmony_ci int64_t avg_bitrate; 120cabdff1aSopenharmony_ci 121cabdff1aSopenharmony_ci /** 122cabdff1aSopenharmony_ci * The size of the buffer to which the ratecontrol is applied, in bits. 123cabdff1aSopenharmony_ci * Zero if unknown or unspecified. 124cabdff1aSopenharmony_ci */ 125cabdff1aSopenharmony_ci int64_t buffer_size; 126cabdff1aSopenharmony_ci 127cabdff1aSopenharmony_ci /** 128cabdff1aSopenharmony_ci * The delay between the time the packet this structure is associated with 129cabdff1aSopenharmony_ci * is received and the time when it should be decoded, in periods of a 27MHz 130cabdff1aSopenharmony_ci * clock. 131cabdff1aSopenharmony_ci * 132cabdff1aSopenharmony_ci * UINT64_MAX when unknown or unspecified. 133cabdff1aSopenharmony_ci */ 134cabdff1aSopenharmony_ci uint64_t vbv_delay; 135cabdff1aSopenharmony_ci} AVCPBProperties; 136cabdff1aSopenharmony_ci 137cabdff1aSopenharmony_ci/** 138cabdff1aSopenharmony_ci * Allocate a CPB properties structure and initialize its fields to default 139cabdff1aSopenharmony_ci * values. 140cabdff1aSopenharmony_ci * 141cabdff1aSopenharmony_ci * @param size if non-NULL, the size of the allocated struct will be written 142cabdff1aSopenharmony_ci * here. This is useful for embedding it in side data. 143cabdff1aSopenharmony_ci * 144cabdff1aSopenharmony_ci * @return the newly allocated struct or NULL on failure 145cabdff1aSopenharmony_ci */ 146cabdff1aSopenharmony_ciAVCPBProperties *av_cpb_properties_alloc(size_t *size); 147cabdff1aSopenharmony_ci 148cabdff1aSopenharmony_ci/** 149cabdff1aSopenharmony_ci * This structure supplies correlation between a packet timestamp and a wall clock 150cabdff1aSopenharmony_ci * production time. The definition follows the Producer Reference Time ('prft') 151cabdff1aSopenharmony_ci * as defined in ISO/IEC 14496-12 152cabdff1aSopenharmony_ci */ 153cabdff1aSopenharmony_citypedef struct AVProducerReferenceTime { 154cabdff1aSopenharmony_ci /** 155cabdff1aSopenharmony_ci * A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()). 156cabdff1aSopenharmony_ci */ 157cabdff1aSopenharmony_ci int64_t wallclock; 158cabdff1aSopenharmony_ci int flags; 159cabdff1aSopenharmony_ci} AVProducerReferenceTime; 160cabdff1aSopenharmony_ci 161cabdff1aSopenharmony_ci/** 162cabdff1aSopenharmony_ci * Encode extradata length to a buffer. Used by xiph codecs. 163cabdff1aSopenharmony_ci * 164cabdff1aSopenharmony_ci * @param s buffer to write to; must be at least (v/255+1) bytes long 165cabdff1aSopenharmony_ci * @param v size of extradata in bytes 166cabdff1aSopenharmony_ci * @return number of bytes written to the buffer. 167cabdff1aSopenharmony_ci */ 168cabdff1aSopenharmony_ciunsigned int av_xiphlacing(unsigned char *s, unsigned int v); 169cabdff1aSopenharmony_ci 170cabdff1aSopenharmony_ci#endif // AVCODEC_DEFS_H 171