#define _MLT_CONSUMER_H_
#include "mlt_service.h"
+#include <pthread.h>
/** The interface definition for all consumers.
*/
void ( *close )( mlt_consumer );
// Private data
- void *private;
+ void *local;
void *child;
+
+ int real_time;
+ int ahead;
+ mlt_image_format format;
+ mlt_deque queue;
+ pthread_t ahead_thread;
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+ pthread_mutex_t put_mutex;
+ pthread_cond_t put_cond;
+ mlt_frame put;
+ int put_active;
};
/** Public final methods
*/
-extern int mlt_consumer_init( mlt_consumer this, void *child );
-extern mlt_service mlt_consumer_service( mlt_consumer this );
-extern mlt_properties mlt_consumer_properties( mlt_consumer this );
-extern int mlt_consumer_connect( mlt_consumer this, mlt_service producer );
-extern int mlt_consumer_start( mlt_consumer this );
-extern mlt_frame mlt_consumer_get_frame( mlt_consumer this );
-extern int mlt_consumer_stop( mlt_consumer this );
-extern int mlt_consumer_is_stopped( mlt_consumer this );
+#define MLT_CONSUMER_SERVICE( consumer ) ( &( consumer )->parent )
+#define MLT_CONSUMER_PROPERTIES( consumer ) MLT_SERVICE_PROPERTIES( MLT_CONSUMER_SERVICE( consumer ) )
+
+extern int mlt_consumer_init( mlt_consumer self, void *child );
+extern mlt_consumer mlt_consumer_new( );
+extern mlt_service mlt_consumer_service( mlt_consumer self );
+extern mlt_properties mlt_consumer_properties( mlt_consumer self );
+extern int mlt_consumer_connect( mlt_consumer self, mlt_service producer );
+extern int mlt_consumer_start( mlt_consumer self );
+extern void mlt_consumer_purge( mlt_consumer self );
+extern int mlt_consumer_put_frame( mlt_consumer self, mlt_frame frame );
+extern mlt_frame mlt_consumer_get_frame( mlt_consumer self );
+extern mlt_frame mlt_consumer_rt_frame( mlt_consumer self );
+extern int mlt_consumer_stop( mlt_consumer self );
+extern int mlt_consumer_is_stopped( mlt_consumer self );
+extern void mlt_consumer_stopped( mlt_consumer self );
extern void mlt_consumer_close( mlt_consumer );
+extern int mlt_consumer_profile( mlt_properties properties, char *profile );
#endif