]> git.sesse.net Git - nageru/blobdiff - ffmpeg_raii.cpp
Reset audio resampler when FFmpeg inputs restart due to errors.
[nageru] / ffmpeg_raii.cpp
index a11075f81d0d8b84e6c17380e15c82683e476d41..746e03d19122da0cd11ad70735670b9b9d318af5 100644 (file)
@@ -18,16 +18,25 @@ void avformat_close_input_unique::operator() (AVFormatContext *format_ctx) const
 }
 
 AVFormatContextWithCloser avformat_open_input_unique(
-       const char *pathname, AVInputFormat *fmt, AVDictionary **options)
+       const char *pathname, AVInputFormat *fmt,
+       AVDictionary **options)
 {
-       AVFormatContext *format_ctx = nullptr;
+       return avformat_open_input_unique(pathname, fmt, options, AVIOInterruptCB{ nullptr, nullptr });
+}
+
+AVFormatContextWithCloser avformat_open_input_unique(
+       const char *pathname, AVInputFormat *fmt,
+       AVDictionary **options,
+       const AVIOInterruptCB &interrupt_cb)
+{
+       AVFormatContext *format_ctx = avformat_alloc_context();
+       format_ctx->interrupt_callback = interrupt_cb;
        if (avformat_open_input(&format_ctx, pathname, fmt, options) != 0) {
                format_ctx = nullptr;
        }
        return AVFormatContextWithCloser(format_ctx);
 }
 
-
 // AVCodecContext
 
 void avcodec_free_context_unique::operator() (AVCodecContext *codec_ctx) const