fix[av1d_parser]: fix fmt error for 10bit HDR source

Signed-off-by: Chandler Chen <chandler.chen@rock-chips.com>
Change-Id: I52e09f11ee30eb02fb8f543648ccf8d8483c73f8
This commit is contained in:
Chandler Chen
2024-04-10 11:11:50 +08:00
parent 7734ac55d7
commit 3946eb2a6e

View File

@@ -773,9 +773,6 @@ static MPP_RET get_current_frame(Av1CodecContext *ctx)
mpp_frame_set_discard(frame->f, 0); mpp_frame_set_discard(frame->f, 0);
mpp_frame_set_pts(frame->f, s->pts); mpp_frame_set_pts(frame->f, s->pts);
if (s->is_hdr)
ctx->pix_fmt |= MPP_FRAME_HDR;
mpp_frame_set_color_trc(frame->f, ctx->color_trc); mpp_frame_set_color_trc(frame->f, ctx->color_trc);
mpp_frame_set_color_primaries(frame->f, ctx->color_primaries); mpp_frame_set_color_primaries(frame->f, ctx->color_primaries);
mpp_frame_set_colorspace(frame->f, ctx->colorspace); mpp_frame_set_colorspace(frame->f, ctx->colorspace);
@@ -787,20 +784,25 @@ static MPP_RET get_current_frame(Av1CodecContext *ctx)
if (MPP_FRAME_FMT_IS_FBC(s->cfg->base.out_fmt)) { if (MPP_FRAME_FMT_IS_FBC(s->cfg->base.out_fmt)) {
mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, hor_align_16); mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, hor_align_16);
if (s->bit_depth == 10) { if (s->bit_depth == 10) {
if (ctx->pix_fmt == MPP_FMT_YUV420SP || ctx->pix_fmt == MPP_FMT_YUV420SP_10BIT) if ((ctx->pix_fmt & MPP_FRAME_FMT_MASK) == MPP_FMT_YUV420SP ||
(ctx->pix_fmt & MPP_FRAME_FMT_MASK) == MPP_FMT_YUV420SP_10BIT)
ctx->pix_fmt = MPP_FMT_YUV420SP_10BIT; ctx->pix_fmt = MPP_FMT_YUV420SP_10BIT;
else else
mpp_err("422p 10bit no support"); mpp_err("422p 10bit no support");
} }
mpp_frame_set_fmt(frame->f, ctx->pix_fmt | ((s->cfg->base.out_fmt & (MPP_FRAME_FBC_MASK)))); ctx->pix_fmt |= s->cfg->base.out_fmt & (MPP_FRAME_FBC_MASK);
mpp_frame_set_offset_x(frame->f, 0); mpp_frame_set_offset_x(frame->f, 0);
mpp_frame_set_offset_y(frame->f, 0); mpp_frame_set_offset_y(frame->f, 0);
mpp_frame_set_ver_stride(frame->f, MPP_ALIGN(ctx->height, 8) + 28); mpp_frame_set_ver_stride(frame->f, MPP_ALIGN(ctx->height, 8) + 28);
} else if (MPP_FRAME_FMT_IS_TILE(s->cfg->base.out_fmt)) { } else if (MPP_FRAME_FMT_IS_TILE(s->cfg->base.out_fmt)) {
mpp_frame_set_fmt(frame->f, ctx->pix_fmt | ((s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG)))); ctx->pix_fmt |= s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG);
} else }
mpp_frame_set_fmt(frame->f, ctx->pix_fmt);
if (s->is_hdr)
ctx->pix_fmt |= MPP_FRAME_HDR;
mpp_frame_set_fmt(frame->f, ctx->pix_fmt);
if (s->cfg->base.enable_thumbnail && s->hw_info && s->hw_info->cap_down_scale) if (s->cfg->base.enable_thumbnail && s->hw_info && s->hw_info->cap_down_scale)
mpp_frame_set_thumbnail_en(frame->f, 1); mpp_frame_set_thumbnail_en(frame->f, 1);