mirror of
https://github.com/librempeg/librempeg
synced 2024-11-23 03:28:27 +00:00
vsrc_buffer: count the number of failed requests.
This commit is contained in:
parent
f75ee4031e
commit
2d6522bab0
@ -40,6 +40,7 @@ typedef struct {
|
|||||||
AVRational sample_aspect_ratio;
|
AVRational sample_aspect_ratio;
|
||||||
char sws_param[256];
|
char sws_param[256];
|
||||||
int eof;
|
int eof;
|
||||||
|
unsigned nb_failed_requests;
|
||||||
} BufferSourceContext;
|
} BufferSourceContext;
|
||||||
|
|
||||||
#define CHECK_PARAM_CHANGE(s, c, width, height, format)\
|
#define CHECK_PARAM_CHANGE(s, c, width, height, format)\
|
||||||
@ -123,6 +124,7 @@ int av_vsrc_buffer_add_video_buffer_ref(AVFilterContext *buffer_filter,
|
|||||||
avfilter_unref_buffer(buf);
|
avfilter_unref_buffer(buf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
c->nb_failed_requests = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -147,6 +149,7 @@ int av_buffersrc_buffer(AVFilterContext *s, AVFilterBufferRef *buf)
|
|||||||
|
|
||||||
if ((ret = av_fifo_generic_write(c->fifo, &buf, sizeof(buf), NULL)) < 0)
|
if ((ret = av_fifo_generic_write(c->fifo, &buf, sizeof(buf), NULL)) < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
c->nb_failed_requests = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -178,6 +181,11 @@ int av_vsrc_buffer_add_frame(AVFilterContext *buffer_src,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
unsigned av_vsrc_buffer_get_nb_failed_requests(AVFilterContext *buffer_src)
|
||||||
|
{
|
||||||
|
return ((BufferSourceContext *)buffer_src->priv)->nb_failed_requests;
|
||||||
|
}
|
||||||
|
|
||||||
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
|
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
|
||||||
{
|
{
|
||||||
BufferSourceContext *c = ctx->priv;
|
BufferSourceContext *c = ctx->priv;
|
||||||
@ -249,6 +257,7 @@ static int request_frame(AVFilterLink *link)
|
|||||||
if (!av_fifo_size(c->fifo)) {
|
if (!av_fifo_size(c->fifo)) {
|
||||||
if (c->eof)
|
if (c->eof)
|
||||||
return AVERROR_EOF;
|
return AVERROR_EOF;
|
||||||
|
c->nb_failed_requests++;
|
||||||
return AVERROR(EAGAIN);
|
return AVERROR(EAGAIN);
|
||||||
}
|
}
|
||||||
av_fifo_generic_read(c->fifo, &buf, sizeof(buf), NULL);
|
av_fifo_generic_read(c->fifo, &buf, sizeof(buf), NULL);
|
||||||
|
@ -46,4 +46,13 @@
|
|||||||
int av_vsrc_buffer_add_video_buffer_ref(AVFilterContext *buffer_src,
|
int av_vsrc_buffer_add_video_buffer_ref(AVFilterContext *buffer_src,
|
||||||
AVFilterBufferRef *picref, int flags);
|
AVFilterBufferRef *picref, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the number of failed requests.
|
||||||
|
*
|
||||||
|
* A failed request is when the request_frame method is called while no
|
||||||
|
* frame is present in the buffer.
|
||||||
|
* The number is reset when a frame is added.
|
||||||
|
*/
|
||||||
|
unsigned av_vsrc_buffer_get_nb_failed_requests(AVFilterContext *buffer_src);
|
||||||
|
|
||||||
#endif /* AVFILTER_VSRC_BUFFER_H */
|
#endif /* AVFILTER_VSRC_BUFFER_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user