@@ -15,6 +15,9 @@ libavutil: 2015-08-28 | |||||
API changes, most recent first: | 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 | 2017-09-04 - xxxxxxx - lavc 57.105.100 - avcodec.h | ||||
Add AV_HWACCEL_CODEC_CAP_EXPERIMENTAL, replacing the deprecated | Add AV_HWACCEL_CODEC_CAP_EXPERIMENTAL, replacing the deprecated | ||||
HWACCEL_CODEC_CAP_EXPERIMENTAL flag. | HWACCEL_CODEC_CAP_EXPERIMENTAL flag. | ||||
@@ -196,16 +196,9 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx, | |||||
s->nb_failed_requests = 0; | 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); | return AVERROR(EINVAL); | ||||
refcounted = !!frame->buf[0]; | refcounted = !!frame->buf[0]; | ||||
@@ -267,6 +260,15 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx, | |||||
return 0; | 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) | static av_cold int init_video(AVFilterContext *ctx) | ||||
{ | { | ||||
BufferSourceContext *c = ctx->priv; | BufferSourceContext *c = ctx->priv; | ||||
@@ -193,6 +193,14 @@ av_warn_unused_result | |||||
int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src, | int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src, | ||||
AVFrame *frame, int flags); | 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); | |||||
/** | /** | ||||
* @} | * @} | ||||
@@ -30,7 +30,7 @@ | |||||
#include "libavutil/version.h" | #include "libavutil/version.h" | ||||
#define LIBAVFILTER_VERSION_MAJOR 6 | #define LIBAVFILTER_VERSION_MAJOR 6 | ||||
#define LIBAVFILTER_VERSION_MINOR 102 | |||||
#define LIBAVFILTER_VERSION_MINOR 103 | |||||
#define LIBAVFILTER_VERSION_MICRO 100 | #define LIBAVFILTER_VERSION_MICRO 100 | ||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||