aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--voctocore/default-config.ini18
-rw-r--r--voctocore/lib/avrawoutput.py8
2 files changed, 24 insertions, 2 deletions
diff --git a/voctocore/default-config.ini b/voctocore/default-config.ini
index 8afd76b..adf8bdd 100644
--- a/voctocore/default-config.ini
+++ b/voctocore/default-config.ini
@@ -5,6 +5,24 @@ audiocaps=audio/x-raw,format=S16LE,channels=2,layout=interleaved,rate=48000
; tcp-ports will be 10000,10001,10002
sources=cam1,cam2,grabber
+
+[output-buffers]
+; voctocore has a buffer on all video-outputs, that store video-frames for your
+; sink when it can't handle them all in real-time. so if your sink takes 2 seconds
+; to process a really hard to precess frame, voctomix needs to store 50 frames
+; for you, hoping that your sink will catch up soon.
+; if the sink doesn ot catch up in time, voctomix will drop it and remove it
+; from the output. it's your task to restart it in such a situation.
+; by default, voctomix will store up to 500 frames for your sink (20 seconds)
+; you might want to up that even more for your recording-sink, so that it never
+; gets disconnected. for this reason, the following configuration raises the
+; default limit for the mix_out sink to a whopping 10'000 frames (400 seconds)
+;cam1_mirror=500
+;cam2_mirror=500
+;grabber_mirror=500
+mix_out=10000
+;streamblanker_out=500
+
[fullscreen]
; if configured, switching to fullscreen will automatically select this
; source. if not configured, it will not change the last set source
diff --git a/voctocore/lib/avrawoutput.py b/voctocore/lib/avrawoutput.py
index 4603c30..5523a66 100644
--- a/voctocore/lib/avrawoutput.py
+++ b/voctocore/lib/avrawoutput.py
@@ -30,13 +30,17 @@ class AVRawOutput(TCPMultiConnection):
multifdsink
blocksize=1048576
- buffers-max=500
+ buffers-max={buffers_max}
sync-method=next-keyframe
name=fd
""".format(
channel=self.channel,
acaps=Config.get('mix', 'audiocaps'),
- vcaps=Config.get('mix', 'videocaps')
+ vcaps=Config.get('mix', 'videocaps'),
+ buffers_max=
+ Config.get('output-buffers', channel)
+ if Config.has_option('output-buffers', channel)
+ else 500,
)
self.log.debug('Creating Output-Pipeline:\n%s', pipeline)
self.outputPipeline = Gst.parse_launch(pipeline)