X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fsdl%2Fconsumer_sdl.c;h=803e96ee6acd449f0e013b8fdadbf4376fff856f;hb=cc8b6005abe30b5f0816b5aa6b87aa6867275228;hp=943a0d1be0f9d3118ec0a3b28185463f3d07376f;hpb=02ad1f90ca58ff63b960c8de0db71a12559a1dda;p=melted diff --git a/src/modules/sdl/consumer_sdl.c b/src/modules/sdl/consumer_sdl.c index 943a0d1..803e96e 100644 --- a/src/modules/sdl/consumer_sdl.c +++ b/src/modules/sdl/consumer_sdl.c @@ -96,6 +96,9 @@ mlt_consumer consumer_sdl_init( char *arg ) pthread_mutex_init( &this->audio_mutex, NULL ); pthread_cond_init( &this->audio_cond, NULL); + // Default fps + mlt_properties_set_double( this->properties, "fps", 25 ); + // process actual param if ( arg == NULL || !strcmp( arg, "PAL" ) ) { @@ -106,6 +109,7 @@ mlt_consumer consumer_sdl_init( char *arg ) { this->width = 720; this->height = 480; + mlt_properties_set_double( this->properties, "fps", 29.97 ); } else if ( sscanf( arg, "%dx%d", &this->width, &this->height ) != 2 ) { @@ -204,7 +208,7 @@ static int consumer_play_audio( consumer_sdl this, mlt_frame frame, int init_aud int channels = 2; int frequency = 48000; static int counter = 0; - int samples = mlt_sample_calculator( ( this->height < 576 ? 29.97 : 25 ), frequency, counter++ ); + int samples = mlt_sample_calculator( mlt_properties_get_double( this->properties, "fps" ), frequency, counter++ ); int16_t *pcm; int bytes; @@ -222,6 +226,8 @@ static int consumer_play_audio( consumer_sdl this, mlt_frame frame, int init_aud SDL_AudioSpec request; SDL_AudioSpec got; + SDL_EnableKeyRepeat( SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL ); + // specify audio format memset( &request, 0, sizeof( SDL_AudioSpec ) ); this->playing = 0; @@ -322,8 +328,10 @@ static int consumer_play_video( consumer_sdl this, mlt_frame frame ) { mlt_producer producer = mlt_properties_get_data( properties, "transport_producer", NULL ); void (*callback)( mlt_producer, char * ) = mlt_properties_get_data( properties, "transport_callback", NULL ); - if ( callback != NULL && producer != NULL ) + if ( callback != NULL && producer != NULL && strcmp( SDL_GetKeyName(event.key.keysym.sym), "space" ) ) callback( producer, SDL_GetKeyName(event.key.keysym.sym) ); + else if ( callback != NULL && producer != NULL && !strcmp( SDL_GetKeyName(event.key.keysym.sym), "space" ) ) + callback( producer, " " ); } break; }