35 #define AVERROR_PS_NOT_FOUND FFERRTAG(0xF8,'?','P','S') 38 1, 1, 1, 2, 2, 3, 3, 2, 3
70 unsigned int i, num_clock_ts;
80 for (i = 0; i < num_clock_ts; i++) {
83 unsigned int full_timestamp_flag;
84 unsigned int counting_type, cnt_dropped_flag;
88 full_timestamp_flag =
get_bits(&gb, 1);
91 if (cnt_dropped_flag && counting_type > 1 && counting_type < 7)
94 if (full_timestamp_flag) {
129 int size = (size_bits + 7) / 8;
135 if (size >
sizeof(h->
payload)) {
173 int user_data_type_code;
179 user_data_type_code =
get_bits(gb, 8);
180 if (user_data_type_code == 0x3) {
190 if (cc_count && size >= cc_count * 3) {
192 const uint64_t new_size = (old_size + cc_count
196 if (new_size > INT_MAX)
205 for (i = 0; i < cc_count; i++) {
216 for (i = 0; i < size - 1; i++)
224 void *logctx,
int size)
226 uint32_t country_code;
227 uint32_t user_identifier;
234 if (country_code == 0xFF) {
244 switch (user_identifier) {
245 case MKBETAG(
'D',
'T',
'G',
'1'):
247 case MKBETAG(
'G',
'A',
'9',
'4'):
259 void *logctx,
int size)
264 if (size < 16 || size >= INT_MAX - 1)
271 for (i = 0; i <
size; i++)
275 e = sscanf(user_data + 16,
"x264 - core %d", &build);
276 if (e == 1 && build > 0)
278 if (e == 1 && build == 1 && !strncmp(user_data+16,
"x264 - core 0000", 16))
290 av_log(logctx,
AV_LOG_ERROR,
"recovery_frame_cnt %u is out of range\n", recovery_frame_cnt);
311 if (sps_id > 31 || !ps->
sps_list[sps_id]) {
313 "non-existing SPS %d referenced in buffering period\n", sps_id);
320 for (sched_sel_idx = 0; sched_sel_idx < sps->
cpb_cnt; sched_sel_idx++) {
328 for (sched_sel_idx = 0; sched_sel_idx < sps->
cpb_cnt; sched_sel_idx++) {
504 return "checkerboard_rl";
506 return "checkerboard_lr";
509 return "col_interleaved_rl";
511 return "col_interleaved_lr";
514 return "row_interleaved_rl";
516 return "row_interleaved_lr";
static int decode_picture_timing(H264SEIPictureTiming *h, GetBitContext *gb, void *logctx)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
void av_buffer_unref(AVBufferRef **buf)
Free a given reference and automatically free the buffer if there are no more references to it...
int recovery_frame_cnt
recovery_frame_cnt
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
#define AV_LOG_WARNING
Something somehow does not look correct.
AVBufferRef * sps_list[MAX_SPS_COUNT]
static void skip_bits_long(GetBitContext *s, int n)
Skips the specified number of bits.
H264SEIAlternativeTransfer alternative_transfer
void ff_h264_sei_uninit(H264SEIContext *h)
Reset SEI values at the beginning of the frame.
H264SEIDisplayOrientation display_orientation
int current_frame_is_frame0_flag
H264SEIGreenMetaData green_metadata
const char * ff_h264_sei_stereo_mode(const H264SEIFramePacking *h)
Get stereo_mode string from the h264 frame_packing_arrangement.
int ff_h264_sei_process_picture_timing(H264SEIPictureTiming *h, const SPS *sps, void *logctx)
Parse the contents of a picture timing message given an active SPS.
static int decode_unregistered_user_data(H264SEIUnregistered *h, GetBitContext *gb, void *logctx, int size)
static int get_bits_count(const GetBitContext *s)
bitstream reader API header.
int timecode_cnt
Number of timecode in use.
static int get_bits_left(GetBitContext *gb)
H.264 parameter set handling.
#define i(width, name, range_min, range_max)
buffering period (H.264, D.1.1)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int preferred_transfer_characteristics
H264_SEI_FpaType arrangement_type
int present
Buffering period SEI flag.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
int arrangement_repetition_period
H264SEIUnregistered unregistered
int av_buffer_realloc(AVBufferRef **pbuf, int size)
Reallocate a given buffer.
static int decode_registered_user_data_afd(H264SEIAFD *h, GetBitContext *gb, int size)
uint8_t active_format_description
static int decode_display_orientation(H264SEIDisplayOrientation *h, GetBitContext *gb)
H264_SEI_PicStructType pic_struct
int initial_cpb_removal_delay_length
initial_cpb_removal_delay_length_minus1 + 1
int ct_type
Bit set of clock types for fields/frames in picture timing SEI message.
static int FUNC() user_data(CodedBitstreamContext *ctx, RWContext *rw, MPEG2RawUserData *current)
int initial_cpb_removal_delay[32]
Initial timestamps for CPBs.
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits.
static int decode_recovery_point(H264SEIRecoveryPoint *h, GetBitContext *gb, void *logctx)
int cpb_removal_delay
cpb_removal_delay in picture timing SEI message, see H.264 C.1.2
int quincunx_sampling_flag
static unsigned get_ue_golomb_long(GetBitContext *gb)
Read an unsigned Exp-Golomb code in the range 0 to UINT32_MAX-1.
int vcl_hrd_parameters_present_flag
Libavcodec external API header.
static int get_ue_golomb_31(GetBitContext *gb)
read unsigned exp golomb code, constraint to a max of 31.
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
int dpb_output_delay_length
dpb_output_delay_length_minus1 + 1
uint8_t * data
The data buffer.
H264SEITimeCode timecode[3]
Maximum three timecodes in a pic_timing SEI.
H264SEIA53Caption a53_caption
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
static int decode_alternative_transfer(H264SEIAlternativeTransfer *h, GetBitContext *gb)
int content_interpretation_type
H264SEIBufferingPeriod buffering_period
static int FUNC() sps(CodedBitstreamContext *ctx, RWContext *rw, H264RawSPS *current)
recovery point (frame # to decoder sync)
#define AVERROR_PS_NOT_FOUND
registered user data as specified by Rec. ITU-T T.35
H264SEIPictureTiming picture_timing
H264SEIRecoveryPoint recovery_point
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits.
static const uint8_t sei_num_clock_ts_table[9]
int size
Size of data in bytes.
int pic_struct_present_flag
static int decode_frame_packing_arrangement(H264SEIFramePacking *h, GetBitContext *gb)
#define MAX_LOG2_MAX_FRAME_NUM
int anticlockwise_rotation
common internal api header.
int dpb_output_delay
dpb_output_delay in picture timing SEI message, see H.264 C.2.2
int nal_hrd_parameters_present_flag
H264SEIFramePacking frame_packing
#define MKBETAG(a, b, c, d)
int cpb_cnt
See H.264 E.1.2.
int ff_h264_sei_decode(H264SEIContext *h, GetBitContext *gb, const H264ParamSets *ps, void *logctx)
static int decode_registered_user_data(H264SEIContext *h, GetBitContext *gb, void *logctx, int size)
int cpb_removal_delay_length
cpb_removal_delay_length_minus1 + 1
static int decode_green_metadata(H264SEIGreenMetaData *h, GetBitContext *gb)
static int decode_registered_user_data_closed_caption(H264SEIA53Caption *h, GetBitContext *gb, void *logctx, int size)
int arrangement_cancel_flag
is previous arrangement canceled, -1 if never received
frame packing arrangement
static int decode_buffering_period(H264SEIBufferingPeriod *h, GetBitContext *gb, const H264ParamSets *ps, void *logctx)