You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	buffersink: introduce FIFO_INIT_ELEMENT_SIZE to complement FIFO_INIT_SIZE
Use sizeof(void *) as its value, because AVFilterBufferRef is deprecated. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This commit is contained in:
		| @@ -62,6 +62,8 @@ typedef struct BufferSinkContext { | ||||
| } BufferSinkContext; | ||||
|  | ||||
| #define NB_ITEMS(list) (list ## _size / sizeof(*list)) | ||||
| #define FIFO_INIT_SIZE 8 | ||||
| #define FIFO_INIT_ELEMENT_SIZE sizeof(void *) | ||||
|  | ||||
| static av_cold void uninit(AVFilterContext *ctx) | ||||
| { | ||||
| @@ -72,7 +74,7 @@ static av_cold void uninit(AVFilterContext *ctx) | ||||
|         av_audio_fifo_free(sink->audio_fifo); | ||||
|  | ||||
|     if (sink->fifo) { | ||||
|         while (av_fifo_size(sink->fifo) >= sizeof(AVFilterBufferRef *)) { | ||||
|         while (av_fifo_size(sink->fifo) >= FIFO_INIT_ELEMENT_SIZE) { | ||||
|             av_fifo_generic_read(sink->fifo, &frame, sizeof(frame), NULL); | ||||
|             av_frame_free(&frame); | ||||
|         } | ||||
| @@ -84,7 +86,7 @@ static int add_buffer_ref(AVFilterContext *ctx, AVFrame *ref) | ||||
| { | ||||
|     BufferSinkContext *buf = ctx->priv; | ||||
|  | ||||
|     if (av_fifo_space(buf->fifo) < sizeof(AVFilterBufferRef *)) { | ||||
|     if (av_fifo_space(buf->fifo) < FIFO_INIT_ELEMENT_SIZE) { | ||||
|         /* realloc fifo size */ | ||||
|         if (av_fifo_realloc2(buf->fifo, av_fifo_size(buf->fifo) * 2) < 0) { | ||||
|             av_log(ctx, AV_LOG_ERROR, | ||||
| @@ -95,7 +97,7 @@ static int add_buffer_ref(AVFilterContext *ctx, AVFrame *ref) | ||||
|     } | ||||
|  | ||||
|     /* cache frame */ | ||||
|     av_fifo_generic_write(buf->fifo, &ref, sizeof(AVFilterBufferRef *), NULL); | ||||
|     av_fifo_generic_write(buf->fifo, &ref, FIFO_INIT_ELEMENT_SIZE, NULL); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -108,7 +110,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *frame) | ||||
|     if ((ret = add_buffer_ref(ctx, frame)) < 0) | ||||
|         return ret; | ||||
|     if (buf->warning_limit && | ||||
|         av_fifo_size(buf->fifo) / sizeof(AVFilterBufferRef *) >= buf->warning_limit) { | ||||
|         av_fifo_size(buf->fifo) / FIFO_INIT_ELEMENT_SIZE >= buf->warning_limit) { | ||||
|         av_log(ctx, AV_LOG_WARNING, | ||||
|                "%d buffers queued in %s, something may be wrong.\n", | ||||
|                buf->warning_limit, | ||||
| @@ -242,13 +244,11 @@ AVABufferSinkParams *av_abuffersink_params_alloc(void) | ||||
|     return params; | ||||
| } | ||||
|  | ||||
| #define FIFO_INIT_SIZE 8 | ||||
|  | ||||
| static av_cold int common_init(AVFilterContext *ctx) | ||||
| { | ||||
|     BufferSinkContext *buf = ctx->priv; | ||||
|  | ||||
|     buf->fifo = av_fifo_alloc_array(FIFO_INIT_SIZE, sizeof(AVFilterBufferRef *)); | ||||
|     buf->fifo = av_fifo_alloc_array(FIFO_INIT_SIZE, FIFO_INIT_ELEMENT_SIZE); | ||||
|     if (!buf->fifo) { | ||||
|         av_log(ctx, AV_LOG_ERROR, "Failed to allocate fifo\n"); | ||||
|         return AVERROR(ENOMEM); | ||||
| @@ -373,7 +373,7 @@ int attribute_align_arg av_buffersink_poll_frame(AVFilterContext *ctx) | ||||
|                || !strcmp(ctx->filter->name, "ffbuffersink") | ||||
|                || !strcmp(ctx->filter->name, "ffabuffersink")); | ||||
|  | ||||
|     return av_fifo_size(buf->fifo)/sizeof(AVFilterBufferRef *) + ff_poll_frame(inlink); | ||||
|     return av_fifo_size(buf->fifo)/FIFO_INIT_ELEMENT_SIZE + ff_poll_frame(inlink); | ||||
| } | ||||
|  | ||||
| static av_cold int vsink_init(AVFilterContext *ctx, void *opaque) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user