|
mlt 0.7.6
|
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
1.7.3