[alsa-devel] ALSA alsaSink and NONINTERLEAVED vs INTERLEAVED
Radivoje Jovanovic
radivojejovanovic at gmail.com
Fri Dec 24 00:14:14 CET 2010
Hello,
I have a simple sound card with a stereo output. The driver works just fine
when using aplay or gstreamer to play wave files. The problem occurs when I
am trying to play videos through gstreamer. I use following gstremaer
pipeline (just to test sound):
gst-launch-0.10 filesrc location=MPEG4_MOVIE_NAME ! qtdemux name=t ! queue
! faad ! alsasink
If I make my driver with following settings:
.info = (SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER |
SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME),
gstreamer comes back with a following message:
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstAlsaSink:alsasink0: Could not
get/set settings from/on resource.
Additional debug info:
gstalsasink.c(519): set_hwparams ():
/GstPipeline:pipeline0/GstAlsaSink:alsasink0:
Unable to set hw params for playback: Invalid argument
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
If I make my driver with following settings:
.info = (SNDRV_PCM_INFO_NONINTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER |
SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME),
gstreamer will play sound. Of course sound will not be correct since the
data is interleaved. Any idea why is this happening?
Here is the rest of the snd_pcm_hardware struct:
.formats = SNDRV_PCM_FMTBIT_U16_LE |
SNDRV_PCM_FMTBIT_U16_BE |
SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S16_BE |
SNDRV_PCM_FMTBIT_U8,
.rates = SNDRV_PCM_RATE_8000_48000 | SNDRV_PCM_RATE_CONTINUOUS,
.rate_min = 8000,
.rate_max = 48000,
.channels_min = 1,
.channels_max = 2,
.period_bytes_min = 16384,
.period_bytes_max = 16384*4,
.periods_min = 4,
.periods_max = 256,
.buffer_bytes_max= 131072,
Cheers
Ogi
More information about the Alsa-devel
mailing list