From 2b7f4dfa6b8557fba2898d7f04622925e7718406 Mon Sep 17 00:00:00 2001 From: LiamCoal Date: Fri, 7 Feb 2020 20:15:56 -0800 Subject: [PATCH] media-playback: Unbuffered Media Source When using an IP camera on a local network, we wanted to minimize delay. In order to achieve minimum delay, we allowed Media Source to set BufferingMB to 0, and when it is 0, also enable AVFMT_FLAG_NOBUFFER in the AVFormatContext flags. --- deps/media-playback/media-playback/media.c | 3 +++ plugins/obs-ffmpeg/obs-ffmpeg-source.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/deps/media-playback/media-playback/media.c b/deps/media-playback/media-playback/media.c index ed057974b..a233637e5 100644 --- a/deps/media-playback/media-playback/media.c +++ b/deps/media-playback/media-playback/media.c @@ -585,6 +585,9 @@ static bool init_avformat(mp_media_t *m) av_dict_set_int(&opts, "buffer_size", m->buffering, 0); m->fmt = avformat_alloc_context(); + if (m->buffering == 0) { + m->fmt->flags |= AVFMT_FLAG_NOBUFFER; + } if (!m->is_local_file) { m->fmt->interrupt_callback.callback = interrupt_callback; m->fmt->interrupt_callback.opaque = m; diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-source.c b/plugins/obs-ffmpeg/obs-ffmpeg-source.c index d042d3d23..5030626a4 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-source.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-source.c @@ -163,7 +163,7 @@ static obs_properties_t *ffmpeg_source_getproperties(void *data) obs_module_text("RestartWhenActivated")); prop = obs_properties_add_int_slider(props, "buffering_mb", - obs_module_text("BufferingMB"), 1, + obs_module_text("BufferingMB"), 0, 16, 1); obs_property_int_set_suffix(prop, " MB");