Patch "media: verisilicon: Do not enable G2 postproc downscale if source is narrower than destination" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    media: verisilicon: Do not enable G2 postproc downscale if source is narrower than destination

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     media-verisilicon-do-not-enable-g2-postproc-downscal.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 49c72d29b3093b5c6d3d0ce46d17550324881d3e
Author: Marek Vasut <marex@xxxxxxx>
Date:   Thu Aug 24 03:39:35 2023 +0200

    media: verisilicon: Do not enable G2 postproc downscale if source is narrower than destination
    
    [ Upstream commit 6e481d52d363218a3e6feb31694da74b38b30fad ]
    
    In case of encoded input VP9 data width that is not multiple of macroblock
    size, which is 16 (e.g. 1080x1920 frames, where 1080 is multiple of 8), the
    width is padded to be a multiple of macroblock size (for 1080x1920 frames,
    that is 1088x1920).
    
    The hantro_postproc_g2_enable() checks whether the encoded data width is
    equal to decoded frame width, and if not, enables down-scale mode. For a
    frame where input is 1080x1920 and output is 1088x1920, this is incorrect
    as no down-scale happens, the frame is only padded. Enabling the down-scale
    mode in this case results in corrupted frames.
    
    Fix this by adjusting the check to test whether encoded data width is
    greater than decoded frame width, and only in that case enable the
    down-scale mode.
    
    To generate input test data to trigger this bug, use e.g.:
    $ gst-launch-1.0 videotestsrc ! video/x-raw,width=272,height=256,format=I420 ! \
                     vp9enc ! matroskamux ! filesink location=/tmp/test.vp9
    To trigger the bug upon decoding (note that the NV12 must be forced, as
    that assures the output data would pass the G2 postproc):
    $ gst-launch-1.0 filesrc location=/tmp/test.vp9 ! matroskademux ! vp9parse ! \
                     v4l2slvp9dec ! video/x-raw,format=NV12 ! videoconvert ! fbdevsink
    
    Fixes: 79c987de8b35 ("media: hantro: Use post processor scaling capacities")
    Signed-off-by: Marek Vasut <marex@xxxxxxx>
    Reviewed-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxxxxx>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/media/platform/verisilicon/hantro_postproc.c b/drivers/media/platform/verisilicon/hantro_postproc.c
index 0224ff68ab3fc..64d6fb852ae9b 100644
--- a/drivers/media/platform/verisilicon/hantro_postproc.c
+++ b/drivers/media/platform/verisilicon/hantro_postproc.c
@@ -107,7 +107,7 @@ static void hantro_postproc_g1_enable(struct hantro_ctx *ctx)
 
 static int down_scale_factor(struct hantro_ctx *ctx)
 {
-	if (ctx->src_fmt.width == ctx->dst_fmt.width)
+	if (ctx->src_fmt.width <= ctx->dst_fmt.width)
 		return 0;
 
 	return DIV_ROUND_CLOSEST(ctx->src_fmt.width, ctx->dst_fmt.width);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux