]> git.sesse.net Git - mlt/blobdiff - src/framework/mlt_service.c
In/out point handling on attached filters revisted
[mlt] / src / framework / mlt_service.c
index 9ea9b668d481e070a1f694426fcd4c0428e89f54..e91e441523d70d550db1c26779f2ae349967461a 100644 (file)
@@ -281,12 +281,12 @@ void mlt_service_apply_filters( mlt_service this, mlt_frame frame, int index )
                                mlt_properties properties = mlt_filter_properties( base->filters[ i ] );
                                mlt_position in = mlt_properties_get_position( properties, "in" );
                                mlt_position out = mlt_properties_get_position( properties, "out" );
-                               if ( ( in == 0 && out == 0 ) || ( position >= in && position <= out ) )
+                               if ( ( in == 0 && out == 0 ) || ( position >= in && ( position <= out || out == 0 ) ) )
                                {
-                                       mlt_properties_set_position( frame_properties, "_position", position - in );
                                        mlt_filter_process( base->filters[ i ], frame );
+                                       mlt_properties_set_position( frame_properties, "_position", position - in );
                                        mlt_service_apply_filters( mlt_filter_service( base->filters[ i ] ), frame, index + 1 );
-                                       mlt_properties_set_position( frame_properties, "_position", position + in );
+                                       mlt_properties_set_position( frame_properties, "_position", position );
                                }
                        }
                }