From mboxrd@z Thu Jan 1 00:00:00 1970 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 D870F22A1D4 for ; Tue, 7 Jul 2026 16:59:51 +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=1783443594; cv=none; b=Lj4ZirsU3f/TQARExGXCAERwzgkFqa32id7C4N9dX2TVQH676txDaKV7EquXJk66qJYPC9fnhFgYJ39AeCUt3nV4SNKtl3nAWG7o06zAzIH2FyqkwAe3yr315HF4RtVPSNu1TpDcwgwkj4fOP11y7b272x23kRgp6+DdLaWMJao= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783443594; c=relaxed/simple; bh=7HfeutcNA0v0WeeCaID2pb5L1N/qO2CFCZe/QU9ZVQM=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=sV+OASzu6WcF/DHalSn/hz2BoiUwpw8yvBJ7aYXNjwjImOx57SU6hS4WSxV7bPhofcOlEzad7lNcisISXzXbdBtFnuK1LyjC+phjmefuBDC8h9Db9mDgILnvJP2Jklo2a4dyddp2qsmvkXs5PlB5e8NOryzRfJVAH5RsswNaC5A= 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=IjWGY3R/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LbhxX6n6; 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="IjWGY3R/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LbhxX6n6" 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 667FTBSM4194065 for ; Tue, 7 Jul 2026 16:59:51 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= 7HfeutcNA0v0WeeCaID2pb5L1N/qO2CFCZe/QU9ZVQM=; b=IjWGY3R/rQSJyzmL acw+z2iYkSgfehkRh4qq9d2/79WK9jsrVD7uL13vl7C+1TTd7TA0H85HONrPSn+x AbjM0rLW0ryGnvSZFK/PHDK7lSkB3FGZUO0/+sRrPECUKLlEAqeHr7fCFMcVvpFn icGbo19lTNffwRfXXKWlRXZnuS/denQtSgcEEcqV1rUyfdNcwJ5QAdxZh1hEF3qe q0IoWzq+gAuN4yWfc+N7a6DZ6cJJaTjhJ39fpz8pD+Dsao3owRA525K82mIlD/Ah IRbDfW1hEi62rkhhb89dvUtyzqicXDAwvYoalezzmklfPKpTKIa3Z9MtIJInbD+r y83sPQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f8v9aamjk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Jul 2026 16:59:50 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c9d5a5b63c5so7005521a12.1 for ; Tue, 07 Jul 2026 09:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783443590; x=1784048390; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=7HfeutcNA0v0WeeCaID2pb5L1N/qO2CFCZe/QU9ZVQM=; b=LbhxX6n6nXXLGFVf6m7JOX6ezakSM6FzhzRRxyV76gwk/jrKBy8Cw4sy9ooDX4AW2E DQvd1BQJ1lifRlktd+LlsxwmEBJNywQfENDVga8WXZjZqz6FwqKh4uL+dNbIWD26jLCl ZKZZ0Wfw9Ke1QzH57YSktB7hiJQ+B+utIkfGXKPmOniu8NVyyj0gOZ6MEGcn2OP3Jt7V g6VzmY2YJMVwVee7qOQJw7p4JWnPm3HMSzy4kStmzTgMV83ipJMy77fx1X6wLHkj7jzz et3M31XVHYoSgE7YJrH1BoLGAPmeGrVn3YtJg6Apw30Cl4XdfWZMtLXH9SFky9Zhqko2 fIBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783443590; x=1784048390; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7HfeutcNA0v0WeeCaID2pb5L1N/qO2CFCZe/QU9ZVQM=; b=Exkv2RKyO6Z91oBFsM6gNssxbulEweB9tI7sS5GGND/BmQonjgoLS69kCoeDXnkPbN dk3qx/eGFffsTmRE8IYqznzXthxsONYSVupjT4Wx+EuU/vAsjsXF4JfWfsvpNqv9VrkQ i0paidNaot0U/LXW7IpcFxOnW8CjoaMnPZY3FCsab8BhCK0sdlhNUv8Mm0S7rxYAazoi 9QYDHehdeMJ7JMyOWh7tPIozI8lAqejABxv2ea+YMvBtapu188fANQEqO6yxOiBwqiCG Wynn/Hu85qurGOG1wi7M82XiPNLR1PrgjsUrJVgc2VrmLc9CyUe/qo9lXqf2Ox2+RTdk lObg== X-Forwarded-Encrypted: i=1; AHgh+Rprid6Ybr7INzu46tmx1OdF+PxvgPNsA/x8M2xV4zO8NIcAdKZmEBLpr0gwJecW8aP21gsuA60wue3UvEs=@vger.kernel.org X-Gm-Message-State: AOJu0YzoMBQJrjTLDkpVTqyQg5VdI8lgBMap7WjDXvTnT392/TDfGGzo +k5RevsmIAmOrIAGcyYFAjr4w1uLQuBTeSgSGsQsYsX1EQIDcE657TpQhTcaNT553nua5JM1dIn reIVbKQ0cRLVxe/0CTF19vxmoLm2MADzLDhVvsLaMkeWb05TkDXsThBJ1y5d6Vmt4dGM= X-Gm-Gg: AfdE7ckkvm6yeMn5RuRgC8SDMoBFNuSeXeIVXMWRrWw/k32tzz57JsOLb+2dm9i4s9r +YAk7u3Cbo8i54u8q+Ff3MfmIv9mGzFKtBe+ATt5F7/mwVpxsffrtDA991BNXywpOGdDNw+fdWB sHw8kmXVZ8eMPR2X1+/9Yrrmth8PgEZTr0L+qamVIhHxf6Jy2XDLdRRYn0hIjC5vvT4T+EcTi6z lkx0K8kElKWR++Wif6vroLeIeGKoxaVJILw/L90EF/iDIJkhNDb3Hsklxk7XQGUiUVFxVqxeKsY 4gT1SFQAKrFXid96JVjdlHP2slhMKTdEto/ncDTu9VkkcirNQ8FJa3hixt5sm9iqUrWKcs9k8o8 nKVC1ourh2lyUqek6St5QlQcGge4H/kblbOtoi2M3Dmw= X-Received: by 2002:a05:6a21:329c:b0:3b7:d9d6:9fc9 with SMTP id adf61e73a8af0-3c08ed55697mr8054682637.2.1783443589694; Tue, 07 Jul 2026 09:59:49 -0700 (PDT) X-Received: by 2002:a05:6a21:329c:b0:3b7:d9d6:9fc9 with SMTP id adf61e73a8af0-3c08ed55697mr8054648637.2.1783443589192; Tue, 07 Jul 2026 09:59:49 -0700 (PDT) Received: from [10.206.105.200] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b6594f6a9sm11005454c88.5.2026.07.07.09.59.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Jul 2026 09:59:48 -0700 (PDT) Message-ID: <586e3fe8-427d-6f91-d6dd-7ca216c763fc@oss.qualcomm.com> Date: Tue, 7 Jul 2026 22:29:41 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 2/2] media: iris: disable time-delta-based rate control for VBR To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Dmitry Baryshkov , Neil Armstrong Cc: Bryan O'Donoghue , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Gourav Kumar References: <20260707-qc10c_fix_and_disable_time_delta_based_rc-v1-0-33fa130bc535@oss.qualcomm.com> <20260707-qc10c_fix_and_disable_time_delta_based_rc-v1-2-33fa130bc535@oss.qualcomm.com> <77aca547-1afd-494d-a2ec-35ba9b4d37f5@oss.qualcomm.com> Content-Language: en-US From: Vishnu Reddy In-Reply-To: <77aca547-1afd-494d-a2ec-35ba9b4d37f5@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Proofpoint-GUID: -BNcXpS527rzAYTWzeTSgR63VzBB1bmX X-Proofpoint-ORIG-GUID: -BNcXpS527rzAYTWzeTSgR63VzBB1bmX X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA3MDE2NyBTYWx0ZWRfX+/1TFrY5xY8d 2Qvgju1AV26zvKkt5FbJhZR7Bc07fePY0/IlR7eQmyCXardSFQekZhJowqQJsIkKYPC749sgYLZ U848nXoMxQddtaA+/04/MWXaYdxIkKQ= X-Authority-Analysis: v=2.4 cv=b9yCJNGx c=1 sm=1 tr=0 ts=6a4d3086 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=UjfhgijXNTkN8XPUw8sA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA3MDE2NyBTYWx0ZWRfX+C7RuPq2kaKH RW/9yEUMuIjUU/LiukJ52sz8/RnEc1KCP05ynHN2UaIKWt/LQf9AjhlEFGeoEyEhkkRPi1cVs9r dpVH+iCYDohZaA5fR5QWwDG1zI7E66nG4o8abJGB+C3QzAwABfwrceJtso9S+Los4NR6WQIBjlQ wsjgyXvLYFdCPFe9RID/ZccMSVJm+9Jt+q4WBk0+YLJVglQUI4+Jsupoumix0kq0zR3fH1Z8gjh duNQH/PZca60XtGzDI+6ndIjhs2QesyGKP/W92Nf3SBTDvcONta4PAiZS90ivJgfWTozwQRhQC/ OFrSZRG/IKo1uQNm6MYqAiUKIuKiKkMfU0l7QgZYn46J4iZV3Fhu+mYHEg5iscxPdgbQlhKPLF5 NhCp7hKrOueyaNvGgKMFVI2VK8S3IxgD2pB+dfsGYJluFVjQ8OsN072h7s690mM1KyiRfNrQmW0 exaYHm1/C9PuoL35VlA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-07_04,2026-07-06_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 priorityscore=1501 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607070167 On 7/7/2026 2:39 PM, Vikash Garodia wrote: > > On 7/7/2026 12:05 PM, Vishnu Reddy wrote: >> From: Gourav Kumar >> >> The iris encoder driver was not sending >> HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL to the firmware during encoder >> initialization. Without this property, the firmware defaults to >> time-delta-based rate control (enabled), which calculates the output >> bitrate from actual frame timing rather than following the configured >> bitrate target. >> >> This caused variable bitrate (VBR) encoding to produce ~5x configured >> bitrate. For example, with video_bitrate=896000 (896 Kbps), the output >> is ~4.4 Mbps instead of the expected ~896 Kbps. >> >> Time-delta-based rate control is designed for variable frame rate (VFR) >> scenarios where the encoder adapts to actual frame timing. However, when >> an application explicitly configures a bitrate target, the firmware must >> follow that target regardless of frame timing. >> > > same here, we can drop the new empty lines > Ack. >> Fix this by adding the TIME_DELTA_BASED_RC capability with a default value >> of 0 (disabled) and sending HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL = 0 to >> the firmware during stream-on, allowing the firmware to use the configured >> bitrate as the target. >> >> Signed-off-by: Gourav Kumar >> Signed-off-by: Vishnu Reddy >> --- >>   drivers/media/platform/qcom/iris/iris_ctrls.c         | 19 +++++++++++++++++++ >>   drivers/media/platform/qcom/iris/iris_ctrls.h         |  1 + >>   drivers/media/platform/qcom/iris/iris_hfi_gen2.c      | 10 ++++++++++ >>   .../media/platform/qcom/iris/iris_hfi_gen2_defines.h  |  1 + >>   .../media/platform/qcom/iris/iris_platform_common.h   |  1 + >>   5 files changed, 32 insertions(+) >> >> diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c >> b/drivers/media/platform/qcom/iris/iris_ctrls.c >> index 10e33b8a73f6..f6136e655b98 100644 >> --- a/drivers/media/platform/qcom/iris/iris_ctrls.c >> +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c >> @@ -1477,6 +1477,25 @@ int iris_set_layer_bitrate(struct iris_inst *inst, >> enum platform_inst_fw_cap_typ >>                            &bitrate, sizeof(u32)); >>   } >>   +int iris_set_time_delta_based_rc(struct iris_inst *inst, enum >> platform_inst_fw_cap_type cap_id) >> +{ >> +    const struct iris_hfi_session_ops *hfi_ops = inst->hfi_session_ops; >> +    u32 hfi_id = inst->fw_caps[cap_id].hfi_id; >> +    u32 value = inst->fw_caps[cap_id].value; >> + >> +    /* >> +     * Disable time-delta-based rate control (value = 0). >> +     * This overrides the firmware's default (enabled), ensuring the >> +     * firmware uses the configured bitrate target rather than calculating >> +     * bitrate from frame timing. >> +     */ >> +    return hfi_ops->session_set_property(inst, hfi_id, >> +                         HFI_HOST_FLAGS_NONE, >> +                         iris_get_port_info(inst, cap_id), >> +                         HFI_PAYLOAD_U32, >> +                         &value, sizeof(u32)); >> +} >> + >>   int iris_set_properties(struct iris_inst *inst, u32 plane) >>   { >>       const struct iris_hfi_session_ops *hfi_ops = inst->hfi_session_ops; >> diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.h >> b/drivers/media/platform/qcom/iris/iris_ctrls.h >> index 3c462ec9190b..10e046722ad3 100644 >> --- a/drivers/media/platform/qcom/iris/iris_ctrls.h >> +++ b/drivers/media/platform/qcom/iris/iris_ctrls.h >> @@ -47,6 +47,7 @@ int iris_set_layer_type(struct iris_inst *inst, enum >> platform_inst_fw_cap_type c >>   int iris_set_layer_count_gen1(struct iris_inst *inst, enum >> platform_inst_fw_cap_type cap_id); >>   int iris_set_layer_count_gen2(struct iris_inst *inst, enum >> platform_inst_fw_cap_type cap_id); >>   int iris_set_layer_bitrate(struct iris_inst *inst, enum >> platform_inst_fw_cap_type cap_id); >> +int iris_set_time_delta_based_rc(struct iris_inst *inst, enum >> platform_inst_fw_cap_type cap_id); >>   int iris_set_properties(struct iris_inst *inst, u32 plane); >>     #endif >> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.c >> b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c >> index acc0ed8adda1..d119ad599c31 100644 >> --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.c >> +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c >> @@ -416,6 +416,16 @@ static const struct platform_inst_fw_cap >> inst_fw_cap_sm8550_enc[] = { > > targets other than the one using inst_fw_cap_sm8550_enc ? > Currently, all HFI gen2 platforms are using this caps only and this property is not applicable for HFI gen1. Regards, Vishnu Reddy. > >>           .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, >>           .set = iris_set_bitrate_mode_gen2, >>       }, >> +    { >> +        .cap_id = TIME_DELTA_BASED_RC, >> +        .min = 0, >> +        .max = 1, >> +        .step_or_mask = 1, >> +        .value = 0, >> +        .hfi_id = HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL, >> +        .flags = CAP_FLAG_OUTPUT_PORT, >> +        .set = iris_set_time_delta_based_rc, >> +    }, >>       { >>           .cap_id = FRAME_SKIP_MODE, >>           .min = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED, >> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h >> b/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h >> index 776b21cd11b2..8766d9e49611 100644 >> --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h >> +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h >> @@ -67,6 +67,7 @@ enum hfi_rate_control { >>   }; >>     #define HFI_PROP_RATE_CONTROL            0x0300012a >> +#define HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL    0x0300012b >>   #define HFI_PROP_QP_PACKED            0x0300012e >>   #define HFI_PROP_MIN_QP_PACKED            0x0300012f >>   #define HFI_PROP_MAX_QP_PACKED            0x03000130 >> diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h >> b/drivers/media/platform/qcom/iris/iris_platform_common.h >> index c9256f2323dc..99dc6d5c72ba 100644 >> --- a/drivers/media/platform/qcom/iris/iris_platform_common.h >> +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h >> @@ -183,6 +183,7 @@ enum platform_inst_fw_cap_type { >>       LAYER3_BITRATE_HEVC, >>       LAYER4_BITRATE_HEVC, >>       LAYER5_BITRATE_HEVC, >> +    TIME_DELTA_BASED_RC, >>       INST_FW_CAP_MAX, >>   }; >>   > > Regards, > Vikash >