X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffmpeg_raii.h;h=c0c4a47dc170aa954862eacaa56eb9326cb739d2;hb=d3e48df512d9476d3849227067792a3537bb094e;hp=d27c20d3b298ec866a6450c6067b404966d6dff8;hpb=cd319a6f4b11d888d8e9f996a2ec487668777e13;p=nageru diff --git a/ffmpeg_raii.h b/ffmpeg_raii.h index d27c20d..c0c4a47 100644 --- a/ffmpeg_raii.h +++ b/ffmpeg_raii.h @@ -18,12 +18,14 @@ struct AVDictionary; struct AVFormatContext; struct AVFrame; struct AVInputFormat; - +struct SwsContext; // AVFormatContext -void avformat_close_input_unique(AVFormatContext *format_ctx); +struct avformat_close_input_unique { + void operator() (AVFormatContext *format_ctx) const; +}; -typedef std::unique_ptr +typedef std::unique_ptr AVFormatContextWithCloser; AVFormatContextWithCloser avformat_open_input_unique( @@ -31,27 +33,41 @@ AVFormatContextWithCloser avformat_open_input_unique( // AVCodecContext -void avcodec_free_context_unique(AVCodecContext *codec_ctx); +struct avcodec_free_context_unique { + void operator() (AVCodecContext *ctx) const; +}; -typedef std::unique_ptr +typedef std::unique_ptr AVCodecContextWithDeleter; AVCodecContextWithDeleter avcodec_alloc_context3_unique(const AVCodec *codec); // AVCodecParameters -void avcodec_parameters_free_unique(AVCodecParameters *codec_par); +struct avcodec_parameters_free_unique { + void operator() (AVCodecParameters *codec_par) const; +}; -typedef std::unique_ptr +typedef std::unique_ptr AVCodecParametersWithDeleter; // AVFrame -void av_frame_free_unique(AVFrame *frame); +struct av_frame_free_unique { + void operator() (AVFrame *frame) const; +}; -typedef std::unique_ptr +typedef std::unique_ptr AVFrameWithDeleter; AVFrameWithDeleter av_frame_alloc_unique(); +// SwsContext +struct sws_free_context_unique { + void operator() (SwsContext *context) const; +}; + +typedef std::unique_ptr + SwsContextWithDeleter; + #endif // !defined(_FFMPEG_RAII_H)