From 27c37fe14f6e631e581002ef8fa942095efe0338 Mon Sep 17 00:00:00 2001
From: Paul B Mahol <onemda@gmail.com>
Date: Mon, 15 May 2023 22:30:07 +0200
Subject: [PATCH 3/3] avfilter: add more usage of ff_null_get_*_buffer()
Signed-off-by: Paul B Mahol <onemda@gmail.com>
---
libavfilter/af_aformat.c | 1 +
libavfilter/af_anull.c | 1 +
libavfilter/af_astats.c | 1 +
libavfilter/f_loop.c | 1 +
libavfilter/settb.c | 2 ++
libavfilter/trim.c | 1 +
libavfilter/vf_fps.c | 1 +
libavfilter/vf_null.c | 1 +
libavfilter/vf_scale.c | 10 ++++++++++
libavfilter/vf_tpad.c | 10 ++++++++++
10 files changed, 29 insertions(+)
@@ -180,6 +180,7 @@ static const AVFilterPad avfilter_af_aformat_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_AUDIO,
+ .get_buffer.audio = ff_null_get_audio_buffer,
},
};
@@ -31,6 +31,7 @@ static const AVFilterPad avfilter_af_anull_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_AUDIO,
+ .get_buffer.audio = ff_null_get_audio_buffer,
},
};
@@ -833,6 +833,7 @@ static const AVFilterPad astats_inputs[] = {
.name = "default",
.type = AVMEDIA_TYPE_AUDIO,
.filter_frame = filter_frame,
+ .get_buffer.audio = ff_null_get_audio_buffer,
},
};
@@ -481,6 +481,7 @@ static const AVFilterPad inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
+ .get_buffer.video = ff_null_get_video_buffer,
},
};
@@ -169,6 +169,7 @@ static const AVFilterPad avfilter_vf_settb_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
+ .get_buffer.video = ff_null_get_video_buffer,
},
};
@@ -201,6 +202,7 @@ static const AVFilterPad avfilter_af_asettb_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_AUDIO,
+ .get_buffer.audio = ff_null_get_audio_buffer,
},
};
@@ -195,6 +195,7 @@ static const AVFilterPad trim_inputs[] = {
.type = AVMEDIA_TYPE_VIDEO,
.filter_frame = trim_filter_frame,
.config_props = config_input,
+ .get_buffer.video = ff_null_get_video_buffer,
},
};
@@ -380,6 +380,7 @@ static const AVFilterPad avfilter_vf_fps_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
+ .get_buffer.video = ff_null_get_video_buffer,
},
};
@@ -30,6 +30,7 @@ static const AVFilterPad avfilter_vf_null_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
+ .get_buffer.video = ff_null_get_video_buffer,
},
};
@@ -988,6 +988,15 @@ static void *child_next(void *obj, void *prev)
return NULL;
}
+static AVFrame *get_video_buffer(AVFilterLink *inlink, int w, int h)
+{
+ ScaleContext *s = inlink->dst->priv;
+
+ return !s->sws ?
+ ff_null_get_video_buffer (inlink, w, h) :
+ ff_default_get_video_buffer(inlink, w, h);
+}
+
#define OFFSET(x) offsetof(ScaleContext, x)
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
#define TFLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM
@@ -1053,6 +1062,7 @@ static const AVFilterPad avfilter_vf_scale_inputs[] = {
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.filter_frame = filter_frame,
+ .get_buffer.video = get_video_buffer,
},
};
@@ -202,11 +202,21 @@ static av_cold void uninit(AVFilterContext *ctx)
av_frame_free(&s->cache_stop);
}
+static AVFrame *get_video_buffer(AVFilterLink *inlink, int w, int h)
+{
+ TPadContext *s = inlink->dst->priv;
+
+ return ((!s->eof && !s->pad_start) || ((s->pad_stop == 0 || s->stop_mode) && (s->pad_start == 0 || s->start_mode))) ?
+ ff_null_get_video_buffer (inlink, w, h) :
+ ff_default_get_video_buffer(inlink, w, h);
+}
+
static const AVFilterPad tpad_inputs[] = {
{
.name = "default",
.type = AVMEDIA_TYPE_VIDEO,
.config_props = config_input,
+ .get_buffer.video = get_video_buffer,
},
};
--
2.39.1