diff --git a/src/format/mod.rs b/src/format/mod.rs index e9f28a65..21aa7e3c 100644 --- a/src/format/mod.rs +++ b/src/format/mod.rs @@ -275,9 +275,15 @@ pub fn output_as>(path: &P, format: &str) -> Result match avio_open(&mut (*ps).pb, path.as_ptr(), AVIO_FLAG_WRITE) { - 0 => Ok(context::Output::wrap(ps)), - e => Err(Error::from(e)), + 0 => { + let output = context::Output::wrap(ps); + if (output.format().flags() & flag::Flags::NO_FILE) == flag::Flags::NO_FILE { + return Ok(output); + } + match avio_open(&mut (*ps).pb, path.as_ptr(), AVIO_FLAG_WRITE) { + 0 => Ok(output), + e => Err(Error::from(e)), + } }, e => Err(Error::from(e)), @@ -303,6 +309,10 @@ pub fn output_as_with>( path.as_ptr(), ) { 0 => { + let output = context::Output::wrap(ps); + if (output.format().flags() & flag::Flags::NO_FILE) == flag::Flags::NO_FILE { + return Ok(output); + } let res = avio_open2( &mut (*ps).pb, path.as_ptr(), @@ -314,7 +324,7 @@ pub fn output_as_with>( Dictionary::own(opts); match res { - 0 => Ok(context::Output::wrap(ps)), + 0 => Ok(output), e => Err(Error::from(e)), } }