00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef QGST_EVENT_H
00019 #define QGST_EVENT_H
00020
00021 #include "miniobject.h"
00022 #include "structure.h"
00023 #include "clocktime.h"
00024 #include "taglist.h"
00025
00026 namespace QGst {
00027
00055 class QTGSTREAMER_EXPORT Event : public MiniObject
00056 {
00057 QGST_WRAPPER(Event)
00058 public:
00059 ObjectPtr source() const;
00060 quint64 timestamp() const;
00061 EventType type() const;
00062 QString typeName() const;
00063
00064 StructurePtr internalStructure();
00065
00066 quint32 sequenceNumber() const;
00067 void setSequenceNumber(quint32 num);
00068
00069 EventPtr copy() const;
00070
00071 };
00072
00076 class QTGSTREAMER_EXPORT FlushStartEvent : public Event
00077 {
00078 QGST_WRAPPER_FAKE_SUBCLASS(FlushStart, Event)
00079 public:
00080 static FlushStartEventPtr create();
00081 };
00082
00086 class QTGSTREAMER_EXPORT FlushStopEvent : public Event
00087 {
00088 QGST_WRAPPER_FAKE_SUBCLASS(FlushStop, Event)
00089 public:
00090 static FlushStopEventPtr create();
00091 };
00092
00096 class QTGSTREAMER_EXPORT EosEvent : public Event
00097 {
00098 QGST_WRAPPER_FAKE_SUBCLASS(Eos, Event)
00099 public:
00100 static EosEventPtr create();
00101 };
00102
00106 class QTGSTREAMER_EXPORT NewSegmentEvent : public Event
00107 {
00108 QGST_WRAPPER_FAKE_SUBCLASS(NewSegment, Event)
00109 public:
00110 static NewSegmentEventPtr create(bool update, double rate, double appliedRate, Format format,
00111 qint64 start, qint64 stop, qint64 position);
00112
00113 bool isUpdate() const;
00114 double rate() const;
00115 double appliedRate() const;
00116 Format format() const;
00117 qint64 start() const;
00118 qint64 stop() const;
00119 qint64 position() const;
00120 };
00121
00125 class QTGSTREAMER_EXPORT TagEvent : public Event
00126 {
00127 QGST_WRAPPER_FAKE_SUBCLASS(Tag, Event)
00128 public:
00129 static TagEventPtr create(const TagList & taglist);
00130
00131 TagList taglist() const;
00132 };
00133
00137 class QTGSTREAMER_EXPORT BufferSizeEvent : public Event
00138 {
00139 QGST_WRAPPER_FAKE_SUBCLASS(BufferSize, Event)
00140 public:
00141 static BufferSizeEventPtr create(Format format, qint64 minSize, qint64 maxSize, bool isAsync);
00142
00143 Format format() const;
00144 qint64 minSize() const;
00145 qint64 maxSize() const;
00146 bool isAsync() const;
00147 };
00148
00152 class QTGSTREAMER_EXPORT SinkMessageEvent : public Event
00153 {
00154 QGST_WRAPPER_FAKE_SUBCLASS(SinkMessage, Event)
00155 public:
00156 static SinkMessageEventPtr create(const MessagePtr & msg);
00157
00158 MessagePtr message() const;
00159 };
00160
00164 class QTGSTREAMER_EXPORT QosEvent : public Event
00165 {
00166 QGST_WRAPPER_FAKE_SUBCLASS(Qos, Event)
00167 public:
00168 static QosEventPtr create(double proportion, ClockTimeDiff diff, ClockTime timestamp);
00169
00170 double proportion() const;
00171 ClockTimeDiff diff() const;
00172 ClockTime timestamp() const;
00173 };
00174
00178 class QTGSTREAMER_EXPORT SeekEvent : public Event
00179 {
00180 QGST_WRAPPER_FAKE_SUBCLASS(Seek, Event)
00181 public:
00182 static SeekEventPtr create(double rate, Format format, SeekFlags flags, SeekType startType,
00183 qint64 start, SeekType stopType, qint64 stop);
00184
00185 double rate() const;
00186 Format format() const;
00187 SeekFlags flags() const;
00188 SeekType startType() const;
00189 qint64 start() const;
00190 SeekType stopType() const;
00191 qint64 stop() const;
00192 };
00193
00197 class QTGSTREAMER_EXPORT NavigationEvent : public Event
00198 {
00199 QGST_WRAPPER_FAKE_SUBCLASS(Navigation, Event)
00200 public:
00201 static NavigationEventPtr create(const Structure & structure = Structure());
00202 };
00203
00207 class QTGSTREAMER_EXPORT LatencyEvent : public Event
00208 {
00209 QGST_WRAPPER_FAKE_SUBCLASS(Latency, Event)
00210 public:
00211 static LatencyEventPtr create(ClockTime latency);
00212
00213 ClockTime latency() const;
00214 };
00215
00219 class QTGSTREAMER_EXPORT StepEvent : public Event
00220 {
00221 QGST_WRAPPER_FAKE_SUBCLASS(Step, Event)
00222 public:
00223 static StepEventPtr create(Format format, quint64 amount, double rate,
00224 bool flush, bool intermediate);
00225
00226 Format format() const;
00227 quint64 amount() const;
00228 double rate() const;
00229 bool flush() const;
00230 bool intermediate() const;
00231 };
00232
00233 }
00234
00235 QGST_REGISTER_TYPE(QGst::Event)
00236 QGST_REGISTER_SUBCLASS(Event, FlushStart)
00237 QGST_REGISTER_SUBCLASS(Event, FlushStop)
00238 QGST_REGISTER_SUBCLASS(Event, Eos)
00239 QGST_REGISTER_SUBCLASS(Event, NewSegment)
00240 QGST_REGISTER_SUBCLASS(Event, Tag)
00241 QGST_REGISTER_SUBCLASS(Event, BufferSize)
00242 QGST_REGISTER_SUBCLASS(Event, SinkMessage)
00243 QGST_REGISTER_SUBCLASS(Event, Qos)
00244 QGST_REGISTER_SUBCLASS(Event, Seek)
00245 QGST_REGISTER_SUBCLASS(Event, Navigation)
00246 QGST_REGISTER_SUBCLASS(Event, Latency)
00247 QGST_REGISTER_SUBCLASS(Event, Step)
00248
00249 #endif