From nobody Mon Feb 9 05:44:41 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0AF48276051 for ; Tue, 13 Jan 2026 20:33:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336421; cv=none; b=ApEiQuvbPz80K2nelO0pl7tIEjSeGhA2YFyfYx/QguACM122gygu92NjDujWz2QVX/csDIgxtZLjtg9mQ1cfXd8t6rZ6DbZSgWSbmo+RXnO9a/hT9JBislJ9D9c4+dqhD0LRFMdeDz358VrkxCBBblnQj0GRUJfx499p8avxxns= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336421; c=relaxed/simple; bh=0Td/LNDR2RTKrvU2VfyPG8mO1E8oATgnsMCmASdMIb8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AKOYveCqab4uxPu7jNshxy6nfTaDS1Ji8InJdoBTeSWroZIx6qNVogB2FVdO5f8RnukN9gmxVRzq20USX1lvS3MmoLn7CXIacfhd/PjU3p1ZUkUw4FkxDxFFVG1fzCiTL51MHx+F/w5l82/XIrnUMoE1a6N9lKnzj/7ZRJmhZCg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=kcxkRxgk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DGMv+6F6; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="kcxkRxgk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DGMv+6F6" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60DGr9kC026866 for ; Tue, 13 Jan 2026 20:33:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 8Oks4Lx3iH0CoTRTkj5T3bSc++Pq4Nk/yi1DSprS+Tk=; b=kcxkRxgk5no0fX7V BQpesOXUEhI8Qu/6NVzDeV4bmERmjwUdjrZcVHXU83QWHKKARI0/BXhlrLCZUYTH amesiugM0cqMkQuvTlOMnhVyAxGYx/ded0E09gPFX/NLUJljpluxNBcbXx6+86ks Fc2HIstqoGnwo7YFTOhFx62G7fQtiQQNr30CH7V1uHp1NxRG+mRWqu06/iXAr5qJ nIqgFRsaHxVQcq0lBIHAEpMsYLZ6Co/p5iWrc7KMes7D9zlv07hfQNP+Ll354C+P pJdkBEqn2xamJPNGj+0HLHk/hxs2vIHjhuX9D8ekw3Y0riS6989kdPnqmtIBKSDi nE/YDw== Received: from mail-dl1-f71.google.com (mail-dl1-f71.google.com [74.125.82.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bnsyb8qb4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 13 Jan 2026 20:33:39 +0000 (GMT) Received: by mail-dl1-f71.google.com with SMTP id a92af1059eb24-11f44c1b2faso1159574c88.0 for ; Tue, 13 Jan 2026 12:33:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768336418; x=1768941218; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=8Oks4Lx3iH0CoTRTkj5T3bSc++Pq4Nk/yi1DSprS+Tk=; b=DGMv+6F6ZLzYlTSZ8HbYtYmGkgbgw6up1VCWn69LcfzH9yoe0P1EC4GlYcegrrT6uw M8zU1Nqi1QJaoSe5DtTqMYTDB/J9gd/AKn0jwT+GuU+eF9bdXkyKEfjQzkP3LhPsYeza by/AZ0OMysYfHbDTL0cOY1XaAmHRnj/0npAUcFmIsv6TCpPx3G6Zg853XLIuHx0PuCLq fVzimtKiIuy63Ce0lYc3qx17QRjYwcl0myw3xamh9/XZSIhxNzKFkr8b/NUvILOnOxSC b0uwVJ+efBuhgOT3SyDu6Em5O/Ph1OVB7DC8v7RvnWb+j2No53hszkgpgqnyI3ZGxilf UAtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768336418; x=1768941218; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8Oks4Lx3iH0CoTRTkj5T3bSc++Pq4Nk/yi1DSprS+Tk=; b=wAn1srA7vMsWxVD9XhBLvd8jAR7lKWTSq2kl8g3XypLOwuXoG+QvdrkA5H4BPQkFJy Trk83nsNXPBJm1iIx3huBWAarmi2dyoB5Ovo5YBB7yPk6E5wA0RPBMTrNSLZgwKjAWxA JdgfMPRLRGkOOD4+Nye2DPIDn2Sf+L9juEoBCC2CNEDfHUa4Gx/Q9KCcyzT8J4uDIx87 g60uwp+j8Lz+mu8xZRra4x/SW6tty4Wuztpi/B4Ptu5SbpUhRRuRCWyrLrCHgD0VvJU0 Hcsm876grKgY6LoPWRS5QYk39IkPSA5qDNrn8uW21V0EvszrYUSR9piNjj2IkS7yu+G8 MNmA== X-Forwarded-Encrypted: i=1; AJvYcCWprgcp9/yh56TrxNEQEacjFmKPOi61YYVn6gDA4N9kXXnfq61Q/Gm4/ck9I6S10Vj9VdGr9cI5JAo0krE=@vger.kernel.org X-Gm-Message-State: AOJu0YwjW8oQkeFHuyHyHhgG4l8H+B1Diw5FdRH2MRforwpriR1Wht0e Xd8WliaQiNQCx+pxiry5XNqadjvsV45XX8dcppaWrUyD+KVKCt0+qGvbU/H52ksw1yQZizrC5Dd /TJyouC4bhu09aaDhge05ldj0dXJ5BMi/9mLEzGBdbLw9R3bZISAr7yCO8sQSxm23zAk= X-Gm-Gg: AY/fxX4NfT33HxE3UHBIVtwmy4VnvzHcqCzJvnCAgmx616a8cxukaahEdb8pnpti+RH /sG4/ITrDTalhrCn1o8rCWg1FGjqyYfH9mz76EwuTJR4Xcqb+wKx1EbIts+3ictXBaYwsChVc26 jLyi3oNK4HdgzEQb/+KlTSPUBlf3it1KvjiBHfGnvrpq58Jft7e29aNtcFczBJ3Tke/nBLCIaz2 8ubcB/OPKlud9aljft/KfODjLKtYx8COU8z8IIIOj6XQDa0Uzrgqqbv30D2TS11W47hJhz3aLg7 67pYXrhB/q6XOTrjt0ObK1Mrh9xQfxjn0fKxaZg2bXeS7naO5TuqzKuRT9n4E83OI7yXW/pLo/k +SAzykms8E9xAz8s6hZEfrXHI8WmwE1OOuJTIKBprepVvbT0h8XD6o1cMUXZQ1pqFHIH60w== X-Received: by 2002:a05:7300:a28b:b0:2b0:4e90:7755 with SMTP id 5a478bee46e88-2b4873215abmr121778eec.8.1768336417936; Tue, 13 Jan 2026 12:33:37 -0800 (PST) X-Received: by 2002:a05:7300:a28b:b0:2b0:4e90:7755 with SMTP id 5a478bee46e88-2b4873215abmr121757eec.8.1768336417361; Tue, 13 Jan 2026 12:33:37 -0800 (PST) Received: from gu-dmadival-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b170673bc0sm19157897eec.5.2026.01.13.12.33.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 12:33:37 -0800 (PST) From: Deepa Guthyappa Madivalara Date: Tue, 13 Jan 2026 12:33:32 -0800 Subject: [RFC PATCH 1/3] media: uapi: Introduce new control for video encoder ROI Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260113-iris_enc_roi-v1-1-6c86eba38587@oss.qualcomm.com> References: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> In-Reply-To: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> To: Mauro Carvalho Chehab , Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Deepa Guthyappa Madivalara X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768336416; l=4374; i=deepa.madivalara@oss.qualcomm.com; s=20250814; h=from:subject:message-id; bh=0Td/LNDR2RTKrvU2VfyPG8mO1E8oATgnsMCmASdMIb8=; b=ENymqkOPbznuQvfaGVxFX6x4RlaPuM9sEHqQEXbTypnU1CQw9+JJ0uzJc9e1WCBifYMbZdrGB SNh9dPwxZfQD5GJnf3+CNKnJg9YWnOrDgoXJ/8iIO7a5dp+eEWmeYyy X-Developer-Key: i=deepa.madivalara@oss.qualcomm.com; a=ed25519; pk=MOEXgyokievn+bgpHdS6Ixh/KQYyS90z2mqIbQ822FQ= X-Proofpoint-ORIG-GUID: XBt9aoUH7Ze7jeWnKA29-Y4luMmW88MM X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDE2OCBTYWx0ZWRfX5PnTUoEDyOSo nkIKo9DNi/mRB0oMY5dAPlEwi1inr4I750E5BrYTdRId724c3+ZRVZ8qHTX8h78XknhSYyjWJaE xlqlGT8C0B4CI3UeO88ryCvVALX69Ge4HDTmk/Tq1ENzIVR6Sz/KRKbIHzJYtNv6H6B35xgHtn3 As7dX8DsurCtbrWtGyOQE28Q3Z4tkRb0RzKVJWdexCeDIgZgEOFhFbdyOI1xk3QBO1ISQI/Ih/R nyXxrsJkpC7L5uKRXQ5RvgFZrds1r0clY65CXiB56ShKhqyuLnuLI4LKPaXJ7fyUn9RP6SJAEYm 35GbxZPBypSgDHfJ8jgnNdItb01ICUHR54hC37Xk/KJEW1nDj9SH9m1mndeI6mXovFDeGJ72+83 iF9ZpaQAsI7eN8mCxOleHalTW4niyl6Bck+QBpEQqdhUqFkWV/tE1RcJ8Xv3taLJQFLc986u0yT Hv+blOPRCGPjnH7ojuQ== X-Proofpoint-GUID: XBt9aoUH7Ze7jeWnKA29-Y4luMmW88MM X-Authority-Analysis: v=2.4 cv=IpETsb/g c=1 sm=1 tr=0 ts=6966ac23 cx=c_pps a=JYo30EpNSr/tUYqK9jHPoA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=1tTGy1hlu4sAMEPmmk4A:9 a=QEXdDO2ut3YA:10 a=Fk4IpSoW4aLDllm1B1p-:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_04,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 bulkscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 phishscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601130168 Add compound control, V4L2_CID_MPEG_VIDEO_ENC_ROI, for video encoder Region of Interest to allow applications to specify different quality levels for specific regions in video frames. Define struct v4l2_ctrl_enc_roi_params to hold up to 10 rectangular ROI, regions and their corresponding delta_qp value (v4l2_roi_param) that adjust quantization relative to the frame's base value. This enables use cases like prioritizing quality for faces in video conferencing or important objects in surveillance footage while reducing bitrate for less critical areas. Signed-off-by: Deepa Guthyappa Madivalara --- .../userspace-api/media/v4l/ext-ctrls-codec.rst | 7 +++++++ include/media/v4l2-ctrls.h | 1 + include/uapi/linux/v4l2-controls.h | 1 + include/uapi/linux/videodev2.h | 17 +++++++++++++= ++++ 4 files changed, 26 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 c8890cb5e00ac05649e6c344c2a6b938b2ec1b24..0eecb46bb356c01411dfc313b92= 376593bcd86f6 100644 --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst @@ -1668,6 +1668,13 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type - Codecs need to always use the specified range, rather then a HW custom= range. Applicable to encoders =20 +``V4L2_CID_MPEG_VIDEO_ENC_ROI (struct)`` + Defines the control id to configure specific delta QP for one or more + rectangular regions of interest. The struct v4l2_ctrl_enc_roi_params + is defined to hold up to 10 v4l2_rect regions and their corresponding + delta_qp with a range of -31 to 30. + Applicable to encoders + .. raw:: latex =20 \normalsize diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index 31fc1bee3797bfe532931889188c8f7a9dedad39..c44fad7f51db45a437dd3287aa1= 6830585ac42f3 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h @@ -91,6 +91,7 @@ union v4l2_ctrl_ptr { struct v4l2_ctrl_av1_frame *p_av1_frame; struct v4l2_ctrl_av1_film_grain *p_av1_film_grain; struct v4l2_rect *p_rect; + struct v4l2_ctrl_enc_roi_params *p_enc_roi_params; void *p; const void *p_const; }; diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-c= ontrols.h index f84ed133a6c9b2ddc1aedbd582ddf78cb71f34e5..5f2621365593ee19a7792fb25ea= 29acf6a7860f1 100644 --- a/include/uapi/linux/v4l2-controls.h +++ b/include/uapi/linux/v4l2-controls.h @@ -918,6 +918,7 @@ enum v4l2_mpeg_video_av1_level { }; =20 #define V4L2_CID_MPEG_VIDEO_AVERAGE_QP (V4L2_CID_CODEC_BASE + 657) +#define V4L2_CID_MPEG_VIDEO_ENC_ROI (V4L2_CID_CODEC_BASE + 658) =20 /* MPEG-class control IDs specific to the CX2341x driver as defined by V4= L2 */ #define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000) diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index add08188f06890182a5c399a223c1ab0a546cae1..18a5ae34842721c2647a7a76365= e4d299d2b8a44 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -1909,6 +1909,7 @@ struct v4l2_ext_control { struct v4l2_ctrl_av1_film_grain __user *p_av1_film_grain; struct v4l2_ctrl_hdr10_cll_info __user *p_hdr10_cll_info; struct v4l2_ctrl_hdr10_mastering_display __user *p_hdr10_mastering_displ= ay; + struct v4l2_ctrl_enc_roi_params __user *p_enc_roi_params; void __user *ptr; } __attribute__ ((packed)); } __attribute__ ((packed)); @@ -1990,6 +1991,8 @@ enum v4l2_ctrl_type { V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY =3D 0x281, V4L2_CTRL_TYPE_AV1_FRAME =3D 0x282, V4L2_CTRL_TYPE_AV1_FILM_GRAIN =3D 0x283, + + V4L2_CTRL_TYPE_ENC_ROI_PARAMS =3D 0x284, }; =20 /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ @@ -2540,6 +2543,20 @@ struct v4l2_streamparm { } parm; }; =20 +/* Roi format + */ +#define VIDEO_MAX_ROI_REGIONS 10 + +struct v4l2_roi_param { + struct v4l2_rect roi_rect; + __s32 delta_qp; +}; + +struct v4l2_ctrl_enc_roi_params { + __u32 num_roi_regions; + struct v4l2_roi_param roi_params[VIDEO_MAX_ROI_REGIONS]; +}; + /* * E V E N T S */ --=20 2.34.1 From nobody Mon Feb 9 05:44:41 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99A8C2BD5BB for ; Tue, 13 Jan 2026 20:33:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336422; cv=none; b=Q9v2YgcQXkgGEewYDMtsW1hjmXM+d1Y5XbDrn9Z5lP7S2y5zjfSCILIk/oIiWoAwmAl3LSOlCO3JPig1uE2FmAkGmxStx03l9lg6VdnscKOG3YKOQ9SVFtX6qUleu1sHxeAyE/ZFCnCsrN87xkLdl1c2CFnOwfTPDGetkiKeqgY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336422; c=relaxed/simple; bh=rLg1XZm7+TLU/MssBuCqd65nuhBQ9YaSkzsjTYz4VIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z42fq9ilHjxixrEhiil9xpmrXRW3srP9CXdkpJb4TQUyfmk87Hs56dm1Yz5VLw78xIpalcU9DYFKzlLyonzwOX89Zd0qJdpZahqx71Q70xiD9xiZA/GGlLxBrtwjGDlr4gC2HxAHIyWjhmecI+q49bbDm1uiH2D028lAII0TtQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=MUNZ7PwV; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Yoye1ESc; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="MUNZ7PwV"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Yoye1ESc" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60DHv8Gc3799036 for ; Tue, 13 Jan 2026 20:33:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 0moqou0Ld4EaZmHxxSS0TZm2GMndw0nUqSIpM/AN1jg=; b=MUNZ7PwVpbrothYH BUkjqNgYRmexrFjjH4+DAPX5KMElW8+sJYkYNGkK3VUiJr7eQJsvDDVi8nquCS6V GAZ4KQn4l7i/z6r0ZgaQxndlC5RHHYaK/NQ35wciKDMGy1PgbXpCOFgYeN78/R68 SgbT9YuPID4ew+FW+lGA9Bgc1ByItWe+clVrTBKp/dvv4dPFNd84Q5WQBQWuxcoh c0kSEtdfLEs5csDBKZzdHdaGWh1sQI0/qXl7lcoGNQsgvlMfkLcf9PBCeVcjj6bQ sKfeJXZaZR9WMHpsxY71bsk86iCwdZJMBCuIPAtpd0INhG3p6Qoi9pfz+Xaxelxl wKoFjA== Received: from mail-dl1-f70.google.com (mail-dl1-f70.google.com [74.125.82.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bnm0dt15y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 13 Jan 2026 20:33:39 +0000 (GMT) Received: by mail-dl1-f70.google.com with SMTP id a92af1059eb24-1232cb47471so170253c88.0 for ; Tue, 13 Jan 2026 12:33:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768336419; x=1768941219; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=0moqou0Ld4EaZmHxxSS0TZm2GMndw0nUqSIpM/AN1jg=; b=Yoye1ESc61PHcEhxRBRawSUYy0tKFN+V7sPOst7e/xNjcxaa6Lca0dtPGgP4RncjkU Q29rQjDTyoq6HoeAgt+9xYw5zVDyAsJXLP+oisU+lJlRUcjfrhoLyI2idVdEAQkMVXXi ZQcMMIKZCO+LTvXN3Tt7VJgN1u0iki0mIMn8BpXTqJ6kjUm4OHzZNoVlxQwsyZEmdi/B tuEusYyPpQZj8Q00a/2RXjSSwVVl51djmk1Shs8tGtTQP4LAyl+EshQuZTH6LhG2lF8y pDGmMEgKVCGdOM/03ZmUe+828/PUo7bugNSN/3krdfwD4XUUTB2llSKasxfMBtycV3Mz X9Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768336419; x=1768941219; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0moqou0Ld4EaZmHxxSS0TZm2GMndw0nUqSIpM/AN1jg=; b=SAPLZR3BsaomvHUY8p72rHBWKDiNNrQq9FTq9X5f4MrqkEIx8X7RcpmiO07n3MpBwY eN9BAyWBIGTd1w5MsACOzsqc4zLYDNu6PuOGLUXKdqK/NScu/3gGXwjc0B00EJQ9uzaM QfJSNN9nW2UUAe+U5VOc7DHg/h5sMOuQY2Zzgd8XgGjtQYCERj+xJQQuPlAnzbEVJYnW S7S+Bt6jYPnm9iqHNA4CcKUK9af+N/7FnMxa0GcWhV0YDJa181xdATU0r9dJck6vUbOH wYQtsr0sdqDJk8WzKfoVwcyMxq2OzYTAebYisVxz2hsthq6WHmtQ63SumFSHdriG+nkm OPGA== X-Forwarded-Encrypted: i=1; AJvYcCVYfoV4+/CzHBr8yfb0GTdaGjYq/YTZRJCXB53QeDBgLexxy9m0UI52P5Xxv9AhQRuO4H2k64IBxLV6kCY=@vger.kernel.org X-Gm-Message-State: AOJu0YxWPO1Fw8Ag7Uowu6/fxCVxXkZmBxODOkhhOlNbMG/9VNru3d3p rHMp970wHc3cfmIK59s02rnqOXG7fTzbRE1mIZ/LjUt/SPHh7yWqFbOHyDFAgZEydP/ghfX/ZCQ Ut++NfszNdNwS5fWdleHEMK5tn4W78d+6nGaFSV9Cnj8rbamIfVApDXmg9baDY3hvkGw= X-Gm-Gg: AY/fxX5AxkXhGDajL/FBOF+5QgxHNLMGLT0re9Mhaz9s1+19TBctzQ1LAsUV5yvwSg/ E4zq2AWsaNOkSwWeGu8OIV9SbtkGUIPj+xCEvszmoYg8sa0ILkl55rrljgVbNlZ4Zg3Q4FNqrbn LSmxG8eFRNkXx4uaGIeBlg9I3J2kBMfeYzifwiesD4MdS7EKX3eiQft00fWZ5TmTw21gIU5Dr2g ngBdNLmbnFbHCz+TcKRVFzLtKp1/oYqagUtzlFtd5j+MJU2hWjywdBcn+XXsNUNXgQpy9J9ncck 24KWJdGRedQXXdwmBV8xCxWTRrjqa0ezuU+QI0i0tb2uKrIvw+EADyUEKkjns0IDyspqgD9Es9Z /7VcSQPJGDvIHye/8wzO6FVHYeLTGJMAONeD0f8dMmS4r4jigUqrZhYeLHx9ycd2K/LwYlg== X-Received: by 2002:a05:7300:7304:b0:2ae:593b:2163 with SMTP id 5a478bee46e88-2b4870bf0dfmr136999eec.4.1768336418560; Tue, 13 Jan 2026 12:33:38 -0800 (PST) X-Received: by 2002:a05:7300:7304:b0:2ae:593b:2163 with SMTP id 5a478bee46e88-2b4870bf0dfmr136981eec.4.1768336417978; Tue, 13 Jan 2026 12:33:37 -0800 (PST) Received: from gu-dmadival-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b170673bc0sm19157897eec.5.2026.01.13.12.33.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 12:33:37 -0800 (PST) From: Deepa Guthyappa Madivalara Date: Tue, 13 Jan 2026 12:33:33 -0800 Subject: [RFC PATCH 2/3] media: v4l2-core: Add support for video encoder ROI control Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260113-iris_enc_roi-v1-2-6c86eba38587@oss.qualcomm.com> References: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> In-Reply-To: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> To: Mauro Carvalho Chehab , Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Deepa Guthyappa Madivalara X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768336416; l=3289; i=deepa.madivalara@oss.qualcomm.com; s=20250814; h=from:subject:message-id; bh=rLg1XZm7+TLU/MssBuCqd65nuhBQ9YaSkzsjTYz4VIE=; b=Sr4x6zEVPNeL1g0JOIj59gzmqbw6vnuMmJ9+MXMlvRMlCL+/GQlO831nKbUiYLTQ8442IVe49 GbDXccNz63uD4pLH9V7tRAkfFKZ6xOquTS+Vy84+KLN4DuqsGldZ4nU X-Developer-Key: i=deepa.madivalara@oss.qualcomm.com; a=ed25519; pk=MOEXgyokievn+bgpHdS6Ixh/KQYyS90z2mqIbQ822FQ= X-Authority-Analysis: v=2.4 cv=BYXVE7t2 c=1 sm=1 tr=0 ts=6966ac23 cx=c_pps a=SvEPeNj+VMjHSW//kvnxuw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=rF52-kdUTgVHl7Ch54gA:9 a=QEXdDO2ut3YA:10 a=Kq8ClHjjuc5pcCNDwlU0:22 X-Proofpoint-ORIG-GUID: eyE32sl7p_PqCaccR9a_SKmVHmNxwnP9 X-Proofpoint-GUID: eyE32sl7p_PqCaccR9a_SKmVHmNxwnP9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDE2OCBTYWx0ZWRfX+l5nj8FUFSsZ hMWicyuGn/fuVgMMCYZVmw9ZC7f0wEXrhWWgYYMUihVbmZg/JE7n/rm9yHptu+r1T+3cxxS1Ivx QiH13gJhsQPUcu70xkpLOx3BW3iZxigw8nActHwBWo2xFrUa3i0n07wQ0PR8bvxX2ev2RIrQQn2 9nAzS+abkyVsFrlZ6I0zl+qSdKz9BY92A5kLzSiXV4K9+fHapoem/8jk0ojBec69bn4CVjknlx5 khuR2oywn0Ys4oUGct2osTJwsX76WmTyRB/yeOdxYHebAMBvyvRRtLUnO6nlSdDRcZq1WsXk4JB E2UvFkMFN/4zRJ7ovphCptn4QrtNpBI4ts4wKD4XVo1bSTECcW6s8LunRJrvo4tIj1RTfx4NkNe 47W2sEfB5yfA4KcoLq2hIAaDuth4ej35eklRQLN/cxofXyk/vM5c1TYtVN5V8PHz25fiPxW5w45 2lBzj7HtB7BNDQvEdKg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_04,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 impostorscore=0 spamscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601130168 Implement V4L2_CTRL_TYPE_ENC_ROI_PARAMS control type with validation ensuring the number of ROI regions stays within acceptable limits. Signed-off-by: Deepa Guthyappa Madivalara --- drivers/media/v4l2-core/v4l2-ctrls-core.c | 14 +++++++++++++- drivers/media/v4l2-core/v4l2-ctrls-defs.c | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2= -core/v4l2-ctrls-core.c index 209bc05883bb15bc8614970e7b42595aad6dd18f..5695c96b4f2065c5d548a25ebcf= d3619e7b6f4d0 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-core.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c @@ -442,6 +442,9 @@ void v4l2_ctrl_type_op_log(const struct v4l2_ctrl *ctrl) case V4L2_CTRL_TYPE_AV1_FILM_GRAIN: pr_cont("AV1_FILM_GRAIN"); break; + case V4L2_CTRL_TYPE_ENC_ROI_PARAMS: + pr_cont("ENCODER_ROI"); + break; case V4L2_CTRL_TYPE_RECT: pr_cont("(%d,%d)/%ux%u", ptr.p_rect->left, ptr.p_rect->top, @@ -967,6 +970,7 @@ static int std_validate_compound(const struct v4l2_ctrl= *ctrl, u32 idx, struct v4l2_ctrl_hevc_decode_params *p_hevc_decode_params; struct v4l2_area *area; struct v4l2_rect *rect; + struct v4l2_ctrl_enc_roi_params *p_enc_roi_params; void *p =3D ptr.p + idx * ctrl->elem_size; unsigned int i; =20 @@ -1329,7 +1333,12 @@ static int std_validate_compound(const struct v4l2_c= trl *ctrl, u32 idx, if (!rect->width || !rect->height) return -EINVAL; break; - + case V4L2_CTRL_TYPE_ENC_ROI_PARAMS: + p_enc_roi_params =3D p; + if (p_enc_roi_params->num_roi_regions > 10 || + p_enc_roi_params->num_roi_regions < 0) + return -EINVAL; + break; default: return -EINVAL; } @@ -2042,6 +2051,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ct= rl_handler *hdl, case V4L2_CTRL_TYPE_RECT: elem_size =3D sizeof(struct v4l2_rect); break; + case V4L2_CTRL_TYPE_ENC_ROI_PARAMS: + elem_size =3D sizeof(struct v4l2_ctrl_enc_roi_params); + break; default: if (type < V4L2_CTRL_COMPOUND_TYPES) elem_size =3D sizeof(s32); diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2= -core/v4l2-ctrls-defs.c index ad41f65374e2396f30f9798235401705af366622..7d36e387d6e9b0e5ee556ea1e48= c1b4f0abd084b 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c @@ -973,6 +973,7 @@ const char *v4l2_ctrl_get_name(u32 id) case V4L2_CID_MPEG_VIDEO_AVERAGE_QP: return "Average QP Value"; case V4L2_CID_FWHT_I_FRAME_QP: return "FWHT I-Frame QP Value"; case V4L2_CID_FWHT_P_FRAME_QP: return "FWHT P-Frame QP Value"; + case V4L2_CID_MPEG_VIDEO_ENC_ROI: return "Video Encoder ROI params "; =20 /* VPX controls */ case V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS: return "VPX Number of Parti= tions"; @@ -1607,6 +1608,10 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum = v4l2_ctrl_type *type, case V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY: *type =3D V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY; break; + case V4L2_CID_MPEG_VIDEO_ENC_ROI: + *type =3D V4L2_CTRL_TYPE_ENC_ROI_PARAMS; + *flags |=3D V4L2_CTRL_FLAG_HAS_PAYLOAD; + break; default: *type =3D V4L2_CTRL_TYPE_INTEGER; break; --=20 2.34.1 From nobody Mon Feb 9 05:44:41 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 942C73033D9 for ; Tue, 13 Jan 2026 20:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336427; cv=none; b=KUpb5EXEvP/a4100Hvt0sX3J+CvQhKMO8gZskQ3D0Oq211fGdlxVGJXqwc/nbr87zVJx+/jN8IB6J9/cr6PyLttya4kjljlHBjV7udR0TUM7mY9/UlfK7woSAHg2yKJehNK+jXsLZzyb5djMKWj7hiknYmHKBNDB5cb25Rb9KIs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768336427; c=relaxed/simple; bh=mI3w+fNYnExFQMgzeQKywHjpUbJ8gQ2nSgDbYOTLhNw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sM4/w8sb40JHeQ+Bzytq5/oAzy1MA+6rhRZw7DK5WXBX3vpyBxiBgMIzeSUhrdRd8oM8M043vjDjtklmrXUJFZCCsLT9JF6gmMnVw5LEFqL3rZL6CAtWWR75RQhR0b4r7vtdequGUo6o+8STAG4Gni9OVv60hQdIr4YfUk5heqY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pWwD8fI2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=I1+oDvML; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pWwD8fI2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="I1+oDvML" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60DG58LP1294956 for ; Tue, 13 Jan 2026 20:33:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= pGDn7XjluYGlc7+xUytTtb7c+6xJORtfZoGQQYOexXU=; b=pWwD8fI2C7Xses0w U1VbGxDMe+DwgOSMEpXtzr5sD/vngPdQZzbJnS51s7CGQfmctrILpyuNXs4xyBV6 brO9nHTnoUb+UFZVd8qgkAAqc7FOum4rBMjz4y4wb6uRk9KmdbLOphwFdT+CX5oJ huMHzotgO9NJBa1Wf6ijKwUwea2DijPZTqfWLtnUy3eqZAXYil3/7meGSQgWdGse /+BILPOucoqQKOLVw70aI3RVoESeC2LH3+Z4PxhajRdkznaPBV0i5JDLIa9cx0t0 jiaOy6y3TyYPCnW47qben57GMgXPMzKTWLEntbGx61D5xaayBfGZH7XnbZjrvfg0 t5CXkA== Received: from mail-dy1-f199.google.com (mail-dy1-f199.google.com [74.125.82.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bns8v0v99-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 13 Jan 2026 20:33:40 +0000 (GMT) Received: by mail-dy1-f199.google.com with SMTP id 5a478bee46e88-2ae5fafb5c1so165821eec.0 for ; Tue, 13 Jan 2026 12:33:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768336420; x=1768941220; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=pGDn7XjluYGlc7+xUytTtb7c+6xJORtfZoGQQYOexXU=; b=I1+oDvMLSRXDMiXqSkXfHxKfSO4GXkrY12tGXUs4Pvb91v4njfyRbMtb7kntDuYqtg NIuk2fjX0onsbmZp7MCpAqG1wh5Uvp6vwCAKkKN4/Wpe/E3sUVvG4iMGdANwyhfufGgr szW7HYHxNqz/MwHTyDov0gLIB7KlSZ98klxH8cq47VmNlOnHrEsm5GyEvGCu51z3XY2L gph8BhTluCPEASCS5IHzwZXaygQ9nLLFmP//+FfHQkNVFMOq8BYNfhwR/q9OytwdcG6T cV1px+ui6Yue5fPvbWvcp4QM/sT6e2IwGvddGkBfyls9qwXv3j5QjF1eveg1LxOz2Xy5 kPYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768336420; x=1768941220; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pGDn7XjluYGlc7+xUytTtb7c+6xJORtfZoGQQYOexXU=; b=w5vmCfKUDBWnsAtCXzMqF9g4P8ln80Z6StIrDCDYskiHqm18L3xNl1UWWnT+WxMIBT 4Vr/FnU6ntFfgtu3YsUeaa8fC8WO5YdMUpAFEBC9rNnnJfrkQoXf++BV9YA0Szq9eNFw V/KFNNVMK4F727Ra5kAO1zyDyjlZ06JR6+sXQMOeVpfpppKQbW0rupqu8JOrCSLZCIT2 DTod9p5OwbJKrwZvnPiYY85pTl4PSJXxmdYl7W8xbQsRXQ3ghbMJBiWcVScaSa95aMZ6 mmcI0J7DWrMwGYxifpCpfD2irWyg1dse5d0EOxPuZGTipTqOAVKo39WrWtI9DELdKFau 8N0Q== X-Forwarded-Encrypted: i=1; AJvYcCWxOEF9pTH3zLfve/ZTM0/4lfPV9GyJ3WuRwcs/BzJvGlIy/C6pjua9d56ivJFXg1lFKQzyFIlLzJPRZ8o=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0zl0EAQjaOjzU7GYwB015ykXa03O/E2CXd+71mW3ENFi3NTVZ IMrhCq+6y2yvSnEvEw5KX6KqH37Cef7D6ZYMsSXVb8KS4sb/F+eYB6Eg06w7sqHGLT4nNJazoTb U+ejUhpi9HNDA3fpE4R78rTdccdZAC2bRpfWkL+kJip0usJpqsn04TEl3K/sBp6flHJw= X-Gm-Gg: AY/fxX7wfArG1ct6IXZUA81zP3MxPb2+J3d/G/WFUKoCDzpyhaHnVCxxp48B/WqZc6B DzcbZMF0Lr+pCpQISjs7WZPBOh4ByfbmP8TqnfKuMgTeRHQkrNErCGTo8cbYDCB/KcZq5e0HZf0 iRi4GGRDbpwdGeUqnx0sO+smIZ123hpY8fHBezy4kIX85isGrW9fBnWspdcUsP3I4e82mSGR6WX m0TV/fp0JqdbSjvqBzU2bOBVA4y9F7AazEcnlKNeSa5PaXwmg79RydUIYl+pKo5rnMViS9Tkftf dDsb2gfTpJUlw6WEfb+1VZWfmRE0iLODN7T/5xALbpUV71NVG4QphnfmAoIiwsZu71YNLpaHgEB Gki6H1Z6Hq2PSSXcnhnGOaw37TDw91Sdd4qiEsLXz4jiogeelwN7oMcqT09vMblwFSOvawA== X-Received: by 2002:a05:7300:3b1a:b0:2b0:4f9a:724b with SMTP id 5a478bee46e88-2b4871e9771mr143236eec.6.1768336419441; Tue, 13 Jan 2026 12:33:39 -0800 (PST) X-Received: by 2002:a05:7300:3b1a:b0:2b0:4f9a:724b with SMTP id 5a478bee46e88-2b4871e9771mr143218eec.6.1768336418830; Tue, 13 Jan 2026 12:33:38 -0800 (PST) Received: from gu-dmadival-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2b170673bc0sm19157897eec.5.2026.01.13.12.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jan 2026 12:33:38 -0800 (PST) From: Deepa Guthyappa Madivalara Date: Tue, 13 Jan 2026 12:33:34 -0800 Subject: [RFC PATCH 3/3] media: iris: Add ROI support framework for video encoder Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260113-iris_enc_roi-v1-3-6c86eba38587@oss.qualcomm.com> References: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> In-Reply-To: <20260113-iris_enc_roi-v1-0-6c86eba38587@oss.qualcomm.com> To: Mauro Carvalho Chehab , Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Deepa Guthyappa Madivalara X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768336416; l=6206; i=deepa.madivalara@oss.qualcomm.com; s=20250814; h=from:subject:message-id; bh=mI3w+fNYnExFQMgzeQKywHjpUbJ8gQ2nSgDbYOTLhNw=; b=DHw1LIcBDk9zxxR949jpdE1ETt0fE+cV00q30+Cfosh6oWTtAU25x2IthDRhu5+UQ/J6t/959 82UNoZZQZmjAnWkxGSgWy5GSojKKsgF1NDGVkzSn04bIl60PaWGh44u X-Developer-Key: i=deepa.madivalara@oss.qualcomm.com; a=ed25519; pk=MOEXgyokievn+bgpHdS6Ixh/KQYyS90z2mqIbQ822FQ= X-Authority-Analysis: v=2.4 cv=aY5sXBot c=1 sm=1 tr=0 ts=6966ac24 cx=c_pps a=cFYjgdjTJScbgFmBucgdfQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=4usVFD2bs8YhfvkcmPAA:9 a=QEXdDO2ut3YA:10 a=scEy_gLbYbu1JhEsrz4S:22 X-Proofpoint-ORIG-GUID: HkF-dRLdNoXNYciGFbnS5ErmLrRNcQv0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEzMDE2OCBTYWx0ZWRfXw7XrNVDuhgJs Y3exrGCZ75wRjgtwF15ybCFsa97N4zNDixDQSeAbbl4SpiYKTdrdVHyjTCAgusB2iKURqkP3Yfy 90IVEAn1IweWPaYTm9eQzanKD9ja1L0pduHVmmwjGXsqLieIxclwmi26JujQy9A5TTpdjI6Rgnt 6g/jm69vIIAmXTsSa1hRhZqB8PqMCCLEuAeR0XXPx9ykawq7Bq0g+tP9NCyEmWKSZorYDlttkOh xjAGYLe9+JAt3xtwC5lbFXjrvJa3qYgJMCbLQ74XdOKm+ZGj472eKLsqSRpQMzKoJX4vsCen0vz JMITECdanADzEBlw2igVeugStivrfxjUmAd0qHgiA9GWHpctEkEgr+x3vldWaDDILmVSe/3wg9P 8+P9k0NzG5G7dlbeMw6MMSVMvVCrgfmUuoRcJLoa2e1I7nO4T3lzjma7z0VBYlr0V8R/f9YKppZ XELStPskFWu4f84ClWw== X-Proofpoint-GUID: HkF-dRLdNoXNYciGFbnS5ErmLrRNcQv0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-13_04,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601130168 Add ROI support in the iris driver, including control structures and default parameters. Extend support to set ROI parameters using compound control V4L2_CTRL_TYPE_ENC_ROI_PARAMS. Signed-off-by: Deepa Guthyappa Madivalara --- drivers/media/platform/qcom/iris/iris_ctrls.c | 54 ++++++++++++++++++= +++- drivers/media/platform/qcom/iris/iris_ctrls.h | 1 + .../platform/qcom/iris/iris_platform_common.h | 4 ++ .../media/platform/qcom/iris/iris_platform_gen2.c | 8 ++++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index c0b3a09ad3e3dfb0a47e3603a8089cf61390fda8..2d00df554a64829af550ed43267= bf73b6a9c892e 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -98,6 +98,8 @@ static enum platform_inst_fw_cap_type iris_get_cap_id(u32= id) return B_FRAME_QP_H264; case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP: return B_FRAME_QP_HEVC; + case V4L2_CID_MPEG_VIDEO_ENC_ROI: + return ROI_PARAMS; default: return INST_FW_CAP_MAX; } @@ -185,6 +187,8 @@ static u32 iris_get_v4l2_id(enum platform_inst_fw_cap_t= ype cap_id) return V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP; case B_FRAME_QP_HEVC: return V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP; + case ROI_PARAMS: + return V4L2_CID_MPEG_VIDEO_ENC_ROI; default: return 0; } @@ -208,9 +212,14 @@ static int iris_op_s_ctrl(struct v4l2_ctrl *ctrl) return -EINVAL; =20 cap[cap_id].flags |=3D CAP_FLAG_CLIENT_SET; - inst->fw_caps[cap_id].value =3D ctrl->val; =20 + if (inst->fw_caps[cap_id].flags & CAP_FLAG_COMPOUND) { + if (cap_id =3D=3D ROI_PARAMS) + inst->fw_caps[cap_id].p_def =3D + (const void *)ctrl->p_new.p_enc_roi_params; + } + if (vb2_is_streaming(q)) { if (cap[cap_id].set) cap[cap_id].set(inst, cap_id); @@ -223,6 +232,21 @@ static const struct v4l2_ctrl_ops iris_ctrl_ops =3D { .s_ctrl =3D iris_op_s_ctrl, }; =20 +static const struct v4l2_ctrl_enc_roi_params enc_roi_params =3D { + .num_roi_regions =3D 10, + .roi_params =3D { + [0 ... 9] =3D { + .roi_rect =3D { + .left =3D 0, + .top =3D 0, + .width =3D 0, + .height =3D 0, + }, + .delta_qp =3D 0, + }, + }, +}; + int iris_ctrls_init(struct iris_inst *inst) { struct platform_inst_fw_cap *cap =3D &inst->fw_caps[0]; @@ -263,6 +287,22 @@ int iris_ctrls_init(struct iris_inst *inst) cap[idx].max, ~(cap[idx].step_or_mask), cap[idx].value); + } else if (cap[idx].flags & CAP_FLAG_COMPOUND) { + if (cap[idx].cap_id =3D=3D ROI_PARAMS) + cap[idx].p_def =3D &enc_roi_params; + + ctrl =3D v4l2_ctrl_new_std_compound(&inst->ctrl_handler, + &iris_ctrl_ops, + v4l2_id, + v4l2_ctrl_ptr_create + ((void *) + cap[idx].p_def), + v4l2_ctrl_ptr_create + ((void *) + NULL), + v4l2_ctrl_ptr_create + ((void *) + NULL)); } else { ctrl =3D v4l2_ctrl_new_std(&inst->ctrl_handler, &iris_ctrl_ops, @@ -915,3 +955,15 @@ int iris_set_properties(struct iris_inst *inst, u32 pl= ane) =20 return 0; } + +int iris_set_roi_params(struct iris_inst *inst, u32 plane) +{ + const struct v4l2_ctrl_enc_roi_params *enc_roi_params; + enc_roi_params =3D inst->fw_caps[ROI_PARAMS].p_def; + + /* Todo: Send HFI prop to firmware + * once support is available + */ + + return 0; +} diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.h b/drivers/media/= platform/qcom/iris/iris_ctrls.h index 30af333cc4941e737eb1ae83a6944b4192896e23..92ceb9e412635f04787fe92a9e5= c6ba03bb7332d 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.h +++ b/drivers/media/platform/qcom/iris/iris_ctrls.h @@ -33,5 +33,6 @@ int iris_set_max_qp(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_i int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id); int iris_set_properties(struct iris_inst *inst, u32 plane); +int iris_set_roi_params(struct iris_inst *inst, u32 plane); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 8d8cdb56a3c7722c06287d4d10feed14ba2b254c..6fcbdcb11db7785085de8f95b07= f93f8a045c9ce 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -6,6 +6,7 @@ #ifndef __IRIS_PLATFORM_COMMON_H__ #define __IRIS_PLATFORM_COMMON_H__ =20 +#include #include #include "iris_buffer.h" =20 @@ -143,6 +144,7 @@ enum platform_inst_fw_cap_type { P_FRAME_QP_HEVC, B_FRAME_QP_H264, B_FRAME_QP_HEVC, + ROI_PARAMS, INST_FW_CAP_MAX, }; =20 @@ -154,6 +156,7 @@ enum platform_inst_fw_cap_flags { CAP_FLAG_CLIENT_SET =3D BIT(4), CAP_FLAG_BITMASK =3D BIT(5), CAP_FLAG_VOLATILE =3D BIT(6), + CAP_FLAG_COMPOUND =3D BIT(7), }; =20 struct platform_inst_fw_cap { @@ -163,6 +166,7 @@ struct platform_inst_fw_cap { s64 step_or_mask; s64 value; u32 hfi_id; + const void *p_def; enum platform_inst_fw_cap_flags flags; int (*set)(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id); diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index c1989240c248601c34b84f508f1b72d72f81260a..eccfe5642d6803fd435787cadc8= 3f878572dbdd5 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -586,6 +586,14 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8550_enc[] =3D { .flags =3D CAP_FLAG_OUTPUT_PORT, .set =3D iris_set_u32, }, + { + .cap_id =3D ROI_PARAMS, + .step_or_mask =3D 1, + .p_def =3D NULL, + .flags =3D CAP_FLAG_OUTPUT_PORT | CAP_FLAG_COMPOUND | + CAP_FLAG_DYNAMIC_ALLOWED, + .set =3D iris_set_roi_params, + }, }; =20 static struct platform_inst_caps platform_inst_cap_sm8550 =3D { --=20 2.34.1