From 44b2e344ba72514ad70247fbced3ee92a4bbe33a Mon Sep 17 00:00:00 2001 From: Kieran Date: Tue, 10 Jun 2025 15:03:52 +0100 Subject: [PATCH] feat: configure demuxer buffer size --- src/demux.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/demux.rs b/src/demux.rs index 31d9185..275b0ad 100644 --- a/src/demux.rs +++ b/src/demux.rs @@ -37,6 +37,7 @@ pub enum DemuxerInput { pub struct Demuxer { ctx: *mut AVFormatContext, input: DemuxerInput, + buffer_size: usize, } impl Demuxer { @@ -50,10 +51,17 @@ impl Demuxer { Ok(Self { ctx, input: DemuxerInput::Url(input.to_string()), + buffer_size: 1024 * 16, }) } } + /// Configure the buffer size for custom_io + pub fn with_buffer_size(mut self, buffer_size: usize) -> Self { + self.buffer_size = buffer_size; + self + } + /// Create a new [Demuxer] from an object that implements [Read] pub fn new_custom_io(reader: R, url: Option) -> Result { unsafe { @@ -66,6 +74,7 @@ impl Demuxer { Ok(Self { ctx, input: DemuxerInput::Reader(Some(slimbox_unsize!(reader)), url), + buffer_size: 1024 * 16, }) } } @@ -89,10 +98,9 @@ impl Demuxer { } DemuxerInput::Reader(input, url) => { let input = input.take().expect("input stream already taken"); - const BUFFER_SIZE: usize = 4096; let pb = avio_alloc_context( - av_mallocz(BUFFER_SIZE) as *mut libc::c_uchar, - BUFFER_SIZE as libc::c_int, + av_mallocz(self.buffer_size) as *mut _, + self.buffer_size as _, 0, input.into_raw(), Some(read_data),