Lines Matching refs:sl
135 static void h264_initialise_ref_list(H264Context *h, H264SliceContext *sl) in h264_initialise_ref_list() argument
140 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { in h264_initialise_ref_list()
155 len = build_def_list(sl->ref_list[list], FF_ARRAY_ELEMS(sl->ref_list[0]), in h264_initialise_ref_list()
157 len += build_def_list(sl->ref_list[list] + len, in h264_initialise_ref_list()
158 FF_ARRAY_ELEMS(sl->ref_list[0]) - len, in h264_initialise_ref_list()
162 if (len < sl->ref_count[list]) in h264_initialise_ref_list()
163 memset(&sl->ref_list[list][len], 0, sizeof(H264Ref) * (sl->ref_count[list] - len)); in h264_initialise_ref_list()
169 sl->ref_list[0][i].parent->f->buf[0]->buffer == in h264_initialise_ref_list()
170 sl->ref_list[1][i].parent->f->buf[0]->buffer; i++); in h264_initialise_ref_list()
172 FFSWAP(H264Ref, sl->ref_list[1][0], sl->ref_list[1][1]); in h264_initialise_ref_list()
176 len = build_def_list(sl->ref_list[0], FF_ARRAY_ELEMS(sl->ref_list[0]), in h264_initialise_ref_list()
178 len += build_def_list(sl->ref_list[0] + len, in h264_initialise_ref_list()
179 FF_ARRAY_ELEMS(sl->ref_list[0]) - len, in h264_initialise_ref_list()
183 if (len < sl->ref_count[0]) in h264_initialise_ref_list()
184 memset(&sl->ref_list[0][len], 0, sizeof(H264Ref) * (sl->ref_count[0] - len)); in h264_initialise_ref_list()
187 for (i = 0; i < sl->ref_count[0]; i++) { in h264_initialise_ref_list()
189 … (sl->ref_list[0][i].parent ? (sl->ref_list[0][i].parent->long_ref ? "LT" : "ST") : "??"), in h264_initialise_ref_list()
190 sl->ref_list[0][i].pic_id, in h264_initialise_ref_list()
191 sl->ref_list[0][i].data[0]); in h264_initialise_ref_list()
193 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { in h264_initialise_ref_list()
194 for (i = 0; i < sl->ref_count[1]; i++) { in h264_initialise_ref_list()
196 … (sl->ref_list[1][i].parent ? (sl->ref_list[1][i].parent->long_ref ? "LT" : "ST") : "??"), in h264_initialise_ref_list()
197 sl->ref_list[1][i].pic_id, in h264_initialise_ref_list()
198 sl->ref_list[1][i].data[0]); in h264_initialise_ref_list()
203 for (j = 0; j<1+(sl->slice_type_nos == AV_PICTURE_TYPE_B); j++) { in h264_initialise_ref_list()
204 for (i = 0; i < sl->ref_count[j]; i++) { in h264_initialise_ref_list()
205 if (sl->ref_list[j][i].parent) { in h264_initialise_ref_list()
206 if (mismatches_ref(h, sl->ref_list[j][i].parent)) { in h264_initialise_ref_list()
208 memset(&sl->ref_list[j][i], 0, sizeof(sl->ref_list[j][i])); in h264_initialise_ref_list()
213 for (i = 0; i < sl->list_count; i++) in h264_initialise_ref_list()
214 h->default_ref[i] = sl->ref_list[i][0]; in h264_initialise_ref_list()
274 static void h264_fill_mbaff_ref_list(H264SliceContext *sl) in h264_fill_mbaff_ref_list() argument
277 for (list = 0; list < sl->list_count; list++) { in h264_fill_mbaff_ref_list()
278 for (i = 0; i < sl->ref_count[list]; i++) { in h264_fill_mbaff_ref_list()
279 H264Ref *frame = &sl->ref_list[list][i]; in h264_fill_mbaff_ref_list()
280 H264Ref *field = &sl->ref_list[list][16 + 2 * i]; in h264_fill_mbaff_ref_list()
299 int ff_h264_build_ref_list(H264Context *h, H264SliceContext *sl) in ff_h264_build_ref_list() argument
306 h264_initialise_ref_list(h, sl); in ff_h264_build_ref_list()
308 for (list = 0; list < sl->list_count; list++) { in ff_h264_build_ref_list()
309 int pred = sl->curr_pic_num; in ff_h264_build_ref_list()
311 for (index = 0; index < sl->nb_ref_modifications[list]; index++) { in ff_h264_build_ref_list()
312 unsigned int modification_of_pic_nums_idc = sl->ref_modifications[list][index].op; in ff_h264_build_ref_list()
313 unsigned int val = sl->ref_modifications[list][index].val; in ff_h264_build_ref_list()
324 if (abs_diff_pic_num > sl->max_pic_num) { in ff_h264_build_ref_list()
334 pred &= sl->max_pic_num - 1; in ff_h264_build_ref_list()
381 memset(&sl->ref_list[list][index], 0, sizeof(sl->ref_list[0][0])); // FIXME in ff_h264_build_ref_list()
383 for (i = index; i + 1 < sl->ref_count[list]; i++) { in ff_h264_build_ref_list()
384 if (sl->ref_list[list][i].parent && in ff_h264_build_ref_list()
385 ref->long_ref == sl->ref_list[list][i].parent->long_ref && in ff_h264_build_ref_list()
386 ref->pic_id == sl->ref_list[list][i].pic_id) in ff_h264_build_ref_list()
390 sl->ref_list[list][i] = sl->ref_list[list][i - 1]; in ff_h264_build_ref_list()
392 ref_from_h264pic(&sl->ref_list[list][index], ref); in ff_h264_build_ref_list()
394 pic_as_field(&sl->ref_list[list][index], pic_structure); in ff_h264_build_ref_list()
399 for (list = 0; list < sl->list_count; list++) { in ff_h264_build_ref_list()
400 for (index = 0; index < sl->ref_count[list]; index++) { in ff_h264_build_ref_list()
401 if ( !sl->ref_list[list][index].parent in ff_h264_build_ref_list()
402 || (!FIELD_PICTURE(h) && (sl->ref_list[list][index].reference&3) != 3)) { in ff_h264_build_ref_list()
409 sl->ref_list[list][index] = h->default_ref[list]; in ff_h264_build_ref_list()
413 av_assert0(av_buffer_get_ref_count(sl->ref_list[list][index].parent->f->buf[0]) > 0); in ff_h264_build_ref_list()
418 h264_fill_mbaff_ref_list(sl); in ff_h264_build_ref_list()
423 int ff_h264_decode_ref_pic_list_reordering(H264SliceContext *sl, void *logctx) in ff_h264_decode_ref_pic_list_reordering() argument
427 sl->nb_ref_modifications[0] = 0; in ff_h264_decode_ref_pic_list_reordering()
428 sl->nb_ref_modifications[1] = 0; in ff_h264_decode_ref_pic_list_reordering()
430 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_ref_pic_list_reordering()
431 if (!get_bits1(&sl->gb)) // ref_pic_list_modification_flag_l[01] in ff_h264_decode_ref_pic_list_reordering()
435 unsigned int op = get_ue_golomb_31(&sl->gb); in ff_h264_decode_ref_pic_list_reordering()
440 if (index >= sl->ref_count[list]) { in ff_h264_decode_ref_pic_list_reordering()
449 sl->ref_modifications[list][index].val = get_ue_golomb_long(&sl->gb); in ff_h264_decode_ref_pic_list_reordering()
450 sl->ref_modifications[list][index].op = op; in ff_h264_decode_ref_pic_list_reordering()
451 sl->nb_ref_modifications[list]++; in ff_h264_decode_ref_pic_list_reordering()
834 int ff_h264_decode_ref_pic_marking(H264SliceContext *sl, GetBitContext *gb, in ff_h264_decode_ref_pic_marking() argument
838 MMCO *mmco = sl->mmco; in ff_h264_decode_ref_pic_marking()
848 sl->explicit_ref_marking = 1; in ff_h264_decode_ref_pic_marking()
850 sl->explicit_ref_marking = get_bits1(gb); in ff_h264_decode_ref_pic_marking()
851 if (sl->explicit_ref_marking) { in ff_h264_decode_ref_pic_marking()
858 (sl->curr_pic_num - get_ue_golomb_long(gb) - 1) & in ff_h264_decode_ref_pic_marking()
859 (sl->max_pic_num - 1); in ff_h264_decode_ref_pic_marking()
867 !(opcode == MMCO_LONG2UNUSED && FIELD_PICTURE(sl)))) { in ff_h264_decode_ref_pic_marking()
871 sl->nb_mmco = i; in ff_h264_decode_ref_pic_marking()
881 sl->nb_mmco = i; in ff_h264_decode_ref_pic_marking()
891 sl->nb_mmco = nb_mmco; in ff_h264_decode_ref_pic_marking()