On 23.11.2017 08:40, Takashi Sakamoto wrote: > On Nov 23 2017 08:44, Maciej S. Szmigiero wrote: >> On 23.11.2017 00:27, Takashi Sakamoto wrote: >>> On Nov 23 2017 04:17, Maciej S. Szmigiero wrote: >> (..) >>>> --- a/include/uapi/sound/asound.h >>>> +++ b/include/uapi/sound/asound.h >>>> @@ -236,7 +236,11 @@ typedef int __bitwise snd_pcm_format_t; >>>> #define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) >>>> 50) /* DSD, 4-byte samples DSD (x32), little endian */ >>>> #define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) >>>> 51) /* DSD, 2-byte samples DSD (x16), big endian */ >>>> #define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) >>>> 52) /* DSD, 4-byte samples DSD (x32), big endian */ >>>> -#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE >>>> +#define SNDRV_PCM_FORMAT_S20_4LE ((__force snd_pcm_format_t) 53) >>>> /* in four bytes */ >>>> +#define SNDRV_PCM_FORMAT_S20_4BE ((__force snd_pcm_format_t) 54) >>>> /* in four bytes */ >>>> +#define SNDRV_PCM_FORMAT_U20_4LE ((__force snd_pcm_format_t) 55) >>>> /* in four bytes */ >>>> +#define SNDRV_PCM_FORMAT_U20_4BE ((__force snd_pcm_format_t) 56) >>>> /* in four bytes */ >>>> +#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_U20_4BE >>> >>> In my opinion, for this type of definition, it's better to declare >>> left/right-adjusted or padding side. (Of course, silence definition is >>> already a hint, however the lack of information forces developers to have a >>> careful behaviour to handle entries on the list. >>> (I note that in current ALSA PCM interface there's no way to deliver >>> MSB/LSB-first information about sample format.) >> >> No other sound format includes this information in its name > > You overlook comments in 'SNDRV_PCM_FORMAT_[U|S]24_[LE|BE]'. Let me refer to > them [1]: > > 198 #define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6) /* low > three bytes */ > 199 #define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7) /* low > three bytes */ > 200 #define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8) /* low > three bytes */ > 201 #define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9) /* low > three bytes */
Yes, I can add this information in a comment, just like these formats are described as "low three bytes" (in other words, LSB justified formats) > In your way, these types of format can be represented by > 'SNDRV_PCM_FORMAT_[U|S]24_4[LE|BE]', thus for playback direction they > mean: > > ``` > #include <sound/asound.h> > #include <endian.h> > > uint32_t *buf; > uint32_t sample; > snd_pcm_format_t format; > > sample = generate_a_sample(); > (sample & ~0x00ffffff) /* invalid bits as sample */ > > if (format == SNDRV_PCM_FORMAT_[U|S]24_LE) { > buf[0] = htole32(sample); > else > buf[0] = htobe32(sample); > > /* transfer content of the buf via ALSA kernel stuffs. */ > ``` > > The comments are good enough for application developers in an aspect of a > position for padding. > > In general, studying from the past is preferable behaviour to be genius, > however accumulated history includes mistakes and defects. Just pretending > the past is not so genius, without further consideration. > > Actually additions of the rest of entries for PCM format were done without > enough cares of what information they give to application developers. Adding > new entries is easier than fixing and improving them once exposed. It's a > reason that they're left what they're. > > I wish you had enough care to assist applications developers. Without > applications, drivers are worthless and just waste of code base. Right, I will add this information to a comment. (..) >>> Additionally, alsa-lib includes some codes related to the definition[1]. If >>> you'd like to thing goes well out of ALSA SoC part, it's better to submit >>> changes to the library as well. >>> >>> [1] >>> http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/pcm/pcm_misc.c;h=5420b1895713a3aec3624a5218794a7b49baf167;hb=HEAD >> >> I have alsa-lib changes ready for these formats - they were needed to >> test these patches, will post them when this is merged on the kernel >> side (in case some changes are needed which affect both). > > Please pay enough care when writing patch comment. Silence means nothing, at > least for reviewers, even if you have good preparations. > > [1] > https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/tree/include/uapi/sound/asound.h?h=sound-4.15-rc1#n198 I will add this information (about alsa-lib changes) to commit notes in this patch description. > Regards > > Takashi Sakamoto Best regards, Maciej Szmigiero