aspect ratio and test card woes
[melted] / src / framework / mlt_consumer.c
index 9bccbed..b03f078 100644 (file)
@@ -78,6 +78,9 @@ int mlt_consumer_init( mlt_consumer this, void *child )
                // Default of all consumers is real time
                mlt_properties_set_int( properties, "real_time", 1 );
 
+               // Default to environment test card
+               mlt_properties_set( properties, "test_card", mlt_environment( "MLT_TEST_CARD" ) );
+
                // Hmm - default all consumers to yuv422 :-/
                this->format = mlt_image_yuv422;
        }
@@ -141,8 +144,7 @@ int mlt_consumer_start( mlt_consumer this )
                if ( mlt_properties_get_data( properties, "test_card_producer", NULL ) == NULL )
                {
                        // Create a test card producer
-                       // TODO: do we want to use fezzik here?
-                       mlt_producer producer = mlt_factory_producer( "fezzik", test_card );
+                       mlt_producer producer = mlt_factory_producer( NULL, test_card );
 
                        // Do we have a producer
                        if ( producer != NULL )
@@ -165,6 +167,9 @@ int mlt_consumer_start( mlt_consumer this )
                mlt_properties_set_data( properties, "test_card_producer", NULL, 0, NULL, NULL );
        }
 
+       // Set the real_time preference
+       this->real_time = mlt_properties_get_int( properties, "real_time" );
+
        // Start the service
        if ( this->start != NULL )
                return this->start( this );
@@ -172,7 +177,7 @@ int mlt_consumer_start( mlt_consumer this )
        return 0;
 }
 
-/** Protected method :-/ for consumer to get frames from connected service
+/** Protected method for consumer to get frames from connected service
 */
 
 mlt_frame mlt_consumer_get_frame( mlt_consumer this )
@@ -315,6 +320,8 @@ static void *consumer_read_ahead_thread( void *arg )
 
 static void consumer_read_ahead_start( mlt_consumer this )
 {
+       pthread_attr_t thread_attributes;
+       
        // We're running now
        this->ahead = 1;
 
@@ -327,9 +334,12 @@ static void consumer_read_ahead_start( mlt_consumer this )
        // Create the condition
        pthread_cond_init( &this->cond, NULL );
 
+       // Inherit the scheduling priority
+       pthread_attr_init( &thread_attributes );
+       pthread_attr_setinheritsched( &thread_attributes, PTHREAD_INHERIT_SCHED );
+       
        // Create the read ahead 
-       pthread_create( &this->ahead_thread, NULL, consumer_read_ahead_thread, this );
-
+       pthread_create( &this->ahead_thread, &thread_attributes, consumer_read_ahead_thread, this );
 }
 
 static void consumer_read_ahead_stop( mlt_consumer this )
@@ -369,7 +379,7 @@ mlt_frame mlt_consumer_rt_frame( mlt_consumer this )
        mlt_properties properties = mlt_consumer_properties( this );
 
        // Check if the user has requested real time or not
-       if ( mlt_properties_get_int( properties, "real_time" ) )
+       if ( this->real_time )
        {
                int size = 1;