[FFmpeg-cvslog] lavfi/buffersrc: add av_buffersrc_close().
Nicolas George
git at videolan.org
Fri Sep 8 11:34:58 EEST 2017
ffmpeg | branch: master | Nicolas George <george at nsup.org> | Mon Apr 3 15:01:45 2017 +0200| [5ba2aef6ec47689300debd3ddd1f39cad010a971] | committer: Nicolas George
lavfi/buffersrc: add av_buffersrc_close().
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5ba2aef6ec47689300debd3ddd1f39cad010a971
---
doc/APIchanges | 3 +++
libavfilter/buffersrc.c | 22 ++++++++++++----------
libavfilter/buffersrc.h | 8 ++++++++
libavfilter/version.h | 2 +-
4 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index b98a3419c4..cc67cbf6f8 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil: 2015-08-28
API changes, most recent first:
+2017-09-08 - xxxxxxx - lavfi 6.103.100 - buffersrc.h
+ Add av_buffersrc_close().
+
2017-09-04 - xxxxxxx - lavc 57.105.100 - avcodec.h
Add AV_HWACCEL_CODEC_CAP_EXPERIMENTAL, replacing the deprecated
HWACCEL_CODEC_CAP_EXPERIMENTAL flag.
diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
index e8f59c2de7..ad5aedd5f7 100644
--- a/libavfilter/buffersrc.c
+++ b/libavfilter/buffersrc.c
@@ -196,16 +196,9 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx,
s->nb_failed_requests = 0;
- if (!frame) {
- s->eof = 1;
- ff_avfilter_link_set_in_status(ctx->outputs[0], AVERROR_EOF, AV_NOPTS_VALUE);
- if ((flags & AV_BUFFERSRC_FLAG_PUSH)) {
- ret = push_frame(ctx->graph);
- if (ret < 0)
- return ret;
- }
- return 0;
- } else if (s->eof)
+ if (!frame)
+ return av_buffersrc_close(ctx, AV_NOPTS_VALUE, flags);
+ if (s->eof)
return AVERROR(EINVAL);
refcounted = !!frame->buf[0];
@@ -267,6 +260,15 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx,
return 0;
}
+int av_buffersrc_close(AVFilterContext *ctx, int64_t pts, unsigned flags)
+{
+ BufferSourceContext *s = ctx->priv;
+
+ s->eof = 1;
+ ff_avfilter_link_set_in_status(ctx->outputs[0], AVERROR_EOF, pts);
+ return (flags & AV_BUFFERSRC_FLAG_PUSH) ? push_frame(ctx->graph) : 0;
+}
+
static av_cold int init_video(AVFilterContext *ctx)
{
BufferSourceContext *c = ctx->priv;
diff --git a/libavfilter/buffersrc.h b/libavfilter/buffersrc.h
index e42c78196b..0652113f2b 100644
--- a/libavfilter/buffersrc.h
+++ b/libavfilter/buffersrc.h
@@ -193,6 +193,14 @@ av_warn_unused_result
int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src,
AVFrame *frame, int flags);
+/**
+ * Close the buffer source after EOF.
+ *
+ * This is similar to passing NULL to av_buffersrc_add_frame_flags()
+ * except it takes the timestamp of the EOF, i.e. the timestamp of the end
+ * of the last frame.
+ */
+int av_buffersrc_close(AVFilterContext *ctx, int64_t pts, unsigned flags);
/**
* @}
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 4b16de1f8a..6d14cff1fb 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -30,7 +30,7 @@
#include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 6
-#define LIBAVFILTER_VERSION_MINOR 102
+#define LIBAVFILTER_VERSION_MINOR 103
#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
More information about the ffmpeg-cvslog
mailing list