diff --git a/mpp/codec/dec/av1/av1d_parser.c b/mpp/codec/dec/av1/av1d_parser.c index 868629b9e..feec3ce67 100644 --- a/mpp/codec/dec/av1/av1d_parser.c +++ b/mpp/codec/dec/av1/av1d_parser.c @@ -782,6 +782,8 @@ static MPP_RET get_current_frame(Av1CodecContext *ctx) mpp_frame_set_content_light(frame->f, s->content_light); if (MPP_FRAME_FMT_IS_FBC(s->cfg->base.out_fmt)) { + RK_U32 fbc_hdr_stride = MPP_ALIGN(ctx->width, 64); + mpp_slots_set_prop(s->slots, SLOTS_HOR_ALIGN, hor_align_16); if (s->bit_depth == 10) { if ((ctx->pix_fmt & MPP_FRAME_FMT_MASK) == MPP_FMT_YUV420SP || @@ -796,6 +798,11 @@ static MPP_RET get_current_frame(Av1CodecContext *ctx) mpp_frame_set_offset_y(frame->f, 0); if (mpp_get_soc_type() == ROCKCHIP_SOC_RK3588) mpp_frame_set_ver_stride(frame->f, MPP_ALIGN(ctx->height, 8) + 28); + + if (*compat_ext_fbc_hdr_256_odd) + fbc_hdr_stride = MPP_ALIGN(ctx->width, 256) | 256; + + mpp_frame_set_fbc_hdr_stride(frame->f, fbc_hdr_stride); } else if (MPP_FRAME_FMT_IS_TILE(s->cfg->base.out_fmt)) { ctx->pix_fmt |= s->cfg->base.out_fmt & (MPP_FRAME_TILE_FLAG); }