X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltFrame.cpp;h=546220d968d607218b22288b80ef208d4d92bd41;hb=6468e1ff9f9e9aeed0aa9eadb0a0491cd994b979;hp=af0302b3d226edb20bcab9f22d8e2db4df05f416;hpb=01c1d44e8df201c3061cf20addf5421d21d8bcb0;p=melted diff --git a/mlt++/src/MltFrame.cpp b/mlt++/src/MltFrame.cpp index af0302b..546220d 100644 --- a/mlt++/src/MltFrame.cpp +++ b/mlt++/src/MltFrame.cpp @@ -19,8 +19,31 @@ */ #include "MltFrame.h" +#include "MltProducer.h" using namespace Mlt; +Frame::Frame( mlt_frame frame ) : + instance( frame ) +{ + inc_ref( ); +} + +Frame::Frame( Frame &frame ) : + instance( frame.get_frame( ) ) +{ + inc_ref( ); +} + +Frame::~Frame( ) +{ + mlt_frame_close( instance ); +} + +mlt_frame Frame::get_frame( ) +{ + return instance; +} + mlt_properties Frame::get_properties( ) { return mlt_frame_properties( get_frame( ) ); @@ -29,7 +52,22 @@ mlt_properties Frame::get_properties( ) uint8_t *Frame::get_image( mlt_image_format &format, int &w, int &h, int writable ) { uint8_t *image = NULL; + if ( mlt_properties_get_int( get_properties( ), "consumer_aspect_ratio" ) == 0 ) + mlt_properties_set_int( get_properties( ), "consumer_aspect_ratio", 1 ); mlt_frame_get_image( get_frame( ), &image, &format, &w, &h, writable ); + set( "format", format ); + set( "writable", writable ); + return image; +} + +unsigned char *Frame::fetch_image( mlt_image_format f, int w, int h, int writable ) +{ + uint8_t *image = NULL; + if ( mlt_properties_get_int( get_properties( ), "consumer_aspect_ratio" ) == 0 ) + mlt_properties_set_int( get_properties( ), "consumer_aspect_ratio", 1 ); + mlt_frame_get_image( get_frame( ), &image, &f, &w, &h, writable ); + set( "format", f ); + set( "writable", writable ); return image; } @@ -40,27 +78,12 @@ int16_t *Frame::get_audio( mlt_audio_format &format, int &frequency, int &channe return audio; } -mlt_frame FrameInstance::get_frame( ) +unsigned char *Frame::get_waveform( int w, int h ) { - return instance; + return mlt_frame_get_waveform( get_frame( ), w, h ); } -FrameInstance::FrameInstance( mlt_frame frame ) : - destroy( true ), - instance( frame ) +Producer *Frame::get_original_producer( ) { + return new Producer( mlt_frame_get_original_producer( get_frame( ) ) ); } - -FrameInstance::FrameInstance( Frame &frame ) : - destroy( false ), - instance( frame.get_frame( ) ) -{ -} - -FrameInstance::~FrameInstance( ) -{ - if ( destroy ) - mlt_frame_close( instance ); -} - -