mlt 0.7.6

mlt_frame.h

Go to the documentation of this file.
00001 
00024 #ifndef _MLT_FRAME_H_
00025 #define _MLT_FRAME_H_
00026 
00027 #include "mlt_properties.h"
00028 #include "mlt_deque.h"
00029 #include "mlt_service.h"
00030 
00035 typedef int ( *mlt_get_image )( mlt_frame self, uint8_t **buffer, mlt_image_format *format, int *width, int *height, int writable );
00036 
00041 typedef int ( *mlt_get_audio )( mlt_frame self, void **buffer, mlt_audio_format *format, int *frequency, int *channels, int *samples );
00042 
00072 struct mlt_frame_s
00073 {
00074     struct mlt_properties_s parent; 
00080     uint8_t * ( *get_alpha_mask )( mlt_frame self );
00081 
00089     int ( *convert_image )( mlt_frame self, uint8_t **image, mlt_image_format *input, mlt_image_format output );
00090 
00098     int ( *convert_audio )( mlt_frame self, void **audio, mlt_audio_format *input, mlt_audio_format output );
00099 
00100     mlt_deque stack_image;   
00101     mlt_deque stack_audio;   
00102     mlt_deque stack_service; 
00103     int is_processing;       
00104 };
00105 
00106 #define MLT_FRAME_PROPERTIES( frame )       ( &( frame )->parent )
00107 #define MLT_FRAME_SERVICE_STACK( frame )    ( ( frame )->stack_service )
00108 #define MLT_FRAME_IMAGE_STACK( frame )      ( ( frame )->stack_image )
00109 #define MLT_FRAME_AUDIO_STACK( frame )      ( ( frame )->stack_audio )
00110 
00111 extern mlt_frame mlt_frame_init( mlt_service service );
00112 extern mlt_properties mlt_frame_properties( mlt_frame self );
00113 extern int mlt_frame_is_test_card( mlt_frame self );
00114 extern int mlt_frame_is_test_audio( mlt_frame self );
00115 extern double mlt_frame_get_aspect_ratio( mlt_frame self );
00116 extern int mlt_frame_set_aspect_ratio( mlt_frame self, double value );
00117 extern mlt_position mlt_frame_get_position( mlt_frame self );
00118 extern int mlt_frame_set_position( mlt_frame self, mlt_position value );
00119 extern int mlt_frame_set_image( mlt_frame self, uint8_t *image, int size, mlt_destructor destroy );
00120 extern int mlt_frame_set_alpha( mlt_frame self, uint8_t *alpha, int size, mlt_destructor destroy );
00121 extern void mlt_frame_replace_image( mlt_frame self, uint8_t *image, mlt_image_format format, int width, int height );
00122 extern int mlt_frame_get_image( mlt_frame self, uint8_t **buffer, mlt_image_format *format, int *width, int *height, int writable );
00123 extern uint8_t *mlt_frame_get_alpha_mask( mlt_frame self );
00124 extern int mlt_frame_get_audio( mlt_frame self, void **buffer, mlt_audio_format *format, int *frequency, int *channels, int *samples );
00125 extern int mlt_frame_set_audio( mlt_frame self, void *buffer, mlt_audio_format, int size, mlt_destructor );
00126 extern unsigned char *mlt_frame_get_waveform( mlt_frame self, int w, int h );
00127 extern int mlt_frame_push_get_image( mlt_frame self, mlt_get_image get_image );
00128 extern mlt_get_image mlt_frame_pop_get_image( mlt_frame self );
00129 extern int mlt_frame_push_frame( mlt_frame self, mlt_frame that );
00130 extern mlt_frame mlt_frame_pop_frame( mlt_frame self );
00131 extern int mlt_frame_push_service( mlt_frame self, void *that );
00132 extern void *mlt_frame_pop_service( mlt_frame self );
00133 extern int mlt_frame_push_service_int( mlt_frame self, int that );
00134 extern int mlt_frame_pop_service_int( mlt_frame self );
00135 extern int mlt_frame_push_audio( mlt_frame self, void *that );
00136 extern void *mlt_frame_pop_audio( mlt_frame self );
00137 extern mlt_deque mlt_frame_service_stack( mlt_frame self );
00138 extern mlt_producer mlt_frame_get_original_producer( mlt_frame self );
00139 extern void mlt_frame_close( mlt_frame self );
00140 extern mlt_properties mlt_frame_unique_properties( mlt_frame self, mlt_service service );
00141 extern mlt_frame mlt_frame_clone( mlt_frame self, int is_deep );
00142 
00143 /* convenience functions */
00144 extern int mlt_sample_calculator( float fps, int frequency, int64_t position );
00145 extern int64_t mlt_sample_calculator_to_now( float fps, int frequency, int64_t position );
00146 extern const char * mlt_image_format_name( mlt_image_format format );
00147 extern int mlt_image_format_size( mlt_image_format format, int width, int height, int *bpp );
00148 extern const char * mlt_audio_format_name( mlt_audio_format format );
00149 extern int mlt_audio_format_size( mlt_audio_format format, int samples, int channels );
00150 extern void mlt_frame_write_ppm( mlt_frame frame );
00151 
00153 #define RGB2YUV_601_SCALED(r, g, b, y, u, v)\
00154   y = ((263*r + 516*g + 100*b) >> 10) + 16;\
00155   u = ((-152*r - 300*g + 450*b) >> 10) + 128;\
00156   v = ((450*r - 377*g - 73*b) >> 10) + 128;
00157 
00158 #endif
TWiki Appliance - Powered by TurnKey Linux