|  |  | @@ -44,6 +44,8 @@ static int return_frame(AVFilterContext *ctx, int is_second) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | av_frame_copy_props(yadif->out, yadif->cur); | 
		
	
		
			
			|  |  |  | yadif->out->interlaced_frame = 0; | 
		
	
		
			
			|  |  |  | if (yadif->current_field == YADIF_FIELD_BACK_END) | 
		
	
		
			
			|  |  |  | yadif->current_field = YADIF_FIELD_END; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | yadif->filter(ctx, yadif->out, tff ^ !is_second, tff); | 
		
	
	
		
			
				|  |  | @@ -103,9 +105,12 @@ int ff_yadif_filter_frame(AVFilterLink *link, AVFrame *frame) | 
		
	
		
			
			|  |  |  | yadif->cur  = yadif->next; | 
		
	
		
			
			|  |  |  | yadif->next = frame; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (!yadif->cur && | 
		
	
		
			
			|  |  |  | !(yadif->cur = av_frame_clone(yadif->next))) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | if (!yadif->cur) { | 
		
	
		
			
			|  |  |  | yadif->cur = av_frame_clone(yadif->next); | 
		
	
		
			
			|  |  |  | if (!yadif->cur) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | yadif->current_field = YADIF_FIELD_END; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (checkstride(yadif, yadif->next, yadif->cur)) { | 
		
	
		
			
			|  |  |  | av_log(ctx, AV_LOG_VERBOSE, "Reallocating frame due to differing stride\n"); | 
		
	
	
		
			
				|  |  | @@ -173,6 +178,7 @@ int ff_yadif_request_frame(AVFilterLink *link) | 
		
	
		
			
			|  |  |  | if (!next) | 
		
	
		
			
			|  |  |  | return AVERROR(ENOMEM); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | yadif->current_field = YADIF_FIELD_BACK_END; | 
		
	
		
			
			|  |  |  | next->pts = yadif->next->pts * 2 - yadif->cur->pts; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | ff_yadif_filter_frame(ctx->inputs[0], next); | 
		
	
	
		
			
				|  |  | 
 |