Mercurial > mplayer.hg
comparison libmpdemux/tvi_v4l.c @ 5941:f2bad7299936
disabled audio
author | alex |
---|---|
date | Thu, 02 May 2002 17:12:44 +0000 |
parents | 8cd761968f35 |
children | bd8e39725cfd |
comparison
equal
deleted
inserted
replaced
5940:dd7b88bb76aa | 5941:f2bad7299936 |
---|---|
55 struct video_picture picture; | 55 struct video_picture picture; |
56 int format; /* output format */ | 56 int format; /* output format */ |
57 int width; | 57 int width; |
58 int height; | 58 int height; |
59 int bytesperline; | 59 int bytesperline; |
60 int fps; | |
60 | 61 |
61 struct video_mbuf mbuf; | 62 struct video_mbuf mbuf; |
62 unsigned char *mmap; | 63 unsigned char *mmap; |
63 struct video_mmap *buf; | 64 struct video_mmap *buf; |
64 int nbuf; | 65 int nbuf; |
172 free_handle(h); | 173 free_handle(h); |
173 return(NULL); | 174 return(NULL); |
174 } | 175 } |
175 | 176 |
176 /* set audio device name */ | 177 /* set audio device name */ |
177 priv->audio_device = "/dev/dsp"; | 178 priv->audio_device = strdup("/dev/dsp"); |
178 | 179 |
179 return(h); | 180 return(h); |
180 } | 181 } |
181 | 182 |
182 static int init(priv_t *priv) | 183 static int init(priv_t *priv) |
190 { | 191 { |
191 mp_msg(MSGT_TV, MSGL_ERR, "unable to open '%s': %s\n", | 192 mp_msg(MSGT_TV, MSGL_ERR, "unable to open '%s': %s\n", |
192 priv->video_device, strerror(errno)); | 193 priv->video_device, strerror(errno)); |
193 goto err; | 194 goto err; |
194 } | 195 } |
195 | 196 |
196 mp_msg(MSGT_TV, MSGL_V, "Video fd: %d\n", priv->video_fd); | 197 priv->fps = 25; /* pal */ |
197 | 198 |
198 /* get capabilities (priv->capability is needed!) */ | 199 /* get capabilities (priv->capability is needed!) */ |
199 if (ioctl(priv->video_fd, VIDIOCGCAP, &priv->capability) == -1) | 200 if (ioctl(priv->video_fd, VIDIOCGCAP, &priv->capability) == -1) |
200 { | 201 { |
201 mp_msg(MSGT_TV, MSGL_ERR, "ioctl get capabilites failed: %s\n", strerror(errno)); | 202 mp_msg(MSGT_TV, MSGL_ERR, "ioctl get capabilites failed: %s\n", strerror(errno)); |
279 break; | 280 break; |
280 } | 281 } |
281 | 282 |
282 priv->audio_format[i] = AFMT_S16_LE; | 283 priv->audio_format[i] = AFMT_S16_LE; |
283 priv->audio_samplerate[i] = 44100; | 284 priv->audio_samplerate[i] = 44100; |
284 priv->audio_samplesize[i] = /*76000*/priv->audio_channels[i]* | 285 priv->audio_samplesize[i] = |
285 16*priv->audio_samplerate[i]/8; | 286 priv->audio_samplerate[i]/8/priv->fps* |
287 priv->audio_channels[i]; | |
286 | 288 |
287 /* display stuff */ | 289 /* display stuff */ |
288 mp_msg(MSGT_TV, MSGL_V, " %d: %s: ", priv->audio[i].audio, | 290 mp_msg(MSGT_TV, MSGL_V, " %d: %s: ", priv->audio[i].audio, |
289 priv->audio[i].name); | 291 priv->audio[i].name); |
290 if (priv->audio[i].flags & VIDEO_AUDIO_MUTABLE) | 292 if (priv->audio[i].flags & VIDEO_AUDIO_MUTABLE) |
432 | 434 |
433 priv->audio[priv->audio_id].volume = 0; | 435 priv->audio[priv->audio_id].volume = 0; |
434 priv->audio[priv->audio_id].flags |= VIDEO_AUDIO_MUTE; | 436 priv->audio[priv->audio_id].flags |= VIDEO_AUDIO_MUTE; |
435 ioctl(priv->video_fd, VIDIOCSAUDIO, &priv->audio[priv->audio_id]); | 437 ioctl(priv->video_fd, VIDIOCSAUDIO, &priv->audio[priv->audio_id]); |
436 close(priv->audio_fd); | 438 close(priv->audio_fd); |
437 #warning "Implement uninit!" | |
438 | 439 |
439 return(1); | 440 return(1); |
440 } | 441 } |
441 | 442 |
442 static int start(priv_t *priv) | 443 static int start(priv_t *priv) |
538 if (priv->capability.type & VID_TYPE_CAPTURE) | 539 if (priv->capability.type & VID_TYPE_CAPTURE) |
539 return(TVI_CONTROL_TRUE); | 540 return(TVI_CONTROL_TRUE); |
540 return(TVI_CONTROL_FALSE); | 541 return(TVI_CONTROL_FALSE); |
541 } | 542 } |
542 case TVI_CONTROL_IS_AUDIO: | 543 case TVI_CONTROL_IS_AUDIO: |
543 // return(TVI_CONTROL_FALSE); | 544 return(TVI_CONTROL_FALSE); |
544 /* also disable audio for as it's not working! */ | 545 /* also disable audio for as it's not working! */ |
545 if (priv->channels[priv->act_channel].flags & VIDEO_VC_AUDIO) | 546 if (priv->channels[priv->act_channel].flags & VIDEO_VC_AUDIO) |
546 { | 547 { |
547 // printf("yeah, audio csennel!!"); | |
548 return(TVI_CONTROL_TRUE); | 548 return(TVI_CONTROL_TRUE); |
549 } | 549 } |
550 return(TVI_CONTROL_TRUE); | 550 return(TVI_CONTROL_TRUE); |
551 case TVI_CONTROL_IS_TUNER: | 551 case TVI_CONTROL_IS_TUNER: |
552 { | 552 { |
736 (int)*(void **)arg = priv->audio_samplerate[priv->audio_id]; | 736 (int)*(void **)arg = priv->audio_samplerate[priv->audio_id]; |
737 return(TVI_CONTROL_TRUE); | 737 return(TVI_CONTROL_TRUE); |
738 } | 738 } |
739 case TVI_CONTROL_AUD_GET_SAMPLESIZE: | 739 case TVI_CONTROL_AUD_GET_SAMPLESIZE: |
740 { | 740 { |
741 (int)*(void **)arg = priv->audio_samplesize[priv->audio_id]; | 741 (int)*(void **)arg = priv->audio_samplesize[priv->audio_id]/8; |
742 return(TVI_CONTROL_TRUE); | 742 return(TVI_CONTROL_TRUE); |
743 } | 743 } |
744 | 744 case TVI_CONTROL_AUD_SET_SAMPLERATE: |
745 { | |
746 priv->audio_samplerate[priv->audio_id] = (int)*(void **)arg; | |
747 | |
748 if (ioctl(priv->audio_fd, SNDCTL_DSP_SPEED, | |
749 &priv->audio_samplerate[priv->audio_id]) == -1) | |
750 return(TVI_CONTROL_FALSE); | |
751 priv->audio_samplesize[priv->audio_id] = | |
752 priv->audio_samplerate[priv->audio_id]/8/priv->fps* | |
753 priv->audio_channels[priv->audio_id]; | |
754 return(TVI_CONTROL_TRUE); | |
755 } | |
745 /* ========== SPECIFIC controls =========== */ | 756 /* ========== SPECIFIC controls =========== */ |
746 case TVI_CONTROL_SPC_GET_INPUT: | 757 case TVI_CONTROL_SPC_GET_INPUT: |
747 { | 758 { |
748 int req_chan = (int)*(void **)arg; | 759 int req_chan = (int)*(void **)arg; |
749 int i; | 760 int i; |