Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f6d37b1 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: vidc: Update max frame rate for vp8 encoder"

parents 765fe16b 7e2f80e2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -933,6 +933,8 @@ int msm_vdec_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
	case V4L2_CID_MPEG_VIDC_VIDEO_PRIORITY:
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE:
		if (!is_valid_operating_rate(inst, ctrl->val))
			break;
		inst->clk_data.operating_rate = ctrl->val;
		inst->flags &= ~VIDC_TURBO;
		if (ctrl->val == INT_MAX)
+3 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 */
#include <linux/slab.h>
#include "msm_venc.h"
@@ -1680,6 +1680,8 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
		}
		break;
	case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE:
		if (!is_valid_operating_rate(inst, ctrl->val))
			break;
		inst->clk_data.operating_rate = ctrl->val;
		/* For HEIC image encode, set operating rate to 1 */
		if (is_grid_session(inst)) {
+17 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 */

#ifndef _MSM_VIDC_COMMON_H_
@@ -179,6 +179,22 @@ static inline int msm_comm_s_ctrl(struct msm_vidc_inst *inst,
	return v4l2_s_ctrl(NULL, &inst->ctrl_handler, ctrl);
}

static inline bool is_valid_operating_rate(struct msm_vidc_inst *inst, s32 val)
{
	struct hal_capability_supported *cap;

	cap = &inst->capability.cap[CAP_OPERATINGRATE];

	if (((val >> 16) < cap->min || (val >> 16) > cap->max) &&
		val != INT_MAX) {
		s_vpr_e(inst->sid,
			"Unsupported operating rate %d min %d max %d\n",
			val >> 16, cap->min, cap->max);
		return false;
	}
	return true;
}

bool is_single_session(struct msm_vidc_inst *inst, u32 ignore_flags);
int msm_comm_get_num_perf_sessions(struct msm_vidc_inst *inst);
bool is_batching_allowed(struct msm_vidc_inst *inst);
+7 −2
Original line number Diff line number Diff line
@@ -180,6 +180,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v0[] = {
	/* ((3840x2176)/256)@60fps */
	{CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 36, 1958400, 1, 1958400},
	{CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 480, 1, 30},
	{CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, 480, 1, 30},
	{CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 200000000, 1, 20000000},
	{CAP_CABAC_BITRATE, ENC, H264, 1, 200000000, 1, 20000000},
	{CAP_SCALE_X, ENC, CODECS_ALL, 8192, 65536, 1, 8192},
@@ -210,7 +211,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v0[] = {
	{CAP_MBS_PER_FRAME, ENC|DEC, VP8, 36, 34816, 1, 8160},
	/* (3840 * 2176) / 256) * 30*/
	{CAP_MBS_PER_SECOND, ENC|DEC, VP8, 36, 979200, 1, 244800},
	{CAP_FRAMERATE, ENC|DEC, VP8, 1, 30, 1, 30},
	{CAP_FRAMERATE, ENC|DEC, VP8, 1, 240, 1, 30},
	{CAP_BITRATE, ENC, VP8, 1, 100000000, 1, 20000000},
	{CAP_BITRATE, DEC, VP8, 1, 100000000, 1, 20000000},

@@ -275,6 +276,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v1[] = {
	/* UHD@30 decode + 1080@30 encode */
	{CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 36, 1224000, 1, 1224000},
	{CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 240, 1, 30},
	{CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, 240, 1, 30},
	{CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 100000000, 1, 20000000},
	{CAP_CABAC_BITRATE, ENC, H264, 1, 100000000, 1, 20000000},
	{CAP_SCALE_X, ENC, CODECS_ALL, 8192, 65536, 1, 8192},
@@ -305,7 +307,7 @@ static struct msm_vidc_codec_capability lito_capabilities_v1[] = {
	{CAP_MBS_PER_FRAME, ENC|DEC, VP8, 36, 8160, 1, 8160},
	/* ((1920 * 1088) / 256) * 60*/
	{CAP_MBS_PER_SECOND, ENC|DEC, VP8, 36, 489600, 1, 244800},
	{CAP_FRAMERATE, ENC|DEC, VP8, 1, 60, 1, 30},
	{CAP_FRAMERATE, ENC|DEC, VP8, 1, 120, 1, 30},
	{CAP_BITRATE, ENC, VP8, 1, 40000000, 1, 20000000},
	{CAP_BITRATE, DEC, VP8, 1, 100000000, 1, 20000000},

@@ -370,6 +372,7 @@ static struct msm_vidc_codec_capability bengal_capabilities_v0[] = {
	/* 1080@30 decode + 1080@30 encode */
	{CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 489600, 1, 244800},
	{CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 120, 1, 30},
	{CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30},
	{CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 60000000, 1, 20000000},
	{CAP_HIER_P_NUM_ENH_LAYERS, ENC, H264|HEVC, 0, 6, 1, 0},
	{CAP_LTR_COUNT, ENC, H264|HEVC, 0, 4, 1, 0},
@@ -430,6 +433,7 @@ static struct msm_vidc_codec_capability bengal_capabilities_v1[] = {
	/* 1920*1088 @30fps */
	{CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 244800, 1, 244800},
	{CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 120, 1, 30},
	{CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30},
	{CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 60000000, 1, 20000000},
	{CAP_HIER_P_NUM_ENH_LAYERS, ENC, H264|HEVC, 0, 6, 1, 0},
	{CAP_LTR_COUNT, ENC, H264|HEVC, 0, 4, 1, 0},
@@ -490,6 +494,7 @@ static struct msm_vidc_codec_capability kona_capabilities[] = {
	/* ((1920 * 1088) / 256) * 960 fps */
	{CAP_MBS_PER_SECOND, DOMAINS_ALL, CODECS_ALL, 64, 7833600, 1, 7833600},
	{CAP_FRAMERATE, DOMAINS_ALL, CODECS_ALL, 1, 960, 1, 30},
	{CAP_OPERATINGRATE, DOMAINS_ALL, CODECS_ALL, 1, INT_MAX, 1, 30},
	{CAP_BITRATE, DOMAINS_ALL, CODECS_ALL, 1, 220000000, 1, 20000000},
	{CAP_BITRATE, ENC, HEVC, 1, 160000000, 1, 20000000},
	{CAP_CABAC_BITRATE, ENC, H264, 1, 160000000, 1, 20000000},
+2 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 */

#ifndef __VIDC_HFI_API_H__
@@ -244,6 +244,7 @@ enum hal_capability {
	CAP_MBS_PER_FRAME,
	CAP_MBS_PER_SECOND,
	CAP_FRAMERATE,
	CAP_OPERATINGRATE,
	CAP_SCALE_X,
	CAP_SCALE_Y,
	CAP_BITRATE,