mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavc: move small misc definitions into a separate header
This will allow to avoid #including the entire avcodec.h in some places.
This commit is contained in:
parent
cf1746d779
commit
ff0a96046d
@ -14,6 +14,16 @@ libavutil: 2021-04-27
|
|||||||
|
|
||||||
API changes, most recent first:
|
API changes, most recent first:
|
||||||
|
|
||||||
|
2021-xx-xx - xxxxxxxxxx - lavc 59.1.100 - avcodec.h defs.h
|
||||||
|
Add new installed header defs.h. The following definitions are moved
|
||||||
|
into it from avcodec.h:
|
||||||
|
- AVDiscard
|
||||||
|
- AVAudioServiceType
|
||||||
|
- AVPanScan
|
||||||
|
- AVCPBProperties and av_cpb_properties_alloc()
|
||||||
|
- AVProducerReferenceTime
|
||||||
|
- av_xiphlacing()
|
||||||
|
|
||||||
2021-04-27 - cb3ac722f4 - lavc 59.0.100 - avcodec.h
|
2021-04-27 - cb3ac722f4 - lavc 59.0.100 - avcodec.h
|
||||||
Constified AVCodecParserContext.parser.
|
Constified AVCodecParserContext.parser.
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ HEADERS = ac3_parser.h \
|
|||||||
codec_id.h \
|
codec_id.h \
|
||||||
codec_par.h \
|
codec_par.h \
|
||||||
d3d11va.h \
|
d3d11va.h \
|
||||||
|
defs.h \
|
||||||
dirac.h \
|
dirac.h \
|
||||||
dv_profile.h \
|
dv_profile.h \
|
||||||
dxva2.h \
|
dxva2.h \
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "codec_desc.h"
|
#include "codec_desc.h"
|
||||||
#include "codec_par.h"
|
#include "codec_par.h"
|
||||||
#include "codec_id.h"
|
#include "codec_id.h"
|
||||||
|
#include "defs.h"
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
@ -181,16 +182,6 @@
|
|||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* @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_encoding
|
* @ingroup lavc_encoding
|
||||||
* minimum encoding buffer size
|
* minimum encoding buffer size
|
||||||
@ -198,34 +189,6 @@
|
|||||||
*/
|
*/
|
||||||
#define AV_INPUT_BUFFER_MIN_SIZE 16384
|
#define AV_INPUT_BUFFER_MIN_SIZE 16384
|
||||||
|
|
||||||
/**
|
|
||||||
* @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
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup lavc_encoding
|
* @ingroup lavc_encoding
|
||||||
*/
|
*/
|
||||||
@ -393,86 +356,6 @@ typedef struct RcOverride{
|
|||||||
*/
|
*/
|
||||||
#define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3)
|
#define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3)
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The decoder will keep a reference to the frame and may reuse it later.
|
* The decoder will keep a reference to the frame and may reuse it later.
|
||||||
*/
|
*/
|
||||||
@ -3300,32 +3183,12 @@ void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size);
|
|||||||
*/
|
*/
|
||||||
void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size);
|
void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size);
|
||||||
|
|
||||||
/**
|
|
||||||
* 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);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a positive value if s is open (i.e. avcodec_open2() was called on it
|
* @return a positive value if s is open (i.e. avcodec_open2() was called on it
|
||||||
* with no corresponding avcodec_close()), 0 otherwise.
|
* with no corresponding avcodec_close()), 0 otherwise.
|
||||||
*/
|
*/
|
||||||
int avcodec_is_open(AVCodecContext *s);
|
int avcodec_is_open(AVCodecContext *s);
|
||||||
|
|
||||||
/**
|
|
||||||
* 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);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
170
libavcodec/defs.h
Normal file
170
libavcodec/defs.h
Normal file
@ -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
Block a user