35 #define AVERROR_PS_NOT_FOUND FFERRTAG(0xF8,'?','P','S')
38 1, 1, 1, 2, 2, 3, 3, 2, 3
79 unsigned int i, num_clock_ts;
89 for (i = 0; i < num_clock_ts; i++) {
91 unsigned int full_timestamp_flag;
96 full_timestamp_flag =
get_bits(gb, 1);
100 if (full_timestamp_flag) {
154 int user_data_type_code;
160 user_data_type_code =
get_bits(gb, 8);
161 if (user_data_type_code == 0x3) {
171 if (cc_count && size >= cc_count * 3) {
176 if (new_size > INT_MAX)
184 for (i = 0; i < cc_count; i++) {
195 for (i = 0; i < size - 1; i++)
203 void *logctx,
int size)
205 uint32_t country_code;
206 uint32_t user_identifier;
213 if (country_code == 0xFF) {
223 switch (user_identifier) {
224 case MKBETAG(
'D',
'T',
'G',
'1'):
226 case MKBETAG(
'G',
'A',
'9',
'4'):
238 void *logctx,
int size)
250 for (i = 0; i < size + 16; i++)
254 e = sscanf(user_data + 16,
"x264 - core %d", &build);
255 if (e == 1 && build > 0)
257 if (e == 1 && build == 1 && !strncmp(user_data+16,
"x264 - core 0000", 16))
284 if (sps_id > 31 || !ps->
sps_list[sps_id]) {
286 "non-existing SPS %d referenced in buffering period\n", sps_id);
293 for (sched_sel_idx = 0; sched_sel_idx < sps->
cpb_cnt; sched_sel_idx++) {
301 for (sched_sel_idx = 0; sched_sel_idx < sps->
cpb_cnt; sched_sel_idx++) {
472 return "checkerboard_rl";
474 return "checkerboard_lr";
477 return "col_interleaved_rl";
479 return "col_interleaved_lr";
482 return "row_interleaved_rl";
484 return "row_interleaved_lr";
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int recovery_frame_cnt
recovery_frame_cnt
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
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.
static int decode_recovery_point(H264SEIRecoveryPoint *h, GetBitContext *gb)
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.
static int get_bits_left(GetBitContext *gb)
H.264 parameter set handling.
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.
AVS_Value void * user_data
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
int arrangement_repetition_period
H264SEIUnregistered unregistered
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.
int initial_cpb_removal_delay[32]
Initial timestamps for CPBs.
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits.
int cpb_removal_delay
cpb_removal_delay in picture timing SEI message, see H.264 C.1.2
static int decode_picture_timing(H264SEIPictureTiming *h, GetBitContext *gb, const H264ParamSets *ps, void *logctx)
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
int av_reallocp(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory through a pointer to a pointer.
Libavcodec external API header.
static int get_ue_golomb_31(GetBitContext *gb)
read unsigned exp golomb code, constraint to a max of 31.
int dpb_output_delay_length
dpb_output_delay_length_minus1 + 1
uint8_t * data
The data buffer.
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 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 pic_struct_present_flag
static int decode_frame_packing_arrangement(H264SEIFramePacking *h, GetBitContext *gb)
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
int log2_max_frame_num
log2_max_frame_num_minus4 + 4
H264SEIFramePacking frame_packing
#define MKBETAG(a, b, c, d)
static const uint8_t * align_get_bits(GetBitContext *s)
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)