else
#endif
convert_image( this->av_frame, *buffer, codec_context->pix_fmt, format, *width, *height );
- if ( !mlt_properties_get( properties, "force_progressive" ) )
- mlt_properties_set_int( frame_properties, "progressive", !this->av_frame->interlaced_frame );
this->top_field_first |= this->av_frame->top_field_first;
this->current_position = int_position;
this->got_picture = 1;
avformat_unlock();
+ // Set the progressive flag
+ mlt_properties_set_int( frame_properties, "progressive",
+ !this->av_frame->interlaced_frame || !!mlt_properties_get_int( properties, "force_progressive" ) );
+
// Set the field order property for this frame
mlt_properties_set_int( frame_properties, "top_field_first", this->top_field_first );
mlt_properties_set_int( frame_properties, "real_width", this->video_codec->width );
mlt_properties_set_int( frame_properties, "real_height", this->video_codec->height );
mlt_properties_set_double( frame_properties, "aspect_ratio", aspect_ratio );
- if ( mlt_properties_get( properties, "force_progressive" ) )
- mlt_properties_set_int( frame_properties, "progressive", mlt_properties_get_int( properties, "force_progressive" ) );
// Add our image operation
mlt_frame_push_service( frame, this );
// Get the input image
if ( deinterlace && !progressive )
*format = mlt_image_yuv422;
- mlt_log_debug( MLT_FILTER_SERVICE( filter ), "xine.deinterlace %d prog %d format %s\n",
- deinterlace, progressive, mlt_image_format_name( *format ) );
error = mlt_frame_get_image( this, image, format, width, height, writable );
progressive = mlt_properties_get_int( MLT_FRAME_PROPERTIES( this ), "progressive" );
+ mlt_log_debug( MLT_FILTER_SERVICE( filter ), "xine.deinterlace %d prog %d format %s\n",
+ deinterlace, progressive, mlt_image_format_name( *format ) );
// Check that we want progressive and we aren't already progressive
if ( deinterlace && *format == mlt_image_yuv422 && *image && !progressive )