mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-29 10:43:15 +00:00
lavc: add a packet side data type for VBV-like parameters
This commit is contained in:
parent
e63e3797a1
commit
f0b769c16d
@ -16,6 +16,7 @@ API changes, most recent first:
|
||||
2015-xx-xx - xxxxxxx - lavc 57.11.0 - avcodec.h
|
||||
xxxxxxx - Add av_packet_add_side_data().
|
||||
xxxxxxx - Add AVCodecContext.coded_side_data.
|
||||
xxxxxxx - Add AVCPBProperties API.
|
||||
|
||||
2015-xx-xx - xxxxxxx - lavc 57.9.1 - avcodec.h
|
||||
Deprecate rtp_callback without replacement, i.e. it won't be possible to
|
||||
|
@ -1036,6 +1036,44 @@ typedef struct AVPanScan{
|
||||
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.
|
||||
*/
|
||||
int max_bitrate;
|
||||
/**
|
||||
* Minimum bitrate of the stream, in bits per second.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int min_bitrate;
|
||||
/**
|
||||
* Average bitrate of the stream, in bits per second.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int avg_bitrate;
|
||||
|
||||
/**
|
||||
* The size of the buffer to which the ratecontrol is applied, in bits.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int 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;
|
||||
|
||||
#if FF_API_QSCALE_TYPE
|
||||
#define FF_QSCALE_TYPE_MPEG1 0
|
||||
#define FF_QSCALE_TYPE_MPEG2 1
|
||||
@ -1137,6 +1175,11 @@ enum AVPacketSideDataType {
|
||||
* e.g. no decoder available for codec.
|
||||
*/
|
||||
AV_PKT_DATA_FALLBACK_TRACK,
|
||||
|
||||
/**
|
||||
* This side data corresponds to the AVCPBProperties struct.
|
||||
*/
|
||||
AV_PKT_DATA_CPB_PROPERTIES,
|
||||
};
|
||||
|
||||
typedef struct AVPacketSideData {
|
||||
@ -4630,6 +4673,17 @@ const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev);
|
||||
*/
|
||||
const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name);
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
@ -2369,3 +2369,17 @@ const uint8_t *avpriv_find_start_code(const uint8_t *restrict p,
|
||||
|
||||
return p + 4;
|
||||
}
|
||||
|
||||
AVCPBProperties *av_cpb_properties_alloc(size_t *size)
|
||||
{
|
||||
AVCPBProperties *props = av_mallocz(sizeof(AVCPBProperties));
|
||||
if (!props)
|
||||
return NULL;
|
||||
|
||||
if (size)
|
||||
*size = sizeof(*props);
|
||||
|
||||
props->vbv_delay = UINT64_MAX;
|
||||
|
||||
return props;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user