22#ifndef GSTREAMER_BUS_H
23#define GSTREAMER_BUS_H
47 type(GST_MESSAGE_TYPE(msg)),
48 source(GST_MESSAGE_SRC_NAME(msg)),
53 case GST_MESSAGE_UNKNOWN:
54 throw std::runtime_error(
"Cannot construct message for type unknown");
56 case GST_MESSAGE_ERROR:
58 gst_message_parse_error(
69 case GST_MESSAGE_WARNING:
70 gst_message_parse_warning(
80 case GST_MESSAGE_INFO:
81 gst_message_parse_info(
92 gst_message_parse_tag(
100 case GST_MESSAGE_BUFFERING:
101 gst_message_parse_buffering(
105 case GST_MESSAGE_STATE_CHANGED:
106 gst_message_parse_state_changed(
112 case GST_MESSAGE_STEP_DONE:
113 gst_message_parse_step_done(
124 case GST_MESSAGE_CLOCK_PROVIDE:
125 gst_message_parse_clock_provide(
130 case GST_MESSAGE_CLOCK_LOST:
131 gst_message_parse_clock_lost(
135 case GST_MESSAGE_NEW_CLOCK:
136 gst_message_parse_new_clock(
140 case GST_MESSAGE_SEGMENT_START:
141 gst_message_parse_segment_start(
146 case GST_MESSAGE_SEGMENT_DONE:
147 gst_message_parse_segment_done(
152 case GST_MESSAGE_ASYNC_DONE:
153 gst_message_parse_async_done(
157 case GST_MESSAGE_STEP_START:
158 gst_message_parse_step_start(
167 case GST_MESSAGE_QOS:
168 gst_message_parse_qos(
283 auto thiz =
static_cast<Bus*
>(data);
285 thiz->notifyNewMessage(message);
301 gst_object_unref(
bus);
307 throw std::runtime_error(
"Cannot create Bus instance if underlying instance is NULL.");
std::function< void(const Message &)> MessageCallback
void set_bus(GstBus *bus)
int onNewMessage(const MessageCallback &cb)
QHash< int, MessageCallback > m_onNewMessage
void notifyNewMessage(const Message &msg) const
void unsubscribeFromNewMessage(int id)
static gboolean bus_watch_handler(GstBus *bus, GstMessage *msg, gpointer data)
union gstreamer::Bus::Message::Detail detail
std::function< void()> cleanup
struct gstreamer::Bus::Message::Detail::@8 segment_done
struct gstreamer::Bus::Message::Detail::@3 step_done
struct gstreamer::Bus::Message::Detail::ErrorWarningInfo error_warning_info
struct gstreamer::Bus::Message::Detail::@9 async_done
struct gstreamer::Bus::Message::Detail::@5 clock_lost
struct gstreamer::Bus::Message::Detail::@4 clock_provide
struct gstreamer::Bus::Message::Detail::@2 step_start
struct gstreamer::Bus::Message::Detail::@10 qos
struct gstreamer::Bus::Message::Detail::@0 buffering
struct gstreamer::Bus::Message::Detail::@7 segment_start
GstBufferingMode buffering_mode
struct gstreamer::Bus::Message::Detail::Tag tag
struct gstreamer::Bus::Message::Detail::StateChanged state_changed
struct gstreamer::Bus::Message::Detail::@1 buffering_stats
GstClockTime running_time
struct gstreamer::Bus::Message::Detail::@6 clock_new