X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_geometry.c;h=8dc36113b566cde868e668e7600f6cd69f78abbe;hb=eae86b6ff2d11421e4839ffbe79c4c547d15751a;hp=2bfbe777bd82348351d8d8be7fd0e7cb8221f695;hpb=660e2957873c44cfab53eb2b6bcd165894afe747;p=melted diff --git a/src/framework/mlt_geometry.c b/src/framework/mlt_geometry.c index 2bfbe77..8dc3611 100644 --- a/src/framework/mlt_geometry.c +++ b/src/framework/mlt_geometry.c @@ -442,6 +442,7 @@ int mlt_geometry_fetch( mlt_geometry this, mlt_geometry_item item, float positio else { memset( item, 0, sizeof( struct mlt_geometry_item_s ) ); + item->frame = position; item->mix = 100; } @@ -574,6 +575,7 @@ int mlt_geometry_prev_key( mlt_geometry this, mlt_geometry_item item, int positi char *mlt_geometry_serialise_cut( mlt_geometry this, int in, int out ) { + geometry self = this->local; struct mlt_geometry_item_s item; char *ret = malloc( 1000 ); int used = 0; @@ -602,6 +604,14 @@ char *mlt_geometry_serialise_cut( mlt_geometry this, int in, int out ) if ( mlt_geometry_fetch( this, &item, item.frame ) ) break; + // If the first key is larger than the current position + // then do nothing here + if ( self->item->data.frame > item.frame ) + { + item.frame ++; + continue; + } + // To ensure correct seeding, ensure all values are fixed item.f[0] = 1; item.f[1] = 1;