Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp2470672ybv; Fri, 21 Feb 2020 16:33:44 -0800 (PST) X-Google-Smtp-Source: APXvYqz5WJmfS8xsrJE1pMSszbDP8rsVjyl9WCg96ZMSIp8JA5VXUqrGchBWJX3sD9cRks8AFODR X-Received: by 2002:a9d:4706:: with SMTP id a6mr28487242otf.331.1582331624846; Fri, 21 Feb 2020 16:33:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582331624; cv=none; d=google.com; s=arc-20160816; b=PIj5kQYC/fyN26kpJLP+epTdpKZlKCTZyITdYwO43X08a4tCBhBhi/nwIQzxSbhBN0 vfBvY6qHL9L35OFxx6uMAulhsM4v7zzcUXjjDN8s3sBoB1b4AgC0gsZaQpy7544L7mR6 mDwQQZhZb/yTWtDJxIqlDVTjzBMLaupnRsw/DJflERvSJvcsjk6VqrYh3HftMU2liRnW I/dLujm9CHKV1RD6CxyzesQgjwvKgDqYobEEy5oe1GB8hqVfg6SE1CsiZw2RyTsbF6F/ +FjvubPo8WTkoW/vYsNcgOnadW/A7ZuVxwKJSnZjSuEw+dCkt8vBRqE6brJgegvM3UkE tUQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:from:subject:mime-version :message-id:date:dkim-signature; bh=OqxJ7uFM6QirldzKomGS86nipI+w+uqyhp1pa4CeHPE=; b=IU4W6Z+O68sR05rfK46ANMY8Mcs5jk8vOfKejTRmD40t2pVIC+1sR7wBFot2vN8zKg 4vDmjILOI0OcRzqKcF62T4ysavUDpgRD7AxcyCzY/RuMqgvf2QYtw+4kWMZH7cvFCUJT 1jwE8ih25fjQaP0dLCAW6uubndkhgM/LNgX1CdsNiIgHX6tmSH7OLMYgnZrCO8vKeuoc i7xTgyWY2AUdOUlceMi5Kh6KOV0NWiMgS3A916sbH7xIWhHU0whpHApanA+NQd33HUIY kuBCtWxpoNyfXflh13E8W6+DPLcp4IMvaxZRbWuC27xjtNRhZpUNaP0BMcy0rBKyDzQg 8EIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=l11FZQE6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p19si2288037otq.296.2020.02.21.16.33.32; Fri, 21 Feb 2020 16:33:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=l11FZQE6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726865AbgBVAdX (ORCPT + 99 others); Fri, 21 Feb 2020 19:33:23 -0500 Received: from mail-vk1-f201.google.com ([209.85.221.201]:36002 "EHLO mail-vk1-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726710AbgBVAdW (ORCPT ); Fri, 21 Feb 2020 19:33:22 -0500 Received: by mail-vk1-f201.google.com with SMTP id j25so1634319vkn.3 for ; Fri, 21 Feb 2020 16:33:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=OqxJ7uFM6QirldzKomGS86nipI+w+uqyhp1pa4CeHPE=; b=l11FZQE6V8RxsI2VoZDUgCeS8uBjfKYdayCEjmfzGtSLpL+FmxZ12lPTOzKCEfFbgy i9RNdPM+q2UeJsmzcwJQa8Tdae6rMQ1bWasVph50yejryH/Z4YlYOamP8H36JjznclMB rRxgBQsRfVrRFTr53kaiZNL9waTw0Z1B+N/1i/LhIf8913anKqsBkbYbVsCS+3juliBc +A1vV4p69SfiPwOt7gTBQTVB0/SFzNAiGhCy+77xg3zuq71zedQcuVoe6O+/bxMHZxdt cwPi9zKra5Usswsy5LnwTkbBsVUXVbHNSA9r+MS78gOA6xfnZTh5svOReq/s5ixaRwva RITA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=OqxJ7uFM6QirldzKomGS86nipI+w+uqyhp1pa4CeHPE=; b=cuA/3Cu9vg3gM2/jKdoCp8wZ7b7N3s5W3ZtJ0n2fRl7wJ8x9d4pcOdhy8KWkXUeJfz ORUm7cKnFOxd4uoKmcVYYCX5xgTbU1NTsBEJSgBlOewmOTqbGnBoaLrbYoMgl61GNnEL U2onH7YMb84T4O+pC8UkLBGk3Ij4v/FXNb+2Ck+iT1V9u6OewO2ldtbCqhFtcyWr3D46 YA7Rke+tigIjRnESZ8UmV0eh4DWwNf+PtKvarmQBr20tE46wqPgWoBnLGPvySoGhPbbn B7wO+xtD5Y4/kiYVRmtlQPQTQSvUBt39KLaY/FNtzUqBjJYzqfJXF4BAH3o7hd1kRa2A lKsw== X-Gm-Message-State: APjAAAW45fqK99ceM/JI2y20HEVAeaSH8C5jC5w55Y8iZayOd/MpuoVW lsae1D/jZsNdSuLECtRN58jnGLBidXyNq0M= X-Received: by 2002:a1f:6344:: with SMTP id x65mr18208843vkb.26.1582331601314; Fri, 21 Feb 2020 16:33:21 -0800 (PST) Date: Fri, 21 Feb 2020 16:33:11 -0800 Message-Id: <20200222003311.106837-1-jkardatzke@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.25.0.265.gbab2e86ba0-goog Subject: [PATCH v2] media: venus: support frame rate control From: Jeffrey Kardatzke To: linux-media@vger.kernel.org Cc: Stanimir Varbanov , Andy Gross , Mauro Carvalho Chehab , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Jeffrey Kardatzke Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add encoder control for enabling/disabling frame rate control via V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE. It is enabled by default. Signed-off-by: Jeffrey Kardatzke --- drivers/media/platform/qcom/venus/core.h | 1 + drivers/media/platform/qcom/venus/venc.c | 4 +++- drivers/media/platform/qcom/venus/venc_ctrls.c | 8 +++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platform/qcom/venus/core.h index 11585fb3cae3..2b0649ffbd92 100644 --- a/drivers/media/platform/qcom/venus/core.h +++ b/drivers/media/platform/qcom/venus/core.h @@ -187,6 +187,7 @@ struct venc_controls { u32 bitrate_mode; u32 bitrate; u32 bitrate_peak; + u32 rc_enable; u32 h264_i_period; u32 h264_entropy_mode; diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c index 453edf966d4f..56079c9d9900 100644 --- a/drivers/media/platform/qcom/venus/venc.c +++ b/drivers/media/platform/qcom/venus/venc.c @@ -731,7 +731,9 @@ static int venc_set_properties(struct venus_inst *inst) if (ret) return ret; - if (ctr->bitrate_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) + if (!ctr->rc_enable) + rate_control = HFI_RATE_CONTROL_OFF; + else if (ctr->bitrate_mode == V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) rate_control = HFI_RATE_CONTROL_VBR_CFR; else rate_control = HFI_RATE_CONTROL_CBR_CFR; diff --git a/drivers/media/platform/qcom/venus/venc_ctrls.c b/drivers/media/platform/qcom/venus/venc_ctrls.c index 877c0b3299e9..0572a00b8380 100644 --- a/drivers/media/platform/qcom/venus/venc_ctrls.c +++ b/drivers/media/platform/qcom/venus/venc_ctrls.c @@ -199,6 +199,9 @@ static int venc_op_s_ctrl(struct v4l2_ctrl *ctrl) } mutex_unlock(&inst->lock); break; + case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE: + ctr->rc_enable = ctrl->val; + break; default: return -EINVAL; } @@ -214,7 +217,7 @@ int venc_ctrl_init(struct venus_inst *inst) { int ret; - ret = v4l2_ctrl_handler_init(&inst->ctrl_handler, 30); + ret = v4l2_ctrl_handler_init(&inst->ctrl_handler, 31); if (ret) return ret; @@ -351,6 +354,9 @@ int venc_ctrl_init(struct venus_inst *inst) v4l2_ctrl_new_std(&inst->ctrl_handler, &venc_ctrl_ops, V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME, 0, 0, 0, 0); + v4l2_ctrl_new_std(&inst->ctrl_handler, &venc_ctrl_ops, + V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE, 0, 1, 1, 1); + ret = inst->ctrl_handler.error; if (ret) goto err; -- 2.25.0.265.gbab2e86ba0-goog