avfilter/vf_pullup: Factor free_field_queue() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
							parent
							
								
									b02d87936b
								
							
						
					
					
						commit
						8f9569cfac
					
				@ -126,6 +126,22 @@ static int alloc_metrics(PullupContext *s, PullupField *f)
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void free_field_queue(PullupField *head, PullupField **last)
 | 
			
		||||
{
 | 
			
		||||
    PullupField *f = head;
 | 
			
		||||
    while (f) {
 | 
			
		||||
        av_free(f->diffs);
 | 
			
		||||
        av_free(f->combs);
 | 
			
		||||
        av_free(f->vars);
 | 
			
		||||
        if (f == *last) {
 | 
			
		||||
            av_freep(last);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        f = f->next;
 | 
			
		||||
        av_freep(&f->prev);
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PullupField *make_field_queue(PullupContext *s, int len)
 | 
			
		||||
{
 | 
			
		||||
    PullupField *head, *f;
 | 
			
		||||
@ -714,21 +730,9 @@ end:
 | 
			
		||||
static av_cold void uninit(AVFilterContext *ctx)
 | 
			
		||||
{
 | 
			
		||||
    PullupContext *s = ctx->priv;
 | 
			
		||||
    PullupField *f;
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    f = s->head;
 | 
			
		||||
    while (f) {
 | 
			
		||||
        av_free(f->diffs);
 | 
			
		||||
        av_free(f->combs);
 | 
			
		||||
        av_free(f->vars);
 | 
			
		||||
        if (f == s->last) {
 | 
			
		||||
            av_freep(&s->last);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        f = f->next;
 | 
			
		||||
        av_freep(&f->prev);
 | 
			
		||||
    };
 | 
			
		||||
    free_field_queue(s->head, &s->last);
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) {
 | 
			
		||||
        av_freep(&s->buffers[i].planes[0]);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user