X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fsdl%2Fconsumer_sdl_preview.c;h=73661e24912742d25507f751ed321362fdb9d15b;hb=d33f444d4ef4c7bc4074d07a49eca0ab7d108394;hp=0ff97312ff9c9f0b8571597be5f69bf96683b9d9;hpb=eccf04749681f70957f34fdd6742224774e72d15;p=melted diff --git a/src/modules/sdl/consumer_sdl_preview.c b/src/modules/sdl/consumer_sdl_preview.c index 0ff9731..73661e2 100644 --- a/src/modules/sdl/consumer_sdl_preview.c +++ b/src/modules/sdl/consumer_sdl_preview.c @@ -3,22 +3,22 @@ * Copyright (C) 2004-2005 Ushodaya Enterprises Limited * Author: Charles Yates * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * This program is distributed in the hope that it will be useful, + * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "consumer_sdl.h" +#include #include #include #include @@ -60,10 +60,10 @@ static void consumer_frame_show_cb( mlt_consumer sdl, mlt_consumer this, mlt_fra static void consumer_sdl_event_cb( mlt_consumer sdl, mlt_consumer this, SDL_Event *event ); static void consumer_refresh_cb( mlt_consumer sdl, mlt_consumer this, char *name ); -mlt_consumer consumer_sdl_preview_init( char *arg ) +mlt_consumer consumer_sdl_preview_init( mlt_profile profile, mlt_service_type type, const char *id, char *arg ) { consumer_sdl this = calloc( sizeof( struct consumer_sdl_s ), 1 ); - if ( this != NULL && mlt_consumer_init( &this->parent, this ) == 0 ) + if ( this != NULL && mlt_consumer_init( &this->parent, this, profile ) == 0 ) { // Get the parent consumer object mlt_consumer parent = &this->parent; @@ -83,8 +83,8 @@ mlt_consumer consumer_sdl_preview_init( char *arg ) } // Create child consumers - this->play = mlt_factory_consumer( "sdl", arg ); - this->still = mlt_factory_consumer( "sdl_still", arg ); + this->play = mlt_factory_consumer( profile, "sdl", arg ); + this->still = mlt_factory_consumer( profile, "sdl_still", arg ); mlt_properties_set( MLT_CONSUMER_PROPERTIES( parent ), "real_time", "0" ); mlt_properties_set( MLT_CONSUMER_PROPERTIES( parent ), "rescale", "nearest" ); parent->close = consumer_close; @@ -142,6 +142,9 @@ static int consumer_start( mlt_consumer parent ) char *window_id = mlt_properties_get( properties, "window_id" ); char *audio_driver = mlt_properties_get( properties, "audio_driver" ); + char *video_driver = mlt_properties_get( properties, "video_driver" ); + char *audio_device = mlt_properties_get( properties, "audio_device" ); + char *output_display = mlt_properties_get( properties, "output_display" ); int progressive = mlt_properties_get_int( properties, "progressive" ) | mlt_properties_get_int( properties, "deinterlace" ); consumer_stop( parent ); @@ -150,12 +153,21 @@ static int consumer_start( mlt_consumer parent ) this->joined = 0; this->last_speed = 1; + if ( output_display != NULL ) + setenv( "DISPLAY", output_display, 1 ); + if ( window_id != NULL ) setenv( "SDL_WINDOWID", window_id, 1 ); + if ( video_driver != NULL ) + setenv( "SDL_VIDEODRIVER", video_driver, 1 ); + if ( audio_driver != NULL ) setenv( "SDL_AUDIODRIVER", audio_driver, 1 ); + if ( audio_device != NULL ) + setenv( "AUDIODEV", audio_device, 1 ); + if ( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE ) < 0 ) { fprintf( stderr, "Failed to initialize SDL: %s\n", SDL_GetError() ); @@ -174,7 +186,7 @@ static int consumer_start( mlt_consumer parent ) mlt_properties_set_int( play, "progressive", progressive ); mlt_properties_set_int( still, "progressive", progressive ); - mlt_properties_pass_list( play, properties, "resize,rescale,width,height,aspect_ratio,display_ratio" ); + mlt_properties_pass_list( play, properties, "resize,rescale,width,height,aspect_ratio,display_ratio,volume" ); mlt_properties_pass_list( still, properties, "resize,rescale,width,height,aspect_ratio,display_ratio" ); mlt_properties_pass_list( play, properties, "deinterlace_method" ); mlt_properties_pass_list( still, properties, "deinterlace_method" );