MLT  7.24.0
mlt_service.h
Go to the documentation of this file.
1 
23 #ifndef MLT_SERVICE_H
24 #define MLT_SERVICE_H
25 
26 #include "mlt_properties.h"
27 #include "mlt_types.h"
28 
58 {
59  struct mlt_properties_s parent;
68  int (*get_frame)(mlt_service self, mlt_frame_ptr frame, int index);
69 
72  void *close_object;
74  void *local;
75  void *child;
76 };
77 
78 #define MLT_SERVICE_PROPERTIES(service) (&(service)->parent)
79 
80 extern int mlt_service_init(mlt_service self, void *child);
81 extern void mlt_service_lock(mlt_service self);
82 extern void mlt_service_unlock(mlt_service self);
84 extern int mlt_service_connect_producer(mlt_service self, mlt_service producer, int index);
85 extern int mlt_service_insert_producer(mlt_service self, mlt_service producer, int index);
86 extern int mlt_service_disconnect_producer(mlt_service self, int index);
89 extern int mlt_service_get_frame(mlt_service self, mlt_frame_ptr frame, int index);
93 extern int mlt_service_attach(mlt_service self, mlt_filter filter);
94 extern int mlt_service_detach(mlt_service self, mlt_filter filter);
95 extern void mlt_service_apply_filters(mlt_service self, mlt_frame frame, int index);
97 extern int mlt_service_move_filter(mlt_service self, int from, int to);
98 extern mlt_filter mlt_service_filter(mlt_service self, int index);
101 extern void mlt_service_close(mlt_service self);
102 
104  mlt_service self, const char *name, void *data, int size, mlt_destructor destructor);
105 extern mlt_cache_item mlt_service_cache_get(mlt_service self, const char *name);
106 extern void mlt_service_cache_set_size(mlt_service self, const char *name, int size);
107 extern int mlt_service_cache_get_size(mlt_service self, const char *name);
109 
110 #endif
Properties class declaration.
Provides forward definitions of all public types.
void(* mlt_destructor)(void *)
pointer to destructor function
Definition: mlt_types.h:269
mlt_service_type
The recognized subclasses of mlt_service.
Definition: mlt_types.h:194
Cache item class.
Definition: mlt_cache.c:50
Filter abstract service class.
Definition: mlt_filter.h:40
Frame class.
Definition: mlt_frame.h:90
Profile class.
Definition: mlt_profile.h:35
Properties class.
Definition: mlt_properties.h:40
void * child
the object of a subclass
Definition: mlt_properties.h:41
Service abstract base class.
Definition: mlt_service.h:58
mlt_filter mlt_service_filter(mlt_service self, int index)
Retrieve an attached filter.
Definition: mlt_service.c:808
int mlt_service_get_frame(mlt_service self, mlt_frame_ptr frame, int index)
Obtain a frame.
Definition: mlt_service.c:549
int mlt_service_cache_get_size(mlt_service self, const char *name)
Get the current maximum size of the named cache.
Definition: mlt_service.c:995
int(* get_frame)(mlt_service self, mlt_frame_ptr frame, int index)
Get a frame of data (virtual function).
Definition: mlt_service.h:68
int mlt_service_insert_producer(mlt_service self, mlt_service producer, int index)
Insert a producer connected to the service.
Definition: mlt_service.c:253
void mlt_service_unlock(mlt_service self)
Release a mutual exclusion lock on this service.
Definition: mlt_service.c:124
mlt_service mlt_service_get_producer(mlt_service self)
Get the first connected producer.
Definition: mlt_service.c:450
mlt_properties mlt_service_properties(mlt_service self)
Return the properties object.
Definition: mlt_service.c:491
int mlt_service_attach(mlt_service self, mlt_filter filter)
Attach a filter.
Definition: mlt_service.c:664
void mlt_service_cache_purge(mlt_service self)
Release a service's cache items.
Definition: mlt_service.c:880
void mlt_service_set_profile(mlt_service self, mlt_profile profile)
Set the profile for a service.
Definition: mlt_service.c:838
mlt_service mlt_service_consumer(mlt_service self)
Obtain the consumer a service is connected to.
Definition: mlt_service.c:393
int mlt_service_detach(mlt_service self, mlt_filter filter)
Detach a filter.
Definition: mlt_service.c:718
void mlt_service_cache_put(mlt_service self, const char *name, void *data, int size, mlt_destructor destructor)
Put an object into a service's cache.
Definition: mlt_service.c:941
void * child
the object of a subclass
Definition: mlt_service.h:75
void mlt_service_cache_set_size(mlt_service self, const char *name, int size)
Set the number of items to cache for the named cache.
Definition: mlt_service.c:980
void mlt_service_close(mlt_service self)
Destroy a service.
Definition: mlt_service.c:849
int mlt_service_move_filter(mlt_service self, int from, int to)
Reorder the attached filters.
Definition: mlt_service.c:769
void * local
instance object
Definition: mlt_service.h:74
mlt_service mlt_service_producer(mlt_service self)
Obtain the producer a service is connected to.
Definition: mlt_service.c:412
mlt_destructor close
the destructor virtual function
Definition: mlt_service.h:71
int mlt_service_filter_count(mlt_service self)
Get the number of filters attached.
Definition: mlt_service.c:750
int mlt_service_disconnect_producer(mlt_service self, int index)
Remove the N-th producer.
Definition: mlt_service.c:319
mlt_cache_item mlt_service_cache_get(mlt_service self, const char *name)
Get an object from a service's cache.
Definition: mlt_service.c:960
int mlt_service_connect_producer(mlt_service self, mlt_service producer, int index)
Connect a producer to the service.
Definition: mlt_service.c:181
void * close_object
the object supplied to the close virtual function
Definition: mlt_service.h:72
mlt_service_type mlt_service_identify(mlt_service self)
Identify the subclass of the service.
Definition: mlt_service.c:137
mlt_profile mlt_service_profile(mlt_service self)
Retrieve the profile.
Definition: mlt_service.c:826
void mlt_service_lock(mlt_service self)
Acquire a mutual exclusion lock on this service.
Definition: mlt_service.c:112
void mlt_service_apply_filters(mlt_service self, mlt_frame frame, int index)
Recursively apply attached filters.
Definition: mlt_service.c:504
int mlt_service_disconnect_all_producers(mlt_service self)
Remove the all the attached producers.
Definition: mlt_service.c:349
int mlt_service_init(mlt_service self, void *child)
Initialize a service.
Definition: mlt_service.c:75
struct mlt_properties_s parent
A service extends properties.
Definition: mlt_service.h:59