00001
00002
00003 #ifndef _GSTMM_MESSAGE_H
00004 #define _GSTMM_MESSAGE_H
00005
00006
00007 #include <glibmm.h>
00008
00009 #include <gstreamermm/miniobject.h>
00010 #include <gstreamermm/structure.h>
00011 #include <gstreamermm/wrap.h>
00012
00013
00014 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00015 typedef struct _GstMessage GstMessage;
00016 typedef struct _GstMessageClass GstMessageClass;
00017 #endif
00018
00019
00020 namespace Gst
00021 { class Message_Class; }
00022 namespace Gst
00023 {
00024
00025
00026 class Message : public Gst::MiniObject
00027 {
00028 protected:
00029
00030 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00031
00032 public:
00033 typedef Message CppObjectType;
00034 typedef Message_Class CppClassType;
00035 typedef GstMessage BaseObjectType;
00036 typedef GstMessageClass BaseClassType;
00037
00038 private: friend class Message_Class;
00039 static CppClassType message_class_;
00040
00041 private:
00042
00043 Message(const Message&);
00044 Message& operator=(const Message&);
00045
00046 protected:
00047 explicit Message(GstMessage* castitem);
00048
00049 #endif
00050
00051 public:
00052 virtual ~Message();
00053
00054 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00055 static GType get_type() G_GNUC_CONST;
00056 static GType get_base_type() G_GNUC_CONST;
00057 #endif
00058
00060 GstMessage* gobj() { return reinterpret_cast<GstMessage*>(gobject_); }
00061
00063 const GstMessage* gobj() const { return reinterpret_cast<GstMessage*>(gobject_); }
00064
00066 GstMessage* gobj_copy();
00067
00068 private:
00069
00070
00071 public:
00072 const Structure& get_structure();
00073
00074 public:
00075 MessageType get_message_type() const;
00076 ClockTime get_timestamp() const;
00077 Glib::RefPtr<Gst::Object> get_source() const;
00078
00084 static Glib::RefPtr<Message> wrap(GstMessage* message, bool take_copy=false);
00085
00086 protected:
00087 Structure structure_;
00088
00089
00090 public:
00091
00092 public:
00093
00094 #ifdef GLIBMM_VFUNCS_ENABLED
00095 #endif //GLIBMM_VFUNCS_ENABLED
00096
00097 protected:
00098
00099 #ifdef GLIBMM_VFUNCS_ENABLED
00100 #endif //GLIBMM_VFUNCS_ENABLED
00101
00102
00103 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00104 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00105
00106
00107 };
00108
00109 class MessageApplication : public Message
00110 {
00111 public:
00112 explicit MessageApplication(GstMessage *message);
00113
00114 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Structure& structure);
00115 };
00116
00117 class MessageClockProvide : public Message
00118 {
00119 public:
00120 explicit MessageClockProvide(GstMessage *message);
00121
00122 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, const Glib::RefPtr<Clock>& clock, bool ready);
00123 void parse(Glib::RefPtr<Clock>& clock, bool& ready);
00124 };
00125
00126 class MessageClockLost : public Message
00127 {
00128 public:
00129 explicit MessageClockLost(GstMessage* castitem);
00130
00131 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, const Glib::RefPtr<Clock>& clock);
00132 void parse(Glib::RefPtr<Clock>& clock);
00133 };
00134
00135 class MessageCustom : public Message
00136 {
00137 public:
00138 explicit MessageCustom(GstMessage* castitem);
00139
00140 static Glib::RefPtr<Message> create(MessageType type, const Glib::RefPtr<Object>& src, Structure& structure);
00141 };
00142
00143 class MessageElement : public Message
00144 {
00145 public:
00146 explicit MessageElement(GstMessage* castitem);
00147
00148 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Structure& structure);
00149 };
00150
00151 class MessageEos : public Message
00152 {
00153 public:
00154 explicit MessageEos(GstMessage* castitem);
00155
00156 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src);
00157 };
00158
00159 class MessageError : public Message
00160 {
00161 public:
00162 explicit MessageError(GstMessage* castitem);
00163
00164 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Glib::Error& error, const std::string& debug);
00165 void parse(Glib::Error& error, std::string& debug);
00166 void parse(Glib::Error& error);
00167 };
00168
00169 class MessageInfo : public Message
00170 {
00171 public:
00172 explicit MessageInfo(GstMessage* castitem);
00173
00174 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Glib::Error& error, const std::string& debug);
00175 void parse(Glib::Error& error, std::string& debug);
00176 };
00177
00178 class MessageNewClock: public Message
00179 {
00180 public:
00181 explicit MessageNewClock(GstMessage* castitem);
00182
00183 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, const Glib::RefPtr<Clock>& clock);
00184 void parse(Glib::RefPtr<Clock>& clock);
00185 };
00186
00187 class MessageSegmentDone : public Message
00188 {
00189 public:
00190 explicit MessageSegmentDone(GstMessage* castitem);
00191
00192 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Format format, gint64 position);
00193 void parse(Format& format, gint64& position);
00194 };
00195
00196 class MessageSegmentStart : public Message
00197 {
00198 public:
00199 explicit MessageSegmentStart(GstMessage* castitem);
00200
00201 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Format format, gint64 position);
00202 void parse(Format& format, gint64& position);
00203 };
00204
00205 class MessageStateChanged : public Message
00206 {
00207 public:
00208 explicit MessageStateChanged(GstMessage* castitem);
00209
00210 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, State oldstate, State newstate, State pending);
00211 void parse(State& oldstate, State& newstate, State& pending);
00212 };
00213
00214
00215
00216
00217
00218 class MessageBuffering : public Message
00219 {
00220 public:
00221 explicit MessageBuffering(GstMessage* castitem);
00222
00223 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, int percent);
00224 void parse(int& percent);
00225 };
00226
00227 class MessageWarning : public Message
00228 {
00229 public:
00230 explicit MessageWarning(GstMessage* castitem);
00231
00232 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Glib::Error& error, const std::string& debug);
00233 void parse(Glib::Error& error, std::string& debug);
00234 };
00235
00236 class MessageDuration : public Message
00237 {
00238 public:
00239 explicit MessageDuration(GstMessage* castitem);
00240
00241 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, Format format, gint64 position);
00242 void parse(Format& format, gint64& position);
00243 };
00244
00245 class MessageStateDirty : public Message
00246 {
00247 public:
00248 explicit MessageStateDirty(GstMessage* castitem);
00249
00250 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src);
00251 };
00252
00253 class MessageAsyncStart : public Message
00254 {
00255 public:
00256 explicit MessageAsyncStart(GstMessage* castitem);
00257
00258 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src, bool new_base_time);
00259 void parse(bool& new_base_time);
00260 };
00261
00262 class MessageAsyncDone : public Message
00263 {
00264 public:
00265 explicit MessageAsyncDone(GstMessage* castitem);
00266
00267 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src);
00268 };
00269
00270 class MessageLatency : public Message
00271 {
00272 public:
00273 explicit MessageLatency(GstMessage* castitem);
00274
00275 static Glib::RefPtr<Message> create(const Glib::RefPtr<Object>& src);
00276 };
00277
00278 }
00279
00280
00281 namespace Gst
00282 {
00288 Glib::RefPtr<Gst::Message> wrap(GstMessage* object, bool take_copy = false);
00289 }
00290
00291
00292 #endif
00293