diff options
-rw-r--r-- | regress/sys/dev/audio_rw/audiotest_rw.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/regress/sys/dev/audio_rw/audiotest_rw.c b/regress/sys/dev/audio_rw/audiotest_rw.c index f2dd634009a..5aa6e0468de 100644 --- a/regress/sys/dev/audio_rw/audiotest_rw.c +++ b/regress/sys/dev/audio_rw/audiotest_rw.c @@ -1,4 +1,4 @@ -/* $OpenBSD: audiotest_rw.c,v 1.4 2007/07/31 03:34:13 jakemsr Exp $ */ +/* $OpenBSD: audiotest_rw.c,v 1.5 2007/08/26 08:32:38 jakemsr Exp $ */ /* * Copyright (c) 2007 Jacob Meuser <jakemsr@sdf.lonestar.org> @@ -37,6 +37,7 @@ extern char *__progname; void useage(void); int audio_set_duplex(int, char *, int); int audio_set_info(int, u_int, u_int, u_int, u_int, u_int); +int audio_trigger_record(int); int audio_wait_frame(int, u_int, int, int); int audio_do_frame(int, size_t , char *, char *, u_int, int, int); int audio_do_test(int, size_t, char *, char *, u_int, int, int, int, int); @@ -193,6 +194,21 @@ u_int precision; return 0; } +int +audio_trigger_record(int audio_fd) +{ +audio_info_t audio_if; + + AUDIO_INITINFO(&audio_if); + audio_if.record.pause = 0; + if (ioctl(audio_fd, AUDIO_SETINFO, &audio_if) < 0) { + warn("AUDIO_SETINFO: audio_if.record.pause = %d", + audio_if.record.pause); + return 1; + } + + return 0; +} /* return 0 on error, 1 if read, 2 if write, 3 if both read and write */ int @@ -601,6 +617,10 @@ extern int optind; warnx("buffer_size: %lu", (unsigned long)buffer_size); } + /* need to trigger recording in duplex mode */ + if (use_duplex && (mode & AUMODE_RECORD)) + if (audio_trigger_record(audio_fd)) + exit(1); if (audio_do_test(audio_fd, buffer_size, input_file, output_file, mode, use_poll, use_select, loops, verbose)) |