diff --git a/src/amd/vpelib/src/core/vpe_visual_confirm.c b/src/amd/vpelib/src/core/vpe_visual_confirm.c index 90b607f8c55..4c9229ac855 100644 --- a/src/amd/vpelib/src/core/vpe_visual_confirm.c +++ b/src/amd/vpelib/src/core/vpe_visual_confirm.c @@ -29,6 +29,18 @@ #include "background.h" #include "resource.h" +static bool should_generate_visual_confirm(enum vpe_stream_type stream_type) +{ + switch (stream_type) { + case VPE_STREAM_TYPE_INPUT: + case VPE_STREAM_TYPE_BG_GEN: + return true; + default: + return false; + break; + } +} + static uint16_t get_visual_confirm_segs_count(uint32_t max_seg_width, uint32_t target_rect_width) { // Unlike max_gaps logic in vpe10_calculate_segments, we are pure BG seg, no need to worry @@ -50,8 +62,9 @@ static uint16_t vpe_get_visual_confirm_total_seg_count( if (vpe_priv->init.debug.visual_confirm_params.input_format) { for (stream_idx = 0; stream_idx < vpe_priv->num_streams; stream_idx++) { stream_ctx = &vpe_priv->stream_ctx[stream_idx]; - total_visual_confirm_segs += get_visual_confirm_segs_count( - max_seg_width, stream_ctx->stream.scaling_info.dst_rect.width); + if (should_generate_visual_confirm(stream_ctx->stream_type)) + total_visual_confirm_segs += get_visual_confirm_segs_count( + max_seg_width, stream_ctx->stream.scaling_info.dst_rect.width); } } diff --git a/src/amd/vpelib/src/core/vpelib.c b/src/amd/vpelib/src/core/vpelib.c index 4efeea32b68..419a668968f 100644 --- a/src/amd/vpelib/src/core/vpelib.c +++ b/src/amd/vpelib/src/core/vpelib.c @@ -222,7 +222,6 @@ void vpe_destroy(struct vpe **vpe) *vpe = NULL; } - /***************************************************************************************** * populate_bg_stream * populate virtual stream for background output only @@ -346,14 +345,14 @@ static enum vpe_status populate_input_streams(struct vpe_priv *vpe_priv, const s stream_ctx = &stream_ctx_base[i]; stream_ctx->stream_type = VPE_STREAM_TYPE_INPUT; stream_ctx->stream_idx = (int32_t)i; - + stream_ctx->per_pixel_alpha = vpe_has_per_pixel_alpha(param->streams[i].surface_info.format); if (vpe_priv->init.debug.bypass_per_pixel_alpha) { stream_ctx->per_pixel_alpha = false; } else if (param->streams[i].enable_luma_key) { - stream_ctx->per_pixel_alpha = true; + stream_ctx->per_pixel_alpha = true; } if (param->streams[i].horizontal_mirror && !input_h_mirror && output_h_mirror) stream_ctx->flip_horizonal_output = true; @@ -385,18 +384,19 @@ static enum vpe_status populate_virtual_streams(struct vpe_priv* vpe_priv, const vpe_priv->resource.check_h_mirror_support(&input_h_mirror, &output_h_mirror); + // Background generation stream if (param->num_streams == 0 || vpe_priv->init.debug.bg_color_fill_only) { if (num_virtual_streams != 1) result = VPE_STATUS_ERROR; else - result = populate_bg_stream(vpe_priv, param, &vpe_priv->stream_ctx[virtual_stream_idx++]); + result = populate_bg_stream(vpe_priv, param, &stream_ctx_base[virtual_stream_idx++]); } if (result != VPE_STATUS_OK) return result; for (virtual_stream_idx = 0; virtual_stream_idx < num_virtual_streams; virtual_stream_idx++) { - stream_ctx = &stream_ctx_base[virtual_stream_idx]; + stream_ctx = &stream_ctx_base[virtual_stream_idx]; stream_ctx->stream_idx = virtual_stream_idx + vpe_priv->num_input_streams; stream_ctx->per_pixel_alpha = vpe_has_per_pixel_alpha(stream_ctx->stream.surface_info.format);