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;