37 State currentState()
const;
38 State pendingState()
const;
39 StateChangeReturn getState(State *state, State *pending,
ClockTime timeout)
const;
40 StateChangeReturn setState(State state);
41 bool syncStateWithParent();
43 bool stateIsLocked()
const;
44 bool setStateLocked(
bool locked);
46 bool addPad(
const PadPtr & pad);
47 bool removePad(
const PadPtr & pad);
49 PadPtr getStaticPad(
const char *name);
50 PadPtr getRequestPad(
const char *name);
51 void releaseRequestPad(
const PadPtr & pad);
54 bool setClock(
const ClockPtr & clock);
56 bool link(
const char *srcPadName,
const ElementPtr & dest,
58 bool link(
const char *srcPadName,
const ElementPtr & dest,
60 bool link(
const ElementPtr & dest,
const char *sinkPadName,
67 void unlink(
const char *srcPadName,
const ElementPtr & dest,
68 const char *sinkPadName = NULL);
69 void unlink(
const ElementPtr & dest,
const char *sinkPadName = NULL);
74 void unlink(
const char *srcPadName,
const ElementPtr & dest,
const char *sinkPadName);
84 return first->link(second);
89 first->unlink(second);
101 template <
typename First,
typename Second,
typename Third,
typename... Rest>
102 static inline bool linkMany(
const First & first,
const Second & second,
103 const Third & third,
const Rest & ... rest)
105 if (!first->link(second))
return false;
106 return linkMany(second, third, rest...);
115 template <
typename First,
typename Second,
typename Third,
typename... Rest>
116 static inline void unlinkMany(
const First & first,
const Second & second,
117 const Third & third,
const Rest & ... rest)
119 first->unlink(second);
120 unlinkMany(second, third, rest...);
124# ifndef QGST_ELEMENT_LINK_MANY_MAX_ARGS
125# define QGST_ELEMENT_LINK_MANY_MAX_ARGS 10
128# ifndef QGST_ELEMENT_UNLINK_MANY_MAX_ARGS
129# define QGST_ELEMENT_UNLINK_MANY_MAX_ARGS 10
132# define QGST_ELEMENT_LINK_MANY_DECLARATION(z, n, data) \
133 static inline bool linkMany(BOOST_PP_ENUM_PARAMS(n, const ElementPtr & e)) \
135 if (!e0->link(e1)) return false; \
136 return linkMany(BOOST_PP_ENUM_SHIFTED_PARAMS(n, e)); \
139# define QGST_ELEMENT_UNLINK_MANY_DECLARATION(z, n, data) \
140 static inline void unlinkMany(BOOST_PP_ENUM_PARAMS(n, const ElementPtr & e)) \
143 unlinkMany(BOOST_PP_ENUM_SHIFTED_PARAMS(n, e)); \
146 BOOST_PP_REPEAT_FROM_TO(3, BOOST_PP_INC(QGST_ELEMENT_LINK_MANY_MAX_ARGS),
147 QGST_ELEMENT_LINK_MANY_DECLARATION, dummy)
148 BOOST_PP_REPEAT_FROM_TO(3, BOOST_PP_INC(QGST_ELEMENT_UNLINK_MANY_MAX_ARGS),
149 QGST_ELEMENT_UNLINK_MANY_DECLARATION, dummy)
151# undef QGST_ELEMENT_LINK_MANY_DECLARATION
152# undef QGST_ELEMENT_UNLINK_MANY_DECLARATION
157 bool sendEvent(
const EventPtr & event);
158 bool seek(Format format, SeekFlags flags, quint64 position);