lavfi/buffersrc: add av_buffersrc_close().

pull/269/head
Nicolas George 8 years ago
parent 36c111c40f
commit 5ba2aef6ec
  1. 3
      doc/APIchanges
  2. 22
      libavfilter/buffersrc.c
  3. 8
      libavfilter/buffersrc.h
  4. 2
      libavfilter/version.h

@ -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) { if (!frame)
s->eof = 1; return av_buffersrc_close(ctx, AV_NOPTS_VALUE, flags);
ff_avfilter_link_set_in_status(ctx->outputs[0], AVERROR_EOF, AV_NOPTS_VALUE); if (s->eof)
if ((flags & AV_BUFFERSRC_FLAG_PUSH)) {
ret = push_frame(ctx->graph);
if (ret < 0)
return ret;
}
return 0;
} else 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, \

Loading…
Cancel
Save