diff options
author | root <root@rshg054.dnsready.net> | 2012-07-08 00:04:04 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-07-08 00:04:04 +0000 |
commit | a522a5f63f3b5726081698bf742801fb1d242817 (patch) | |
tree | ee7d4e7261e7387e755d2a08389250575a4e2552 /testing/sox/sox_default_audio_driver_fallback.patch | |
parent | d0fe8a4769150cf26265e3457c234c45c53e693b (diff) |
Sun Jul 8 00:04:04 UTC 2012
Diffstat (limited to 'testing/sox/sox_default_audio_driver_fallback.patch')
-rw-r--r-- | testing/sox/sox_default_audio_driver_fallback.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/testing/sox/sox_default_audio_driver_fallback.patch b/testing/sox/sox_default_audio_driver_fallback.patch new file mode 100644 index 000000000..9f9060e17 --- /dev/null +++ b/testing/sox/sox_default_audio_driver_fallback.patch @@ -0,0 +1,51 @@ +--- src/sox.c.old 2012-05-06 22:45:45.380564154 -0400 ++++ src/sox.c 2012-05-06 22:47:11.948248987 -0400 +@@ -2538,20 +2538,38 @@ + return name? from_env? from_env : name : NULL; + } + ++static char const * try_device(char const * name) ++{ ++ sox_format_handler_t const * handler = sox_find_format(name, sox_false); ++ if (handler) { ++ sox_format_t format, * ft = &format; ++ memset(ft, 0, sizeof(*ft)); ++ ft->filename = (char *)device_name(name); ++ ft->priv = lsx_calloc(1, handler->priv_size); ++ if (handler->startwrite(ft) == SOX_SUCCESS) { ++ handler->stopwrite(ft); ++ free(ft->priv); ++ return name; ++ } ++ free(ft->priv); ++ } ++ return NULL; ++} ++ + static char const * set_default_device(file_t * f) + { + /* Default audio driver type in order of preference: */ + if (!f->filetype) f->filetype = getenv("AUDIODRIVER"); +- if (!f->filetype && sox_find_format("coreaudio", sox_false)) f->filetype = "coreaudio"; +- if (!f->filetype && sox_find_format("pulseaudio" , sox_false)) f->filetype = "pulseaudio"; +- if (!f->filetype && sox_find_format("alsa", sox_false)) f->filetype = "alsa"; +- if (!f->filetype && sox_find_format("waveaudio" , sox_false)) f->filetype = "waveaudio"; +- if (!f->filetype && sox_find_format("sndio", sox_false)) f->filetype = "sndio"; +- if (!f->filetype && sox_find_format("oss" , sox_false)) f->filetype = "oss"; +- if (!f->filetype && sox_find_format("sunau",sox_false)) f->filetype = "sunau"; +- if (!f->filetype && sox_find_format("ao" , sox_false) && file_count) /*!rec*/ +- f->filetype = "ao"; +- ++ if (!f->filetype) f->filetype = try_device("coreaudio"); ++ if (!f->filetype) f->filetype = try_device("pulseaudio"); ++ if (!f->filetype) f->filetype = try_device("alsa"); ++ if (!f->filetype) f->filetype = try_device("waveaudio"); ++ if (!f->filetype) f->filetype = try_device("sndio"); ++ if (!f->filetype) f->filetype = try_device("oss"); ++ if (!f->filetype) f->filetype = try_device("sunau"); ++ if (!f->filetype && file_count) /*!rec*/ ++ f->filetype = try_device("ao"); ++ + if (!f->filetype) { + lsx_fail("Sorry, there is no default audio device configured"); + exit(1); |