Re: [PATCH][RESEND] Use correct sampling rate for TV/FM radio

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday 19 of May 2009 at 19:54:18, Oldrich Jedlicka wrote:
> On Tuesday 14 of April 2009 at 20:48:14, Oldrich Jedlicka wrote:
> > Here is the fix for using the 32kHz sampling rate for TV and FM radio
> > (ALSA). The TV uses 32kHz anyway (mode 0; 32kHz demdec on), radio works
> > only with 32kHz (mode 1; 32kHz baseband). The ALSA wrongly reported 32kHz
> > and 48kHz for everything (TV, radio, LINE1/2).
> >
> > Now it should be possible to just use the card without the need to change
> > the capture rate from 48kHz to 32kHz. Enjoy :-)
>

Hi Mauro,

I put you on CC in my previous mail, but maybe it would be better to send it 
directly. So do you have any opinions about the approach described 
above/below?

Thanks!

Cheers,
Oldrich.

> Hi Mauro,
>
> are there some comments for/against this patch? It is rather long time when
> I sent it, so I would like to know some opinions.
>
> The reason behind this patch is that the code uses 32kHz for TV and for
> radio (the radio cannot use other frequency as far as I know). ALSA then
> reports both 32kHz and 48kHz for TV/radio, but 48kHz cannot be used.
>
> Thanks!
>
> Cheers,
> Oldrich.
>
> > Now without word-wrapping.
> >
> > Signed-off-by: Oldřich Jedlička <oldium.pro@xxxxxxxxx>
> > ---
> > diff -r dba0b6fae413 linux/drivers/media/video/saa7134/saa7134-alsa.c
> > --- a/linux/drivers/media/video/saa7134/saa7134-alsa.c	Thu Apr 09
> > 08:21:42 2009 -0300 +++
> > b/linux/drivers/media/video/saa7134/saa7134-alsa.c	Mon Apr 13 23:07:22
> > 2009 +0200 @@ -465,6 +465,29 @@
> >  	.periods_max =		1024,
> >  };
> >
> > +static struct snd_pcm_hardware snd_card_saa7134_capture_32kHz_only =
> > +{
> > +	.info =                 (SNDRV_PCM_INFO_MMAP |
> > SNDRV_PCM_INFO_INTERLEAVED
> >
> > | +				 SNDRV_PCM_INFO_BLOCK_TRANSFER |
> >
> > +				 SNDRV_PCM_INFO_MMAP_VALID),
> > +	.formats =		SNDRV_PCM_FMTBIT_S16_LE | \
> > +				SNDRV_PCM_FMTBIT_S16_BE | \
> > +				SNDRV_PCM_FMTBIT_S8 | \
> > +				SNDRV_PCM_FMTBIT_U8 | \
> > +				SNDRV_PCM_FMTBIT_U16_LE | \
> > +				SNDRV_PCM_FMTBIT_U16_BE,
> > +	.rates =		SNDRV_PCM_RATE_32000,
> > +	.rate_min =		32000,
> > +	.rate_max =		32000,
> > +	.channels_min =		1,
> > +	.channels_max =		2,
> > +	.buffer_bytes_max =	(256*1024),
> > +	.period_bytes_min =	64,
> > +	.period_bytes_max =	(256*1024),
> > +	.periods_min =		4,
> > +	.periods_max =		1024,
> > +};
> > +
> >  static void snd_card_saa7134_runtime_free(struct snd_pcm_runtime
> > *runtime) {
> >  	snd_card_saa7134_pcm_t *pcm = runtime->private_data;
> > @@ -651,7 +674,13 @@
> >  	pcm->substream = substream;
> >  	runtime->private_data = pcm;
> >  	runtime->private_free = snd_card_saa7134_runtime_free;
> > -	runtime->hw = snd_card_saa7134_capture;
> > +
> > +	if (amux == TV || &card(dev).radio == dev->input) {
> > +		/* TV uses 32kHz sampling, AM/FM radio is locked to 32kHz */
> > +		runtime->hw = snd_card_saa7134_capture_32kHz_only;
> > +	} else {
> > +		runtime->hw = snd_card_saa7134_capture;
> > +	}
> >
> >  	if (dev->ctl_mute != 0) {
> >  		saa7134->mute_was_on = 1;
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-media" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux