GstBus: Message+Clock
GstObject | GstBus | |
成员函数 |
override Gobject的一些:
gobject_class->set_property = gst_object_set_property;
gobject_class->dispatch_properties_changed
gobject_class->dispose = gst_object_dispose;
|
gobject_class->dispose = gst_bus_dispose; |
Property | "name" | |
Signals |
"parent-set",it's default handler is NULL? "parent-unset",it's default handler is NULL? "object-saved",it's default handler is NULL? "deep-notify",it's default handler is NULL? |
"sync-message",it's default handler is NULL? "message",it's default handler is NULL? |
User register signal handler | user可以自己注册上面几个信号的回调: user handler |
user可以自己注册上面几个信号的回调: user handler
gst_bus_poll()注册了一个回调poll_func for "message" |
何时emit signal? |
user 调用GstObject的APIs: gst_object_set_parent() gst_object_unparent() gst_object_save_thyself() |
gst_bus_post 等 |
Quark data | - | - |
GstMiniObject 是简化的GObject: 不提供属性;不提供signal.
下面这些都是轻量级的对象(Lightweight objects):
|
`GstMiniObject
|
+GstQuery
|
+GstMessage
|
+GstBuffer
|
+GstEvent
|
`GstBufferList
GstMiniObject | GstMessage | |
成员函数 |
mo_class->copy = gst_mini_object_copy_default; |
override 父类的Methods:
klass->mini_object_class.copy = (GstMiniObjectCopyFunction) _gst_message_copy; |
Quark data | - | - |
GstMiniObject | GstMessage | |
成员函数 |
mo_class->copy = gst_mini_object_copy_default; |
override 父类的Methods:
klass->mini_object_class.copy = (GstMiniObjectCopyFunction) _gst_message_copy; |
Quark data | - | - |
typedef enum { GST_MESSAGE_UNKNOWN = 0, GST_MESSAGE_EOS = (1 << 0), GST_MESSAGE_ERROR = (1 << 1), GST_MESSAGE_WARNING = (1 << 2), GST_MESSAGE_INFO = (1 << 3), GST_MESSAGE_TAG = (1 << 4), GST_MESSAGE_BUFFERING = (1 << 5), GST_MESSAGE_STATE_CHANGED = (1 << 6), GST_MESSAGE_STATE_DIRTY = (1 << 7), GST_MESSAGE_STEP_DONE = (1 << 8), GST_MESSAGE_CLOCK_PROVIDE = (1 << 9), GST_MESSAGE_CLOCK_LOST = (1 << 10), GST_MESSAGE_NEW_CLOCK = (1 << 11), GST_MESSAGE_STRUCTURE_CHANGE = (1 << 12), GST_MESSAGE_STREAM_STATUS = (1 << 13), GST_MESSAGE_APPLICATION = (1 << 14), GST_MESSAGE_ELEMENT = (1 << 15), GST_MESSAGE_SEGMENT_START = (1 << 16), GST_MESSAGE_SEGMENT_DONE = (1 << 17), GST_MESSAGE_DURATION = (1 << 18), GST_MESSAGE_LATENCY = (1 << 19), GST_MESSAGE_ASYNC_START = (1 << 20), GST_MESSAGE_ASYNC_DONE = (1 << 21), GST_MESSAGE_REQUEST_STATE = (1 << 22), GST_MESSAGE_STEP_START = (1 << 23), GST_MESSAGE_QOS = (1 << 24), GST_MESSAGE_PROGRESS = (1 << 25), GST_MESSAGE_ANY = ~0 } GstMessageType;
typedef enum { GST_QUERY_NONE = 0, GST_QUERY_POSITION, GST_QUERY_DURATION, GST_QUERY_LATENCY, GST_QUERY_JITTER, /* not in draft-query, necessary? */ GST_QUERY_RATE, GST_QUERY_SEEKING, GST_QUERY_SEGMENT, GST_QUERY_CONVERT, GST_QUERY_FORMATS, GST_QUERY_BUFFERING, GST_QUERY_CUSTOM, GST_QUERY_URI } GstQueryType;
typedef enum { GST_BUFFER_FLAG_READONLY = GST_MINI_OBJECT_FLAG_READONLY, GST_BUFFER_FLAG_MEDIA4 = GST_MINI_OBJECT_FLAG_RESERVED1, GST_BUFFER_FLAG_PREROLL = (GST_MINI_OBJECT_FLAG_LAST << 0), GST_BUFFER_FLAG_DISCONT = (GST_MINI_OBJECT_FLAG_LAST << 1), GST_BUFFER_FLAG_IN_CAPS = (GST_MINI_OBJECT_FLAG_LAST << 2), GST_BUFFER_FLAG_GAP = (GST_MINI_OBJECT_FLAG_LAST << 3), GST_BUFFER_FLAG_DELTA_UNIT = (GST_MINI_OBJECT_FLAG_LAST << 4), GST_BUFFER_FLAG_MEDIA1 = (GST_MINI_OBJECT_FLAG_LAST << 5), GST_BUFFER_FLAG_MEDIA2 = (GST_MINI_OBJECT_FLAG_LAST << 6), GST_BUFFER_FLAG_MEDIA3 = (GST_MINI_OBJECT_FLAG_LAST << 7), GST_BUFFER_FLAG_LAST = (GST_MINI_OBJECT_FLAG_LAST << 8) } GstBufferFlag;
typedef enum { GST_EVENT_TYPE_UPSTREAM = 1 << 0, GST_EVENT_TYPE_DOWNSTREAM = 1 << 1, GST_EVENT_TYPE_SERIALIZED = 1 << 2 } GstEventTypeFlags;
typedef enum { GST_EVENT_UNKNOWN = GST_EVENT_MAKE_TYPE (0, 0), /* bidirectional events */ GST_EVENT_FLUSH_START = GST_EVENT_MAKE_TYPE (1, FLAG(BOTH)), GST_EVENT_FLUSH_STOP = GST_EVENT_MAKE_TYPE (2, FLAG(BOTH) | FLAG(SERIALIZED)), /* downstream serialized events */ GST_EVENT_EOS = GST_EVENT_MAKE_TYPE (5, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)), GST_EVENT_NEWSEGMENT = GST_EVENT_MAKE_TYPE (6, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)), GST_EVENT_TAG = GST_EVENT_MAKE_TYPE (7, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)), GST_EVENT_BUFFERSIZE = GST_EVENT_MAKE_TYPE (8, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)), GST_EVENT_SINK_MESSAGE = GST_EVENT_MAKE_TYPE (9, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)), /* upstream events */ GST_EVENT_QOS = GST_EVENT_MAKE_TYPE (15, FLAG(UPSTREAM)), GST_EVENT_SEEK = GST_EVENT_MAKE_TYPE (16, FLAG(UPSTREAM)), GST_EVENT_NAVIGATION = GST_EVENT_MAKE_TYPE (17, FLAG(UPSTREAM)), GST_EVENT_LATENCY = GST_EVENT_MAKE_TYPE (18, FLAG(UPSTREAM)), GST_EVENT_STEP = GST_EVENT_MAKE_TYPE (19, FLAG(UPSTREAM)), /* custom events start here */ GST_EVENT_CUSTOM_UPSTREAM = GST_EVENT_MAKE_TYPE (32, FLAG(UPSTREAM)), GST_EVENT_CUSTOM_DOWNSTREAM = GST_EVENT_MAKE_TYPE (32, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)), GST_EVENT_CUSTOM_DOWNSTREAM_OOB = GST_EVENT_MAKE_TYPE (32, FLAG(DOWNSTREAM)), GST_EVENT_CUSTOM_BOTH = GST_EVENT_MAKE_TYPE (32, FLAG(BOTH) | FLAG(SERIALIZED)), GST_EVENT_CUSTOM_BOTH_OOB = GST_EVENT_MAKE_TYPE (32, FLAG(BOTH)) } GstEventType;
2023年4月23日 19:27
crediblebh