From: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Shengjiu Wang <shengjiu.wang@nxp.com>
Cc: nicoleotsuka@gmail.com, alsa-devel@alsa-project.org,
lgirdwood@gmail.com, Xiubo.Lee@gmail.com, festevam@gmail.com,
tiwai@suse.com, linux-kernel@vger.kernel.org, tfiga@chromium.org,
hverkuil@xs4all.nl, linuxppc-dev@lists.ozlabs.org,
broonie@kernel.org, sakari.ailus@iki.fi, perex@perex.cz,
linux-media@vger.kernel.org, shengjiu.wang@gmail.com,
m.szyprowski@samsung.com
Subject: Re: [PATCH v12 10/15] media: uapi: Add audio rate controls support
Date: Sat, 17 Feb 2024 10:57:08 +0100 [thread overview]
Message-ID: <20240217105708.53c81b04@coco.lan> (raw)
In-Reply-To: <1705581128-4604-11-git-send-email-shengjiu.wang@nxp.com>
Em Thu, 18 Jan 2024 20:32:03 +0800
Shengjiu Wang <shengjiu.wang@nxp.com> escreveu:
> Add V4L2_CID_M2M_AUDIO_SOURCE_RATE and V4L2_CID_M2M_AUDIO_DEST_RATE
> new IDs for rate control.
>
> Add V4L2_CID_M2M_AUDIO_SOURCE_RATE_OFFSET and
> V4L2_CID_M2M_AUDIO_DEST_RATE_OFFSET for clock drift.
>
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> ---
> .../media/v4l/ext-ctrls-audio-m2m.rst | 20 +++++++++++++++++++
> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 6 ++++++
> include/uapi/linux/v4l2-controls.h | 5 +++++
> 3 files changed, 31 insertions(+)
>
> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst
> index 82d2ecedbfee..de579ab8fb94 100644
> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst
> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-audio-m2m.rst
> @@ -19,3 +19,23 @@ Audio M2M Control IDs
> The Audio M2M class descriptor. Calling
> :ref:`VIDIOC_QUERYCTRL` for this control will
> return a description of this control class.
> +
> +.. _v4l2-audio-asrc:
> +
> +``V4L2_CID_M2M_AUDIO_SOURCE_RATE (integer menu)``
> + Sets the audio source sample rate, unit is Hz
> +
> +``V4L2_CID_M2M_AUDIO_DEST_RATE (integer menu)``
> + Sets the audio destination sample rate, unit is Hz
> +
> +``V4L2_CID_M2M_AUDIO_SOURCE_RATE_OFFSET (fixed point)``
> + Sets the offset from the audio source sample rate, unit is Hz.
> + The offset compensates for any clock drift. The actual source audio
> + sample rate is the ideal source audio sample rate from
> + ``V4L2_CID_M2M_AUDIO_SOURCE_RATE`` plus this fixed point offset.
> +
> +``V4L2_CID_M2M_AUDIO_DEST_RATE_OFFSET (fixed point)``
> + Sets the offset from the audio destination sample rate, unit is Hz.
> + The offset compensates for any clock drift. The actual destination audio
> + sample rate is the ideal source audio sample rate from
> + ``V4L2_CID_M2M_AUDIO_DEST_RATE`` plus this fixed point offset.
Hmm... first of all, controls on V4L2 API can either be get or set.
So, starting the sentence with "Set" sounds an assumption that may
be wrong.
Also, I would explain a little bit more about the frequency offset values,
as clock drift adjustment on PCM streams is something that can be done
using different approaches.
I'm assuming that what you wanted here is to use it to check if the
video and audio clocks have some drift, and reducing or increasing
the audio sample rate dynamically to ensure that such drift will
stay constraint to a maximum allowed drift measured in mili or nano
seconds. So, userspace would be expected to be monitoring such drift
and increasing/decreasing the sample frequency as needed to maintain
such constraint.
Is that the way such uAPI is expected to work?
> diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> index 2a85ea3dc92f..91e1f5348c23 100644
> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> @@ -1245,6 +1245,8 @@ const char *v4l2_ctrl_get_name(u32 id)
>
> /* Audio M2M controls */
> case V4L2_CID_M2M_AUDIO_CLASS: return "Audio M2M Controls";
> + case V4L2_CID_M2M_AUDIO_SOURCE_RATE: return "Audio Source Sample Rate";
> + case V4L2_CID_M2M_AUDIO_DEST_RATE: return "Audio Destination Sample Rate";
> default:
> return NULL;
> }
> @@ -1606,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 = V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY;
> break;
> + case V4L2_CID_M2M_AUDIO_SOURCE_RATE:
> + case V4L2_CID_M2M_AUDIO_DEST_RATE:
> + *type = V4L2_CTRL_TYPE_INTEGER_MENU;
> + break;
> default:
> *type = V4L2_CTRL_TYPE_INTEGER;
> break;
> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> index a8b4b830c757..30129ccdc282 100644
> --- a/include/uapi/linux/v4l2-controls.h
> +++ b/include/uapi/linux/v4l2-controls.h
> @@ -3495,6 +3495,11 @@ struct v4l2_ctrl_av1_film_grain {
> #define V4L2_CID_M2M_AUDIO_CLASS_BASE (V4L2_CTRL_CLASS_M2M_AUDIO | 0x900)
> #define V4L2_CID_M2M_AUDIO_CLASS (V4L2_CTRL_CLASS_M2M_AUDIO | 1)
>
> +#define V4L2_CID_M2M_AUDIO_SOURCE_RATE (V4L2_CID_M2M_AUDIO_CLASS_BASE + 0)
> +#define V4L2_CID_M2M_AUDIO_DEST_RATE (V4L2_CID_M2M_AUDIO_CLASS_BASE + 1)
> +#define V4L2_CID_M2M_AUDIO_SOURCE_RATE_OFFSET (V4L2_CID_M2M_AUDIO_CLASS_BASE + 2)
> +#define V4L2_CID_M2M_AUDIO_DEST_RATE_OFFSET (V4L2_CID_M2M_AUDIO_CLASS_BASE + 3)
> +
> /* MPEG-compression definitions kept for backwards compatibility */
> #ifndef __KERNEL__
> #define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
Thanks,
Mauro
next prev parent reply other threads:[~2024-02-17 9:58 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-18 12:31 [PATCH v12 00/15] Add audio support in v4l2 framework Shengjiu Wang
2024-01-18 12:31 ` [PATCH v12 01/15] ASoC: fsl_asrc: define functions for memory to memory usage Shengjiu Wang
2024-01-18 12:31 ` [PATCH v12 02/15] ASoC: fsl_easrc: " Shengjiu Wang
2024-01-18 12:31 ` [PATCH v12 03/15] ASoC: fsl_asrc: move fsl_asrc_common.h to include/sound Shengjiu Wang
2024-01-18 12:31 ` [PATCH v12 04/15] ASoC: fsl_asrc: register m2m platform device Shengjiu Wang
2024-01-18 12:31 ` [PATCH v12 05/15] ASoC: fsl_easrc: " Shengjiu Wang
2024-01-18 12:31 ` [PATCH v12 06/15] media: uapi: Add V4L2_CAP_AUDIO_M2M capability flag Shengjiu Wang
2024-01-18 12:32 ` [PATCH v12 07/15] media: v4l2: Add audio capture and output support Shengjiu Wang
2024-02-17 9:42 ` Mauro Carvalho Chehab
2024-02-19 6:35 ` Shengjiu Wang
2024-02-21 4:30 ` Tomasz Figa
2024-02-21 10:11 ` Shengjiu Wang
2024-02-21 11:16 ` Hans Verkuil
2024-02-21 11:13 ` Hans Verkuil
2024-02-21 4:32 ` Tomasz Figa
2024-01-18 12:32 ` [PATCH v12 08/15] media: uapi: Define audio sample format fourcc type Shengjiu Wang
2024-02-17 9:19 ` Mauro Carvalho Chehab
2024-02-19 4:05 ` Shengjiu Wang
2024-02-19 12:56 ` Mauro Carvalho Chehab
2024-02-21 11:10 ` Hans Verkuil
2024-02-22 3:50 ` Shengjiu Wang
2024-02-23 14:50 ` Hans Verkuil
2024-01-18 12:32 ` [PATCH v12 09/15] media: uapi: Add V4L2_CTRL_CLASS_M2M_AUDIO Shengjiu Wang
2024-01-18 12:32 ` [PATCH v12 10/15] media: uapi: Add audio rate controls support Shengjiu Wang
2024-02-17 9:57 ` Mauro Carvalho Chehab [this message]
2024-02-19 6:03 ` Shengjiu Wang
2024-02-19 12:16 ` Mauro Carvalho Chehab
2024-01-18 12:32 ` [PATCH v12 11/15] media: uapi: Declare interface types for Audio Shengjiu Wang
2024-01-18 12:32 ` [PATCH v12 12/15] media: uapi: Add an entity type for audio resampler Shengjiu Wang
2024-01-18 12:32 ` [PATCH v12 13/15] media: vivid: add fixed point test controls Shengjiu Wang
2024-01-18 12:32 ` [PATCH v12 14/15] media: imx-asrc: Add memory to memory driver Shengjiu Wang
2024-01-18 12:32 ` [PATCH v12 15/15] media: vim2m-audio: add virtual driver for audio memory to memory Shengjiu Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240217105708.53c81b04@coco.lan \
--to=mchehab@kernel.org \
--cc=Xiubo.Lee@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=festevam@gmail.com \
--cc=hverkuil@xs4all.nl \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=m.szyprowski@samsung.com \
--cc=nicoleotsuka@gmail.com \
--cc=perex@perex.cz \
--cc=sakari.ailus@iki.fi \
--cc=shengjiu.wang@gmail.com \
--cc=shengjiu.wang@nxp.com \
--cc=tfiga@chromium.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).