28 const int *ref_count,
int slice_type_nos,
32 int luma_def, chroma_def;
42 for (list = 0; list < 2; list++) {
45 for (i = 0; i < ref_count[list]; i++) {
46 int luma_weight_flag, chroma_weight_flag;
49 if (luma_weight_flag) {
64 if (chroma_weight_flag) {
66 for (j = 0; j < 2; j++) {
77 for (j = 0; j < 2; j++) {
87 for (j = 0; j < 2; j++) {
104 int top_samples_available,
int left_samples_available)
106 static const int8_t top[12] = {
109 static const int8_t left[12] = {
114 if (!(top_samples_available & 0x8000)) {
115 for (i = 0; i < 4; i++) {
116 int status = top[pred_mode_cache[
scan8[0] + i]];
119 "top block unavailable for requested intra4x4 mode %d\n",
123 pred_mode_cache[scan8[0] + i] = status;
128 if ((left_samples_available & 0x8888) != 0x8888) {
129 static const int mask[4] = { 0x8000, 0x2000, 0x80, 0x20 };
130 for (i = 0; i < 4; i++)
131 if (!(left_samples_available & mask[i])) {
132 int status = left[pred_mode_cache[
scan8[0] + 8 * i]];
135 "left block unavailable for requested intra4x4 mode %d\n",
139 pred_mode_cache[scan8[0] + 8 * i] = status;
152 int left_samples_available,
153 int mode,
int is_chroma)
160 "out of range intra chroma pred mode\n");
164 if (!(top_samples_available & 0x8000)) {
168 "top block unavailable for requested intra mode\n");
173 if ((left_samples_available & 0x8080) != 0x8080) {
175 if (is_chroma && (left_samples_available & 0x8080)) {
178 (!(left_samples_available & 0x8000)) +
183 "left block unavailable for requested intra mode\n");
193 int slice_type_nos,
int picture_structure)
196 int num_ref_idx_active_override_flag, max_refs;
203 num_ref_idx_active_override_flag =
get_bits1(gb);
205 if (num_ref_idx_active_override_flag) {
207 if (ref_count[0] < 1)
211 if (ref_count[1] < 1)
222 ref_count[0] = ref_count[1] = 0;
225 max_refs = picture_structure ==
PICT_FRAME ? 16 : 32;
227 if (ref_count[0] > max_refs || ref_count[1] > max_refs)
230 *plist_count = list_count;
242 int picture_structure,
int nal_ref_idc)
267 int abs_frame_num, expected_delta_per_poc_cycle, expectedpoc;
275 if (nal_ref_idc == 0 && abs_frame_num > 0)
278 expected_delta_per_poc_cycle = 0;
283 if (abs_frame_num > 0) {
287 expectedpoc = poc_cycle_cnt * expected_delta_per_poc_cycle;
288 for (i = 0; i <= frame_num_in_poc_cycle; i++)
293 if (nal_ref_idc == 0)
296 field_poc[0] = expectedpoc + pc->
delta_poc[0];
312 pic_field_poc[0] = field_poc[0];
314 pic_field_poc[1] = field_poc[1];
315 *pic_poc =
FFMIN(pic_field_poc[0], pic_field_poc[1]);
321 int is_avc,
void *logctx)
330 for (i = 0; i < pkt.
nb_nals; i++) {
361 int err_recognition,
void *logctx)
370 int escaped_buf_size;
373 "SPS decoding failure, trying again after escaping the NAL\n");
387 bytestream2_peek_be24(&gbc) <= 3) {
388 bytestream2_put_be24(&pbc, 3);
391 bytestream2_put_byte(&pbc, bytestream2_get_byte(&gbc));
395 AV_WB16(escaped_buf, escaped_buf_size - 2);
407 int *is_avc,
int *nal_length_size,
408 int err_recognition,
void *logctx)
424 cnt = *(p + 5) & 0x1f;
426 for (i = 0; i < cnt; i++) {
428 if (p - data + nalsize > size)
433 "Decoding sps %d from avcC failed\n", i);
440 for (i = 0; i < cnt; i++) {
442 if (p - data + nalsize > size)
447 "Decoding pps %d from avcC failed\n", i);
453 *nal_length_size = (data[4] & 0x03) + 1;
int ff_h264_decode_picture_parameter_set(GetBitContext *gb, AVCodecContext *avctx, H264ParamSets *ps, int bit_length)
Decode PPS.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static int get_se_golomb(GetBitContext *gb)
read signed exp golomb code.
#define AV_LOG_WARNING
Something somehow does not look correct.
int luma_weight_flag[2]
7.4.3.2 luma_weight_lX_flag
static int decode_extradata_ps_mp4(const uint8_t *buf, int buf_size, H264ParamSets *ps, int err_recognition, void *logctx)
int chroma_weight[48][2][2][2]
int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps, const int *ref_count, int slice_type_nos, H264PredWeightTable *pwt)
#define FF_PROFILE_H264_INTRA
unsigned int ref_count[2]
num_ref_idx_l0/1_active_minus1 + 1
static av_always_inline void bytestream2_init_writer(PutByteContext *p, uint8_t *buf, int buf_size)
av_log(ac->avr, AV_LOG_TRACE, "%d samples - audio_convert: %s to %s (%s)\, len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt), use_generic ? ac->func_descr_generic :ac->func_descr)
int ff_h264_init_poc(int pic_field_poc[2], int *pic_poc, const SPS *sps, H264POCContext *pc, int picture_structure, int nal_ref_idc)
int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length, void *logctx, int is_nalff, int nal_length_size, enum AVCodecID codec_id)
Split an input packet into NAL units.
static av_always_inline void bytestream2_init(GetByteContext *g, const uint8_t *buf, int buf_size)
int size_bits
Size, in bits, of just the data, excluding the stop bit and any trailing padding. ...
#define FF_PROFILE_H264_HIGH_444_PREDICTIVE
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
#define FF_PROFILE_H264_BASELINE
int offset_for_non_ref_pic
int frame_num_offset
for POC type 2
int chroma_weight_flag[2]
7.4.3.2 chroma_weight_lX_flag
void ff_h2645_packet_uninit(H2645Packet *pkt)
Free all the allocated memory in the packet.
int ff_h264_decode_extradata(const uint8_t *data, int size, H264ParamSets *ps, int *is_avc, int *nal_length_size, int err_recognition, void *logctx)
#define PICT_BOTTOM_FIELD
bitstream reader API header.
#define AV_LOG_VERBOSE
Detailed information.
int ff_h264_check_intra4x4_pred_mode(int8_t *pred_mode_cache, void *logctx, int top_samples_available, int left_samples_available)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
static int decode_extradata_ps(const uint8_t *data, int size, H264ParamSets *ps, int is_avc, void *logctx)
int luma_weight[48][2][2]
H.264 common definitions.
H.264 parameter set handling.
int chroma_log2_weight_denom
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static int get_ue_golomb(GetBitContext *gb)
read unsigned exp golomb code.
int poc_type
pic_order_cnt_type
static const uint16_t mask[17]
int ff_h264_get_profile(const SPS *sps)
Compute profile from profile_idc and constraint_set?_flags.
static av_always_inline void bytestream2_skip(GetByteContext *g, unsigned int size)
#define ALZHEIMER_DC_L0T_PRED8x8
static av_always_inline unsigned int bytestream2_get_bytes_left(GetByteContext *g)
#define FF_PROFILE_H264_HIGH_422
static av_always_inline int bytestream2_tell_p(PutByteContext *p)
int offset_for_top_to_bottom_field
int prev_poc_msb
poc_msb of the last reference pic for POC type 0
int poc_cycle_length
num_ref_frames_in_pic_order_cnt_cycle
int luma_log2_weight_denom
H.264 / AVC / MPEG-4 part10 codec.
if(ac->has_optimized_func)
short offset_for_ref_frame[256]
static const uint8_t scan8[16 *3+3]
int constraint_set_flags
constraint_set[0-3]_flag
static unsigned int get_bits1(GetBitContext *s)
int prev_frame_num
frame_num of the last pic for POC type 1/2
int log2_max_poc_lsb
log2_max_pic_order_cnt_lsb_minus4
int prev_poc_lsb
poc_lsb of the last reference pic for POC type 0
int ff_h264_check_intra_pred_mode(void *logctx, int top_samples_available, int left_samples_available, int mode, int is_chroma)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
int log2_max_frame_num
log2_max_frame_num_minus4 + 4
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
int prev_frame_num_offset
for POC type 2
#define FF_PROFILE_H264_CONSTRAINED
H.264 decoder/parser shared code.
#define FF_PROFILE_H264_HIGH_10
int ff_h264_parse_ref_count(int *plist_count, int ref_count[2], GetBitContext *gb, const PPS *pps, int slice_type_nos, int picture_structure)
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
int ff_h264_decode_seq_parameter_set(GetBitContext *gb, AVCodecContext *avctx, H264ParamSets *ps)
Decode SPS.