[h264d]: use impl's variable instead of mpp_frame_xx

Change-Id: I8c033940512bd00c9c65478bc3b47f47fbb63ada
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
This commit is contained in:
Ding Wei
2021-05-10 10:30:51 +08:00
parent 60ffcb9375
commit b6e11a5aae

View File

@@ -22,6 +22,7 @@
#include <string.h> #include <string.h>
#include "mpp_mem.h" #include "mpp_mem.h"
#include "mpp_frame_impl.h"
#include "h264d_global.h" #include "h264d_global.h"
#include "h264d_init.h" #include "h264d_init.h"
@@ -413,10 +414,10 @@ static MPP_RET dpb_mark_malloc(H264dVideoCtx_t *p_Vid, H264_StorePic_t *dec_pic)
cur_mark->out_flag = 1; cur_mark->out_flag = 1;
{ {
MppFrame mframe = p_Dec->curframe;
RK_U32 hor_stride, ver_stride; RK_U32 hor_stride, ver_stride;
MppFrameFormat fmt = MPP_FMT_YUV_BUTT; MppFrameFormat fmt = MPP_FMT_YUV_BUTT;
MppFrameFormat out_fmt = p_Dec->cfg->base.out_fmt; MppFrameFormat out_fmt = p_Dec->cfg->base.out_fmt;
MppFrameImpl *impl = (MppFrameImpl *)p_Dec->curframe;
if ((H264_CHROMA_420 == p_Vid->yuv_format) && (8 == p_Vid->bit_depth_luma)) { if ((H264_CHROMA_420 == p_Vid->yuv_format) && (8 == p_Vid->bit_depth_luma)) {
fmt = MPP_FMT_YUV420SP; fmt = MPP_FMT_YUV420SP;
@@ -434,37 +435,34 @@ static MPP_RET dpb_mark_malloc(H264dVideoCtx_t *p_Vid, H264_StorePic_t *dec_pic)
/* field mode can not use FBC */ /* field mode can not use FBC */
if (p_Vid->frame_mbs_only_flag) { if (p_Vid->frame_mbs_only_flag) {
mpp_slots_set_prop(p_Dec->frame_slots, SLOTS_HOR_ALIGN, hor_align_64); mpp_slots_set_prop(p_Dec->frame_slots, SLOTS_HOR_ALIGN, hor_align_64);
mpp_frame_set_offset_x(mframe, 0); impl->offset_x = 0;
mpp_frame_set_offset_y(mframe, 4); impl->offset_y = 4;
fmt |= (out_fmt & MPP_FRAME_FBC_MASK); fmt |= (out_fmt & MPP_FRAME_FBC_MASK);
} }
p_Dec->cfg->base.out_fmt = fmt; p_Dec->cfg->base.out_fmt = fmt;
} }
mpp_frame_set_fmt(mframe, fmt); impl->fmt = fmt;
hor_stride = MPP_ALIGN(p_Vid->width * p_Vid->bit_depth_luma, 8) / 8; hor_stride = MPP_ALIGN(p_Vid->width * p_Vid->bit_depth_luma, 8) / 8;
ver_stride = p_Vid->height; ver_stride = p_Vid->height;
/* Before cropping */ /* Before cropping */
mpp_frame_set_hor_stride(mframe, hor_stride); impl->hor_stride = hor_stride;
mpp_frame_set_ver_stride(mframe, ver_stride); impl->ver_stride = ver_stride;
/* After cropped */ /* After cropped */
mpp_frame_set_width(mframe, p_Vid->width_after_crop); impl->width = p_Vid->width_after_crop;
mpp_frame_set_height(mframe, p_Vid->height_after_crop); impl->height = p_Vid->height_after_crop;
mpp_frame_set_pts(mframe, p_Vid->p_Cur->last_pts); impl->pts = p_Vid->p_Cur->last_pts;
mpp_frame_set_dts(mframe, p_Vid->p_Cur->last_dts); impl->dts = p_Vid->p_Cur->last_dts;
/* Setting the interlace mode for the picture */ /* Setting the interlace mode for the picture */
switch (structure) { switch (structure) {
case FRAME: case FRAME:
mpp_frame_set_mode(mframe, MPP_FRAME_FLAG_FRAME); impl->mode = MPP_FRAME_FLAG_FRAME;
break; break;
case TOP_FIELD: case TOP_FIELD:
mpp_frame_set_mode(mframe, MPP_FRAME_FLAG_PAIRED_FIELD impl->mode = MPP_FRAME_FLAG_PAIRED_FIELD | MPP_FRAME_FLAG_TOP_FIRST;
| MPP_FRAME_FLAG_TOP_FIRST);
break; break;
case BOTTOM_FIELD: case BOTTOM_FIELD:
mpp_frame_set_mode(mframe, MPP_FRAME_FLAG_PAIRED_FIELD impl->mode = MPP_FRAME_FLAG_PAIRED_FIELD | MPP_FRAME_FLAG_BOT_FIRST;
| MPP_FRAME_FLAG_BOT_FIRST);
break; break;
default: default:
H264D_DBG(H264D_DBG_FIELD_PAIRED, "Unknown interlace mode"); H264D_DBG(H264D_DBG_FIELD_PAIRED, "Unknown interlace mode");
@@ -474,7 +472,7 @@ static MPP_RET dpb_mark_malloc(H264dVideoCtx_t *p_Vid, H264_StorePic_t *dec_pic)
if (p_Dec->svc_valid) { if (p_Dec->svc_valid) {
struct h264_slice_t *slice = &p_Dec->p_Cur->slice; struct h264_slice_t *slice = &p_Dec->p_Cur->slice;
struct h264_nalu_svc_ext_t *svcExt = &slice->svcExt; struct h264_nalu_svc_ext_t *svcExt = &slice->svcExt;
MppMeta meta = mpp_frame_get_meta(mframe); MppMeta meta = impl->meta;
mpp_assert(svcExt->valid); mpp_assert(svcExt->valid);
mpp_meta_set_s32(meta, KEY_TEMPORAL_ID, svcExt->temporal_id); mpp_meta_set_s32(meta, KEY_TEMPORAL_ID, svcExt->temporal_id);
@@ -486,12 +484,10 @@ static MPP_RET dpb_mark_malloc(H264dVideoCtx_t *p_Vid, H264_StorePic_t *dec_pic)
p_Vid->p_Cur->sei.pic_timing.pic_struct != 0) { p_Vid->p_Cur->sei.pic_timing.pic_struct != 0) {
if (p_Vid->p_Cur->sei.pic_timing.pic_struct == 3 || if (p_Vid->p_Cur->sei.pic_timing.pic_struct == 3 ||
p_Vid->p_Cur->sei.pic_timing.pic_struct == 5) p_Vid->p_Cur->sei.pic_timing.pic_struct == 5)
mpp_frame_set_mode(mframe, MPP_FRAME_FLAG_PAIRED_FIELD impl->mode = MPP_FRAME_FLAG_PAIRED_FIELD | MPP_FRAME_FLAG_TOP_FIRST;
| MPP_FRAME_FLAG_TOP_FIRST);
if (p_Vid->p_Cur->sei.pic_timing.pic_struct == 4 || if (p_Vid->p_Cur->sei.pic_timing.pic_struct == 4 ||
p_Vid->p_Cur->sei.pic_timing.pic_struct == 6) p_Vid->p_Cur->sei.pic_timing.pic_struct == 6)
mpp_frame_set_mode(mframe, MPP_FRAME_FLAG_PAIRED_FIELD impl->mode = MPP_FRAME_FLAG_PAIRED_FIELD | MPP_FRAME_FLAG_BOT_FIRST;
| MPP_FRAME_FLAG_BOT_FIRST);
} }
//!< set display parameter //!< set display parameter
@@ -499,21 +495,21 @@ static MPP_RET dpb_mark_malloc(H264dVideoCtx_t *p_Vid, H264_StorePic_t *dec_pic)
H264_VUI_t *p = &p_Vid->active_sps->vui_seq_parameters; H264_VUI_t *p = &p_Vid->active_sps->vui_seq_parameters;
if (p->video_signal_type_present_flag && p->video_full_range_flag) if (p->video_signal_type_present_flag && p->video_full_range_flag)
mpp_frame_set_color_range(mframe, MPP_FRAME_RANGE_JPEG); impl->color_range = MPP_FRAME_RANGE_JPEG;
else else
mpp_frame_set_color_range(mframe, MPP_FRAME_RANGE_MPEG); impl->color_range = MPP_FRAME_RANGE_MPEG;
if (p->colour_description_present_flag) { if (p->colour_description_present_flag) {
mpp_frame_set_color_primaries(mframe, p->colour_primaries); impl->color_primaries = p->colour_primaries;
mpp_frame_set_color_trc(mframe, p->transfer_characteristics); impl->color_trc = p->transfer_characteristics;
mpp_frame_set_colorspace(mframe, p->matrix_coefficients); impl->colorspace = p->matrix_coefficients;
} else { } else {
mpp_frame_set_color_primaries(mframe, MPP_FRAME_PRI_UNSPECIFIED); impl->color_primaries = MPP_FRAME_PRI_UNSPECIFIED;
mpp_frame_set_color_trc(mframe, MPP_FRAME_TRC_UNSPECIFIED); impl->color_trc = MPP_FRAME_TRC_UNSPECIFIED;
mpp_frame_set_colorspace(mframe, MPP_FRAME_SPC_UNSPECIFIED); impl->colorspace = MPP_FRAME_SPC_UNSPECIFIED;
} }
} }
mpp_buf_slot_set_prop(p_Dec->frame_slots, cur_mark->slot_idx, SLOT_FRAME, mframe); mpp_buf_slot_set_prop(p_Dec->frame_slots, cur_mark->slot_idx, SLOT_FRAME, p_Dec->curframe);
mpp_buf_slot_get_prop(p_Dec->frame_slots, cur_mark->slot_idx, SLOT_FRAME_PTR, &cur_mark->mframe); mpp_buf_slot_get_prop(p_Dec->frame_slots, cur_mark->slot_idx, SLOT_FRAME_PTR, &cur_mark->mframe);
} }