X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fsdl%2Fproducer_sdl_image.c;h=edcc1121817f84434971fdc3258762adc7f9b3bc;hb=7ecd47eeebf87332a4892d167baff959f0f6a11a;hp=576ce6fee5ff52c669e4db238815ed20a3297996;hpb=c74f26c0ca3ddd0eba429c18ffee328cf193dd8a;p=melted diff --git a/src/modules/sdl/producer_sdl_image.c b/src/modules/sdl/producer_sdl_image.c index 576ce6f..edcc112 100644 --- a/src/modules/sdl/producer_sdl_image.c +++ b/src/modules/sdl/producer_sdl_image.c @@ -3,22 +3,22 @@ * Copyright (C) 2005 Visual Media FX * Author: Charles Yates * - * This program 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 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 "producer_sdl_image.h" +#include #include #include @@ -87,7 +87,7 @@ static int producer_get_image( mlt_frame frame, uint8_t **image, mlt_image_forma return 0; } -static int filter_files( struct dirent *de ) +static int filter_files( const struct dirent *de ) { return de->d_name[ 0 ] != '.'; } @@ -174,7 +174,7 @@ static SDL_Surface *load_image( mlt_producer producer ) static int producer_get_frame( mlt_producer producer, mlt_frame_ptr frame, int index ) { // Generate a frame - *frame = mlt_frame_init( ); + *frame = mlt_frame_init( MLT_PRODUCER_SERVICE( producer ) ); if ( *frame != NULL ) { @@ -217,7 +217,7 @@ static void producer_close( mlt_producer producer ) free( producer ); } -mlt_producer producer_sdl_image_init( char *file ) +mlt_producer producer_sdl_image_init( mlt_profile profile, mlt_service_type type, const char *id, char *file ) { mlt_producer producer = calloc( 1, sizeof( struct mlt_producer_s ) ); if ( producer != NULL && mlt_producer_init( producer, NULL ) == 0 ) @@ -236,6 +236,17 @@ mlt_producer producer_sdl_image_init( char *file ) mlt_properties_set_int( properties, "ttl", 25 ); mlt_properties_set_int( properties, "progressive", 1 ); + // Validate the resource + SDL_Surface *surface = NULL; + if ( file && ( surface = load_image( producer ) ) ) + { + SDL_FreeSurface( surface ); + } + else + { + producer_close( producer ); + producer = NULL; + } return producer; } free( producer );