{
// Allocate a thread
pthread_t *thread = calloc( 1, sizeof( pthread_t ) );
+ pthread_attr_t thread_attributes;
// Assign the thread to properties
mlt_properties_set_data( properties, "thread", thread, sizeof( pthread_t ), free, NULL );
// Set the running state
mlt_properties_set_int( properties, "running", 1 );
+ // Inherit the scheduling priority
+ pthread_attr_init( &thread_attributes );
+ pthread_attr_setinheritsched( &thread_attributes, PTHREAD_INHERIT_SCHED );
+
// Create the thread
- pthread_create( thread, NULL, consumer_thread, this );
+ pthread_create( thread, &thread_attributes, consumer_thread, this );
}
return 0;
}
// Default audio args
mlt_audio_format fmt = mlt_audio_pcm;
int channels = 2;
- int frequency = 48000;
+ int frequency = mlt_properties_get_int( this_properties, "frequency" );
int samples = mlt_sample_calculator( mlt_properties_get_double( this_properties, "fps" ), frequency, count );
int16_t *pcm = NULL;
for ( j = 0; j < channels; j++ )
audio_buffers[ j ][ i ] = *pcm ++;
}
+ else
+ {
+ for ( j = 0; j < channels; j++ )
+ memset( audio_buffers[ j ], 0, 2 * DV_AUDIO_MAX_SAMPLES );
+ }
// Encode audio on frame
dv_encode_full_audio( encoder, audio_buffers, channels, frequency, dv_frame );
// Free the memory
free( this );
}
-