From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51D25C433E4 for ; Mon, 20 Jul 2020 09:36:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2DC062176B for ; Mon, 20 Jul 2020 09:36:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=xs4all.nl header.i=@xs4all.nl header.b="KhQE/aYG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727769AbgGTJgU (ORCPT ); Mon, 20 Jul 2020 05:36:20 -0400 Received: from lb2-smtp-cloud8.xs4all.net ([194.109.24.25]:37969 "EHLO lb2-smtp-cloud8.xs4all.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726492AbgGTJgT (ORCPT ); Mon, 20 Jul 2020 05:36:19 -0400 Received: from cust-b5b5937f ([IPv6:fc0c:c16d:66b8:757f:c639:739b:9d66:799d]) by smtp-cloud8.xs4all.net with ESMTPA id xSDYjXh42NPeYxSDZjmqA4; Mon, 20 Jul 2020 11:36:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xs4all.nl; s=s1; t=1595237777; bh=YN4Jx7s1JTKAIF5w5HgjC1zjxXWKkiu623Uz7MATK/c=; h=Subject:To:From:Message-ID:Date:MIME-Version:Content-Type:From: Subject; b=KhQE/aYG5SPhxiF3I3Dy89TkDHat1pZQfcYkfPuI/mXR6jMSyIj1nO6dNE8AyUb0U VprlvkHp2BHwFDmTIQnq22oAaFF0QtLlO5IJvFRhdyODBrwWN51H3rbiPluDKdGSTh hq7q9mDuhJUTw1qahd+g7Pia57y6PFrNE6yyMXA/RqtvrzYOPjfUptB+H1khgGUd2N mwOv3NGC+sz8WV+k+7/zvP4QsUfihgz7PVMuEhk6jaG5OWKPLaoy+0h/YGQhHjWNQY Mtb8l4hfxnhmouvlziJrheBFxXOra+qF/lhBpv9ZQ4+VuSIGEYQCBYag5MGPde6fWm V2CvckIJ3iPOA== Subject: Re: [PATCH 1/4] media: v4l2-ctrl: Add frame-skip std encoder control To: Stanimir Varbanov , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Kyungmin Park , Kamil Debski , Jeongtae Park , Andrzej Hajda , Maheshwar Ajja References: <20200705121128.5250-1-stanimir.varbanov@linaro.org> <20200705121128.5250-2-stanimir.varbanov@linaro.org> From: Hans Verkuil Message-ID: Date: Mon, 20 Jul 2020 11:36:15 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200705121128.5250-2-stanimir.varbanov@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Envelope: MS4wfBGumGYy69YHRtsd+wfFjNj/4eFpbEasfyuIvjue5qCcaxNyoAZ1Y23VOnavzKtyqEB+hG2YgahW83oF34gpQnGY+Uhzg47VOdEvb41neAvCUXLHWSD8 1sWDuwn077LAJ4wYmJlJPmxCAAcwlj26subeEjCwM77PwxvzdwsfCV7TTYZbETnMYZs0fVoZ8X1vahbDaVaxXjzZ3ysdqaCeFp2XUT4oxwx0HXvDp0T0Bk+E 8WDuDYfq1XAT1JUzYdsELiUI/kWwqK9FETW194dW4tylIm0GEHCeleQ3aLxlWmjpuzoom5dbvex42P5fTtg6xZbk50YV2UTN4HWZ8hamtghgsIJAPeMS6S8v YhU3T86P+vLkceMi6I/GwEmCIuFcBd8sO/nUQb/5oIHWslAG7/BUU+ModIX7Dnqly7IxqN+xVF6c43tLPsNW/2dBjDGiOIFxPBMUsJzwBKhUs6dhC8+fpM+8 /z8a8aTs3guwjU8ObtKH6KGOgURHlq7ZHuhhpC+VKznij9Kx7sJvYrUog2lNtce2SANwaXnzMPSxDl2e7b9bXUM5XxB3U9l0eA2vx1FssTi1oS5Cti8vlqq0 7co/qyUmtPC+uWpXGPvct6Gg Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 05/07/2020 14:11, Stanimir Varbanov wrote: > Adds encoders standard v4l2 control for frame-skip. The control > is a copy of a custom encoder control so that other v4l2 encoder > drivers can use it. > > Signed-off-by: Stanimir Varbanov Reviewed-by: Hans Verkuil But see note at the end. > --- > .../media/v4l/ext-ctrls-codec.rst | 32 +++++++++++++++++++ > drivers/media/v4l2-core/v4l2-ctrls.c | 10 ++++++ > include/uapi/linux/v4l2-controls.h | 6 ++++ > 3 files changed, 48 insertions(+) > > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > index d0d506a444b1..a8b4c0b40747 100644 > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > @@ -592,6 +592,38 @@ enum v4l2_mpeg_video_bitrate_mode - > the average video bitrate. It is ignored if the video bitrate mode > is set to constant bitrate. > > +``V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (enum)`` > + > +enum v4l2_mpeg_video_frame_skip_mode - > + Indicates in what conditions the encoder should skip frames. If > + encoding a frame would cause the encoded stream to be larger then a > + chosen data limit then the frame will be skipped. Possible values > + are: > + > + > +.. tabularcolumns:: |p{9.2cm}|p{8.3cm}| > + > +.. raw:: latex > + > + \small > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_DISABLED`` > + - Frame skip mode is disabled. > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_LEVEL_LIMIT`` > + - Frame skip mode enabled and buffer limit is set by the chosen > + level and is defined by the standard. > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_BUF_LIMIT`` > + - Frame skip mode enabled and buffer limit is set by the VBV > + (MPEG1/2/4) or CPB (H264) buffer size control. > + > +.. raw:: latex > + > + \normalsize > + > ``V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (integer)`` > For every captured frame, skip this many subsequent frames (default > 0). > diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c > index 3f3fbcd60cc6..d088acfa6dd8 100644 > --- a/drivers/media/v4l2-core/v4l2-ctrls.c > +++ b/drivers/media/v4l2-core/v4l2-ctrls.c > @@ -590,6 +590,12 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > "External", > NULL, > }; > + static const char * const mpeg_video_frame_skip[] = { > + "Disabled", > + "Level Limit", > + "VBV/CPB Limit", > + NULL, > + }; > > switch (id) { > case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: > @@ -651,6 +657,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > return flash_strobe_source; > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > return header_mode; > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: > + return mpeg_video_frame_skip; > case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: > return multi_slice; > case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE: > @@ -844,6 +852,7 @@ const char *v4l2_ctrl_get_name(u32 id) > case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE: return "H264 MB Level Rate Control"; > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: return "Sequence Header Mode"; > case V4L2_CID_MPEG_VIDEO_MAX_REF_PIC: return "Max Number of Reference Pics"; > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: return "Frame Skip Mode"; > case V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP: return "H263 I-Frame QP Value"; > case V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP: return "H263 P-Frame QP Value"; > case V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP: return "H263 B-Frame QP Value"; > @@ -1265,6 +1274,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, > case V4L2_CID_FLASH_LED_MODE: > case V4L2_CID_FLASH_STROBE_SOURCE: > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: > case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: > case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE: > case V4L2_CID_MPEG_VIDEO_H264_LEVEL: > diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h > index 62271418c1be..4e1526175a4c 100644 > --- a/include/uapi/linux/v4l2-controls.h > +++ b/include/uapi/linux/v4l2-controls.h > @@ -742,6 +742,12 @@ enum v4l2_cid_mpeg_video_hevc_size_of_length_field { > #define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642) > #define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643) > #define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644) > +#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 645) I think this now clashes with "media: v4l2-ctrls: Add encoder constant quality control". I recommend making a new series that combines both series. That avoid this problem. Regards, Hans > +enum v4l2_mpeg_video_frame_skip_mode { > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0, > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1, > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2, > +}; > > /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ > #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71C33C433DF for ; Mon, 20 Jul 2020 09:37:44 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3B0B1208E4 for ; Mon, 20 Jul 2020 09:37:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Pf7TGzWx"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=xs4all.nl header.i=@xs4all.nl header.b="KhQE/aYG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3B0B1208E4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xs4all.nl Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=hCLnjeBqzO5Sw/FTnt0OcAIRTXKdiRRKoB/3AU8NWjk=; b=Pf7TGzWxOW3btX1iaEhmUoc7c Rzb1ZEla1VGpQqHXjEgwl145hPlogy5CrrS5FJeiHAbO9wbHPl1LuxLSwU4Qrz6uux1moxuDTL+mD l0y8a70AHtNkbN1RpFr08zHna2W7BSoKJ49wRX+ioNAs4zXedzYdqaJvV7JgX7/rheal7ZT/dh9d8 Xg2zYSum+G0pIrcYFT5M9CuXId6A4lwoWKsrtd1YuSJqnkWGfXLqK386iI8cvTvMe2sGJ4D5dD3tE NM/f/zbujj/bdbOJejcVb0P4zlG1x0PMTMv0dE7/6lTz/ENcPw+WigazOT3bn7pp9TZkbdMAHYu9f x3wGaAy1g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxSDc-00022m-Ik; Mon, 20 Jul 2020 09:36:20 +0000 Received: from lb1-smtp-cloud8.xs4all.net ([194.109.24.21]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jxSDa-000228-1F for linux-arm-kernel@lists.infradead.org; Mon, 20 Jul 2020 09:36:18 +0000 Received: from cust-b5b5937f ([IPv6:fc0c:c16d:66b8:757f:c639:739b:9d66:799d]) by smtp-cloud8.xs4all.net with ESMTPA id xSDYjXh42NPeYxSDZjmqA4; Mon, 20 Jul 2020 11:36:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xs4all.nl; s=s1; t=1595237777; bh=YN4Jx7s1JTKAIF5w5HgjC1zjxXWKkiu623Uz7MATK/c=; h=Subject:To:From:Message-ID:Date:MIME-Version:Content-Type:From: Subject; b=KhQE/aYG5SPhxiF3I3Dy89TkDHat1pZQfcYkfPuI/mXR6jMSyIj1nO6dNE8AyUb0U VprlvkHp2BHwFDmTIQnq22oAaFF0QtLlO5IJvFRhdyODBrwWN51H3rbiPluDKdGSTh hq7q9mDuhJUTw1qahd+g7Pia57y6PFrNE6yyMXA/RqtvrzYOPjfUptB+H1khgGUd2N mwOv3NGC+sz8WV+k+7/zvP4QsUfihgz7PVMuEhk6jaG5OWKPLaoy+0h/YGQhHjWNQY Mtb8l4hfxnhmouvlziJrheBFxXOra+qF/lhBpv9ZQ4+VuSIGEYQCBYag5MGPde6fWm V2CvckIJ3iPOA== Subject: Re: [PATCH 1/4] media: v4l2-ctrl: Add frame-skip std encoder control To: Stanimir Varbanov , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20200705121128.5250-1-stanimir.varbanov@linaro.org> <20200705121128.5250-2-stanimir.varbanov@linaro.org> From: Hans Verkuil Message-ID: Date: Mon, 20 Jul 2020 11:36:15 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20200705121128.5250-2-stanimir.varbanov@linaro.org> Content-Language: en-US X-CMAE-Envelope: MS4wfBGumGYy69YHRtsd+wfFjNj/4eFpbEasfyuIvjue5qCcaxNyoAZ1Y23VOnavzKtyqEB+hG2YgahW83oF34gpQnGY+Uhzg47VOdEvb41neAvCUXLHWSD8 1sWDuwn077LAJ4wYmJlJPmxCAAcwlj26subeEjCwM77PwxvzdwsfCV7TTYZbETnMYZs0fVoZ8X1vahbDaVaxXjzZ3ysdqaCeFp2XUT4oxwx0HXvDp0T0Bk+E 8WDuDYfq1XAT1JUzYdsELiUI/kWwqK9FETW194dW4tylIm0GEHCeleQ3aLxlWmjpuzoom5dbvex42P5fTtg6xZbk50YV2UTN4HWZ8hamtghgsIJAPeMS6S8v YhU3T86P+vLkceMi6I/GwEmCIuFcBd8sO/nUQb/5oIHWslAG7/BUU+ModIX7Dnqly7IxqN+xVF6c43tLPsNW/2dBjDGiOIFxPBMUsJzwBKhUs6dhC8+fpM+8 /z8a8aTs3guwjU8ObtKH6KGOgURHlq7ZHuhhpC+VKznij9Kx7sJvYrUog2lNtce2SANwaXnzMPSxDl2e7b9bXUM5XxB3U9l0eA2vx1FssTi1oS5Cti8vlqq0 7co/qyUmtPC+uWpXGPvct6Gg X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200720_053618_253262_30666546 X-CRM114-Status: GOOD ( 20.21 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jeongtae Park , Kyungmin Park , Kamil Debski , Maheshwar Ajja , Andrzej Hajda Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 05/07/2020 14:11, Stanimir Varbanov wrote: > Adds encoders standard v4l2 control for frame-skip. The control > is a copy of a custom encoder control so that other v4l2 encoder > drivers can use it. > > Signed-off-by: Stanimir Varbanov Reviewed-by: Hans Verkuil But see note at the end. > --- > .../media/v4l/ext-ctrls-codec.rst | 32 +++++++++++++++++++ > drivers/media/v4l2-core/v4l2-ctrls.c | 10 ++++++ > include/uapi/linux/v4l2-controls.h | 6 ++++ > 3 files changed, 48 insertions(+) > > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > index d0d506a444b1..a8b4c0b40747 100644 > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > @@ -592,6 +592,38 @@ enum v4l2_mpeg_video_bitrate_mode - > the average video bitrate. It is ignored if the video bitrate mode > is set to constant bitrate. > > +``V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (enum)`` > + > +enum v4l2_mpeg_video_frame_skip_mode - > + Indicates in what conditions the encoder should skip frames. If > + encoding a frame would cause the encoded stream to be larger then a > + chosen data limit then the frame will be skipped. Possible values > + are: > + > + > +.. tabularcolumns:: |p{9.2cm}|p{8.3cm}| > + > +.. raw:: latex > + > + \small > + > +.. flat-table:: > + :header-rows: 0 > + :stub-columns: 0 > + > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_DISABLED`` > + - Frame skip mode is disabled. > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_LEVEL_LIMIT`` > + - Frame skip mode enabled and buffer limit is set by the chosen > + level and is defined by the standard. > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_BUF_LIMIT`` > + - Frame skip mode enabled and buffer limit is set by the VBV > + (MPEG1/2/4) or CPB (H264) buffer size control. > + > +.. raw:: latex > + > + \normalsize > + > ``V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (integer)`` > For every captured frame, skip this many subsequent frames (default > 0). > diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c > index 3f3fbcd60cc6..d088acfa6dd8 100644 > --- a/drivers/media/v4l2-core/v4l2-ctrls.c > +++ b/drivers/media/v4l2-core/v4l2-ctrls.c > @@ -590,6 +590,12 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > "External", > NULL, > }; > + static const char * const mpeg_video_frame_skip[] = { > + "Disabled", > + "Level Limit", > + "VBV/CPB Limit", > + NULL, > + }; > > switch (id) { > case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: > @@ -651,6 +657,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > return flash_strobe_source; > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > return header_mode; > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: > + return mpeg_video_frame_skip; > case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: > return multi_slice; > case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE: > @@ -844,6 +852,7 @@ const char *v4l2_ctrl_get_name(u32 id) > case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE: return "H264 MB Level Rate Control"; > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: return "Sequence Header Mode"; > case V4L2_CID_MPEG_VIDEO_MAX_REF_PIC: return "Max Number of Reference Pics"; > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: return "Frame Skip Mode"; > case V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP: return "H263 I-Frame QP Value"; > case V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP: return "H263 P-Frame QP Value"; > case V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP: return "H263 B-Frame QP Value"; > @@ -1265,6 +1274,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, > case V4L2_CID_FLASH_LED_MODE: > case V4L2_CID_FLASH_STROBE_SOURCE: > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: > case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: > case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE: > case V4L2_CID_MPEG_VIDEO_H264_LEVEL: > diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h > index 62271418c1be..4e1526175a4c 100644 > --- a/include/uapi/linux/v4l2-controls.h > +++ b/include/uapi/linux/v4l2-controls.h > @@ -742,6 +742,12 @@ enum v4l2_cid_mpeg_video_hevc_size_of_length_field { > #define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642) > #define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643) > #define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644) > +#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 645) I think this now clashes with "media: v4l2-ctrls: Add encoder constant quality control". I recommend making a new series that combines both series. That avoid this problem. Regards, Hans > +enum v4l2_mpeg_video_frame_skip_mode { > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0, > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1, > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2, > +}; > > /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ > #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel