From 177d2185e928d7b7332e9e1bfa6d38212ea7cc9b Mon Sep 17 00:00:00 2001 From: arpi Date: Thu, 22 Aug 2002 23:05:58 +0000 Subject: [PATCH] v4l capture update by Jindrich Makovicka some silly bugs slipped through.. here is the fix git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7071 b3059339-0415-0410-9bf9-f77b7e298cf2 --- DOCS/mplayer.1 | 4 ++-- libmpdemux/ai_alsa.c | 2 +- libmpdemux/ai_alsa1x.c | 2 +- libmpdemux/audio_in.c | 2 +- libmpdemux/tvi_v4l.c | 18 ++++++++++-------- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/DOCS/mplayer.1 b/DOCS/mplayer.1 index ae44d2849c..9a677046bc 100644 --- a/DOCS/mplayer.1 +++ b/DOCS/mplayer.1 @@ -319,8 +319,8 @@ Available options are: has more of them .TP .I NOTE: -Mplayer doesn't accept colons so type commas instead in the device ID, -eg. hw,0,0 instead of hw:0:0) +Mplayer doesn't accept colons so type dots instead in the device ID, +eg. hw.0,0 instead of hw:0,0) Be advised that although you can select any samplerate when using ALSA, the LAME audio codec is able to encode only the "standard" samplerates. diff --git a/libmpdemux/ai_alsa.c b/libmpdemux/ai_alsa.c index 52253b8da7..668e43679f 100644 --- a/libmpdemux/ai_alsa.c +++ b/libmpdemux/ai_alsa.c @@ -105,7 +105,7 @@ int ai_alsa_init(audio_in_t *ai) err = snd_pcm_open(&ai->alsa.handle, ai->alsa.device, SND_PCM_STREAM_CAPTURE, 0); if (err < 0) { - mp_msg(MSGT_TV, MSGL_ERR, "Error opening audio"); + mp_msg(MSGT_TV, MSGL_ERR, "Error opening audio: %s\n", snd_strerror(err)); return -1; } diff --git a/libmpdemux/ai_alsa1x.c b/libmpdemux/ai_alsa1x.c index 52253b8da7..668e43679f 100644 --- a/libmpdemux/ai_alsa1x.c +++ b/libmpdemux/ai_alsa1x.c @@ -105,7 +105,7 @@ int ai_alsa_init(audio_in_t *ai) err = snd_pcm_open(&ai->alsa.handle, ai->alsa.device, SND_PCM_STREAM_CAPTURE, 0); if (err < 0) { - mp_msg(MSGT_TV, MSGL_ERR, "Error opening audio"); + mp_msg(MSGT_TV, MSGL_ERR, "Error opening audio: %s\n", snd_strerror(err)); return -1; } diff --git a/libmpdemux/audio_in.c b/libmpdemux/audio_in.c index c662bfab0f..264a7bc4b4 100644 --- a/libmpdemux/audio_in.c +++ b/libmpdemux/audio_in.c @@ -106,7 +106,7 @@ int audio_in_set_device(audio_in_t *ai, char *device) ai->alsa.device = strdup(device); /* mplayer cannot handle colons in arguments */ for (i = 0; i < strlen(ai->alsa.device); i++) { - if (ai->alsa.device[i] == ',') ai->alsa.device[i] = ':'; + if (ai->alsa.device[i] == '.') ai->alsa.device[i] = ':'; } return 0; #endif diff --git a/libmpdemux/tvi_v4l.c b/libmpdemux/tvi_v4l.c index 7bbf7409dc..8075f516b0 100644 --- a/libmpdemux/tvi_v4l.c +++ b/libmpdemux/tvi_v4l.c @@ -298,7 +298,6 @@ static void init_v4l_audio(priv_t *priv) ioctl(priv->video_fd, VIDIOCSAUDIO, &priv->audio[i]); } - priv->audio[i].audio = i; if (ioctl(priv->video_fd, VIDIOCGAUDIO, &priv->audio[i]) == -1) { mp_msg(MSGT_TV, MSGL_ERR, "ioctl get audio failed: %s\n", strerror(errno)); @@ -338,13 +337,6 @@ static int init(priv_t *priv) if (tv_param_immediate == 1) tv_param_noaudio = 1; - if (!tv_param_noaudio) { - } - - if (priv->audio_device) { - audio_in_set_device(&priv->audio_in, priv->audio_device); - } - priv->video_ringbuffer = NULL; priv->video_timebuffer = NULL; priv->audio_ringbuffer = NULL; @@ -477,6 +469,10 @@ static int init(priv_t *priv) audio_in_init(&priv->audio_in, AUDIO_IN_OSS); #endif + if (priv->audio_device) { + audio_in_set_device(&priv->audio_in, priv->audio_device); + } + if (tv_param_audio_id < priv->capability.audios) priv->audio_id = tv_param_audio_id; else @@ -704,6 +700,12 @@ static int start(priv_t *priv) if (priv->audio[priv->audio_id].volume <= 0) priv->audio[priv->audio_id].volume = 100; priv->audio[priv->audio_id].flags &= ~VIDEO_AUDIO_MUTE; + mp_msg(MSGT_TV, MSGL_V, "Starting audio capture\n"); + mp_msg(MSGT_TV, MSGL_V, "id=%d volume=%d bass=%d treble=%d balance=%d mode=%s\n", + priv->audio_id, + priv->audio[priv->audio_id].volume, priv->audio[priv->audio_id].bass, priv->audio[priv->audio_id].treble, + priv->audio[priv->audio_id].balance, audio_mode2name[priv->audio[priv->audio_id].mode]); + mp_msg(MSGT_TV, MSGL_V, " channels: %d\n", priv->audio_channels[priv->audio_id]); ioctl(priv->video_fd, VIDIOCSAUDIO, &priv->audio[priv->audio_id]); /* launch capture threads */