Received: by 2002:a05:7412:cfc7:b0:fc:a2b0:25d7 with SMTP id by7csp2290875rdb; Wed, 21 Feb 2024 03:10:35 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCU1BtkQoURdghI5NjgTC2C/n9WvxatYAmIL+QTjXxyv5IJvTjm1RyqMdAfWbKThvXd2tmDh0WYJg5eVSBt05YBuUbHwVqHoO+YMYaNugQ== X-Google-Smtp-Source: AGHT+IFlFiF4g18eX8YpDCFeadEoOz9XQuB9TMBuSlto3qSHNxWg3CqCT/q+99/SGxIt/4rsWzkQ X-Received: by 2002:aa7:c655:0:b0:561:8918:9f5d with SMTP id z21-20020aa7c655000000b0056189189f5dmr11679615edr.20.1708513835259; Wed, 21 Feb 2024 03:10:35 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708513835; cv=pass; d=google.com; s=arc-20160816; b=G2sZWmO01IBS9wv3BcR8R3aidnDbeWvw0SkTWLwIdZfzQ9X7B2WnRu8aHWXjBgjiNu 0cB2hC3q63cFNSigrd2I5USQC++twZ2snGJXEmI/0tDp2IoVdqr5Erm226fkymVr7yiT ubu+EL6bIOcLNNtQ44a/agxoDtpVTveiY4Yi1VeBiSfOSZZdVl2sYXJM4kVW0WUlMvzj jklkZy6Z+g4UiJZmXb8ABngznNzuZU7m3Gbujxo5lilKtTLhCSabt5zYhCl3UmguOZhf z2GrN6iFP+zTluifDVwyPfAwofbMCFctIF8SlHKvXArukKekbau/TWD2r5YLMAeNlQGo 1YTg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc :to:content-language:subject:user-agent:mime-version :list-unsubscribe:list-subscribe:list-id:precedence:date:message-id; bh=tJhia4xierxZRNZIPliYJOFHM9TXEXHqlbDmhaKmF/U=; fh=fk0z+r5kUOfx8aj+tOCYSp1d8Emrg2QGRlH47wDuFGg=; b=Ma+/Q9BhuY5MVcJTzNZ9Q0+2Jlevq2aVyASnC4fuZQB3jer5qW9yQEvhFt78WhsMoF 57EAxEBcHCx9Y7cXTGez2Q4ILCZtOvIygnvksPTC5kJZGwNsZU27//E4yDJXWssywpsk VNTFWvaHUt7c8aAYJ62tr1M7F+KWsrxs9YTy9L9KpKhkTqV6NrHsPH3qiJF/xoP7Csb+ UQTkgDopwQhkdX/kkLkWbIZdJh1YRC1BGBylwPAnK2feHDQwctMKdwW0C0/izSVoKPZ9 2cRog6QvHjJKmOf2XdSRVKL538446LzUpMh85x1K1N2UNHHNDmS7E19IZ5YF9x7ikESJ S2kw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-74593-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-74593-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xs4all.nl Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id dc24-20020a056402311800b005651026716bsi124860edb.136.2024.02.21.03.10.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Feb 2024 03:10:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-74593-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel+bounces-74593-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-74593-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=xs4all.nl Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id C809F1F23BAE for ; Wed, 21 Feb 2024 11:10:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 21FBC3F8ED; Wed, 21 Feb 2024 11:10:23 +0000 (UTC) Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 577BD3EA7A; Wed, 21 Feb 2024 11:10:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708513822; cv=none; b=bJWLoU0k+8b8se2ADujG+weEaTrzU7KuGs/n4vdRV1SnkaDRMXfAh5MtNXbyJKf30qvjF2GhvCNvVzUkic8acKquxWayBYLQMZ/Rw2KQ2pjBcne6n7cA9dbchTB5BIHgpLjis6urU8BthJusqtFuf05pduj4LdTVORMBzcIR9t4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708513822; c=relaxed/simple; bh=gqquDlLrktm+6irConxTLMXklBjVcdD+zdEtyUhQCJ8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=mudMdC10Cj3gb0ne2wgb4ZgL4Bf/dbW1aQpwXwEdDzjPY/m5lAYcDp6emXaofombbBBtQdn/O5vPfmKxd6nGISumEhEqhYROwCvjFL2Rx+T/rsCHrPDqILek16a2eCRXKx16gstSLWyEjPoZj5Cw3DgBHoxEc/UvcAWkiti5GBw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 35D2EC433F1; Wed, 21 Feb 2024 11:10:19 +0000 (UTC) Message-ID: Date: Wed, 21 Feb 2024 12:10:17 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v12 08/15] media: uapi: Define audio sample format fourcc type Content-Language: en-US, nl To: Mauro Carvalho Chehab , Shengjiu Wang Cc: Shengjiu Wang , sakari.ailus@iki.fi, tfiga@chromium.org, m.szyprowski@samsung.com, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Xiubo.Lee@gmail.com, festevam@gmail.com, nicoleotsuka@gmail.com, lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linuxppc-dev@lists.ozlabs.org References: <1705581128-4604-1-git-send-email-shengjiu.wang@nxp.com> <1705581128-4604-9-git-send-email-shengjiu.wang@nxp.com> <20240217101926.3f1d2452@coco.lan> <20240219135618.5c557e66@coco.lan> From: Hans Verkuil Autocrypt: addr=hverkuil@xs4all.nl; keydata= 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 In-Reply-To: <20240219135618.5c557e66@coco.lan> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 19/02/2024 13:56, Mauro Carvalho Chehab wrote: > Em Mon, 19 Feb 2024 12:05:02 +0800 > Shengjiu Wang escreveu: > >> Hi Mauro >> >> On Sat, Feb 17, 2024 at 5:19 PM Mauro Carvalho Chehab >> wrote: >>> >>> Em Thu, 18 Jan 2024 20:32:01 +0800 >>> Shengjiu Wang escreveu: >>> >>>> The audio sample format definition is from alsa, >>>> the header file is include/uapi/sound/asound.h, but >>>> don't include this header file directly, because in >>>> user space, there is another copy in alsa-lib. >>>> There will be conflict in userspace for include >>>> videodev2.h & asound.h and asoundlib.h >>>> >>>> Here still use the fourcc format. >>>> >>>> Signed-off-by: Shengjiu Wang >>>> --- >>>> .../userspace-api/media/v4l/pixfmt-audio.rst | 87 +++++++++++++++++++ >>>> .../userspace-api/media/v4l/pixfmt.rst | 1 + >>>> drivers/media/v4l2-core/v4l2-ioctl.c | 13 +++ >>>> include/uapi/linux/videodev2.h | 23 +++++ >>>> 4 files changed, 124 insertions(+) >>>> create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-audio.rst >>>> >>>> diff --git a/Documentation/userspace-api/media/v4l/pixfmt-audio.rst b/Documentation/userspace-api/media/v4l/pixfmt-audio.rst >>>> new file mode 100644 >>>> index 000000000000..04b4a7fbd8f4 >>>> --- /dev/null >>>> +++ b/Documentation/userspace-api/media/v4l/pixfmt-audio.rst >>>> @@ -0,0 +1,87 @@ >>>> +.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later >>>> + >>>> +.. _pixfmt-audio: >>>> + >>>> +************* >>>> +Audio Formats >>>> +************* >>>> + >>>> +These formats are used for :ref:`audiomem2mem` interface only. >>>> + >>>> +.. tabularcolumns:: |p{5.8cm}|p{1.2cm}|p{10.3cm}| >>>> + >>>> +.. cssclass:: longtable >>>> + >>>> +.. flat-table:: Audio Format >>>> + :header-rows: 1 >>>> + :stub-columns: 0 >>>> + :widths: 3 1 4 >>>> + >>>> + * - Identifier >>>> + - Code >>>> + - Details >>>> + * .. _V4L2-AUDIO-FMT-S8: >>>> + >>>> + - ``V4L2_AUDIO_FMT_S8`` >>>> + - 'S8' >>>> + - Corresponds to SNDRV_PCM_FORMAT_S8 in ALSA >>>> + * .. _V4L2-AUDIO-FMT-S16-LE: >>> >>> Hmm... why can't we just use SNDRV_*_FORMAT_*? Those are already part of >>> an uAPI header. No need to add any abstraction here and/or redefine >>> what is there already at include/uapi/sound/asound.h. >>> >> Actually I try to avoid including the include/uapi/sound/asound.h. >> Because in user space, there is another copy in alsa-lib (asoundlib.h). >> There will be conflict in userspace when including videodev2.h and >> asoundlib.h. > > Well, alsasoundlib.h seems to be using the same definitions: > https://github.com/michaelwu/alsa-lib/blob/master/include/pcm.h > > So, I can't see what would be the actual issue, as both userspace library > and ALSA internal headers use the same magic numbers. > > You can still do things like: > > #ifdef __KERNEL__ > # include > #else > # include > #endif > > To avoid such kind of conflicts, if you need to have it included on > some header file. Yet, I can't see why you would need that. > > IMO, at uAPI headers, you just need to declare the uAPI audiofmt field > to be either __u32 or __u64, pointing it to where this value comes from > (on both userspace and Kernelspace. E. g.: > > /** > * struct v4l2_audio_format - audio data format definition > * @audioformat: > * an integer number matching the fields inside > * enum snd_pcm_format_t (e. g. `SNDRV_PCM_FORMAT_*`), as defined > * in include/uapi/sound/asound.h and > * https://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html#gaa14b7f26877a812acbb39811364177f8. > * @channels: channel numbers > * @buffersize: maximum size in bytes required for data > */ > struct v4l2_audio_format { > __u32 audioformat; > __u32 channels; > __u32 buffersize; > } __attribute__ ((packed)); > > Then, at documentation you just need to point to where the > possible values for SNDRV_PCM_FORMAT_ are defined. No need to > document them one by one. > > With such definition, you'll only need to include sound/asound.h > within the kAPI scope. > >> >> And in the V4l framework, the fourcc type is commonly used in other >> cases (video, radio, touch, meta....), to avoid changing common code >> a lot, so I think using fourcc definition for audio may be simpler. > > Those are real video streams (or a video-related streams, in the case > of metadata) where fourcc is widely used. There, it makes sense. > However, ALSA format definitions are already being used for a long time. > There's no sense on trying to reinvent it - or having an abstract layer > to convert from/to fourcc <==> enum snd_pcm_format_t. Just use what is > there already. The problem is that within V4L2 we use fourcc consistently to describe a format, including in VIDIOC_ENUM_FMT. And the expectation is that the fourcc can be printed to a human readable string (there is even a printk format for that these days). But the pcm values are all small integers (and can even be 0!), and printing the fourcc will give garbage. It doesn't work well at all with the V4L2 API. But by having a straightforward conversion between the pcm identifier and a fourcc it was really easy to deal with this. There might even be applications today that call VIDIOC_ENUM_FMT to see what is supported and fail if it is not a proper fourcc is returned. It will certainly report nonsense in v4l_print_fmtdesc() (v4l2-ioctl.c). One of the early versions of this patch series did precisely what you request, but it just doesn't work well within the V4L2 uAPI. Regards, Hans > > Thanks, > Mauro