mirror of https://github.com/FFmpeg/FFmpeg.git
This will allow to avoid #including the entire avcodec.h in some places.pull/362/head
parent
cf1746d779
commit
ff0a96046d
4 changed files with 182 additions and 138 deletions
@ -0,0 +1,170 @@ |
||||
/*
|
||||
* |
||||
* This file is part of FFmpeg. |
||||
* |
||||
* FFmpeg is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU Lesser General Public |
||||
* License as published by the Free Software Foundation; either |
||||
* version 2.1 of the License, or (at your option) any later version. |
||||
* |
||||
* FFmpeg is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||
* Lesser General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Lesser General Public |
||||
* License along with FFmpeg; if not, write to the Free Software |
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||
*/ |
||||
|
||||
#ifndef AVCODEC_DEFS_H |
||||
#define AVCODEC_DEFS_H |
||||
|
||||
/**
|
||||
* @file |
||||
* @ingroup libavc |
||||
* Misc types and constants that do not belong anywhere else. |
||||
*/ |
||||
|
||||
#include <stdint.h> |
||||
#include <stdlib.h> |
||||
|
||||
/**
|
||||
* @ingroup lavc_decoding |
||||
* Required number of additionally allocated bytes at the end of the input bitstream for decoding. |
||||
* This is mainly needed because some optimized bitstream readers read |
||||
* 32 or 64 bit at once and could read over the end.<br> |
||||
* Note: If the first 23 bits of the additional bytes are not 0, then damaged |
||||
* MPEG bitstreams could cause overread and segfault. |
||||
*/ |
||||
#define AV_INPUT_BUFFER_PADDING_SIZE 64 |
||||
|
||||
/**
|
||||
* @ingroup lavc_decoding |
||||
*/ |
||||
enum AVDiscard{ |
||||
/* We leave some space between them for extensions (drop some
|
||||
* keyframes for intra-only or drop just some bidir frames). */ |
||||
AVDISCARD_NONE =-16, ///< discard nothing
|
||||
AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
|
||||
AVDISCARD_NONREF = 8, ///< discard all non reference
|
||||
AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
|
||||
AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
|
||||
AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
|
||||
AVDISCARD_ALL = 48, ///< discard all
|
||||
}; |
||||
|
||||
enum AVAudioServiceType { |
||||
AV_AUDIO_SERVICE_TYPE_MAIN = 0, |
||||
AV_AUDIO_SERVICE_TYPE_EFFECTS = 1, |
||||
AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2, |
||||
AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3, |
||||
AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4, |
||||
AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5, |
||||
AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6, |
||||
AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7, |
||||
AV_AUDIO_SERVICE_TYPE_KARAOKE = 8, |
||||
AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI
|
||||
}; |
||||
|
||||
/**
|
||||
* Pan Scan area. |
||||
* This specifies the area which should be displayed. |
||||
* Note there may be multiple such areas for one frame. |
||||
*/ |
||||
typedef struct AVPanScan { |
||||
/**
|
||||
* id |
||||
* - encoding: Set by user. |
||||
* - decoding: Set by libavcodec. |
||||
*/ |
||||
int id; |
||||
|
||||
/**
|
||||
* width and height in 1/16 pel |
||||
* - encoding: Set by user. |
||||
* - decoding: Set by libavcodec. |
||||
*/ |
||||
int width; |
||||
int height; |
||||
|
||||
/**
|
||||
* position of the top left corner in 1/16 pel for up to 3 fields/frames |
||||
* - encoding: Set by user. |
||||
* - decoding: Set by libavcodec. |
||||
*/ |
||||
int16_t position[3][2]; |
||||
} AVPanScan; |
||||
|
||||
/**
|
||||
* This structure describes the bitrate properties of an encoded bitstream. It |
||||
* roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD |
||||
* parameters for H.264/HEVC. |
||||
*/ |
||||
typedef struct AVCPBProperties { |
||||
/**
|
||||
* Maximum bitrate of the stream, in bits per second. |
||||
* Zero if unknown or unspecified. |
||||
*/ |
||||
int64_t max_bitrate; |
||||
/**
|
||||
* Minimum bitrate of the stream, in bits per second. |
||||
* Zero if unknown or unspecified. |
||||
*/ |
||||
int64_t min_bitrate; |
||||
/**
|
||||
* Average bitrate of the stream, in bits per second. |
||||
* Zero if unknown or unspecified. |
||||
*/ |
||||
int64_t avg_bitrate; |
||||
|
||||
/**
|
||||
* The size of the buffer to which the ratecontrol is applied, in bits. |
||||
* Zero if unknown or unspecified. |
||||
*/ |
||||
int64_t buffer_size; |
||||
|
||||
/**
|
||||
* The delay between the time the packet this structure is associated with |
||||
* is received and the time when it should be decoded, in periods of a 27MHz |
||||
* clock. |
||||
* |
||||
* UINT64_MAX when unknown or unspecified. |
||||
*/ |
||||
uint64_t vbv_delay; |
||||
} AVCPBProperties; |
||||
|
||||
/**
|
||||
* Allocate a CPB properties structure and initialize its fields to default |
||||
* values. |
||||
* |
||||
* @param size if non-NULL, the size of the allocated struct will be written |
||||
* here. This is useful for embedding it in side data. |
||||
* |
||||
* @return the newly allocated struct or NULL on failure |
||||
*/ |
||||
AVCPBProperties *av_cpb_properties_alloc(size_t *size); |
||||
|
||||
/**
|
||||
* This structure supplies correlation between a packet timestamp and a wall clock |
||||
* production time. The definition follows the Producer Reference Time ('prft') |
||||
* as defined in ISO/IEC 14496-12 |
||||
*/ |
||||
typedef struct AVProducerReferenceTime { |
||||
/**
|
||||
* A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()). |
||||
*/ |
||||
int64_t wallclock; |
||||
int flags; |
||||
} AVProducerReferenceTime; |
||||
|
||||
/**
|
||||
* Encode extradata length to a buffer. Used by xiph codecs. |
||||
* |
||||
* @param s buffer to write to; must be at least (v/255+1) bytes long |
||||
* @param v size of extradata in bytes |
||||
* @return number of bytes written to the buffer. |
||||
*/ |
||||
unsigned int av_xiphlacing(unsigned char *s, unsigned int v); |
||||
|
||||
#endif // AVCODEC_DEFS_H
|
Loading…
Reference in new issue