[alsa-devel] [PATCH, for-next] ALSA: usb-audio: use FMTBITs in parse_audio_format_i
Takashi Iwai
tiwai at suse.de
Mon Apr 22 13:49:45 CEST 2013
At Mon, 22 Apr 2013 13:47:23 +0200 (CEST),
Eldad Zack wrote:
>
>
>
> On Mon, 22 Apr 2013, Takashi Iwai wrote:
>
> > At Mon, 22 Apr 2013 13:29:41 +0200 (CEST),
> > Eldad Zack wrote:
> > >
> > >
> > >
> > > On Mon, 22 Apr 2013, Takashi Iwai wrote:
> > >
> > > > At Mon, 22 Apr 2013 01:44:04 +0200,
> > > > Eldad Zack wrote:
> > > > >
> > > > > Replace the usage of SNDRV_PCM_FORMAT_* macros with the equivalent
> > > > > SNDRV_PCM_FMTBIT_* macros, and the result be can assigned directly
> > > > > to the formats field.
> > > >
> > > > Note that SNDRV_PCM_FMTBIT_* are 64bit integer. And it makes sense to
> > > > use FMTBIT only when multiple formats are supposed. For a single
> > > > format, keeping SNDRV_PCM_FORMAT_* is more reasonable.
> > > >
> > > > In other words, a proper fix would be to replace the type of variable
> > > > format with snd_pcm_format_t, and cast at converting to format bits
> > > > like
> > > > 1ULL << (unsigned int)pcm_format
> > >
> > > I see your point. I just figured making the assignment directly would
> > > make sense just for this case.
> > >
> > > There are a couple of other places with the same conversion that
> > > "break" the strong typing - how about something like this:
> > >
> > > #define pcm_format_to_bits(fmt) (1uLL << ((__force int)(fmt)))
> > >
> > > Or an equivalent function?
> >
> > Yep, I just wanted to propose that :)
>
> Cool :)
>
> I think a function would be better so the format can be checked to use
> the correct type as well, and put it in pcm.h:
>
> static inline u64 pcm_format_to_bits(snd_pcm_format_t pcm_format)
> {
> return 1ULL << (__force int) pcm_format;
> }
>
> If that looks good I'll search for all the relevant places and change
> them (in one patch).
It looks good.
thanks,
Takashi
More information about the Alsa-devel
mailing list