Mercurial > libavformat.hg
comparison beosaudio.cpp @ 97:265d01c2248f libavformat
the media node now won't connect itself to the default audio input with -ad wait:
(allows redirecting another node to it)
author | mmu_man |
---|---|
date | Thu, 27 Mar 2003 15:08:16 +0000 |
parents | 2d3083edb99f |
children | c1c8a0777bdb |
comparison
equal
deleted
inserted
replaced
96:2d3083edb99f | 97:265d01c2248f |
---|---|
179 bufferSize -= len; | 179 bufferSize -= len; |
180 } | 180 } |
181 } | 181 } |
182 #endif | 182 #endif |
183 | 183 |
184 static int audio_open(AudioData *s, int is_output) | 184 static int audio_open(AudioData *s, int is_output, const char *audio_device) |
185 { | 185 { |
186 int p[2]; | 186 int p[2]; |
187 int ret; | 187 int ret; |
188 media_raw_audio_format format; | 188 media_raw_audio_format format; |
189 media_multi_audio_format iformat; | 189 media_multi_audio_format iformat; |
208 s->frame_size = AUDIO_BLOCK_SIZE; | 208 s->frame_size = AUDIO_BLOCK_SIZE; |
209 /* bump up the priority (avoid realtime though) */ | 209 /* bump up the priority (avoid realtime though) */ |
210 set_thread_priority(find_thread(NULL), B_DISPLAY_PRIORITY+1); | 210 set_thread_priority(find_thread(NULL), B_DISPLAY_PRIORITY+1); |
211 #ifdef HAVE_BSOUNDRECORDER | 211 #ifdef HAVE_BSOUNDRECORDER |
212 if (!is_output) { | 212 if (!is_output) { |
213 s->recorder = new BSoundRecorder(&iformat, false, "ffmpeg input", audiorecord_callback); | 213 bool wait_for_input = false; |
214 if (audio_device && !strcmp(audio_device, "wait:")) | |
215 wait_for_input = true; | |
216 s->recorder = new BSoundRecorder(&iformat, wait_for_input, "ffmpeg input", audiorecord_callback); | |
217 if (wait_for_input && (s->recorder->InitCheck() == B_OK)) { | |
218 s->recorder->WaitForIncomingConnection(&iformat); | |
219 } | |
214 if (s->recorder->InitCheck() != B_OK || iformat.format != media_raw_audio_format::B_AUDIO_SHORT) { | 220 if (s->recorder->InitCheck() != B_OK || iformat.format != media_raw_audio_format::B_AUDIO_SHORT) { |
215 delete s->recorder; | 221 delete s->recorder; |
216 s->recorder = NULL; | 222 s->recorder = NULL; |
217 if (s->input_sem) | 223 if (s->input_sem) |
218 delete_sem(s->input_sem); | 224 delete_sem(s->input_sem); |
281 int ret; | 287 int ret; |
282 | 288 |
283 st = s1->streams[0]; | 289 st = s1->streams[0]; |
284 s->sample_rate = st->codec.sample_rate; | 290 s->sample_rate = st->codec.sample_rate; |
285 s->channels = st->codec.channels; | 291 s->channels = st->codec.channels; |
286 ret = audio_open(s, 1); | 292 ret = audio_open(s, 1, NULL); |
287 if (ret < 0) | 293 if (ret < 0) |
288 return -EIO; | 294 return -EIO; |
289 return 0; | 295 return 0; |
290 } | 296 } |
291 | 297 |
343 return -ENOMEM; | 349 return -ENOMEM; |
344 } | 350 } |
345 s->sample_rate = ap->sample_rate; | 351 s->sample_rate = ap->sample_rate; |
346 s->channels = ap->channels; | 352 s->channels = ap->channels; |
347 | 353 |
348 ret = audio_open(s, 0); | 354 ret = audio_open(s, 0, ap->device); |
349 if (ret < 0) { | 355 if (ret < 0) { |
350 av_free(st); | 356 av_free(st); |
351 return -EIO; | 357 return -EIO; |
352 } | 358 } |
353 /* take real parameters */ | 359 /* take real parameters */ |