From nobody Mon May 11 00:12:08 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85541C433FE for ; Wed, 20 Apr 2022 15:07:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380018AbiDTPKK (ORCPT ); Wed, 20 Apr 2022 11:10:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379992AbiDTPKI (ORCPT ); Wed, 20 Apr 2022 11:10:08 -0400 Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B29E93B552 for ; Wed, 20 Apr 2022 08:07:20 -0700 (PDT) Received: by mail-ed1-x536.google.com with SMTP id v15so2654117edb.12 for ; Wed, 20 Apr 2022 08:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=spUtPYnusUNlmk64AoaMk2dzOFC+AtlUcojqMYefluc=; b=F9dM5DXeSAhMdmEN3P/6+0vGj0AjZStpdL3ApCb66ojVwvXxz7TTv8Zqxgmek1hJcZ 3BvfVCNoRaYa48Sd5pS8f4PG0rWgCFB+v2q2RsBjL35XHq0CXU/kC+6XEfv3tsYkJ0jT t2sDNuyzAbgFg9bcouCxJKpSqbd1+coIgdwoTcC4qD4EfA0SMS/n9QuKvD3LrW7JoUvI CPHunAJP9MpxqD/Otib8DjulO62ygnGdyyZ0g5NUbJOL6XT2O0ma5lC9XKopvS91ifog g9p/POc14thdgA2ptvk+2gpc2zym98/40ac+C/nPzvQy5leuWA6xlqQ8cTbAxc2tYFnU c5OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=spUtPYnusUNlmk64AoaMk2dzOFC+AtlUcojqMYefluc=; b=df5sJOEsXb9mgakkYAyvfJe5c1dqA8C4Yhml7G4cdUwTzBmNoBKvaxiiueCJ3KffN8 MFjb+c2KOKEoWZ1ZSO+J35UaxTTOUfHUs5JUWRnoI3TTMp+PhUgC14reHquy1HZP+4F+ AC3l1LveN/EI8xvCfdMO6aswGHw7+1BWLPkeHkjOIqa+M4ZyxlDhYfQtR+8botPRGROC gUrwPWkMxpzTLInrNmP/0kaukPzuDHWO1gvC9Xlg+XUrmRXNL7XA/owW/litv3AOaxwd 71NPI3nhxJO/3d9JbBCyrTMjtV78gvUlSfayJJGHT924DCsmEh/AxCH4xwvL6cgYmkn3 We/A== X-Gm-Message-State: AOAM530VO+AFM0tqT05lUForEN+FN2MzYce1MPsZ8PKh8QfRPfVI4HMm Vg0VCi5BmO0m/8b9XbDegCy/IaAwLBrMdiM0 X-Google-Smtp-Source: ABdhPJwh/d8VyriyjYILlz8hAh5z/6/fOEYKoh9GRoABlUNOnMtBtOLy95IGnpWQavQAw0CHuzqdOA== X-Received: by 2002:a05:6402:190a:b0:424:890:e4e1 with SMTP id e10-20020a056402190a00b004240890e4e1mr6799548edz.169.1650467239217; Wed, 20 Apr 2022 08:07:19 -0700 (PDT) Received: from localhost.localdomain (hst-208-209.medicom.bg. [84.238.208.209]) by smtp.gmail.com with ESMTPSA id zk19-20020a17090733d300b006f00e918483sm415262ejb.84.2022.04.20.08.07.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 08:07:18 -0700 (PDT) From: Stanimir Varbanov To: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, hverkuil-cisco@xs4all.nl Cc: linux-arm-msm@vger.kernel.org, ezequiel@collabora.com, stanimir.varbanov@linaro.org, quic_vgarodia@quicinc.com, quic_majja@quicinc.com, quic_jdas@quicinc.com, Dikshita Agarwal , Nicolas Dufresne Subject: [PATCH v6 1/2] media: v4l2-ctrls: Add intra-refresh type control Date: Wed, 20 Apr 2022 18:07:03 +0300 Message-Id: <20220420150704.144000-2-stanimir.varbanov@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220420150704.144000-1-stanimir.varbanov@linaro.org> References: <20220420150704.144000-1-stanimir.varbanov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Dikshita Agarwal Add a control to set intra-refresh type. Signed-off-by: Dikshita Agarwal Reviewed-by: Nicolas Dufresne Acked-by: Hans Verkuil Signed-off-by: Stanimir Varbanov --- .../media/v4l/ext-ctrls-codec.rst | 22 +++++++++++++++++++ drivers/media/v4l2-core/v4l2-ctrls-defs.c | 9 ++++++++ include/uapi/linux/v4l2-controls.h | 5 +++++ 3 files changed, 36 insertions(+) diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Do= cumentation/userspace-api/media/v4l/ext-ctrls-codec.rst index 4cd7c541fc30..c24977fa7329 100644 --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst @@ -1180,6 +1180,28 @@ enum v4l2_mpeg_video_h264_entropy_mode - is set to non zero value. Applicable to H264, H263 and MPEG4 encoder. =20 +``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (enum)`` + +enum v4l2_mpeg_video_intra_refresh_period_type - + Sets the type of intra refresh. The period to refresh + the whole frame is specified by V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERI= OD. + Note that if this control is not present, then it is undefined what + refresh type is used and it is up to the driver to decide. + Applicable to H264 and HEVC encoders. Possible values are: + +.. tabularcolumns:: |p{9.6cm}|p{7.9cm}| + +.. flat-table:: + :header-rows: 0 + :stub-columns: 0 + + * - ``V4L2_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM`` + - The whole frame is completely refreshed randomly + after the specified period. + * - ``V4L2_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC`` + - The whole frame MBs are completely refreshed in cyclic order + after the specified period. + ``V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (integer)`` Intra macroblock refresh period. This sets the period to refresh the whole frame. In other words, this defines the number of frames diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2= -core/v4l2-ctrls-defs.c index 54ca4e6b820b..16f42d2fd359 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c @@ -572,6 +572,11 @@ const char * const *v4l2_ctrl_get_menu(u32 id) "VBV/CPB Limit", NULL, }; + static const char * const intra_refresh_period_type[] =3D { + "Random", + "Cyclic", + NULL, + }; =20 switch (id) { case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: @@ -705,6 +710,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) return hevc_start_code; case V4L2_CID_CAMERA_ORIENTATION: return camera_orientation; + case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE: + return intra_refresh_period_type; default: return NULL; } @@ -834,6 +841,7 @@ const char *v4l2_ctrl_get_name(u32 id) case V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE: return "Decoder Slice I= nterface"; case V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER: return "MPEG4 Loop= Filter Enable"; case V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB: return "Number of Intra= Refresh MBs"; + case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE: return "Intra Refresh= Period Type"; case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD: return "Intra Refresh Per= iod"; case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE: return "Frame Level Rate Contr= ol Enable"; case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE: return "H264 MB Level Rate Contr= ol"; @@ -1360,6 +1368,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v= 4l2_ctrl_type *type, case V4L2_CID_STATELESS_H264_DECODE_MODE: case V4L2_CID_STATELESS_H264_START_CODE: case V4L2_CID_CAMERA_ORIENTATION: + case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE: *type =3D V4L2_CTRL_TYPE_MENU; break; case V4L2_CID_LINK_FREQ: diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-c= ontrols.h index bb40129446d4..dfff69ed88f7 100644 --- a/include/uapi/linux/v4l2-controls.h +++ b/include/uapi/linux/v4l2-controls.h @@ -449,6 +449,11 @@ enum v4l2_mpeg_video_multi_slice_mode { #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE+234) #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE+235) #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE+236) +#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE= +237) +enum v4l2_mpeg_video_intra_refresh_period_type { + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM =3D 0, + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC =3D 1, +}; =20 /* CIDs for the MPEG-2 Part 2 (H.262) codec */ #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270) --=20 2.25.1 From nobody Mon May 11 00:12:08 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36531C433F5 for ; Wed, 20 Apr 2022 15:07:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380027AbiDTPKP (ORCPT ); Wed, 20 Apr 2022 11:10:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380004AbiDTPKJ (ORCPT ); Wed, 20 Apr 2022 11:10:09 -0400 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 909DF3B546 for ; Wed, 20 Apr 2022 08:07:22 -0700 (PDT) Received: by mail-ej1-x62a.google.com with SMTP id i27so4133595ejd.9 for ; Wed, 20 Apr 2022 08:07:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9CYSvm5V1sdHDF+1DOOdhxzb/TbaE3N1T5V45Q/q3iU=; b=iV+BX8J6eiPQ0Gr87b0pPAjxgYpB4lc6lLb3KhBPZ1hggG7okxyTKJaLZBI7/zntK0 tHCsOyJsKdx1AI17e26HVTluagsC5VMmoWCTohidXYxfQin6AG8pWnvjsAHGsW6IMNUy uPVed7xYqc8l9Hewe0bsM63jkv2AHvlJ9rSIM2wXTJNJJ4DOdSq4wE3jb6uEi9AYgmo9 rLgdkkRKBhYePnJsuJ8UREeGpBJyQxJS4ZJ9IefoKFhQMHZUSEWoGhAPXpTzO0/bwEgV J3bEjD74nJ3thpCRrLthBqZng1I94ukmrWIi9lC9GqHvMZOijlazQTjloqHVB8eiR+P2 FC9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9CYSvm5V1sdHDF+1DOOdhxzb/TbaE3N1T5V45Q/q3iU=; b=5t9+bKo6uCu80jaBG5t7EGe/LV29AR+UZsSe7yAseNudVlWwb9259ZLb3a1U27Lj5S CT8MnKFU1PM1A0KgYSWQB8ENKYlDzqll3LiiPzPweIGTAHR1d1edg4+ebPzKQK/U8rJI G5mJQI15JlCdf7Ul5Hkiwf1H2uWBr9NPOha3Og6iLXnUv9kDJZpqDnXIxjLRkHc6eu8z tjAWHmu5Le3Qfe8l1o/WYI79m+dAGWheRXZhrdl0GeOoN8iJzvwpHSPrElWB5qs6+QCO UA73KmGanqu0FWY1wJE+WjqVyrX2kk+fTbrLQ/Ywap7l+t1qSKDvDODhKwOjs1czof55 3SgA== X-Gm-Message-State: AOAM532FfcR/6Hb1cORv0Fo1jLmUt3g7R9c4pPvwsk4rmvZHxUTFUbd9 a5uRdGBY0i3fvz+yk6Y2+g8eMA== X-Google-Smtp-Source: ABdhPJzOsn82ao1iPnKZtrbVAqHHfpL0MGaWxzcxfFTPHm+ghb7aB2icWW2mAmJo8Uw0uka/xUUGZQ== X-Received: by 2002:a17:906:948d:b0:6e8:bf62:baee with SMTP id t13-20020a170906948d00b006e8bf62baeemr18751790ejx.456.1650467241156; Wed, 20 Apr 2022 08:07:21 -0700 (PDT) Received: from localhost.localdomain (hst-208-209.medicom.bg. [84.238.208.209]) by smtp.gmail.com with ESMTPSA id zk19-20020a17090733d300b006f00e918483sm415262ejb.84.2022.04.20.08.07.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Apr 2022 08:07:20 -0700 (PDT) From: Stanimir Varbanov To: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, hverkuil-cisco@xs4all.nl Cc: linux-arm-msm@vger.kernel.org, ezequiel@collabora.com, stanimir.varbanov@linaro.org, quic_vgarodia@quicinc.com, quic_majja@quicinc.com, quic_jdas@quicinc.com, Dikshita Agarwal Subject: [PATCH v6 2/2] venus: venc: Add support for intra-refresh type Date: Wed, 20 Apr 2022 18:07:04 +0300 Message-Id: <20220420150704.144000-3-stanimir.varbanov@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220420150704.144000-1-stanimir.varbanov@linaro.org> References: <20220420150704.144000-1-stanimir.varbanov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Dikshita Agarwal Add support for intra-refresh type v4l2 control. Signed-off-by: Dikshita Agarwal Acked-by: Hans Verkuil Signed-off-by: Stanimir Varbanov --- drivers/media/platform/qcom/venus/core.h | 1 + drivers/media/platform/qcom/venus/venc.c | 6 +++++- drivers/media/platform/qcom/venus/venc_ctrls.c | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platf= orm/qcom/venus/core.h index c3023340d95c..d33825553edc 100644 --- a/drivers/media/platform/qcom/venus/core.h +++ b/drivers/media/platform/qcom/venus/core.h @@ -261,6 +261,7 @@ struct venc_controls { =20 u32 header_mode; bool aud_enable; + u32 intra_refresh_type; u32 intra_refresh_period; =20 struct { diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platf= orm/qcom/venus/venc.c index adea4c3b8c20..86918aea1d24 100644 --- a/drivers/media/platform/qcom/venus/venc.c +++ b/drivers/media/platform/qcom/venus/venc.c @@ -893,8 +893,12 @@ static int venc_set_properties(struct venus_inst *inst) mbs++; mbs /=3D ctr->intra_refresh_period; =20 - intra_refresh.mode =3D HFI_INTRA_REFRESH_RANDOM; intra_refresh.cir_mbs =3D mbs; + if (ctr->intra_refresh_type =3D=3D + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC) + intra_refresh.mode =3D HFI_INTRA_REFRESH_CYCLIC; + else + intra_refresh.mode =3D HFI_INTRA_REFRESH_RANDOM; } =20 ptype =3D HFI_PROPERTY_PARAM_VENC_INTRA_REFRESH; diff --git a/drivers/media/platform/qcom/venus/venc_ctrls.c b/drivers/media= /platform/qcom/venus/venc_ctrls.c index ea5805e71c14..ed44e5800759 100644 --- a/drivers/media/platform/qcom/venus/venc_ctrls.c +++ b/drivers/media/platform/qcom/venus/venc_ctrls.c @@ -316,6 +316,9 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl) case V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY: ctr->mastering =3D *ctrl->p_new.p_hdr10_mastering; break; + case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE: + ctr->intra_refresh_type =3D ctrl->val; + break; case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD: ctr->intra_refresh_period =3D ctrl->val; break; @@ -582,6 +585,11 @@ int venc_ctrl_init(struct venus_inst *inst) V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY, v4l2_ctrl_ptr_create(NULL)); =20 + v4l2_ctrl_new_std_menu(&inst->ctrl_handler, &venc_ctrl_ops, + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE, + V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC, + 0, V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM); + v4l2_ctrl_new_std(&inst->ctrl_handler, &venc_ctrl_ops, V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD, 0, ((4096 * 2304) >> 8), 1, 0); --=20 2.25.1