diff --git a/mpp/codec/dec/av1/av1d_parser.c b/mpp/codec/dec/av1/av1d_parser.c index c4ecea10..de7417d1 100644 --- a/mpp/codec/dec/av1/av1d_parser.c +++ b/mpp/codec/dec/av1/av1d_parser.c @@ -773,9 +773,6 @@ static MPP_RET get_current_frame(Av1CodecContext *ctx) mpp_frame_set_discard(frame->f, 0); 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_primaries(frame->f, ctx->color_primaries); 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)) { mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, hor_align_16); 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; else 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_y(frame->f, 0); 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)) { - mpp_frame_set_fmt(frame->f, ctx->pix_fmt | ((s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG)))); - } else - mpp_frame_set_fmt(frame->f, ctx->pix_fmt); + ctx->pix_fmt |= s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG); + } + + 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) mpp_frame_set_thumbnail_en(frame->f, 1);