.../mediatek/vcodec/mtk_vcodec_dec_stateful.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
After commit b018be06f3c7 ("media: mediatek: vcodec: Read max resolution
from dec_capability"), the stateful video decoder driver never really
sets its output frame size to 4K.
Parse the decoder capability reported by the firmware, and update the
output frame size in mtk_init_vdec_params to enable 4K frame size when
available.
Fixes: b018be06f3c7 ("media: mediatek: vcodec: Read max resolution from dec_capability")
Signed-off-by: Pin-yen Lin <treapking@chromium.org>
---
.../mediatek/vcodec/mtk_vcodec_dec_stateful.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c
index 035c86e7809f..679f4dc9acfb 100644
--- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c
+++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c
@@ -11,7 +11,7 @@
#include "mtk_vcodec_dec_pm.h"
#include "vdec_drv_if.h"
-static const struct mtk_video_fmt mtk_video_formats[] = {
+static struct mtk_video_fmt mtk_video_formats[] = {
{
.fourcc = V4L2_PIX_FMT_H264,
.type = MTK_FMT_DEC,
@@ -580,6 +580,16 @@ static int mtk_vcodec_dec_ctrls_setup(struct mtk_vcodec_ctx *ctx)
static void mtk_init_vdec_params(struct mtk_vcodec_ctx *ctx)
{
+ unsigned int i;
+
+ if (!(ctx->dev->dec_capability & VCODEC_CAPABILITY_4K_DISABLED)) {
+ for (i = 0; i < num_supported_formats; i++) {
+ mtk_vdec_framesizes[i].stepwise.max_width =
+ VCODEC_DEC_4K_CODED_WIDTH;
+ mtk_vdec_framesizes[i].stepwise.max_height =
+ VCODEC_DEC_4K_CODED_HEIGHT;
+ }
+ }
}
static struct vb2_ops mtk_vdec_frame_vb2_ops = {
--
2.39.2.722.g9855ee24e9-goog
On 02/03/2023 14:18, Pin-yen Lin wrote: > After commit b018be06f3c7 ("media: mediatek: vcodec: Read max resolution > from dec_capability"), the stateful video decoder driver never really > sets its output frame size to 4K. > > Parse the decoder capability reported by the firmware, and update the > output frame size in mtk_init_vdec_params to enable 4K frame size when > available. > > Fixes: b018be06f3c7 ("media: mediatek: vcodec: Read max resolution from dec_capability") > Signed-off-by: Pin-yen Lin <treapking@chromium.org> > --- > > .../mediatek/vcodec/mtk_vcodec_dec_stateful.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > index 035c86e7809f..679f4dc9acfb 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_stateful.c > @@ -11,7 +11,7 @@ > #include "mtk_vcodec_dec_pm.h" > #include "vdec_drv_if.h" > > -static const struct mtk_video_fmt mtk_video_formats[] = { > +static struct mtk_video_fmt mtk_video_formats[] = { > { > .fourcc = V4L2_PIX_FMT_H264, > .type = MTK_FMT_DEC, > @@ -580,6 +580,16 @@ static int mtk_vcodec_dec_ctrls_setup(struct mtk_vcodec_ctx *ctx) > > static void mtk_init_vdec_params(struct mtk_vcodec_ctx *ctx) > { > + unsigned int i; > + > + if (!(ctx->dev->dec_capability & VCODEC_CAPABILITY_4K_DISABLED)) { > + for (i = 0; i < num_supported_formats; i++) { > + mtk_vdec_framesizes[i].stepwise.max_width = > + VCODEC_DEC_4K_CODED_WIDTH; > + mtk_vdec_framesizes[i].stepwise.max_height = > + VCODEC_DEC_4K_CODED_HEIGHT; > + } > + } This doesn't apply: commit cfce5b186537 ("media: mediatek: vcodec: decoder: Embed framesize inside mtk_video_fmt") removed mtk_vdec_framesizes. Please post a v2 if this is still relevant. Regards, Hans > } > > static struct vb2_ops mtk_vdec_frame_vb2_ops = {
© 2016 - 2024 Red Hat, Inc.