Go to the documentation of this file.
26 #include "config_components.h"
47 #define IS_H264(codec_id) (CONFIG_H264_SEI && (CONFIG_HEVC_SEI || CONFIG_VVC_SEI ) ? codec_id == AV_CODEC_ID_H264 : CONFIG_H264_SEI)
48 #define IS_HEVC(codec_id) (CONFIG_HEVC_SEI && (CONFIG_H264_SEI || CONFIG_VVC_SEI ) ? codec_id == AV_CODEC_ID_HEVC : CONFIG_HEVC_SEI)
49 #define IS_VVC(codec_id) (CONFIG_VVC_SEI && (CONFIG_H264_SEI || CONFIG_HEVC_SEI) ? codec_id == AV_CODEC_ID_VVC : CONFIG_VVC_SEI )
126 flag = !!(bytestream2_get_byteu(gb) & 0x40);
131 h->active_format_description = bytestream2_get_byteu(gb) & 0xF;
148 int country_code, provider_code = -1;
153 country_code = bytestream2_get_byteu(gb);
154 if (country_code == 0xFF) {
163 switch (country_code) {
165 provider_code = bytestream2_get_be16u(gb);
167 switch (provider_code) {
169 uint32_t user_identifier;
174 user_identifier = bytestream2_get_be32u(gb);
175 switch (user_identifier) {
176 case MKBETAG(
'D',
'T',
'G',
'1'):
178 case MKBETAG(
'G',
'A',
'9',
'4'):
182 "Unsupported User Data Registered ITU-T T35 SEI message (atsc user_identifier = 0x%04x)\n",
190 const uint16_t aom_grain_provider_oriented_code = 0x0001;
191 uint16_t provider_oriented_code;
199 provider_oriented_code = bytestream2_get_byteu(gb);
200 if (provider_oriented_code == aom_grain_provider_oriented_code) {
209 const uint16_t smpte2094_40_provider_oriented_code = 0x0001;
210 const uint8_t smpte2094_40_application_identifier = 0x04;
211 uint16_t provider_oriented_code;
212 uint8_t application_identifier;
220 provider_oriented_code = bytestream2_get_be16u(gb);
221 application_identifier = bytestream2_get_byteu(gb);
222 if (provider_oriented_code == smpte2094_40_provider_oriented_code &&
223 application_identifier == smpte2094_40_application_identifier) {
224 return decode_registered_user_data_dynamic_hdr_plus(&
h->dynamic_hdr_plus, gb);
238 provider_code = bytestream2_get_be16u(gb);
240 switch (provider_code) {
252 const uint16_t cuva_provider_oriented_code = 0x0005;
253 uint16_t provider_oriented_code;
255 provider_code = bytestream2_get_be16u(gb);
257 switch (provider_code) {
265 provider_oriented_code = bytestream2_get_be16u(gb);
266 if (provider_oriented_code == cuva_provider_oriented_code) {
267 return decode_registered_user_data_dynamic_hdr_vivid(&
h->dynamic_hdr_vivid, gb);
281 "Unsupported User Data Registered ITU-T T35 SEI message (country_code = %d, provider_code = %d)\n",
282 country_code, provider_code);
295 if (size < 16 || size >= INT_MAX - 1)
311 h->buf_ref[
h->nb_buf_ref++] = buf_ref;
315 e = sscanf(
user_data + 16,
"x264 - core %d", &build);
316 if (e == 1 && build > 0)
317 h->x264_build = build;
318 if (e == 1 && build == 1 && !strncmp(
user_data+16,
"x264 - core 0000", 16))
334 h->anticlockwise_rotation =
get_bits(gb, 16);
349 h->present = !
h->arrangement_cancel_flag;
354 h->content_interpretation_type =
get_bits(gb, 6);
358 h->current_frame_is_frame0_flag =
get_bits1(gb);
362 if (!
h->quincunx_sampling_flag &&
h->arrangement_type != 5)
384 s->preferred_transfer_characteristics = bytestream2_get_byteu(gb);
392 static const uint16_t max_ambient_light_value = 50000;
397 s->ambient_illuminance = bytestream2_get_be32u(gb);
398 if (!
s->ambient_illuminance)
401 s->ambient_light_x = bytestream2_get_be16u(gb);
402 if (
s->ambient_light_x > max_ambient_light_value)
405 s->ambient_light_y = bytestream2_get_be16u(gb);
406 if (
s->ambient_light_y > max_ambient_light_value)
420 memset(
h, 0,
sizeof(*
h));
422 h->separate_colour_description_present_flag =
get_bits1(gb);
423 if (
h->separate_colour_description_present_flag) {
425 h->bit_depth_chroma =
get_bits(gb, 3) + 8;
428 h->transfer_characteristics =
get_bits(gb, 8);
433 for (
int c = 0;
c < 3;
c++)
435 for (
int c = 0;
c < 3;
c++) {
436 if (
h->comp_model_present_flag[
c]) {
437 h->num_intensity_intervals[
c] =
get_bits(gb, 8) + 1;
439 if (
h->num_model_values[
c] > 6)
441 for (
int i = 0;
i <
h->num_intensity_intervals[
c];
i++) {
442 h->intensity_interval_lower_bound[
c][
i] =
get_bits(gb, 8);
443 h->intensity_interval_upper_bound[
c][
i] =
get_bits(gb, 8);
444 for (
int j = 0; j <
h->num_model_values[
c]; j++)
469 for (
i = 0;
i < 3;
i++) {
470 s->display_primaries[
i][0] = bytestream2_get_be16u(gb);
471 s->display_primaries[
i][1] = bytestream2_get_be16u(gb);
474 s->white_point[0] = bytestream2_get_be16u(gb);
475 s->white_point[1] = bytestream2_get_be16u(gb);
478 s->max_luminance = bytestream2_get_be32u(gb);
479 s->min_luminance = bytestream2_get_be32u(gb);
496 s->max_content_light_level = bytestream2_get_be16u(gb);
497 s->max_pic_average_light_level = bytestream2_get_be16u(gb);
520 if (!
h->film_grain_characteristics)
543 src->a53_caption.buf_ref);
547 for (
unsigned i = 0;
i <
dst->unregistered.nb_buf_ref;
i++)
549 dst->unregistered.nb_buf_ref = 0;
555 if (
src->unregistered.nb_buf_ref) {
557 src->unregistered.nb_buf_ref,
558 sizeof(*
dst->unregistered.buf_ref));
562 for (
unsigned i = 0;
i <
src->unregistered.nb_buf_ref;
i++) {
564 if (!
dst->unregistered.buf_ref[
i])
566 dst->unregistered.nb_buf_ref++;
572 src->aom_film_grain.sets[
i]);
576 dst->aom_film_grain.enable =
src->aom_film_grain.enable;
578 dst->ambient_viewing_environment =
src->ambient_viewing_environment;
579 dst->mastering_display =
src->mastering_display;
580 dst->content_light =
src->content_light;
583 src->film_grain_characteristics);
603 for (
unsigned i = 0;
i <
sei->unregistered.nb_buf_ref;
i++) {
614 sei->unregistered.nb_buf_ref = 0;
616 if (
sei->ambient_viewing_environment.present) {
643 if (
sei->mastering_display.present) {
645 const int mapping[3] = {2, 0, 1};
646 const int chroma_den = 50000;
647 const int luma_den = 10000;
659 for (
i = 0;
i < 3;
i++) {
660 const int j = mapping[
i];
661 metadata->display_primaries[
i][0].num =
sei->mastering_display.display_primaries[j][0];
662 metadata->display_primaries[
i][0].den = chroma_den;
663 metadata->has_primaries &=
sei->mastering_display.display_primaries[j][0] >= 5 &&
664 sei->mastering_display.display_primaries[j][0] <= 37000;
666 metadata->display_primaries[
i][1].num =
sei->mastering_display.display_primaries[j][1];
667 metadata->display_primaries[
i][1].den = chroma_den;
668 metadata->has_primaries &=
sei->mastering_display.display_primaries[j][1] >= 5 &&
669 sei->mastering_display.display_primaries[j][1] <= 42000;
671 metadata->white_point[0].num =
sei->mastering_display.white_point[0];
672 metadata->white_point[0].den = chroma_den;
673 metadata->has_primaries &=
sei->mastering_display.white_point[0] >= 5 &&
674 sei->mastering_display.white_point[0] <= 37000;
676 metadata->white_point[1].num =
sei->mastering_display.white_point[1];
677 metadata->white_point[1].den = chroma_den;
678 metadata->has_primaries &=
sei->mastering_display.white_point[1] >= 5 &&
679 sei->mastering_display.white_point[1] <= 42000;
681 metadata->max_luminance.num =
sei->mastering_display.max_luminance;
682 metadata->max_luminance.den = luma_den;
683 metadata->has_luminance &=
sei->mastering_display.max_luminance >= 50000 &&
684 sei->mastering_display.max_luminance <= 100000000;
686 metadata->min_luminance.num =
sei->mastering_display.min_luminance;
687 metadata->min_luminance.den = luma_den;
688 metadata->has_luminance &=
sei->mastering_display.min_luminance <= 50000 &&
689 sei->mastering_display.min_luminance <
690 sei->mastering_display.max_luminance;
695 metadata->has_luminance &=
sei->mastering_display.min_luminance >= 1;
701 "r(%5.4f,%5.4f) g(%5.4f,%5.4f) b(%5.4f %5.4f) wp(%5.4f, %5.4f)\n",
712 "min_luminance=%f, max_luminance=%f\n",
718 if (
sei->content_light.present) {
726 metadata->MaxCLL =
sei->content_light.max_content_light_level;
727 metadata->MaxFALL =
sei->content_light.max_pic_average_light_level;
741 unsigned bit_depth_luma,
unsigned bit_depth_chroma,
798 if (
sei->display_orientation.present &&
799 (
sei->display_orientation.anticlockwise_rotation ||
800 sei->display_orientation.hflip ||
801 sei->display_orientation.vflip)) {
818 angle = -angle * (1 - 2 * !!o->
hflip) * (1 - 2 * !!o->
vflip);
824 if (
sei->a53_caption.buf_ref) {
830 #if FF_API_CODEC_PROPS
841 if (
sei->afd.present) {
846 *sd->
data =
sei->afd.active_format_description;
847 sei->afd.present = 0;
851 if (
sei->lcevc.info) {
858 if (
sei->film_grain_characteristics &&
sei->film_grain_characteristics->present) {
916 #if FF_API_CODEC_PROPS
942 for (
unsigned i = 0;
i <
s->unregistered.nb_buf_ref;
i++)
944 s->unregistered.nb_buf_ref = 0;
950 s->ambient_viewing_environment.present = 0;
951 s->mastering_display.present = 0;
952 s->content_light.present = 0;
#define FF_ENABLE_DEPRECATION_WARNINGS
static int h2645_sei_to_side_data(AVCodecContext *avctx, H2645SEI *sei, AVFrameSideData ***sd, int *nb_sd)
#define ITU_T_T35_PROVIDER_CODE_HDR_VIVID
static int decode_film_grain_characteristics(H2645SEIFilmGrainCharacteristics *h, enum AVCodecID codec_id, GetBitContext *gb)
@ AV_STEREO3D_VIEW_LEFT
Frame contains only the left view.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
@ AV_STEREO3D_SIDEBYSIDE_QUINCUNX
Views are next to each other, but when upscaling apply a checkerboard pattern.
@ SEI_FPA_H264_TYPE_CHECKERBOARD
static av_always_inline int bytestream2_get_bytes_left(const GetByteContext *g)
@ SEI_FPA_TYPE_INTERLEAVE_TEMPORAL
AVFrameSideData ** decoded_side_data
Array containing static side data, such as HDR10 CLL / MDCV structures.
SEIFpaType arrangement_type
int bit_depth_luma
Intended bit depth, or 0 for unknown/unspecified.
AVFrameSideData * av_frame_new_side_data(AVFrame *frame, enum AVFrameSideDataType type, size_t size)
Add a new side data to a frame.
Ambient viewing environment metadata as defined by H.274.
static int get_se_golomb_long(GetBitContext *gb)
union AVFilmGrainParams::@519 codec
Additional fields may be added both here and in any structure included.
uint8_t * data
The data buffer.
@ AV_FRAME_DATA_A53_CC
ATSC A53 Part 4 Closed Captions.
int ff_h2645_sei_to_frame(AVFrame *frame, H2645SEI *sei, enum AVCodecID codec_id, AVCodecContext *avctx, const H2645VUI *vui, unsigned bit_depth_luma, unsigned bit_depth_chroma, int seed)
static av_always_inline void bytestream2_skipu(GetByteContext *g, unsigned int size)
enum AVColorSpace matrix_coeffs
int blending_mode_id
Specifies the blending mode used to blend the simulated film grain with the decoded images.
This structure describes decoded (raw) audio or video data.
#define IS_H264(codec_id)
void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip)
Flip the input matrix horizontally and/or vertically.
#define FF_COMPLIANCE_STRICT
Strictly conform to all the things in the spec no matter what consequences.
enum AVColorSpace color_space
#define AV_LOG_VERBOSE
Detailed information.
void av_display_rotation_set(int32_t matrix[9], double angle)
Initialize a transformation matrix describing a pure clockwise rotation by the specified angle (in de...
@ AV_FRAME_DATA_DISPLAYMATRIX
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
@ SEI_FPA_TYPE_TOP_BOTTOM
enum AVColorPrimaries colour_primaries
AVBufferRef * av_buffer_ref(const AVBufferRef *buf)
Create a new reference to an AVBuffer.
@ AV_STEREO3D_VIEW_RIGHT
Frame contains only the right view.
enum AVColorTransferCharacteristic color_trc
int video_full_range_flag
uint64_t seed
Seed to use for the synthesis process, if the codec allows for it.
int video_signal_type_present_flag
int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, enum AVCodecID codec_id, GetBitContext *gb, GetByteContext *gbyte, void *logctx)
Decode a single SEI message.
Content light level needed by to transmit HDR over HDMI (CTA-861.3).
static void skip_bits(GetBitContext *s, int n)
@ AV_STEREO3D_SIDEBYSIDE
Views are next to each other.
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
@ SEI_FPA_H264_TYPE_INTERLEAVE_COLUMN
#define ITU_T_T35_COUNTRY_CODE_CN
#define ITU_T_T35_PROVIDER_CODE_VNOVA
@ AV_STEREO3D_2D
Video is not stereoscopic (and metadata has to be there).
uint8_t intensity_interval_upper_bound[3][256]
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
@ SEI_TYPE_AMBIENT_VIEWING_ENVIRONMENT
@ FF_H2645_SEI_MESSAGE_UNHANDLED
#define ITU_T_T35_PROVIDER_CODE_ATSC
int ff_frame_new_side_data_from_buf(const AVCodecContext *avctx, AVFrame *frame, enum AVFrameSideDataType type, AVBufferRef **buf)
Similar to ff_frame_new_side_data, but using an existing buffer ref.
uint8_t intensity_interval_upper_bound[3][256]
Specifies the upper bound of each intensity interval for which the set of model values applies for th...
AVAmbientViewingEnvironment * av_ambient_viewing_environment_alloc(size_t *size)
Allocate an AVAmbientViewingEnvironment structure.
static void * av_refstruct_allocz(size_t size)
Equivalent to av_refstruct_alloc_ext(size, 0, NULL, NULL)
static int is_frame_packing_type_valid(SEIFpaType type, enum AVCodecID codec_id)
int ff_decode_content_light_new_ext(const AVCodecContext *avctx, AVFrameSideData ***sd, int *nb_sd, AVContentLightMetadata **clm)
Same as ff_decode_content_light_new, but taking a AVFrameSideData array directly instead of an AVFram...
@ AV_STEREO3D_FRAMESEQUENCE
Views are alternated temporally.
#define FF_ARRAY_ELEMS(a)
uint8_t intensity_interval_lower_bound[3][256]
int current_frame_is_frame0_flag
int width
Intended display resolution.
int anticlockwise_rotation
@ AV_STEREO3D_LINES
Views are packed per line, as if interlaced.
@ SEI_TYPE_FRAME_PACKING_ARRANGEMENT
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
@ SEI_FPA_H264_TYPE_INTERLEAVE_ROW
static int decode_registered_user_data_closed_caption(H2645SEIA53Caption *h, GetByteContext *gb)
static double av_q2d(AVRational a)
Convert an AVRational to a double.
static int decode_nal_sei_content_light_info(H2645SEIContentLight *s, GetByteContext *gb)
AVFilmGrainParams * av_film_grain_params_create_side_data(AVFrame *frame)
Allocate a complete AVFilmGrainParams and add it to the frame.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
@ SEI_TYPE_USER_DATA_REGISTERED_ITU_T_T35
void ff_aom_uninit_film_grain_params(AVFilmGrainAFGS1Params *s)
static int decode_unregistered_user_data(H2645SEIUnregistered *h, GetByteContext *gb, enum AVCodecID codec_id)
int16_t comp_model_value[3][256][6]
Specifies the model values for the component for each intensity interval.
#define FF_CODEC_PROPERTY_FILM_GRAIN
int flags
Additional information about the frame packing.
int model_id
Specifies the film grain simulation mode.
int ff_parse_a53_cc(AVBufferRef **pbuf, const uint8_t *data, int size)
Parse a data array for ATSC A53 Part 4 Closed Captions and store them in an AVBufferRef.
static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb, enum AVCodecID codec_id, void *logctx)
int colour_description_present_flag
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it.
static int decode_frame_packing_arrangement(H2645SEIFramePacking *h, GetBitContext *gb, enum AVCodecID codec_id)
int ff_h2645_sei_to_context(AVCodecContext *avctx, H2645SEI *sei)
int comp_model_present_flag[3]
static unsigned int get_bits1(GetBitContext *s)
This struct represents dynamic metadata for color volume transform - CUVA 005.1:2021 standard.
AVFrameSideData * av_frame_new_side_data_from_buf(AVFrame *frame, enum AVFrameSideDataType type, AVBufferRef *buf)
Add a new side data to a frame from an existing AVBufferRef.
uint16_t num_intensity_intervals[3]
int subsampling_x
Intended subsampling ratio, or 0 for luma-only streams.
@ AV_FRAME_DATA_AFD
Active Format Description data consisting of a single byte as specified in ETSI TS 101 154 using AVAc...
static int FUNC() sei(CodedBitstreamContext *ctx, RWContext *rw, H264RawSEI *current)
#define IS_HEVC(codec_id)
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
int ff_aom_attach_film_grain_sets(const AVFilmGrainAFGS1Params *s, AVFrame *frame)
@ AV_FRAME_DATA_SEI_UNREGISTERED
User data unregistered metadata associated with a video frame.
static int decode_alternative_transfer(H2645SEIAlternativeTransfer *s, GetByteContext *gb)
AVBufferRef * av_buffer_create(uint8_t *data, size_t size, void(*free)(void *opaque, uint8_t *data), void *opaque, int flags)
Create an AVBuffer from an existing array.
AVCodecID
Identify the syntax and semantics of the bitstream.
uint8_t num_model_values[3]
@ AV_STEREO3D_CHECKERBOARD
Views are packed in a checkerboard-like structure per pixel.
@ AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT
Ambient viewing environment metadata, as defined by H.274.
enum AVColorTransferCharacteristic transfer_characteristics
int component_model_present[3]
Indicates if the modelling of film grain for a given component is present.
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
#define i(width, name, range_min, range_max)
@ AV_FRAME_DATA_LCEVC
Raw LCEVC payload data, as a uint8_t array, with NAL emulation bytes intact.
static AVRational av_make_q(int num, int den)
Create an AVRational.
#define MKBETAG(a, b, c, d)
int ff_frame_new_side_data_from_buf_ext(const AVCodecContext *avctx, AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef **buf)
Same as ff_frame_new_side_data_from_buf, but taking a AVFrameSideData array directly instead of an AV...
This structure describes how to handle film grain synthesis in video for specific codecs.
static int FUNC() user_data(CodedBitstreamContext *ctx, RWContext *rw, MPEG2RawUserData *current)
static int decode_nal_sei_mastering_display_info(H2645SEIMasteringDisplay *s, GetByteContext *gb)
int av_reallocp_array(void *ptr, size_t nmemb, size_t size)
Allocate, reallocate an array through a pointer to a pointer.
@ SEI_TYPE_MASTERING_DISPLAY_COLOUR_VOLUME
@ SEI_FPA_TYPE_SIDE_BY_SIDE
void ff_h2645_sei_reset(H2645SEI *s)
@ SEI_TYPE_ALTERNATIVE_TRANSFER_CHARACTERISTICS
static void skip_bits1(GetBitContext *s)
AVBufferRef * av_buffer_alloc(size_t size)
Allocate an AVBuffer of the given size using av_malloc().
AVFilmGrainH274Params h274
static int decode_registered_user_data_afd(H2645SEIAFD *h, GetByteContext *gb)
int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s, const uint8_t *payload, int payload_size)
#define AV_STEREO3D_FLAG_INVERT
Inverted views, Right/Bottom represents the left view.
int ff_parse_itu_t_t35_to_dynamic_hdr_vivid(AVDynamicHDRVivid *s, const uint8_t *data, int size)
Parse the user data registered ITU-T T.35 to AVbuffer (AVDynamicHDRVivid).
size_t size
Size of data in bytes.
void av_refstruct_unref(void *objp)
Decrement the reference count of the underlying object and automatically free the object if there are...
int transfer_characteristics
enum AVColorPrimaries color_primaries
This structure describes how to handle film grain synthesis for codecs using the ITU-T H....
uint16_t num_intensity_intervals[3]
Specifies the number of intensity intervals for which a specific set of model values has been estimat...
@ AV_STEREO3D_TOPBOTTOM
Views are on top of each other.
@ SEI_TYPE_DISPLAY_ORIENTATION
int av_buffer_replace(AVBufferRef **pdst, const AVBufferRef *src)
Ensure dst refers to the same data as src.
uint8_t intensity_interval_lower_bound[3][256]
Specifies the lower ounds of each intensity interval for whichthe set of model values applies for the...
int separate_colour_description_present_flag
This struct represents dynamic metadata for color volume transform - application 4 of SMPTE 2094-40:2...
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
int content_interpretation_type
@ AV_STEREO3D_COLUMNS
Views are packed per column.
int strict_std_compliance
strictly follow the standard (MPEG-4, ...).
enum AVStereo3DType type
How views are packed within the video.
SEIFpaType
frame_packing_arrangement types.
main external API structure.
@ AV_FILM_GRAIN_PARAMS_H274
The union is valid when interpreted as AVFilmGrainH274Params (codec.h274)
@ SEI_TYPE_USER_DATA_UNREGISTERED
void av_refstruct_replace(void *dstp, const void *src)
Ensure *dstp refers to the same object as src.
static int decode_ambient_viewing_environment(H2645SEIAmbientViewingEnvironment *s, GetByteContext *gb)
int log2_scale_factor
Specifies a scale factor used in the film grain characterization equations.
#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS
#define ITU_T_T35_COUNTRY_CODE_UK
uint32_t ambient_illuminance
uint8_t num_model_values[3]
Specifies the number of model values present for each intensity interval in which the film grain has ...
enum AVColorRange color_range
Intended video signal characteristics.
#define ITU_T_T35_PROVIDER_CODE_AOM
#define FF_DISABLE_DEPRECATION_WARNINGS
int ff_decode_mastering_display_new_ext(const AVCodecContext *avctx, AVFrameSideData ***sd, int *nb_sd, struct AVMasteringDisplayMetadata **mdm)
Same as ff_decode_mastering_display_new, but taking a AVFrameSideData array directly instead of an AV...
int quincunx_sampling_flag
A reference to a data buffer.
static av_always_inline unsigned int bytestream2_get_bufferu(GetByteContext *g, uint8_t *dst, unsigned int size)
static unsigned get_ue_golomb_long(GetBitContext *gb)
Read an unsigned Exp-Golomb code in the range 0 to UINT32_MAX-1.
#define ITU_T_T35_COUNTRY_CODE_US
int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src)
AVStereo3D * av_stereo3d_create_side_data(AVFrame *frame)
Allocate a complete AVFrameSideData and add it to the frame.
Structure to hold side data for an AVFrame.
enum AVStereo3DView view
Determines which views are packed.
attribute_deprecated unsigned properties
Properties of the stream that gets decoded.
#define ITU_T_T35_PROVIDER_CODE_SAMSUNG
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
@ SEI_TYPE_CONTENT_LIGHT_LEVEL_INFO
Stereo 3D type: this structure describes how two videos are packed within a single video surface,...
int16_t comp_model_value[3][256][6]
@ SEI_TYPE_FILM_GRAIN_CHARACTERISTICS
enum AVFilmGrainParamsType type
Specifies the codec for which this structure is valid.
static int decode_registered_user_data_lcevc(HEVCSEILCEVC *s, GetByteContext *gb)
AVFrameSideData * av_frame_side_data_add(AVFrameSideData ***sd, int *nb_sd, enum AVFrameSideDataType type, AVBufferRef **buf, unsigned int flags)
Add a new side data entry to an array from an existing AVBufferRef.
static int decode_display_orientation(H2645SEIDisplayOrientation *h, GetBitContext *gb)