You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	vsrc_buffer: count the number of failed requests.
This commit is contained in:
		| @@ -40,6 +40,7 @@ typedef struct { | ||||
|     AVRational        sample_aspect_ratio; | ||||
|     char              sws_param[256]; | ||||
|     int eof; | ||||
|     unsigned          nb_failed_requests; | ||||
| } BufferSourceContext; | ||||
|  | ||||
| #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); | ||||
|         return ret; | ||||
|     } | ||||
|     c->nb_failed_requests = 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) | ||||
|         return ret; | ||||
|     c->nb_failed_requests = 0; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
| @@ -178,6 +181,11 @@ int av_vsrc_buffer_add_frame(AVFilterContext *buffer_src, | ||||
| } | ||||
| #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) | ||||
| { | ||||
|     BufferSourceContext *c = ctx->priv; | ||||
| @@ -249,6 +257,7 @@ static int request_frame(AVFilterLink *link) | ||||
|     if (!av_fifo_size(c->fifo)) { | ||||
|         if (c->eof) | ||||
|             return AVERROR_EOF; | ||||
|         c->nb_failed_requests++; | ||||
|         return AVERROR(EAGAIN); | ||||
|     } | ||||
|     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, | ||||
|                                         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 */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user