diff options
author | Tim Jäger <jger.tm@gmail.com> | 2017-08-06 20:19:32 -0700 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2017-08-16 09:48:49 +0200 |
commit | 0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13 (patch) | |
tree | 165a0e4b5f96188f4d7a9635049f94d52fe2f1af /pkgs/applications/virtualization/qemu | |
parent | 378c6d70634bdfd6319278a9ed10a84d8fe72bac (diff) | |
download | nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.tar nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.tar.gz nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.tar.bz2 nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.tar.lz nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.tar.xz nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.tar.zst nixlib-0c1c3d2b996cff8b96b3f9b53e7780c88e1b4d13.zip |
qemu: fix HDA recording latency
Very long latency occurs for audio inputs when simulating an Intel HDA device. Patch courtesy of Volker Rümeling. https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg03336.html
Diffstat (limited to 'pkgs/applications/virtualization/qemu')
-rw-r--r-- | pkgs/applications/virtualization/qemu/default.nix | 3 | ||||
-rw-r--r-- | pkgs/applications/virtualization/qemu/fix-hda-recording.patch | 34 |
2 files changed, 36 insertions, 1 deletions
diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix index 8277261a1500..5da9db918557 100644 --- a/pkgs/applications/virtualization/qemu/default.nix +++ b/pkgs/applications/virtualization/qemu/default.nix @@ -55,7 +55,8 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; patches = [ ./no-etc-install.patch ] - ++ optional nixosTestRunner ./force-uid0-on-9p.patch; + ++ optional nixosTestRunner ./force-uid0-on-9p.patch + ++ optional pulseSupport ./fix-hda-recording.patch; hardeningDisable = [ "stackprotector" ]; diff --git a/pkgs/applications/virtualization/qemu/fix-hda-recording.patch b/pkgs/applications/virtualization/qemu/fix-hda-recording.patch new file mode 100644 index 000000000000..b4e21f4f3477 --- /dev/null +++ b/pkgs/applications/virtualization/qemu/fix-hda-recording.patch @@ -0,0 +1,34 @@ +diff --git a/audio/paaudio.c b/audio/paaudio.c +index fea6071..c1169d4 100644 +--- a/audio/paaudio.c ++++ b/audio/paaudio.c +@@ -608,6 +608,7 @@ static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque) + { + int error; + pa_sample_spec ss; ++ pa_buffer_attr ba; + struct audsettings obt_as = *as; + PAVoiceIn *pa = (PAVoiceIn *) hw; + paaudio *g = pa->g = drv_opaque; +@@ -616,6 +617,12 @@ static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque) + ss.channels = as->nchannels; + ss.rate = as->freq; + ++ ba.fragsize = pa_frame_size (&ss) * g->conf.samples; ++ ba.maxlength = 5 * ba.fragsize; ++ ba.tlength = -1; ++ ba.prebuf = -1; ++ ba.minreq = -1; ++ + obt_as.fmt = pa_to_audfmt (ss.format, &obt_as.endianness); + + pa->stream = qpa_simple_new ( +@@ -625,7 +632,7 @@ static int qpa_init_in(HWVoiceIn *hw, struct audsettings *as, void *drv_opaque) + g->conf.source, + &ss, + NULL, /* channel map */ +- NULL, /* buffering attributes */ ++ &ba, /* buffering attributes */ + &error + ); + if (!pa->stream) { |