Lines Matching refs:p_Vid

49 static RK_S32 getDpbSize(H264dVideoCtx_t *p_Vid, H264_SPS_t *active_sps)  in getDpbSize()  argument
115 if (p_Vid->active_mvc_sps_flag && in getDpbSize()
116 … (p_Vid->profile_idc == H264_PROFILE_MVC_HIGH || p_Vid->profile_idc == H264_PROFILE_STEREO_HIGH)) { in getDpbSize()
117 num_views = p_Vid->active_subsps->num_views_minus1 + 1; in getDpbSize()
276 unmark_for_reference(p_Dpb->p_Vid->p_Dec, p_Dpb->fs_ref[i]); in mm_unmark_short_term_for_reference()
362 H264dVideoCtx_t *p_Vid = p_Dpb->p_Vid; in unmark_long_term_field_for_reference_by_frame_idx() local
366 curr_pic_num += (2 * p_Vid->max_frame_num); in unmark_long_term_field_for_reference_by_frame_idx()
549 unmark_for_reference(p_Dpb->p_Vid->p_Dec, p_Dpb->fs_ref[i]); in mm_unmark_all_short_term_for_reference()
580 unmark_for_reference(p_Dpb->p_Vid->p_Dec, p_Dpb->fs[i]); in sliding_window_memory_management()
660 INP_CHECK(ret, !p_Dpb->p_Vid); in remove_frame_from_dpb()
661 p_Dec = p_Dpb->p_Vid->p_Dec; in remove_frame_from_dpb()
781 static MPP_RET dpb_combine_field_yuv(H264dVideoCtx_t *p_Vid, H264_FrameStore_t *fs, RK_U8 combine_f… in dpb_combine_field_yuv() argument
786 fs->frame = alloc_storable_picture(p_Vid, FRAME); in dpb_combine_field_yuv()
844 static void write_picture(H264_StorePic_t *p, H264dVideoCtx_t *p_Vid) in write_picture() argument
848 H264dErrCtx_t *p_err = &p_Vid->p_Dec->errctx; in write_picture()
855 mpp_buf_slot_get_prop(p_Vid->p_Dec->frame_slots, p_mark->slot_idx, SLOT_FRAME_PTR, &mframe); in write_picture()
873 if (p_Vid->dpb_fast_out) in write_picture()
878 if (p_Vid->p_Dec->mvc_valid) { in write_picture()
887 match_mark = &p_Vid->p_Dec->dpb_mark[i]; in write_picture()
928 … mpp_buf_slot_set_flag(p_Vid->p_Dec->frame_slots, out_mark_list[i]->slot_idx, SLOT_QUEUE_USE); in write_picture()
929 … mpp_buf_slot_enqueue(p_Vid->p_Dec->frame_slots, out_mark_list[i]->slot_idx, QUEUE_DISPLAY); in write_picture()
931 p_Vid->p_Dec->last_frame_slot_idx = out_mark_list[i]->slot_idx; in write_picture()
937 mpp_buf_slot_set_flag(p_Vid->p_Dec->frame_slots, p_mark->slot_idx, SLOT_QUEUE_USE); in write_picture()
938 mpp_buf_slot_enqueue(p_Vid->p_Dec->frame_slots, p_mark->slot_idx, QUEUE_DISPLAY); in write_picture()
939 p_Vid->p_Dec->last_frame_slot_idx = p_mark->slot_idx; in write_picture()
945 static MPP_RET write_unpaired_field(H264dVideoCtx_t *p_Vid, H264_FrameStore_t *fs) in write_unpaired_field() argument
953 fs->bottom_field = alloc_storable_picture(p_Vid, BOTTOM_FIELD); in write_unpaired_field()
957 FUN_CHECK(ret = dpb_combine_field_yuv(p_Vid, fs, 0)); in write_unpaired_field()
961 write_picture(fs->frame, p_Vid); in write_unpaired_field()
966 fs->top_field = alloc_storable_picture(p_Vid, TOP_FIELD); in write_unpaired_field()
977 FUN_CHECK(ret = dpb_combine_field_yuv(p_Vid, fs, 0)); in write_unpaired_field()
981 write_picture(fs->frame, p_Vid); in write_unpaired_field()
990 static MPP_RET flush_direct_output(H264dVideoCtx_t *p_Vid) in flush_direct_output() argument
994 FUN_CHECK(ret = write_unpaired_field(p_Vid, &p_Vid->out_buffer)); in flush_direct_output()
995 free_storable_picture(p_Vid->p_Dec, p_Vid->out_buffer.frame); in flush_direct_output()
996 p_Vid->out_buffer.frame = NULL; in flush_direct_output()
997 free_storable_picture(p_Vid->p_Dec, p_Vid->out_buffer.top_field); in flush_direct_output()
998 p_Vid->out_buffer.top_field = NULL; in flush_direct_output()
999 free_storable_picture(p_Vid->p_Dec, p_Vid->out_buffer.bottom_field); in flush_direct_output()
1000 p_Vid->out_buffer.bottom_field = NULL; in flush_direct_output()
1001 p_Vid->out_buffer.is_used = 0; in flush_direct_output()
1008 static MPP_RET write_stored_frame(H264dVideoCtx_t *p_Vid, H264_DpbBuf_t *p_Dpb, H264_FrameStore_t *… in write_stored_frame() argument
1011 INP_CHECK(ret, !p_Vid); in write_stored_frame()
1014 FUN_CHECK(ret = flush_direct_output(p_Vid)); in write_stored_frame()
1017 FUN_CHECK(ret = write_unpaired_field(p_Vid, fs)); in write_stored_frame()
1018 if (fs->top_field) free_storable_picture(p_Vid->p_Dec, fs->top_field); in write_stored_frame()
1019 if (fs->bottom_field) free_storable_picture(p_Vid->p_Dec, fs->bottom_field); in write_stored_frame()
1024 write_picture(fs->frame, p_Vid); in write_stored_frame()
1040 H264dVideoCtx_t *p_Vid = p_Dpb->p_Vid; in output_one_frame_from_dpb() local
1046 FUN_CHECK(ret = write_stored_frame(p_Vid, p_Dpb, p_Dpb->fs[pos])); in output_one_frame_from_dpb()
1061 H264dVideoCtx_t *p_Vid = p_Dpb->p_Vid; in adaptive_memory_management() local
1063 p_Vid->last_has_mmco_5 = 0; in adaptive_memory_management()
1091 p_Vid->last_has_mmco_5 = 1; in adaptive_memory_management()
1107 if (p_Vid->last_has_mmco_5) { //!< similar IDR frame in adaptive_memory_management()
1136 FUN_CHECK(ret = flush_dpb(p_Vid->p_Dpb_layer[0], 1)); in adaptive_memory_management()
1138 FUN_CHECK(ret = flush_dpb(p_Vid->p_Dpb_layer[1], 2)); in adaptive_memory_management()
1146 static MPP_RET dpb_split_field(H264dVideoCtx_t *p_Vid, H264_FrameStore_t *fs) in dpb_split_field() argument
1154 fs_top = fs->top_field = alloc_storable_picture(p_Vid, TOP_FIELD); in dpb_split_field()
1155 fs_btm = fs->bottom_field = alloc_storable_picture(p_Vid, BOTTOM_FIELD); in dpb_split_field()
1219 mpp_mem_pool_put_f(p_Vid->pic_st, fs->top_field); in dpb_split_field()
1220 mpp_mem_pool_put_f(p_Vid->pic_st, fs->bottom_field); in dpb_split_field()
1226 static MPP_RET dpb_combine_field(H264dVideoCtx_t *p_Vid, H264_FrameStore_t *fs, RK_U8 combine_flag) in dpb_combine_field() argument
1230 FUN_CHECK(ret = dpb_combine_field_yuv(p_Vid, fs, combine_flag)); in dpb_combine_field()
1243 static MPP_RET direct_output(H264dVideoCtx_t *p_Vid, H264_DpbBuf_t *p_Dpb, H264_StorePic_t *p) in direct_output() argument
1247 memcpy(&p_Vid->old_pic, p, sizeof(H264_StorePic_t)); in direct_output()
1248 p_Vid->last_pic = &p_Vid->old_pic; in direct_output()
1251 FUN_CHECK(ret = flush_direct_output(p_Vid)); in direct_output()
1253 write_picture(p, p_Vid); in direct_output()
1255 free_storable_picture(p_Vid->p_Dec, p); in direct_output()
1257 p_Vid->out_buffer.is_used = 0; in direct_output()
1258 p_Vid->out_buffer.is_directout = 0; in direct_output()
1263 if (p_Vid->out_buffer.is_used & 1) { in direct_output()
1264 FUN_CHECK(ret = flush_direct_output(p_Vid)); in direct_output()
1266 p_Vid->out_buffer.top_field = p; in direct_output()
1267 p_Vid->out_buffer.is_used |= 1; in direct_output()
1268 p_Vid->out_buffer.frame_num = p->pic_num; in direct_output()
1269 p_Vid->out_buffer.is_directout = 1; in direct_output()
1270 p_Dpb->last_picture = &p_Vid->out_buffer; in direct_output()
1274 if (p_Vid->out_buffer.is_used & 2) { in direct_output()
1275 FUN_CHECK(ret = flush_direct_output(p_Vid)); in direct_output()
1277 p_Vid->out_buffer.bottom_field = p; in direct_output()
1278 p_Vid->out_buffer.is_used |= 2; in direct_output()
1279 p_Vid->out_buffer.frame_num = p->pic_num; in direct_output()
1280 p_Vid->out_buffer.is_directout = 1; in direct_output()
1281 p_Dpb->last_picture = &p_Vid->out_buffer; in direct_output()
1284 if (p_Vid->out_buffer.is_used == 3) { in direct_output()
1286 FUN_CHECK(ret = dpb_combine_field_yuv(p_Vid, &p_Vid->out_buffer, 0)); in direct_output()
1287 p_Vid->out_buffer.frame->view_id = p_Vid->out_buffer.view_id; in direct_output()
1289 write_picture(p_Vid->out_buffer.frame, p_Vid); in direct_output()
1290 free_storable_picture(p_Vid->p_Dec, p_Vid->out_buffer.frame); in direct_output()
1291 p_Vid->out_buffer.frame = NULL; in direct_output()
1292 free_storable_picture(p_Vid->p_Dec, p_Vid->out_buffer.top_field); in direct_output()
1293 p_Vid->out_buffer.top_field = NULL; in direct_output()
1294 free_storable_picture(p_Vid->p_Dec, p_Vid->out_buffer.bottom_field); in direct_output()
1295 p_Vid->out_buffer.bottom_field = NULL; in direct_output()
1296 p_Vid->out_buffer.is_used = 0; in direct_output()
1297 p_Vid->out_buffer.is_directout = 0; in direct_output()
1321 FUN_CHECK(ret = write_stored_frame(p_Dpb->p_Vid, p_Dpb, p_Dpb->fs[min_pos])); in output_dpb_normal()
1336 if ((p_Dpb->p_Vid->dpb_fast_out && is_i_frm)) { in output_dpb_fastplay()
1337 FUN_CHECK(ret = write_stored_frame(p_Dpb->p_Vid, p_Dpb, fs)); in output_dpb_fastplay()
1349 if (p_Dpb->p_Vid->dpb_fast_out && is_i_frm && !p_Dpb->p_Vid->dpb_first_fast_played) { in output_dpb_fastplay_once()
1350 FUN_CHECK(ret = write_stored_frame(p_Dpb->p_Vid, p_Dpb, fs)); in output_dpb_fastplay_once()
1351 p_Dpb->p_Vid->dpb_first_fast_played = 1; in output_dpb_fastplay_once()
1354 if (p_Dpb->p_Vid->dpb_fast_out && is_i_frm && p_Dpb->p_Vid->dpb_first_fast_played) { in output_dpb_fastplay_once()
1355 p_Dpb->p_Vid->dpb_fast_out = MPP_DISABLE_FAST_PLAY; in output_dpb_fastplay_once()
1371 H264dErrCtx_t *p_err = &p_Dpb->p_Vid->p_Dec->errctx; in scan_dpb_output()
1374 if (p_Dpb->p_Vid->p_Dec->cfg->base.fast_out) in scan_dpb_output()
1375 FUN_CHECK(ret = write_stored_frame(p_Dpb->p_Vid, p_Dpb, fs)); in scan_dpb_output()
1377 switch (p_Dpb->p_Vid->p_Dec->cfg->base.enable_fast_play) { in scan_dpb_output()
1434 H264dVideoCtx_t *p_Vid = p_Dpb->p_Vid; in store_picture_in_dpb() local
1440 mpp_buf_slot_set_flag(p_Vid->p_Dec->frame_slots, p->mem_mark->slot_idx, SLOT_CODEC_USE); in store_picture_in_dpb()
1445 p_Vid->last_has_mmco_5 = 0; in store_picture_in_dpb()
1446 p_Vid->last_pic_bottom_field = p->structure == BOTTOM_FIELD; in store_picture_in_dpb()
1457 FUN_CHECK(ret = direct_output(p_Vid, p_Dpb, p)); //!< output frame in store_picture_in_dpb()
1459 … FUN_CHECK(ret = insert_picture_in_dpb(p_Vid, p_Dpb->last_picture, p, 1)); //!< field_dpb_combine in store_picture_in_dpb()
1462 memcpy(&p_Vid->old_pic, p, sizeof(H264_StorePic_t)); in store_picture_in_dpb()
1463 p_Vid->last_pic = &p_Vid->old_pic; in store_picture_in_dpb()
1477 max_buf_size = p_Vid->p_Inp->max_buf_size; in store_picture_in_dpb()
1489 FUN_CHECK(ret = direct_output(p_Vid, p_Dpb, p)); //!< output frame in store_picture_in_dpb()
1496 unmark_for_reference(p_Vid->p_Dec, p_Dpb->fs[min_pos]); in store_picture_in_dpb()
1499 FUN_CHECK(ret = write_stored_frame(p_Vid, p_Dpb, p_Dpb->fs[min_pos])); in store_picture_in_dpb()
1510 FUN_CHECK(ret = insert_picture_in_dpb(p_Vid, p_Dpb->fs[p_Dpb->used_size], p, 0)); in store_picture_in_dpb()
1516 memcpy(&p_Vid->old_pic, p, sizeof(H264_StorePic_t)); in store_picture_in_dpb()
1517 p_Vid->last_pic = &p_Vid->old_pic; in store_picture_in_dpb()
1521 if (!p_Vid->p_Dec->mvc_valid) in store_picture_in_dpb()
1529 flush_one_dpb_mark(p_Vid->p_Dec, p->mem_mark); in store_picture_in_dpb()
1569 H264dVideoCtx_t *p_Vid = p_Dpb->p_Vid; in free_dpb() local
1573 free_frame_store(p_Vid->p_Dec, p_Dpb->fs[i]); in free_dpb()
1582 free_frame_store(p_Vid->p_Dec, p_Dpb->fs_ilref[i]); in free_dpb()
1590 if (p_Vid->no_ref_pic) { in free_dpb()
1591 free_storable_picture(p_Vid->p_Dec, p_Vid->no_ref_pic); in free_dpb()
1592 p_Vid->no_ref_pic = NULL; in free_dpb()
1653 H264dErrCtx_t *p_err = &p_Dpb->p_Vid->p_Dec->errctx; in idr_memory_management()
1690 free_frame_store(p_Dpb->p_Vid->p_Dec, p_Dpb->fs[i]); in idr_memory_management()
1703 MPP_RET insert_picture_in_dpb(H264dVideoCtx_t *p_Vid, H264_FrameStore_t *fs, H264_StorePic_t *p, RK… in insert_picture_in_dpb() argument
1724 FUN_CHECK(ret = dpb_split_field(p_Vid, fs)); in insert_picture_in_dpb()
1741 FUN_CHECK(ret = dpb_combine_field(p_Vid, fs, combine_flag)); in insert_picture_in_dpb()
1760 FUN_CHECK(ret = dpb_combine_field(p_Vid, fs, combine_flag)); in insert_picture_in_dpb()
1799 mpp_mem_pool_put_f(p_Dec->p_Vid->pic_st, p); in free_storable_picture()
1810 H264_StorePic_t *alloc_storable_picture(H264dVideoCtx_t *p_Vid, RK_S32 structure) in alloc_storable_picture() argument
1813 H264_StorePic_t *s = mpp_mem_pool_get_f(p_Vid->pic_st); in alloc_storable_picture()
1818 (void)p_Vid; in alloc_storable_picture()
1919 MPP_RET check_mvc_dpb(H264dVideoCtx_t *p_Vid, H264_DpbBuf_t *p_Dpb_layer_0, H264_DpbBuf_t* p_Dpb_l… in check_mvc_dpb() argument
1923 if (!p_Vid || !p_Dpb_layer_0 || !p_Dpb_layer_1 || !p_Dpb_layer_0->init_done) { in check_mvc_dpb()
1943 p_Vid->dpb_size[0] = p_Dpb_layer_0->size; in check_mvc_dpb()
1944 p_Vid->dpb_size[1] = p_Dpb_layer_1->size; in check_mvc_dpb()
1956 MPP_RET init_dpb(H264dVideoCtx_t *p_Vid, H264_DpbBuf_t *p_Dpb, RK_S32 type) // type=1 AVC type=2 M… in init_dpb() argument
1960 H264_SPS_t *active_sps = p_Vid->active_sps; in init_dpb()
1967 p_Dpb->p_Vid = p_Vid; in init_dpb()
1971 dpb_size = getDpbSize(p_Vid, active_sps); in init_dpb()
2010 if (!p_Vid->no_ref_pic) { in init_dpb()
2011 p_Vid->no_ref_pic = alloc_storable_picture(p_Vid, FRAME); in init_dpb()
2012 MEM_CHECK(ret, p_Vid->no_ref_pic); in init_dpb()
2013 p_Vid->no_ref_pic->top_field = p_Vid->no_ref_pic; in init_dpb()
2014 p_Vid->no_ref_pic->bottom_field = p_Vid->no_ref_pic; in init_dpb()
2015 p_Vid->no_ref_pic->frame = p_Vid->no_ref_pic; in init_dpb()
2019 p_Vid->last_has_mmco_5 = 0; in init_dpb()
2047 if (p_Dpb->fs[i] && p_Dpb->p_Vid) { in flush_dpb()
2049 unmark_for_reference(p_Dpb->p_Vid->p_Dec, p_Dpb->fs[i]); in flush_dpb()
2087 MPP_RET exit_picture(H264dVideoCtx_t *p_Vid, H264_StorePic_t **dec_pic) in exit_picture() argument
2092 if (!(*dec_pic) || !p_Vid->exit_picture_flag in exit_picture()
2093 || !p_Vid->have_outpicture_flag || !p_Vid->iNumOfSlicesDecoded) { in exit_picture()
2096 FUN_CHECK(ret = store_picture_in_dpb(p_Vid->p_Dpb_layer[(*dec_pic)->layer_id], *dec_pic)); in exit_picture()