1 #include "ffmpeg_raii.h"
4 #include <libavcodec/avcodec.h>
5 #include <libavformat/avformat.h>
12 void avformat_close_input_unique(AVFormatContext *format_ctx)
14 avformat_close_input(&format_ctx);
17 AVFormatContextWithCloser avformat_open_input_unique(
18 const char *pathname, AVInputFormat *fmt, AVDictionary **options)
20 AVFormatContext *format_ctx = nullptr;
21 if (avformat_open_input(&format_ctx, pathname, fmt, options) != 0) {
24 return AVFormatContextWithCloser(format_ctx, avformat_close_input_unique);
30 void avcodec_free_context_unique(AVCodecContext *codec_ctx)
32 avcodec_free_context(&codec_ctx);
35 AVCodecContextWithDeleter avcodec_alloc_context3_unique(const AVCodec *codec)
37 return AVCodecContextWithDeleter(avcodec_alloc_context3(codec), avcodec_free_context_unique);
43 void avcodec_parameters_free_unique(AVCodecParameters *codec_par)
45 avcodec_parameters_free(&codec_par);
51 void av_frame_free_unique(AVFrame *frame)
53 av_frame_free(&frame);
56 AVFrameWithDeleter av_frame_alloc_unique()
58 return AVFrameWithDeleter(av_frame_alloc(), av_frame_free_unique);