cmipci - allow capture of raw spdif subframes
PATCH 1/1 cmipci - allow capture of raw spdif subframes
Hi.
Enable capturing of raw 32bit IEC958_SUBFRAME.
The 24-bits PCM data can be obtained using iec958 plugin.
Known problem: captured stream may begin with either left or right subframe. Since the iec958 plugin doesn't decode preamble it may swap the channels sometime.
Regards,
Tim.
Quoted 7 lines · Timofei V. Bondarenko
Hi.
Enable capturing of raw 32bit
IEC958_SUBFRAME.The 24-bits PCM data can be obtained using iec958 plugin.
Known problem: captured stream may begin with either left or right subframe. Since the iec958 plugin doesn't decode preamble it may swap the channels sometime.
Sorry, i've forgot to attach the patch...
alsa-kernel/pci/cmipci.c +8 -1
@@ -1400,6 +1407,11 @@ static int snd_cmipci_capture_spdif_prepelse snd_cmipci_clear_bit (cm,CM_REG_CHFORMAT ,CM_DBLSPDS ); } +if (snd_pcm_format_width (substream->runtime->format) >16 ) +snd_cmipci_set_bit (cm,CM_REG_MISC_CTRL ,CM_SPD32SEL ); +else +snd_cmipci_clear_bit (cm,CM_REG_MISC_CTRL ,CM_SPD32SEL ); +spin_unlock_irq (&cm->reg_lock);return snd_cmipci_pcm_prepare (cm, &cm->channel[CM_CH_CAPT ], substream);
@@ -1411,6 +1423,7 @@ static int snd_cmipci_capture_spdif_hw_fspin_lock_irq (&cm->reg_lock);snd_cmipci_clear_bit (cm,CM_REG_FUNCTRL1 ,CM_CAPTURE_SPDF ); +snd_cmipci_clear_bit (cm,CM_REG_MISC_CTRL ,CM_SPD32SEL );spin_unlock_irq (&cm->reg_lock);return snd_cmipci_hw_free (subs);
@@ -1562,7 +1575,8 @@ static struct snd_pcm_hardware snd_cmipc .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |SNDRV_PCM_INFO_BLOCK_TRANSFER |SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME | SNDRV_PCM_INFO_MMAP_VALID), - .formats = SNDRV_PCM_FMTBIT_S16_LE, + .formats =SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE, .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000, .rate_min = 44100, .rate_max = 48000,
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
At Wed, 07 Nov 2007 15:12:46 +0300,
Quoted 5 lines · Timofei V. Bondarenko
Hi.
Enable capturing of raw 32bit
IEC958_SUBFRAME.
Quoted 8 lines
The 24-bits PCM data can be obtained using iec958 plugin.
Known problem: captured stream may begin with either left or right subframe. Since the iec958 plugin doesn't decode preamble it may swap the channels sometime.
Regards,
Tim.
Applied this one, too.
(Do you happen to have a fix for iec958 plugin, too? :)
Thanks,
Takashi
Quoted 12 lines · Takashi Iwai
At Wed, 07 Nov 2007 15:12:46 +0300,
Quoted 10 lines · Timofei V. Bondarenko
Hi.
Enable capturing of raw 32bit
IEC958_SUBFRAME.The 24-bits PCM data can be obtained using iec958 plugin.
Known problem: captured stream may begin with either left or right subframe. Since the iec958 plugin doesn't decode preamble it may swap the channels sometime.
Quoted 5 lines
Quoted 2 lines
Regards,
Tim.Applied this one, too.
(Do you happen to have a fix for iec958 plugin, too? :)
Not yet.
I'm in doubt about a clean way to drop one subframe from the raw stream. Could you give me a hint?
Regards,
Tim.
At Tue, 13 Nov 2007 16:47:38 +0300,
Quoted 17 lines · Timofei V. Bondarenko
Quoted 15 lines · Takashi Iwai
At Wed, 07 Nov 2007 15:12:46 +0300,
Quoted 12 lines · Timofei V. Bondarenko
Hi.
Enable capturing of raw 32bit
IEC958_SUBFRAME.The 24-bits PCM data can be obtained using iec958 plugin.
Known problem: captured stream may begin with either left or right subframe. Since the iec958 plugin doesn't decode preamble it may swap the channels sometime.
Regards,
Tim.
Quoted 6 lines
Quoted 2 lines
Applied this one, too.
(Do you happen to have a fix for iec958 plugin, too? :)Not yet.
I'm in doubt about a clean way to drop one subframe from the raw stream. Could you give me a hint?
It'll be tricky, yes. We can prepend a zero in the first shot and keep one pending channel data to shift. For example,
raw: R0 L0 R1 L1 R2 L2 ... R(n-1) L(n-1) | R(n) L(n) ... dec: 0 R0 L0 R1 L1 R2 ... L(n-2) R(n-1) | L(n-1) R(n) ...
Takashi