[alsa-devel] Rates/formats available upstream from the plug plugin
Hi,
mplayer checks hw_params for availability of the current format http://mplayer-ww.git.sourceforge.net/git/gitweb.cgi?p=mplayer-ww/mplayer-ww... . If the check fails, it uses 16bits as fixed default.
Now if we define the card to be plughw:0, the check still fails for formats unsupported directly by the card. Which in fact is incorrect since the plug plugin takes care of most formats known. The same holds for sample rates.
IMO either the plug plugin should reconfigure hw_params for upstream use, or mplayer should use a different API call for checking parameters of the actual alsa device (not just the hardware itself, as defined by its alsa driver) - which one?
Thanks a lot,
Pavel.
On Tue, 3 Aug 2010, Pavel Hofman wrote:
Hi,
mplayer checks hw_params for availability of the current format http://mplayer-ww.git.sourceforge.net/git/gitweb.cgi?p=mplayer-ww/mplayer-ww... . If the check fails, it uses 16bits as fixed default.
Now if we define the card to be plughw:0, the check still fails for formats unsupported directly by the card. Which in fact is incorrect since the plug plugin takes care of most formats known. The same holds for sample rates.
It works for me:
perex@eeebox2:~/alsa/alsa-lib/test> ./pcm Playback device is plughw:0,0 Stream parameters are 44100Hz, S16_LE, 1 channels Sine wave rate is 440.0000Hz Using transfer method: write test format float_le: 0 test format mpeg: -22
Using modified alsa-lib/test/pcm.c code:
diff --git a/test/pcm.c b/test/pcm.c index abb83e4..0582891 100644 --- a/test/pcm.c +++ b/test/pcm.c @@ -106,6 +106,8 @@ static int set_hwparams(snd_pcm_t *handle, printf("Broken configuration for playback: no configurations available: %s\n", snd_strerror(err)); return err; } + printf("test format float_le: %i\n", snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_FLOAT_LE)); + printf("test format mpeg: %i\n", snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_MPEG)); /* set hardware resampling */ err = snd_pcm_hw_params_set_rate_resample(handle, params, resample); if (err < 0) {
Could you describe you hw configuration or can you reproduce this issue with the snd-dummy module?
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.
Jaroslav Kysela napsal(a):
On Tue, 3 Aug 2010, Pavel Hofman wrote:
Hi,
mplayer checks hw_params for availability of the current format http://mplayer-ww.git.sourceforge.net/git/gitweb.cgi?p=mplayer-ww/mplayer-ww...
. If the check fails, it uses 16bits as fixed default.
Now if we define the card to be plughw:0, the check still fails for formats unsupported directly by the card. Which in fact is incorrect since the plug plugin takes care of most formats known. The same holds for sample rates.
It works for me:
perex@eeebox2:~/alsa/alsa-lib/test> ./pcm Playback device is plughw:0,0 Stream parameters are 44100Hz, S16_LE, 1 channels Sine wave rate is 440.0000Hz Using transfer method: write test format float_le: 0 test format mpeg: -22
Using modified alsa-lib/test/pcm.c code:
diff --git a/test/pcm.c b/test/pcm.c index abb83e4..0582891 100644 --- a/test/pcm.c +++ b/test/pcm.c @@ -106,6 +106,8 @@ static int set_hwparams(snd_pcm_t *handle, printf("Broken configuration for playback: no configurations available: %s\n", snd_strerror(err)); return err; }
- printf("test format float_le: %i\n",
snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_FLOAT_LE));
- printf("test format mpeg: %i\n",
snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_MPEG)); /* set hardware resampling */ err = snd_pcm_hw_params_set_rate_resample(handle, params, resample); if (err < 0) {
Could you describe you hw configuration or can you reproduce this issue with the snd-dummy module?
Thanks for your reply. How do you compile the test directory? Neither gitcompile nor make in the test dir did the trick. Thanks,
Pavel.
On Tue, 3 Aug 2010, Pavel Hofman wrote:
Jaroslav Kysela napsal(a):
On Tue, 3 Aug 2010, Pavel Hofman wrote:
Hi,
mplayer checks hw_params for availability of the current format http://mplayer-ww.git.sourceforge.net/git/gitweb.cgi?p=mplayer-ww/mplayer-ww...
. If the check fails, it uses 16bits as fixed default.
Now if we define the card to be plughw:0, the check still fails for formats unsupported directly by the card. Which in fact is incorrect since the plug plugin takes care of most formats known. The same holds for sample rates.
It works for me:
perex@eeebox2:~/alsa/alsa-lib/test> ./pcm Playback device is plughw:0,0 Stream parameters are 44100Hz, S16_LE, 1 channels Sine wave rate is 440.0000Hz Using transfer method: write test format float_le: 0 test format mpeg: -22
Using modified alsa-lib/test/pcm.c code:
diff --git a/test/pcm.c b/test/pcm.c index abb83e4..0582891 100644 --- a/test/pcm.c +++ b/test/pcm.c @@ -106,6 +106,8 @@ static int set_hwparams(snd_pcm_t *handle, printf("Broken configuration for playback: no configurations available: %s\n", snd_strerror(err)); return err; }
- printf("test format float_le: %i\n",
snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_FLOAT_LE));
- printf("test format mpeg: %i\n",
snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_MPEG)); /* set hardware resampling */ err = snd_pcm_hw_params_set_rate_resample(handle, params, resample); if (err < 0) {
Could you describe you hw configuration or can you reproduce this issue with the snd-dummy module?
Thanks for your reply. How do you compile the test directory? Neither gitcompile nor make in the test dir did the trick. Thanks,
cd alsa-lib/test make pcm
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.
Jaroslav Kysela napsal(a):
On Tue, 3 Aug 2010, Pavel Hofman wrote:
Jaroslav Kysela napsal(a):
On Tue, 3 Aug 2010, Pavel Hofman wrote:
Hi,
mplayer checks hw_params for availability of the current format http://mplayer-ww.git.sourceforge.net/git/gitweb.cgi?p=mplayer-ww/mplayer-ww...
. If the check fails, it uses 16bits as fixed default.
Now if we define the card to be plughw:0, the check still fails for formats unsupported directly by the card. Which in fact is incorrect since the plug plugin takes care of most formats known. The same holds for sample rates.
It works for me:
perex@eeebox2:~/alsa/alsa-lib/test> ./pcm Playback device is plughw:0,0 Stream parameters are 44100Hz, S16_LE, 1 channels Sine wave rate is 440.0000Hz Using transfer method: write test format float_le: 0 test format mpeg: -22
Using modified alsa-lib/test/pcm.c code:
diff --git a/test/pcm.c b/test/pcm.c index abb83e4..0582891 100644 --- a/test/pcm.c +++ b/test/pcm.c @@ -106,6 +106,8 @@ static int set_hwparams(snd_pcm_t *handle, printf("Broken configuration for playback: no configurations available: %s\n", snd_strerror(err)); return err; }
- printf("test format float_le: %i\n",
snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_FLOAT_LE));
- printf("test format mpeg: %i\n",
snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_MPEG)); /* set hardware resampling */ err = snd_pcm_hw_params_set_rate_resample(handle, params, resample); if (err < 0) {
Could you describe you hw configuration or can you reproduce this issue with the snd-dummy module?
Thanks for your reply. How do you compile the test directory? Neither gitcompile nor make in the test dir did the trick. Thanks,
cd alsa-lib/test make pcm
Thanks a lot. You are right, it works OK now. The problem was older mplayer (its internal s24le code was translated to mpeg code of alsa :) ) , it is fixed in later versions.
Thanks for help.
Pavel.
2010/8/3 Pavel Hofman pavel.hofman@ivitera.com
Hi,
mplayer checks hw_params for availability of the current format
http://mplayer-ww.git.sourceforge.net/git/gitweb.cgi?p=mplayer-ww/mplayer-ww... . If the check fails, it uses 16bits as fixed default.
Now if we define the card to be plughw:0, the check still fails for formats unsupported directly by the card. Which in fact is incorrect since the plug plugin takes care of most formats known. The same holds for sample rates.
IMO either the plug plugin should reconfigure hw_params for upstream use, or mplayer should use a different API call for checking parameters of the actual alsa device (not just the hardware itself, as defined by its alsa driver) - which one?
Thanks a lot,
Pavel.
AFAIK , "plug" plugin does not support AC3 encode/decode , and alsa spdif device support AC3 passthrough
participants (3)
-
Jaroslav Kysela
-
Pavel Hofman
-
Raymond Yau