gst/gstsegment.*: Make binding friendly.
[platform/upstream/gstreamer.git] / gst / gstsegment.h
1 /* GStreamer
2  * Copyright (C) 2005 Wim Taymans <wim@fluendo.com>
3  *
4  * gstsegment.h: Header for GstSegment subsystem
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public
17  * License along with this library; if not, write to the
18  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  */
21
22
23 #ifndef __GST_SEGMENT_H__
24 #define __GST_SEGMENT_H__
25
26 #include <gst/gstevent.h>
27 #include <gst/gstformat.h>
28
29 G_BEGIN_DECLS
30
31 typedef struct _GstSegment GstSegment;
32
33 /**
34  * GstSegment:
35  * @rate: the rate of the segment
36  * @abs_rate: absolute value of the rate
37  * @format: the format of the segment values
38  * @flags: flags for this segment
39  * @start: the start of the segment
40  * @stop: the stop of the segment
41  * @time: the stream time of the segment
42  * @accum: accumulated segment
43  * @last_stop: last known stop time
44  * @duration: total duration of segment
45  *
46  * A helper structure that holds the configured region of
47  * interest in a media file.
48  */
49 struct _GstSegment {
50   /*< public >*/
51   gdouble        rate;
52   gdouble        abs_rate;
53   GstFormat      format;
54   GstSeekFlags   flags;
55   gint64         start;
56   gint64         stop;
57   gint64         time;
58   gint64         accum;
59
60   gint64         last_stop;
61   gint64         duration;
62
63   /*< private >*/
64   gpointer _gst_reserved[GST_PADDING];
65 };
66
67 GType           gst_segment_get_type            (void);
68
69 GstSegment *    gst_segment_new                 (void);
70 void            gst_segment_free                (GstSegment *segment);
71
72 void            gst_segment_init                (GstSegment *segment, GstFormat format);
73
74 void            gst_segment_set_duration        (GstSegment *segment, GstFormat format, gint64 duration);
75 void            gst_segment_set_last_stop       (GstSegment *segment, GstFormat format, gint64 position);
76
77 void            gst_segment_set_seek            (GstSegment *segment, gdouble rate, 
78                                                  GstFormat format, GstSeekFlags flags, 
79                                                  GstSeekType cur_type, gint64 cur,
80                                                  GstSeekType stop_type, gint64 stop,
81                                                  gboolean *update);
82
83 void            gst_segment_set_newsegment      (GstSegment *segment, gboolean update, gdouble rate,
84                                                  GstFormat format, gint64 start, gint64 stop, gint64 time);
85
86 gint64          gst_segment_to_stream_time      (GstSegment *segment, GstFormat format, gint64 position);
87 gint64          gst_segment_to_running_time     (GstSegment *segment, GstFormat format, gint64 position);
88
89 gboolean        gst_segment_clip                (GstSegment *segment, GstFormat format, gint64 start, 
90                                                  gint64 stop, gint64 *clip_start, gint64 *clip_stop);
91
92 G_END_DECLS
93
94 #endif /* __GST_SEGMENT_H__ */