|  | @@ -44,6 +44,8 @@ static int return_frame(AVFilterContext *ctx, int is_second) | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | av_frame_copy_props(yadif->out, yadif->cur); |  |  | av_frame_copy_props(yadif->out, yadif->cur); | 
														
													
														
															
																|  |  | yadif->out->interlaced_frame = 0; |  |  | 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); |  |  | 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->cur  = yadif->next; | 
														
													
														
															
																|  |  | yadif->next = frame; |  |  | 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)) { |  |  | if (checkstride(yadif, yadif->next, yadif->cur)) { | 
														
													
														
															
																|  |  | av_log(ctx, AV_LOG_VERBOSE, "Reallocating frame due to differing stride\n"); |  |  | 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) |  |  | if (!next) | 
														
													
														
															
																|  |  | return AVERROR(ENOMEM); |  |  | return AVERROR(ENOMEM); | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  |  |  |  | yadif->current_field = YADIF_FIELD_BACK_END; | 
														
													
														
															
																|  |  | next->pts = yadif->next->pts * 2 - yadif->cur->pts; |  |  | next->pts = yadif->next->pts * 2 - yadif->cur->pts; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | ff_yadif_filter_frame(ctx->inputs[0], next); |  |  | ff_yadif_filter_frame(ctx->inputs[0], next); | 
														
													
												
													
														
															
																|  | 
 |