X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltPushConsumer.cpp;h=041687f111cfc8a6dbe95e152051277b5ea179e9;hb=9cb7526750aa11c203cae69c618070500519f0c4;hp=5c70777c6c28928269f4d0fc992bb0033a56e583;hpb=061d4b3c81f6311ec0483dbbfd50a4c5eddf479f;p=melted diff --git a/mlt++/src/MltPushConsumer.cpp b/mlt++/src/MltPushConsumer.cpp index 5c70777..041687f 100644 --- a/mlt++/src/MltPushConsumer.cpp +++ b/mlt++/src/MltPushConsumer.cpp @@ -39,8 +39,8 @@ static void filter_destructor( void *arg ) delete filter; } -PushConsumer::PushConsumer( char *id , char *service ) : - Consumer( id, service ), +PushConsumer::PushConsumer( Profile& profile, char *id , char *service ) : + Consumer( profile, id, service ), m_private( new PushPrivate( ) ) { if ( is_valid( ) ) @@ -53,20 +53,20 @@ PushConsumer::PushConsumer( char *id , char *service ) : // We might need resize and rescale filters so we'll create them now // NB: Try to use the best rescaler available here - Filter *resize = new Filter( "resize" ); - Filter *rescale = new Filter( "mcrescale" ); + Filter *resize = new Filter( profile, "resize" ); + Filter *rescale = new Filter( profile, "mcrescale" ); if ( !rescale->is_valid( ) ) { delete rescale; - rescale = new Filter( "gtkrescale" ); + rescale = new Filter( profile, "gtkrescale" ); } if ( !rescale->is_valid( ) ) { delete rescale; - rescale = new Filter( "rescale" ); + rescale = new Filter( profile, "rescale" ); } - Filter *convert = new Filter( "avcolour_space" ); + Filter *convert = new Filter( profile, "avcolour_space" ); set( "filter_convert", convert, 0, filter_destructor ); set( "filter_resize", resize, 0, filter_destructor ); @@ -136,10 +136,11 @@ int PushConsumer::drain( ) // Convenience function - generates a frame with an image of a given size Frame *PushConsumer::construct( int size ) { - mlt_frame f = mlt_frame_init( ); + mlt_frame f = mlt_frame_init( get_service() ); Frame *frame = new Frame( f ); uint8_t *buffer = ( uint8_t * )mlt_pool_alloc( size ); frame->set( "image", buffer, size, mlt_pool_release ); + mlt_frame_close( f ); return frame; }