X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fcore%2Ftransition_luma.c;fp=src%2Fmodules%2Fcore%2Ftransition_luma.c;h=258eefad0d587da9fe8fbf3b5ceda20ed4ddfd42;hb=48108cd68c26e70ac3507a10472c7c83722101f7;hp=55e9e3efe72a5e8198dbcd7442a2a527d24064b7;hpb=cd230b098f1ebeec1f08049b0112779f01f97daa;p=melted diff --git a/src/modules/core/transition_luma.c b/src/modules/core/transition_luma.c index 55e9e3e..258eefa 100644 --- a/src/modules/core/transition_luma.c +++ b/src/modules/core/transition_luma.c @@ -378,6 +378,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f int luma_width = mlt_properties_get_int( properties, "width" ); int luma_height = mlt_properties_get_int( properties, "height" ); uint16_t *luma_bitmap = mlt_properties_get_data( properties, "bitmap", NULL ); + char *current_resource = mlt_properties_get( properties, "_resource" ); // If the filename property changed, reload the map char *resource = mlt_properties_get( properties, "resource" ); @@ -389,7 +390,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f luma_height = mlt_properties_get_int( a_props, "height" ); } - if ( luma_bitmap == NULL && resource != NULL ) + if ( resource != current_resource ) { char temp[ 512 ]; char *extension = strrchr( resource, '.' ); @@ -421,9 +422,16 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f // Set the transition properties mlt_properties_set_int( properties, "width", luma_width ); mlt_properties_set_int( properties, "height", luma_height ); + mlt_properties_set( properties, "_resource", resource ); mlt_properties_set_data( properties, "bitmap", luma_bitmap, luma_width * luma_height * 2, mlt_pool_release, NULL ); } } + else if (!*resource) + { + luma_bitmap = NULL; + mlt_properties_set( properties, "_resource", NULL ); + mlt_properties_set_data( properties, "bitmap", luma_bitmap, 0, mlt_pool_release, NULL ); + } else { // Get the factory producer service @@ -468,6 +476,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f // Set the transition properties mlt_properties_set_int( properties, "width", luma_width ); mlt_properties_set_int( properties, "height", luma_height ); + mlt_properties_set( properties, "_resource", resource); mlt_properties_set_data( properties, "bitmap", luma_bitmap, luma_width * luma_height * 2, mlt_pool_release, NULL ); // Cleanup the luma frame