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:
		
							parent
							
								
									fbc8eb6857
								
							
						
					
					
						commit
						d90fbde06a
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user