X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_geometry.c;h=87a9623251086876e53a83b02690836da3b68efd;hb=1e55d8082c842d4ae2d718eb2675719eeb615c0c;hp=2bfbe777bd82348351d8d8be7fd0e7cb8221f695;hpb=660e2957873c44cfab53eb2b6bcd165894afe747;p=melted diff --git a/src/framework/mlt_geometry.c b/src/framework/mlt_geometry.c index 2bfbe77..87a9623 100644 --- a/src/framework/mlt_geometry.c +++ b/src/framework/mlt_geometry.c @@ -1,5 +1,5 @@ /* - * mlt_geometry.h -- provides the geometry API + * mlt_geometry.c -- provides the geometry API * Copyright (C) 2004-2005 Ushodaya Enterprises Limited * Author: Charles Yates * @@ -98,9 +98,9 @@ static void mlt_geometry_virtual_refresh( mlt_geometry this ) geometry_item prev = current->prev; geometry_item next = current->next; - float prev_value = 0; - float next_value = 0; - float value = 0; + double prev_value = 0; + double next_value = 0; + double value = 0; while( prev != NULL && !prev->data.f[ i ] ) prev = prev->prev; while( next != NULL && !next->data.f[ i ] ) next = next->next; @@ -281,7 +281,7 @@ void mlt_geometry_set_length( mlt_geometry this, int length ) // Get the local/private structure geometry self = this->local; - // return the length + // set the length self->length = length; } @@ -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;