From 0ad23e752afb3afdf0771a50a8fc9992b6308485 Mon Sep 17 00:00:00 2001
From: Dimitris Papastamos <[email protected]>
Date: Wed, 22 Jun 2016 14:03:27 +0100
Subject: [PATCH 1/2] sndio: Allow tweaking application buffer size

It defaults to 250 ms.
---
 src/output/plugins/SndioOutputPlugin.cxx | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/output/plugins/SndioOutputPlugin.cxx 
b/src/output/plugins/SndioOutputPlugin.cxx
index ed039e7..eac302a 100644
--- a/src/output/plugins/SndioOutputPlugin.cxx
+++ b/src/output/plugins/SndioOutputPlugin.cxx
@@ -36,10 +36,13 @@
 #define SIO_DEVANY "default"
 #endif
 
+static constexpr unsigned MPD_SNDIO_BUFFER_TIME_MS = 250;
+
 class SndioOutput {
        friend struct AudioOutputWrapper<SndioOutput>;
        AudioOutput base;
        const char *device;
+       unsigned buffer_time; /* in ms */
        struct sio_hdl *sio_hdl;
 
 public:
@@ -66,6 +69,8 @@ SndioOutput::Configure(const ConfigBlock &block, Error &error)
        if (!base.Configure(block, error))
                return false;
        device = block.GetBlockValue("device", SIO_DEVANY);
+       buffer_time = block.GetBlockValue("buffer_time",
+                                          MPD_SNDIO_BUFFER_TIME_MS);
        return true;
 }
 
@@ -133,6 +138,7 @@ SndioOutput::Open(AudioFormat &audio_format, gcc_unused 
Error &error)
        par.pchan = chans;
        par.sig = 1;
        par.le = SIO_LE_NATIVE;
+       par.appbufsz = rate * buffer_time / 1000;
 
        if (!sio_setpar(sio_hdl, &par) ||
            !sio_getpar(sio_hdl, &par)) {
-- 
2.8.4


_______________________________________________
mpd-devel mailing list
[email protected]
http://mailman.blarg.de/listinfo/mpd-devel

Reply via email to