From d136eddbc773923fba9e6ce63cb8f8da84e2eddb Mon Sep 17 00:00:00 2001 From: MaZderMind Date: Sun, 7 Aug 2016 16:10:42 +0200 Subject: raise the buffer-limit for mix_out to 10000 buffers and make this configurable --- voctocore/default-config.ini | 18 ++++++++++++++++++ voctocore/lib/avrawoutput.py | 8 ++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'voctocore') 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) -- cgit v1.2.3