All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ezequiel Garcia <ezequiel@collabora.com>
To: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Tomasz Figa <tfiga@chromium.org>,
	kernel@collabora.com, Jonas Karlman <jonas@kwiboo.se>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Alexandre Courbot <acourbot@chromium.org>,
	Jeffrey Kardatzke <jkardatzke@chromium.org>,
	Nicolas Dufresne <nicolas.dufresne@collabora.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Maxime Ripard <mripard@kernel.org>,
	Paul Kocialkowski <paul.kocialkowski@bootlin.com>,
	Jernej Skrabec <jernej.skrabec@siol.net>,
	Ezequiel Garcia <ezequiel@collabora.com>
Subject: [PATCH v4 19/19] media: cedrus: Use H264_SCALING_MATRIX only when required
Date: Tue, 25 Aug 2020 00:52:45 -0300	[thread overview]
Message-ID: <20200825035245.594982-20-ezequiel@collabora.com> (raw)
In-Reply-To: <20200825035245.594982-1-ezequiel@collabora.com>

Baseline, Main and Extended profiles are specified to
not support a scaling matrix. Also, High profiles
can optionally specify a scaling matrix, using
SPS and PPS NAL units.

To meet this expectation, applications are required to
set the V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX control
and set the V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT
flag only when a scaling matrix is specified for a picture.

Implement this on cedrus, which has hardware support for this
case.

Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
---
 drivers/staging/media/sunxi/cedrus/cedrus.c      | 2 +-
 drivers/staging/media/sunxi/cedrus/cedrus_h264.c | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c b/drivers/staging/media/sunxi/cedrus/cedrus.c
index 826324faad7e..6ebb39e0c0ce 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c
@@ -76,7 +76,7 @@ static const struct cedrus_control cedrus_controls[] = {
 			.id	= V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX,
 		},
 		.codec		= CEDRUS_CODEC_H264,
-		.required	= true,
+		.required	= false,
 	},
 	{
 		.cfg = {
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
index fe041b444385..28319351e909 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_h264.c
@@ -238,8 +238,12 @@ static void cedrus_write_scaling_lists(struct cedrus_ctx *ctx,
 {
 	const struct v4l2_ctrl_h264_scaling_matrix *scaling =
 		run->h264.scaling_matrix;
+	const struct v4l2_ctrl_h264_pps *pps = run->h264.pps;
 	struct cedrus_dev *dev = ctx->dev;
 
+	if (!(pps->flags & V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT))
+		return;
+
 	cedrus_h264_write_sram(dev, CEDRUS_SRAM_H264_SCALING_LIST_8x8_0,
 			       scaling->scaling_list_8x8[0],
 			       sizeof(scaling->scaling_list_8x8[0]));
@@ -442,6 +446,8 @@ static void cedrus_set_params(struct cedrus_ctx *ctx,
 	reg |= (pps->second_chroma_qp_index_offset & 0x3f) << 16;
 	reg |= (pps->chroma_qp_index_offset & 0x3f) << 8;
 	reg |= (pps->pic_init_qp_minus26 + 26 + slice->slice_qp_delta) & 0x3f;
+	if (pps->flags & V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT)
+		reg |= VE_H264_SHS_QP_SCALING_MATRIX_DEFAULT;
 	cedrus_write(dev, VE_H264_SHS_QP, reg);
 
 	// clear status flags
-- 
2.27.0


      parent reply	other threads:[~2020-08-25  3:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-25  3:52 [PATCH v4 00/19] Clean H264 stateless uAPI Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 01/19] media: uapi: h264: Update reference lists Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 02/19] media: uapi: h264: Further clarify scaling lists order Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 03/19] media: uapi: h264: Split prediction weight parameters Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 04/19] media: uapi: h264: Clarify pic_order_cnt_bit_size field Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 05/19] media: uapi: h264: Increase size of 'first_mb_in_slice' field Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 06/19] media: uapi: h264: Clean DPB entry interface Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 07/19] media: uapi: h264: Increase size of DPB entry pic_num Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 08/19] media: uapi: h264: Drop SLICE_PARAMS 'size' field Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 09/19] media: uapi: h264: Clarify SLICE_BASED mode Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 10/19] media: uapi: h264: Clean slice invariants syntax elements Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 11/19] media: uapi: h264: Rename and clarify PPS_FLAG_SCALING_MATRIX_PRESENT Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 12/19] media: hantro: Don't require unneeded H264_SLICE_PARAMS Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 13/19] media: rkvdec: " Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 14/19] media: cedrus: h264: Properly configure reference field Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 15/19] media: cedrus: h264: Fix frame list construction Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 16/19] media: rkvdec: Drop unneeded per_request driver-specific control flag Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 17/19] media: rkvdec: Use H264_SCALING_MATRIX only when required Ezequiel Garcia
2020-08-25  3:52 ` [PATCH v4 18/19] media: hantro: " Ezequiel Garcia
2020-08-25  3:52 ` Ezequiel Garcia [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200825035245.594982-20-ezequiel@collabora.com \
    --to=ezequiel@collabora.com \
    --cc=acourbot@chromium.org \
    --cc=hverkuil@xs4all.nl \
    --cc=jernej.skrabec@siol.net \
    --cc=jkardatzke@chromium.org \
    --cc=jonas@kwiboo.se \
    --cc=kernel@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mripard@kernel.org \
    --cc=nicolas.dufresne@collabora.com \
    --cc=p.zabel@pengutronix.de \
    --cc=paul.kocialkowski@bootlin.com \
    --cc=tfiga@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.