]> git.sesse.net Git - mlt/commitdiff
Fix AVCHD detected as double frame rate.
authorDan Dennedy <dan@dennedy.org>
Wed, 24 Nov 2010 00:20:11 +0000 (16:20 -0800)
committerDan Dennedy <dan@dennedy.org>
Wed, 24 Nov 2010 00:20:11 +0000 (16:20 -0800)
The heuristic is based upon fact that there is really no such thing as
50 or 59.94 _frames_ per second interlaced.

src/melt/melt.c

index e98db46f1ae8796a68cfa358b87c3c1c1c1cd0cf..caba2889269bc91c219fde5822f448fffd122e05 100644 (file)
@@ -361,6 +361,11 @@ static void guess_profile( mlt_producer melt, mlt_profile profile )
                                profile->progressive = mlt_properties_get_int( p, "meta.media.progressive" );
                                profile->frame_rate_num = mlt_properties_get_int( p, "meta.media.frame_rate_num" );
                                profile->frame_rate_den = mlt_properties_get_int( p, "meta.media.frame_rate_den" );
+                               // AVCHD is mis-reported as double frame rate.
+                               if ( profile->progressive == 0 && (
+                                    profile->frame_rate_num / profile->frame_rate_den == 50 ||
+                                    profile->frame_rate_num / profile->frame_rate_den == 59 ) )
+                                       profile->frame_rate_num /= 2;
                                profile->sample_aspect_num = mlt_properties_get_int( p, "meta.media.sample_aspect_num" );
                                profile->sample_aspect_den = mlt_properties_get_int( p, "meta.media.sample_aspect_den" );
                                profile->colorspace = mlt_properties_get_int( p, "meta.media.colorspace" );