19 #ifndef GSTREAMER_BUS_H_
20 #define GSTREAMER_BUS_H_
22 #include <core/property.h>
26 #include <boost/flyweight.hpp>
46 type(GST_MESSAGE_TYPE(msg)),
47 source(GST_MESSAGE_SRC_NAME(msg)),
52 case GST_MESSAGE_UNKNOWN:
53 throw std::runtime_error(
"Cannot construct message for type unknown");
57 case GST_MESSAGE_ERROR:
59 gst_message_parse_error(
70 case GST_MESSAGE_WARNING:
71 gst_message_parse_warning(
82 case GST_MESSAGE_INFO:
83 gst_message_parse_info(
95 gst_message_parse_tag(
103 case GST_MESSAGE_BUFFERING:
104 gst_message_parse_buffering(
108 case GST_MESSAGE_STATE_CHANGED:
109 gst_message_parse_state_changed(
115 case GST_MESSAGE_STATE_DIRTY:
117 case GST_MESSAGE_STEP_DONE:
118 gst_message_parse_step_done(
129 case GST_MESSAGE_CLOCK_PROVIDE:
130 gst_message_parse_clock_provide(
135 case GST_MESSAGE_CLOCK_LOST:
136 gst_message_parse_clock_lost(
140 case GST_MESSAGE_NEW_CLOCK:
141 gst_message_parse_new_clock(
145 case GST_MESSAGE_STRUCTURE_CHANGE:
147 case GST_MESSAGE_STREAM_STATUS:
149 case GST_MESSAGE_APPLICATION:
151 case GST_MESSAGE_ELEMENT:
153 case GST_MESSAGE_SEGMENT_START:
154 gst_message_parse_segment_start(
159 case GST_MESSAGE_SEGMENT_DONE:
160 gst_message_parse_segment_done(
165 case GST_MESSAGE_DURATION_CHANGED:
167 case GST_MESSAGE_LATENCY:
169 case GST_MESSAGE_ASYNC_START:
171 case GST_MESSAGE_ASYNC_DONE:
172 gst_message_parse_async_done(
176 case GST_MESSAGE_REQUEST_STATE:
178 case GST_MESSAGE_STEP_START:
179 gst_message_parse_step_start(
188 case GST_MESSAGE_QOS:
189 gst_message_parse_qos(
197 case GST_MESSAGE_PROGRESS:
199 case GST_MESSAGE_TOC:
201 case GST_MESSAGE_RESET_TIME:
203 case GST_MESSAGE_STREAM_START:
205 case GST_MESSAGE_NEED_CONTEXT:
207 case GST_MESSAGE_HAVE_CONTEXT:
209 case GST_MESSAGE_ANY:
312 auto thiz =
static_cast<Bus*
>(data);
314 thiz->on_new_message(message);
322 throw std::runtime_error(
"Cannot create Bus instance if underlying instance is NULL.");
324 gst_bus_set_sync_handler(
333 gst_object_unref(
bus);
341 #endif // GSTREAMER_BUS_H_
core::Signal< Message > on_new_message
struct gstreamer::Bus::Message::Detail::@1 buffering_stats
struct gstreamer::Bus::Message::Detail::@4 clock_provide
static GstBusSyncReply sync_handler(GstBus *bus, GstMessage *msg, gpointer data)
struct gstreamer::Bus::Message::Detail::@8 segment_done
struct gstreamer::Bus::Message::Detail::@5 clock_lost
union gstreamer::Bus::Message::Detail detail
std::function< void()> cleanup
struct gstreamer::Bus::Message::Detail::@0 buffering
struct gstreamer::Bus::Message::Detail::Tag tag
boost::flyweight< std::string > source
struct gstreamer::Bus::Message::Detail::@10 qos
struct gstreamer::Bus::Message::Detail::@3 step_done
struct gstreamer::Bus::Message::Detail::ErrorWarningInfo error_warning_info
struct gstreamer::Bus::Message::Detail::@6 clock_new
GstClockTime running_time
struct gstreamer::Bus::Message::Detail::@2 step_start
struct gstreamer::Bus::Message::Detail::@7 segment_start
struct gstreamer::Bus::Message::Detail::@9 async_done
GstBufferingMode buffering_mode
struct gstreamer::Bus::Message::Detail::StateChanged state_changed