Skip to content

Commit 028b612

Browse files
committed
Define UniqueAVBufferSrcParameters in FFMPEGCommon.h
Signed-off-by: Dmitry Rogozhkin <[email protected]>
1 parent f150c6f commit 028b612

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

src/torchcodec/_core/FFMPEGCommon.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
extern "C" {
1414
#include <libavcodec/avcodec.h>
1515
#include <libavfilter/avfilter.h>
16+
#include <libavfilter/buffersrc.h>
1617
#include <libavformat/avformat.h>
1718
#include <libavformat/avio.h>
1819
#include <libavutil/audio_fifo.h>
@@ -41,6 +42,15 @@ struct Deleterp {
4142
}
4243
};
4344

45+
template <typename T, typename R, R (*Fn)(void*)>
46+
struct Deleterv {
47+
inline void operator()(T* p) const {
48+
if (p) {
49+
Fn(&p);
50+
}
51+
}
52+
};
53+
4454
template <typename T, typename R, R (*Fn)(T*)>
4555
struct Deleter {
4656
inline void operator()(T* p) const {
@@ -78,6 +88,9 @@ using UniqueAVAudioFifo = std::
7888
unique_ptr<AVAudioFifo, Deleter<AVAudioFifo, void, av_audio_fifo_free>>;
7989
using UniqueAVBufferRef =
8090
std::unique_ptr<AVBufferRef, Deleterp<AVBufferRef, void, av_buffer_unref>>;
91+
using UniqueAVBufferSrcParameters = std::unique_ptr<
92+
AVBufferSrcParameters,
93+
Deleterv<AVBufferSrcParameters, void, av_freep>>;
8194

8295
// These 2 classes share the same underlying AVPacket object. They are meant to
8396
// be used in tandem, like so:

src/torchcodec/_core/FilterGraph.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,7 @@ FilterGraph::FilterGraph(
4343
const AVFilter* buffersrc = avfilter_get_by_name("buffer");
4444
const AVFilter* buffersink = avfilter_get_by_name("buffersink");
4545

46-
auto deleter = [](AVBufferSrcParameters* p) {
47-
if (p) {
48-
av_freep(&p);
49-
}
50-
};
51-
std::unique_ptr<AVBufferSrcParameters, decltype(deleter)> srcParams(
52-
nullptr, deleter);
53-
54-
srcParams.reset(av_buffersrc_parameters_alloc());
46+
UniqueAVBufferSrcParameters srcParams(av_buffersrc_parameters_alloc());
5547
TORCH_CHECK(srcParams, "Failed to allocate buffersrc params");
5648

5749
srcParams->format = filtersContext.inputFormat;

0 commit comments

Comments
 (0)