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....@seznam.cz>
> > ---
> > 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 majord...@vger.kernel.org
> > 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 majord...@vger.kernel.org
> 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to