]> git.sesse.net Git - mlt/commitdiff
more small optimisations
authorlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Thu, 11 Mar 2004 19:05:55 +0000 (19:05 +0000)
committerlilo_booter <lilo_booter@d19143bc-622f-0410-bfdd-b5b2a6649095>
Thu, 11 Mar 2004 19:05:55 +0000 (19:05 +0000)
git-svn-id: https://mlt.svn.sourceforge.net/svnroot/mlt/trunk/mlt@203 d19143bc-622f-0410-bfdd-b5b2a6649095

demo/mlt_voiceover
src/framework/mlt_deque.c
src/framework/mlt_properties.c
src/framework/mlt_property.c
src/framework/mlt_property.h
src/modules/sdl/consumer_sdl.c

index 804ef96469441f80c19d006989196dec8866dbe1..57b4d1ca8df6941c0ceb5487501c54b5f8ab676b 100644 (file)
@@ -1,15 +1,13 @@
 inigo \
        clip1.dv \
        clip2.mpeg \
--track 
-       "+voice over demo.txt" \
+-track "+voice over demo.txt" \
                out=299 \
                font="Sans Bold 72" \
                fgcolour=0x00000000 \
                bgcolour=0xff9933aa \
                pad=10 \
--track 
-       music1.ogg \
+-track music1.ogg \
 -transition \
        composite:0%,80%:100%x20% \
        distort=1 \
index c048310c430b675d6bb84815bc8c997ead297c81..4d5a2bdb2e495bbb83f448755ae475b252d70f61 100644 (file)
@@ -40,7 +40,14 @@ struct mlt_deque_s
 
 mlt_deque mlt_deque_init( )
 {
-       return calloc( 1, sizeof( struct mlt_deque_s ) );
+       mlt_deque this = malloc( sizeof( struct mlt_deque_s ) );
+       if ( this != NULL )
+       {
+               this->list = NULL;
+               this->size = 0;
+               this->count = 0;
+       }
+       return this;
 }
 
 /** Return the number of items in the deque.
@@ -58,8 +65,8 @@ static int mlt_deque_allocate( mlt_deque this )
 {
        if ( this->count == this->size )
        {
-               this->list = realloc( this->list, sizeof( void * ) * ( this->size + 10 ) );
-               this->size += 10;
+               this->list = realloc( this->list, sizeof( void * ) * ( this->size + 20 ) );
+               this->size += 20;
        }
        return this->list == NULL;
 }
index 2824ccaec9435472550edea5d1d992fe1916c0ab..2664edd7df60c2b197f5177870e531c930163f76 100644 (file)
@@ -38,6 +38,7 @@ typedef struct
        mlt_property *value;
        int count;
        int size;
+       mlt_properties mirror;
 }
 property_list;
 
@@ -87,17 +88,14 @@ static inline int generate_hash( char *name )
        real producer.
 */
 
-static void mlt_properties_do_mirror( mlt_properties this, char *name )
+static inline void mlt_properties_do_mirror( mlt_properties this, char *name )
 {
-       if ( strcmp( name, "in" ) && strcmp( name, "out" ) )
+       property_list *list = this->private;
+       if ( list->mirror != NULL && strcmp( name, "in" ) && strcmp( name, "out" ) )
        {
-               mlt_properties mirror = mlt_properties_get_data( this, "mlt_mirror", NULL );
-               if ( mirror != NULL )
-               {
-                       char *value = mlt_properties_get( this, name );
-                       if ( value != NULL )
-                               mlt_properties_set( mirror, name, value );
-               }
+               char *value = mlt_properties_get( this, name );
+               if ( value != NULL )
+                       mlt_properties_set( list->mirror, name, value );
        }
 }
 
@@ -106,7 +104,8 @@ static void mlt_properties_do_mirror( mlt_properties this, char *name )
 
 void mlt_properties_mirror( mlt_properties this, mlt_properties that )
 {
-       mlt_properties_set_data( this, "mlt_mirror", that, 0, NULL, NULL );
+       property_list *list = this->private;
+       list->mirror = that;
 }
 
 /** Inherit all serialisable properties from that into this.
@@ -157,19 +156,22 @@ static inline mlt_property mlt_properties_find( mlt_properties this, char *name
        property_list *list = this->private;
        mlt_property value = NULL;
        int key = generate_hash( name );
-       int i = list->hash[ key ];
+       int i = list->hash[ key ] - 1;
 
-       // Check if we're hashed
-       if ( list->count > 0 &&
-                name[ 0 ] == list->name[ i ][ 0 ] && 
-                !strcmp( list->name[ i ], name ) )
-               value = list->value[ i ];
-
-       // Locate the item 
-       for ( i = 0; value == NULL && i < list->count; i ++ )
-               if ( name[ 0 ] == list->name[ i ][ 0 ] && !strcmp( list->name[ i ], name ) )
+       if ( i >= 0 )
+       {
+               // Check if we're hashed
+               if ( list->count > 0 &&
+                       name[ 0 ] == list->name[ i ][ 0 ] && 
+                       !strcmp( list->name[ i ], name ) )
                        value = list->value[ i ];
 
+               // Locate the item 
+               for ( i = list->count - 1; value == NULL && i >= 0; i -- )
+                       if ( name[ 0 ] == list->name[ i ][ 0 ] && !strcmp( list->name[ i ], name ) )
+                               value = list->value[ i ];
+       }
+
        return value;
 }
 
@@ -194,7 +196,8 @@ static mlt_property mlt_properties_add( mlt_properties this, char *name )
        list->value[ list->count ] = mlt_property_init( );
 
        // Assign to hash table
-       list->hash[ key ] = list->count;
+       if ( list->hash[ key ] == 0 )
+               list->hash[ key ] = list->count + 1;
 
        // Return and increment count accordingly
        return list->value[ list->count ++ ];
@@ -453,6 +456,7 @@ int mlt_properties_rename( mlt_properties this, char *source, char *dest )
                        {
                                free( list->name[ i ] );
                                list->name[ i ] = strdup( dest );
+                               list->hash[ generate_hash( dest ) ] = i + 1;
                                break;
                        }
                }
index eaa19675ba5134f8d49d45449d04bb32db25d100..f3613ce20cca713908d71e0133102bdbf55783b9 100644 (file)
 
 mlt_property mlt_property_init( )
 {
-       return calloc( 1, sizeof( struct mlt_property_s ) );
+       mlt_property this = malloc( sizeof( struct mlt_property_s ) );
+       if ( this != NULL )
+       {
+               this->types = 0;
+               this->prop_int = 0;
+               this->prop_position = 0;
+               this->prop_double = 0;
+               this->prop_int64 = 0;
+               this->prop_string = NULL;
+               this->data = NULL;
+               this->length = 0;
+               this->destructor = NULL;
+               this->serialiser = NULL;
+       }
+       return this;
 }
 
 /** Clear a property.
 */
 
-void mlt_property_clear( mlt_property this )
+static inline void mlt_property_clear( mlt_property this )
 {
        // Special case data handling
        if ( this->types & mlt_prop_data && this->destructor != NULL )
@@ -47,8 +61,17 @@ void mlt_property_clear( mlt_property this )
        if ( this->types & mlt_prop_string )
                free( this->prop_string );
 
-       // We can wipe it now.
-       memset( this, 0, sizeof( struct mlt_property_s ) );
+       // Wipe stuff
+       this->types = 0;
+       this->prop_int = 0;
+       this->prop_position = 0;
+       this->prop_double = 0;
+       this->prop_int64 = 0;
+       this->prop_string = NULL;
+       this->data = NULL;
+       this->length = 0;
+       this->destructor = NULL;
+       this->serialiser = NULL;
 }
 
 /** Set an int on this property.
index 3f59ad27e630c68b032e73bfd226545f79c9100e..7db6aa258d0cc1364862a17c346c77af77bb1976 100644 (file)
@@ -67,7 +67,6 @@ typedef struct mlt_property_s
 */
 
 extern mlt_property mlt_property_init( );
-extern void mlt_property_clear( mlt_property this );
 extern int mlt_property_set_int( mlt_property this, int value );
 extern int mlt_property_set_double( mlt_property this, double value );
 extern int mlt_property_set_position( mlt_property this, mlt_position value );
index 962d4ae4ab9fc07b6a0b0ef4f372666220bcd212..bfa6e82320d494d34d913594b9e0bc97ca38d0ca 100644 (file)
@@ -349,6 +349,12 @@ static int consumer_play_video( consumer_sdl this, mlt_frame frame, int64_t elap
                // Get the image, width and height
                mlt_frame_get_image( frame, &image, &vfmt, &width, &height, 0 );
 
+               if ( playtime > elapsed + 25000 )
+               {
+                       struct timespec tm = { ( playtime - elapsed ) / 1000000, ( ( playtime - elapsed ) % 1000000 ) * 1000 };
+                       nanosleep( &tm, NULL );
+               }
+
                // Handle events
                if ( this->sdl_screen != NULL )
                {
@@ -451,12 +457,6 @@ static int consumer_play_video( consumer_sdl this, mlt_frame frame, int64_t elap
                                SDL_DisplayYUVOverlay( this->sdl_overlay, &this->sdl_screen->clip_rect );
                        }
                }
-
-               if ( playtime > elapsed + 25000 )
-               {
-                       struct timespec tm = { ( playtime - elapsed ) / 1000000, ( ( playtime - elapsed ) % 1000000 ) * 1000 };
-                       nanosleep( &tm, NULL );
-               }
        }
 
        // Close the frame