X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fcore%2Ffilter_watermark.c;h=ebddb32708829717cb269c4c0043cfb26254ff59;hb=f0a20dae7fddfce0b3992bb6942145a3640315ba;hp=1b343c392afd43ce94a5fb2e56bb435034ce3ea5;hpb=10e377d51ca937d99a68723dd53026953a6a5c6d;p=melted diff --git a/src/modules/core/filter_watermark.c b/src/modules/core/filter_watermark.c index 1b343c3..ebddb32 100644 --- a/src/modules/core/filter_watermark.c +++ b/src/modules/core/filter_watermark.c @@ -38,6 +38,7 @@ static int filter_get_image( mlt_frame this, uint8_t **image, mlt_image_format * mlt_properties properties = mlt_filter_properties( filter ); mlt_producer producer = mlt_properties_get_data( properties, "producer", NULL ); mlt_transition composite = mlt_properties_get_data( properties, "composite", NULL ); + char *name = mlt_properties_get( properties, "_unique_id" ); if ( composite == NULL ) { @@ -68,7 +69,10 @@ static int filter_get_image( mlt_frame this, uint8_t **image, mlt_image_format * { mlt_service service = mlt_producer_service( producer ); mlt_frame b_frame = NULL; + mlt_properties frame_properties = mlt_frame_properties( this ); + mlt_position position = mlt_properties_get_position( frame_properties, name ); + mlt_producer_seek( producer, position ); if ( mlt_service_get_frame( service, &b_frame, 0 ) == 0 ) mlt_transition_process( composite, this, b_frame ); @@ -89,6 +93,15 @@ static int filter_get_image( mlt_frame this, uint8_t **image, mlt_image_format * static mlt_frame filter_process( mlt_filter this, mlt_frame frame ) { + // Get the properties of the frame + mlt_properties properties = mlt_frame_properties( frame ); + + // Get a unique name to store the frame position + char *name = mlt_properties_get( mlt_filter_properties( this ), "_unique_id" ); + + // Assign the current position to the name + mlt_properties_set_position( properties, name, mlt_frame_get_position( frame ) ); + // Push the filter on to the stack mlt_frame_push_service( frame, this );