1 // Generated by gmmproc 2.50.1 -- DO NOT MODIFY!
2 #ifndef _GSTREAMERMM_SEGMENT_H
3 #define _GSTREAMERMM_SEGMENT_H
4
5
6 #include <glibmm/ustring.h>
7 #include <sigc++/sigc++.h>
8
9 /* gstreamermm - a C++ wrapper for gstreamer
10 *
11 * Copyright 2008-2016 The gstreamermm Development Team
12 *
13 * This library is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU Lesser General Public
15 * License as published by the Free Software Foundation; either
16 * version 2.1 of the License, or (at your option) any later version.
17 *
18 * This library is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 * Lesser General Public License for more details.
22 *
23 * You should have received a copy of the GNU Lesser General Public
24 * License along with this library; if not, write to the Free
25 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26 */
27
28 #include <gstreamermm/clock.h>
29 #include <gstreamermm/format.h>
30
31
32 #ifndef DOXYGEN_SHOULD_SKIP_THIS
33 extern "C" { typedef struct _GstSegment GstSegment; }
34 #endif
35
36 namespace Gst
37 {
38
39 /** @addtogroup gstreamermmEnums gstreamermm Enums and Flags */
40
41 /**
42 * @var SeekFlags SEEK_FLAG_NONE
43 * No flag.
44 *
45 * @var SeekFlags SEEK_FLAG_FLUSH
46 * Flush pipeline.
47 *
48 * @var SeekFlags SEEK_FLAG_ACCURATE
49 * Accurate position is requested, this might
50 * be considerably slower for some formats.
51 *
52 * @var SeekFlags SEEK_FLAG_KEY_UNIT
53 * Seek to the nearest keyframe. This might be
54 * faster but less accurate.
55 *
56 * @var SeekFlags SEEK_FLAG_SEGMENT
57 * Perform a segment seek.
58 *
59 * @var SeekFlags SEEK_FLAG_TRICKMODE
60 * When doing fast forward or fast reverse playback, allow
61 * elements to skip frames instead of generating all
62 * frames. (Since 1.6).
63 *
64 * @var SeekFlags SEEK_FLAG_SNAP_BEFORE
65 * Go to a location before the requested position,
66 * if Gst::SEEK_FLAG_KEY_UNIT this means the keyframe at or before
67 * the requested position the one at or before the seek target.
68 *
69 * @var SeekFlags SEEK_FLAG_SNAP_AFTER
70 * Go to a location after the requested position,
71 * if Gst::SEEK_FLAG_KEY_UNIT this means the keyframe at of after the
72 * requested position.
73 *
74 * @var SeekFlags SEEK_FLAG_SNAP_NEAREST
75 * Go to a position near the requested position,
76 * if Gst::SEEK_FLAG_KEY_UNIT this means the keyframe closest
77 * to the requested position, if both keyframes are at an equal
78 * distance, behaves like Gst::SEEK_FLAG_SNAP_BEFORE.
79 *
80 * @var SeekFlags SEEK_FLAG_TRICKMODE_KEY_UNITS
81 * When doing fast forward or fast reverse
82 * playback, request that elements only decode keyframes
83 * and skip all other content, for formats that have
84 * keyframes. (Since 1.6).
85 *
86 * @var SeekFlags SEEK_FLAG_TRICKMODE_NO_AUDIO
87 * When doing fast forward or fast reverse
88 * playback, request that audio decoder elements skip
89 * decoding and output only gap events or silence. (Since 1.6).
90 *
91 * @var SeekFlags SEEK_FLAG_SKIP
92 * Deprecated backward compatibility flag, replaced
93 * by Gst::SEEK_FLAG_TRICKMODE.
94 *
95 * @enum SeekFlags
96 *
97 * Flags to be used with Gst::Element::seek() or Gst::Event::new_seek(). All flags
98 * can be used together.
99 *
100 * A non flushing seek might take some time to perform as the currently
101 * playing data in the pipeline will not be cleared.
102 *
103 * An accurate seek might be slower for formats that don't have any indexes
104 * or timestamp markers in the stream. Specifying this flag might require a
105 * complete scan of the file in those cases.
106 *
107 * When performing a segment seek: after the playback of the segment completes,
108 * no EOS will be emitted by the element that performed the seek, but a
109 * Gst::MESSAGE_SEGMENT_DONE message will be posted on the bus by the element.
110 * When this message is posted, it is possible to send a new seek event to
111 * continue playback. With this seek method it is possible to perform seamless
112 * looping or simple linear editing.
113 *
114 * When doing fast forward (rate > 1.0) or fast reverse (rate < -1.0) trickmode
115 * playback, the Gst::SEEK_FLAG_TRICKMODE flag can be used to instruct decoders
116 * and demuxers to adjust the playback rate by skipping frames. This can improve
117 * performance and decrease CPU usage because not all frames need to be decoded.
118 *
119 * Beyond that, the Gst::SEEK_FLAG_TRICKMODE_KEY_UNITS flag can be used to
120 * request that decoders skip all frames except key units, and
121 * Gst::SEEK_FLAG_TRICKMODE_NO_AUDIO flags can be used to request that audio
122 * decoders do no decoding at all, and simple output silence.
123 *
124 * The Gst::SEEK_FLAG_SNAP_BEFORE flag can be used to snap to the previous
125 * relevant location, and the Gst::SEEK_FLAG_SNAP_AFTER flag can be used to
126 * select the next relevant location. If Gst::SEEK_FLAG_KEY_UNIT is specified,
127 * the relevant location is a keyframe. If both flags are specified, the nearest
128 * of these locations will be selected. If none are specified, the implementation is
129 * free to select whichever it wants.
130 *
131 * The before and after here are in running time, so when playing backwards,
132 * the next location refers to the one that will played in next, and not the
133 * one that is located after in the actual source stream.
134 *
135 * Also see part-seeking.txt in the GStreamer design documentation for more
136 * details on the meaning of these flags and the behaviour expected of
137 * elements that handle them.
138 *
139 * @ingroup gstreamermmEnums
140 * @par Bitwise operators:
141 * <tt>%SeekFlags operator|(SeekFlags, SeekFlags)</tt><br>
142 * <tt>%SeekFlags operator&(SeekFlags, SeekFlags)</tt><br>
143 * <tt>%SeekFlags operator^(SeekFlags, SeekFlags)</tt><br>
144 * <tt>%SeekFlags operator~(SeekFlags)</tt><br>
145 * <tt>%SeekFlags& operator|=(SeekFlags&, SeekFlags)</tt><br>
146 * <tt>%SeekFlags& operator&=(SeekFlags&, SeekFlags)</tt><br>
147 * <tt>%SeekFlags& operator^=(SeekFlags&, SeekFlags)</tt><br>
148 */
149 enum SeekFlags
150 {
151 SEEK_FLAG_NONE = 0x0,
152 SEEK_FLAG_FLUSH = (1 << 0),
153 SEEK_FLAG_ACCURATE = (1 << 1),
154 SEEK_FLAG_KEY_UNIT = (1 << 2),
155 SEEK_FLAG_SEGMENT = (1 << 3),
156 SEEK_FLAG_TRICKMODE = (1 << 4),
157 SEEK_FLAG_SKIP = (1 << 4),
158 SEEK_FLAG_SNAP_BEFORE = (1 << 5),
159 SEEK_FLAG_SNAP_AFTER = (1 << 6),
160 SEEK_FLAG_SNAP_NEAREST = 0x60,
161 SEEK_FLAG_TRICKMODE_KEY_UNITS = (1 << 7),
162 SEEK_FLAG_TRICKMODE_NO_AUDIO = (1 << 8)
163 };
164
165 /** @ingroup gstreamermmEnums */
166 inline SeekFlags operator|(SeekFlags lhs, SeekFlags rhs)
167 { return static_cast<SeekFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
168
169 /** @ingroup gstreamermmEnums */
170 inline SeekFlags operator&(SeekFlags lhs, SeekFlags rhs)
171 { return static_cast<SeekFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
172
173 /** @ingroup gstreamermmEnums */
174 inline SeekFlags operator^(SeekFlags lhs, SeekFlags rhs)
175 { return static_cast<SeekFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
176
177 /** @ingroup gstreamermmEnums */
178 inline SeekFlags operator~(SeekFlags flags)
179 { return static_cast<SeekFlags>(~static_cast<unsigned>(flags)); }
180
181 /** @ingroup gstreamermmEnums */
182 inline SeekFlags& operator|=(SeekFlags& lhs, SeekFlags rhs)
183 { return (lhs = static_cast<SeekFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
184
185 /** @ingroup gstreamermmEnums */
186 inline SeekFlags& operator&=(SeekFlags& lhs, SeekFlags rhs)
187 { return (lhs = static_cast<SeekFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
188
189 /** @ingroup gstreamermmEnums */
190 inline SeekFlags& operator^=(SeekFlags& lhs, SeekFlags rhs)
191 { return (lhs = static_cast<SeekFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
192
193 } // namespace Gst
194
195 #ifndef DOXYGEN_SHOULD_SKIP_THIS
196 namespace Glib
197 {
198
199 template <>
200 class Value<Gst::SeekFlags> : public Glib::Value_Flags<Gst::SeekFlags>
201 {
202 public:
203 static GType value_type() G_GNUC_CONST;
204 };
205
206 } // namespace Glib
207 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
208
209 namespace Gst
210 {
211
212 /**
213 * @var SeekType SEEK_TYPE_NONE
214 * No change in position is required.
215 *
216 * @var SeekType SEEK_TYPE_SET
217 * Absolute position is requested.
218 *
219 * @var SeekType SEEK_TYPE_END
220 * Relative position to duration is requested.
221 *
222 * @enum SeekType
223 *
224 * The different types of seek events. When constructing a seek event with
225 * Gst::Event::new_seek() or when doing Gst::Segment::do_seek().
226 *
227 * @ingroup gstreamermmEnums
228 */
229 enum SeekType
230 {
231 SEEK_TYPE_NONE,
232 SEEK_TYPE_SET,
233 SEEK_TYPE_END
234 };
235
236 } // namespace Gst
237
238 #ifndef DOXYGEN_SHOULD_SKIP_THIS
239 namespace Glib
240 {
241
242 template <>
243 class Value<Gst::SeekType> : public Glib::Value_Enum<Gst::SeekType>
244 {
245 public:
246 static GType value_type() G_GNUC_CONST;
247 };
248
249 } // namespace Glib
250 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
251
252 namespace Gst
253 {
254
255
256 /** A class that describes the configured region of interest in a media file.
257 * This helper structure holds the relevant values for tracking the region of
258 * interest in a media file, called a segment.
259 *
260 * The structure can be used for two purposes:
261 *
262 * - performing seeks (handling seek events)
263 * - tracking playback regions (handling newsegment events)
264 *
265 * The segment is usually configured by the application with a seek event which
266 * is propagated upstream and eventually handled by an element that performs
267 * the seek.
268 *
269 * The configured segment is then propagated back downstream with a newsegment
270 * event. This information is then used to clip media to the segment
271 * boundaries.
272 *
273 * A segment structure is initialized with init(), which takes a Format that
274 * will be used as the format of the segment values. The segment will be
275 * configured with a start value of 0 and a stop/duration of -1, which is
276 * undefined. The default rate and applied_rate is 1.0.
277 *
278 * The current position in the segment should be set with the set_last_stop().
279 * The public last_stop field contains the last set stop position in the
280 * segment.
281 *
282 * For elements that perform seeks, the current segment should be updated with
283 * the set_seek() and the values from the seek event. This method will update
284 * all the segment fields. The last_stop field will contain the new playback
285 * position. If the cur_type was different from Gst::SEEK_TYPE_NONE, playback
286 * continues from the last_stop position, possibly with updated flags or rate.
287 *
288 * For elements that want to synchronize to the pipeline clock,
289 * to_running_time() can be used to convert a timestamp to a value that can be
290 * used to synchronize to the clock. This function takes into account all
291 * accumulated segments as well as any rate or applied_rate conversions.
292 *
293 * For elements that need to perform operations on media data in stream_time,
294 * to_stream_time() can be used to convert a timestamp and the segment info to
295 * stream time (which is always between 0 and the duration of the stream).
296 *
297 * Last reviewed on 2016-07-12 (1.8.0)
298 */
299 class Segment
300 {
301 public:
302 #ifndef DOXYGEN_SHOULD_SKIP_THIS
303 using CppObjectType = Segment;
304 using BaseObjectType = GstSegment;
305 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
306
307 /** Get the GType for this class, for use with the underlying GObject type system.
308 */
309 static GType get_type() G_GNUC_CONST;
310
311 Segment();
312
313 explicit Segment(GstSegment* gobject, bool make_a_copy = true);
314
315 Segment(const Segment& other);
316 Segment& operator=(const Segment& other);
317
318 Segment(Segment&& other) noexcept;
319 Segment& operator=(Segment&& other) noexcept;
320
321 ~Segment() noexcept;
322
323 void swap(Segment& other) noexcept;
324
325 ///Provides access to the underlying C instance.
gobj()326 GstSegment* gobj() { return gobject_; }
327
328 ///Provides access to the underlying C instance.
gobj()329 const GstSegment* gobj() const { return gobject_; }
330
331 ///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.
332 GstSegment* gobj_copy() const;
333
334 protected:
335 GstSegment* gobject_;
336
337 private:
338
339
340 public:
341
342 /** Clip the given @a start and @a stop values to the segment boundaries given
343 * in @a segment. @a start and @a stop are compared and clipped to @a segment
344 * start and stop values.
345 *
346 * If the function returns <tt>false</tt>, @a start and @a stop are known to fall
347 * outside of @a segment and @a clip_start and @a clip_stop are not updated.
348 *
349 * When the function returns <tt>true</tt>, @a clip_start and @a clip_stop will be
350 * updated. If @a clip_start or @a clip_stop are different from @a start or @a stop
351 * respectively, the region fell partially in the segment.
352 *
353 * Note that when @a stop is -1, @a clip_stop will be set to the end of the
354 * segment. Depending on the use case, this may or may not be what you want.
355 *
356 * @param format The format of the segment.
357 * @param start The start position in the segment.
358 * @param stop The stop position in the segment.
359 * @param clip_start The clipped start position in the segment.
360 * @param clip_stop The clipped stop position in the segment.
361 * @return <tt>true</tt> if the given @a start and @a stop times fall partially or
362 * completely in @a segment, <tt>false</tt> if the values are completely outside
363 * of the segment.
364 */
365 bool clip(Format format, guint64 start, guint64 stop, guint64& clip_start, guint64& clip_stop) const;
366
367 /** The start/position fields are set to 0 and the stop/duration
368 * fields are set to -1 (unknown). The default rate of 1.0 and no
369 * flags are set.
370 *
371 * Initialize @a segment to its default values.
372 *
373 * @param format The format of the segment.
374 */
375 void init(Format format);
376
377 /** Update the segment structure with the field values of a seek event (see
378 * Gst::Event::new_seek()).
379 *
380 * After calling this method, the segment field position and time will
381 * contain the requested new position in the segment. The new requested
382 * position in the segment depends on @a rate and @a start_type and @a stop_type.
383 *
384 * For positive @a rate, the new position in the segment is the new @a segment
385 * start field when it was updated with a @a start_type different from
386 * Gst::SEEK_TYPE_NONE. If no update was performed on @a segment start position
387 * (Gst::SEEK_TYPE_NONE), @a start is ignored and @a segment position is
388 * unmodified.
389 *
390 * For negative @a rate, the new position in the segment is the new @a segment
391 * stop field when it was updated with a @a stop_type different from
392 * Gst::SEEK_TYPE_NONE. If no stop was previously configured in the segment, the
393 * duration of the segment will be used to update the stop position.
394 * If no update was performed on @a segment stop position (Gst::SEEK_TYPE_NONE),
395 * @a stop is ignored and @a segment position is unmodified.
396 *
397 * The applied rate of the segment will be set to 1.0 by default.
398 * If the caller can apply a rate change, it should update @a segment
399 * rate and applied_rate after calling this function.
400 *
401 * @a update will be set to <tt>true</tt> if a seek should be performed to the segment
402 * position field. This field can be <tt>false</tt> if, for example, only the @a rate
403 * has been changed but not the playback position.
404 *
405 * @param rate The rate of the segment.
406 * @param format The format of the segment.
407 * @param flags The segment flags for the segment.
408 * @param start_type The seek method.
409 * @param start The seek start value.
410 * @param stop_type The seek method.
411 * @param stop The seek stop value.
412 * @param update Boolean holding whether position was updated.
413 * @return <tt>true</tt> if the seek could be performed.
414 */
415
416 void set_seek(double rate, Format format, SeekFlags flags, SeekType start_type, gint64 start, SeekType stop_type, gint64 stop, bool& update);
417
418 /** Translate @a position to the total running time using the currently configured
419 * segment. Position is a value between @a segment start and stop time.
420 *
421 * This function is typically used by elements that need to synchronize to the
422 * global clock in a pipeline. The running time is a constantly increasing value
423 * starting from 0. When init() is called, this value will reset to
424 * 0.
425 *
426 * This function returns -1 if the position is outside of @a segment start and stop.
427 *
428 * @param format The format of the segment.
429 * @param position The position in the segment.
430 * @return The position as the total running time or -1 when an invalid position
431 * was given.
432 */
433 guint64 to_running_time(Format format, guint64 position) const;
434
435 /** Translate @a position to the total running time using the currently configured
436 * segment. Compared to to_running_time() this function can return
437 * negative running-time.
438 *
439 * This function is typically used by elements that need to synchronize buffers
440 * against the clock or eachother.
441 *
442 * @a position can be any value and the result of this function for values outside
443 * of the segment is extrapolated.
444 *
445 * When 1 is returned, @a position resulted in a positive running-time returned
446 * in @a running_time.
447 *
448 * When this function returns -1, the returned @a running_time should be negated
449 * to get the real negative running time.
450 *
451 * @param format The format of the segment.
452 * @param position The position in the segment.
453 * @param running_time Result running-time.
454 * @return A 1 or -1 on success, 0 on failure.
455 */
456 int to_running_time(Format format, guint64 position, guint64& running_time) const;
457
458 /** Translate @a position to stream time using the currently configured
459 * segment. The @a position value must be between @a segment start and
460 * stop value.
461 *
462 * This function is typically used by elements that need to operate on
463 * the stream time of the buffers it receives, such as effect plugins.
464 * In those use cases, @a position is typically the buffer timestamp or
465 * clock time that one wants to convert to the stream time.
466 * The stream time is always between 0 and the total duration of the
467 * media stream.
468 *
469 * @param format The format of the segment.
470 * @param position The position in the segment.
471 * @return The position in stream_time or -1 when an invalid position
472 * was given.
473 */
474 guint64 to_stream_time(Format format, guint64 position) const;
475
476 /** Translate @a position to the total stream time using the currently configured
477 * segment. Compared to to_stream_time() this function can return
478 * negative stream-time.
479 *
480 * This function is typically used by elements that need to synchronize buffers
481 * against the clock or eachother.
482 *
483 * @a position can be any value and the result of this function for values outside
484 * of the segment is extrapolated.
485 *
486 * When 1 is returned, @a position resulted in a positive stream-time returned
487 * in @a stream_time.
488 *
489 * When this function returns -1, the returned @a stream_time should be negated
490 * to get the real negative stream time.
491 *
492 * @param format The format of the segment.
493 * @param position The position in the segment.
494 * @param stream_time Result stream-time.
495 * @return A 1 or -1 on success, 0 on failure.
496 */
497 int to_stream_time(Format format, guint64 position, guint64& stream_time) const;
498
499 /** Convert @a running_time into a position in the segment so that
500 * to_running_time() with that position returns @a running_time.
501 *
502 * @param format The format of the segment.
503 * @param running_time The running_time in the segment.
504 * @return The position in the segment for @a running_time. This function returns
505 * -1 when @a running_time is -1 or when it is not inside @a segment.
506 *
507 * Deprecated. Use position_from_running_time() instead.
508 */
509 guint64 to_position(Format format, guint64 running_time) const;
510
511 /** Adjust the start/stop and base values of @a segment such that the next valid
512 * buffer will be one with @a running_time.
513 *
514 * @param format The format of the segment.
515 * @param running_time The running_time in the segment.
516 * @return <tt>true</tt> if the segment could be updated successfully. If <tt>false</tt> is
517 * returned, @a running_time is -1 or not in @a segment.
518 */
519 bool set_running_time(Format format, guint64 running_time);
520
521 /** Convert @a running_time into a position in the segment so that
522 * to_running_time() with that position returns @a running_time.
523 *
524 * @param format The format of the segment.
525 * @param running_time The running_time in the segment.
526 * @return The position in the segment for @a running_time. This function returns
527 * -1 when @a running_time is -1 or when it is not inside @a segment.
528 */
529 guint64 position_from_running_time(Gst::Format format, guint64 running_time) const;
530
531 /** Translate @a running_time to the segment position using the currently configured
532 * segment. Compared to position_from_running_time() this function can
533 * return negative segment position.
534 *
535 * This function is typically used by elements that need to synchronize buffers
536 * against the clock or each other.
537 *
538 * @a running_time can be any value and the result of this function for values
539 * outside of the segment is extrapolated.
540 *
541 * When 1 is returned, @a running_time resulted in a positive position returned
542 * in @a position.
543 *
544 * When this function returns -1, the returned @a position should be negated
545 * to get the real negative segment position.
546 *
547 * @param format The format of the segment.
548 * @param running_time The running-time.
549 * @param position The resulting position in the segment.
550 * @return A 1 or -1 on success, 0 on failure.
551 */
552 int position_from_running_time(Gst::Format format, guint64 running_time, guint64& position) const;
553
554 /** Convert @a stream_time into a position in the segment so that
555 * to_stream_time() with that position returns @a stream_time.
556 *
557 * @param format The format of the segment.
558 * @param stream_time The stream_time in the segment.
559 * @return The position in the segment for @a stream_time. This function returns
560 * -1 when @a stream_time is -1 or when it is not inside @a segment.
561 */
562 guint64 position_from_stream_time(Gst::Format format, guint64 stream_time) const;
563
564 /** Translate @a stream_time to the segment position using the currently configured
565 * segment. Compared to position_from_stream_time() this function can
566 * return negative segment position.
567 *
568 * This function is typically used by elements that need to synchronize buffers
569 * against the clock or each other.
570 *
571 * @a stream_time can be any value and the result of this function for values outside
572 * of the segment is extrapolated.
573 *
574 * When 1 is returned, @a stream_time resulted in a positive position returned
575 * in @a position.
576 *
577 * When this function returns -1, the returned @a position should be negated
578 * to get the real negative segment position.
579 *
580 * @param format The format of the segment.
581 * @param stream_time The stream-time.
582 * @param position The resulting position in the segment.
583 * @return A 1 or -1 on success, 0 on failure.
584 */
585 int position_from_stream_time(Gst::Format format, guint64 stream_time, guint64& position) const;
586
587 /** Adjust the values in @a segment so that @a offset is applied to all
588 * future running-time calculations.
589 *
590 * @param format The format of the segment.
591 * @param offset The offset to apply in the segment.
592 * @return <tt>true</tt> if the segment could be updated successfully. If <tt>false</tt> is
593 * returned, @a offset is not in @a segment.
594 */
595 bool offset_running_time(Gst::Format format, gint64 offset);
596
597 /** Checks for two segments being equal. Equality here is defined
598 * as perfect equality, including floating point values.
599 *
600 * @param s2 A Gst::Segment structure.
601 * @return <tt>true</tt> if the segments are equal, <tt>false</tt> otherwise.
602 */
603 bool is_equal(const Gst::Segment& s2) const;
604
605
606 };
607
608 } //namespace Gst
609
610
611 namespace Gst
612 {
613
614 /** @relates Gst::Segment
615 * @param lhs The left-hand side
616 * @param rhs The right-hand side
617 */
swap(Segment & lhs,Segment & rhs)618 inline void swap(Segment& lhs, Segment& rhs) noexcept
619 { lhs.swap(rhs); }
620
621 } // namespace Gst
622
623 namespace Glib
624 {
625
626 /** A Glib::wrap() method for this object.
627 *
628 * @param object The C instance.
629 * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
630 * @result A C++ instance that wraps this C instance.
631 *
632 * @relates Gst::Segment
633 */
634 Gst::Segment wrap(GstSegment* object, bool take_copy = false);
635
636 #ifndef DOXYGEN_SHOULD_SKIP_THIS
637 template <>
638 class Value<Gst::Segment> : public Glib::Value_Boxed<Gst::Segment>
639 {};
640 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
641
642 } // namespace Glib
643
644
645 #endif /* _GSTREAMERMM_SEGMENT_H */
646
647