You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avfilter: signal an empty buffersrc with an explicit activate error code
No change in functionality. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
@ -1460,6 +1460,8 @@ int avfilter_graph_request_oldest(AVFilterGraph *graph)
|
||||
frame_count = oldesti->l.frame_count_out;
|
||||
while (frame_count == oldesti->l.frame_count_out) {
|
||||
r = ff_filter_graph_run_once(graph);
|
||||
if (r == FFERROR_BUFFERSRC_EMPTY)
|
||||
r = 0;
|
||||
if (r == AVERROR(EAGAIN) &&
|
||||
!oldesti->frame_wanted_out && !oldesti->frame_blocked_in &&
|
||||
!oldesti->status_in)
|
||||
|
@ -131,8 +131,11 @@ static int get_frame_internal(AVFilterContext *ctx, AVFrame *frame, int flags, i
|
||||
return AVERROR(EAGAIN);
|
||||
} else if (li->frame_wanted_out) {
|
||||
ret = ff_filter_graph_run_once(ctx->graph);
|
||||
if (ret < 0)
|
||||
if (ret == FFERROR_BUFFERSRC_EMPTY) {
|
||||
// Do nothing for now...
|
||||
} else if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
ff_inlink_request_frame(inlink);
|
||||
}
|
||||
|
@ -195,7 +195,7 @@ static int push_frame(AVFilterGraph *graph)
|
||||
ret = ff_filter_graph_run_once(graph);
|
||||
if (ret == AVERROR(EAGAIN))
|
||||
break;
|
||||
if (ret < 0)
|
||||
if (ret < 0 && ret != FFERROR_BUFFERSRC_EMPTY)
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
@ -552,7 +552,7 @@ static int activate(AVFilterContext *ctx)
|
||||
return 0;
|
||||
}
|
||||
c->nb_failed_requests++;
|
||||
return FFERROR_NOT_READY;
|
||||
return FFERROR_BUFFERSRC_EMPTY;
|
||||
}
|
||||
|
||||
static const AVFilterPad avfilter_vsrc_buffer_outputs[] = {
|
||||
|
@ -31,6 +31,7 @@
|
||||
* Special return code when activate() did not do anything.
|
||||
*/
|
||||
#define FFERROR_NOT_READY FFERRTAG('N','R','D','Y')
|
||||
#define FFERROR_BUFFERSRC_EMPTY FFERRTAG('M','P','T','Y')
|
||||
|
||||
/**
|
||||
* A filter pad used for either input or output.
|
||||
|
Reference in New Issue
Block a user