tizen 2.0 init
[framework/multimedia/gst-plugins-base0.10.git] / docs / libs / html / gst-plugins-base-libs-gstcddabasesrc.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>gstcddabasesrc</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
7 <link rel="home" href="index.html" title="GStreamer Base Plugins 0.10 Library Reference Manual">
8 <link rel="up" href="gstreamer-cdda.html" title="CDDA Library">
9 <link rel="prev" href="gstreamer-cdda.html" title="CDDA Library">
10 <link rel="next" href="gstreamer-ffft.html" title="FFT Library">
11 <meta name="generator" content="GTK-Doc V1.18 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
16 <tr valign="middle">
17 <td><a accesskey="p" href="gstreamer-cdda.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
18 <td><a accesskey="u" href="gstreamer-cdda.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
19 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
20 <th width="100%" align="center">GStreamer Base Plugins 0.10 Library Reference Manual</th>
21 <td><a accesskey="n" href="gstreamer-ffft.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
22 </tr>
23 <tr><td colspan="5" class="shortcuts">
24 <a href="#gst-plugins-base-libs-gstcddabasesrc.synopsis" class="shortcut">Top</a>
25                    | 
26                   <a href="#gst-plugins-base-libs-gstcddabasesrc.description" class="shortcut">Description</a>
27                    | 
28                   <a href="#gst-plugins-base-libs-gstcddabasesrc.object-hierarchy" class="shortcut">Object Hierarchy</a>
29                    | 
30                   <a href="#gst-plugins-base-libs-gstcddabasesrc.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
31                    | 
32                   <a href="#gst-plugins-base-libs-gstcddabasesrc.properties" class="shortcut">Properties</a>
33 </td></tr>
34 </table>
35 <div class="refentry">
36 <a name="gst-plugins-base-libs-gstcddabasesrc"></a><div class="titlepage"></div>
37 <div class="refnamediv"><table width="100%"><tr>
38 <td valign="top">
39 <h2><span class="refentrytitle"><a name="gst-plugins-base-libs-gstcddabasesrc.top_of_page"></a>gstcddabasesrc</span></h2>
40 <p>gstcddabasesrc — Base class for CD digital audio (CDDA) sources</p>
41 </td>
42 <td valign="top" align="right"></td>
43 </tr></table></div>
44 <div class="refsynopsisdiv">
45 <a name="gst-plugins-base-libs-gstcddabasesrc.synopsis"></a><h2>Synopsis</h2>
46 <a name="GstCddaBaseSrc"></a><pre class="synopsis">
47 #include &lt;gst/cdda/gstcddabasesrc.h&gt;
48
49 struct              <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc-struct" title="struct GstCddaBaseSrc">GstCddaBaseSrc</a>;
50 struct              <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcClass" title="struct GstCddaBaseSrcClass">GstCddaBaseSrcClass</a>;
51 struct              <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcTrack" title="struct GstCddaBaseSrcTrack">GstCddaBaseSrcTrack</a>;
52 enum                <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcMode" title="enum GstCddaBaseSrcMode">GstCddaBaseSrcMode</a>;
53 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#gst-cdda-base-src-add-track" title="gst_cdda_base_src_add_track ()">gst_cdda_base_src_add_track</a>         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc"><span class="type">GstCddaBaseSrc</span></a> *src</code></em>,
54                                                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcTrack" title="struct GstCddaBaseSrcTrack"><span class="type">GstCddaBaseSrcTrack</span></a> *track</code></em>);
55 </pre>
56 </div>
57 <div class="refsect1">
58 <a name="gst-plugins-base-libs-gstcddabasesrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
59 <pre class="synopsis">
60   <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
61    +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
62          +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
63                +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSrc.html">GstBaseSrc</a>
64                      +----<a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstPushSrc.html">GstPushSrc</a>
65                            +----GstCddaBaseSrc
66 </pre>
67 </div>
68 <div class="refsect1">
69 <a name="gst-plugins-base-libs-gstcddabasesrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
70 <p>
71 GstCddaBaseSrc implements
72  <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstUriHandler.html#GstURIHandler">GstURIHandler</a>.</p>
73 </div>
74 <div class="refsect1">
75 <a name="gst-plugins-base-libs-gstcddabasesrc.properties"></a><h2>Properties</h2>
76 <pre class="synopsis">
77   "<a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc--device" title='The "device" property'>device</a>"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write
78   "<a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc--mode" title='The "mode" property'>mode</a>"                     <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcMode" title="enum GstCddaBaseSrcMode"><span class="type">GstCddaBaseSrcMode</span></a>    : Read / Write
79   "<a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc--track" title='The "track" property'>track</a>"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write
80 </pre>
81 </div>
82 <div class="refsect1">
83 <a name="gst-plugins-base-libs-gstcddabasesrc.description"></a><h2>Description</h2>
84 <p>
85 </p>
86 <div class="refsect2">
87 <a name="idp11955168"></a><h3>Using GstCddaBaseSrc-based elements in applications</h3>
88 <p>
89 Provides a base class for CDDA sources, which handles things like seeking,
90 querying, discid calculation, tags, and buffer timestamping.
91 </p>
92 <p>
93 GstCddaBaseSrc registers two <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a>s of its own, namely
94 the "track" format and the "sector" format. Applications will usually
95 only find the "track" format interesting. You can retrieve that <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstFormat.html#GstFormat"><span class="type">GstFormat</span></a>
96 for use in seek events or queries with gst_format_get_by_nick("track").
97 </p>
98 <p>
99 In order to query the number of tracks, for example, an application would
100 set the CDDA source element to READY or PAUSED state and then query the
101 the number of tracks via <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html#gst-element-query-duration"><code class="function">gst_element_query_duration()</code></a> using the track
102 format acquired above. Applications can query the currently playing track
103 in the same way.
104 </p>
105 <p>
106 Alternatively, applications may retrieve the currently playing track and
107 the total number of tracks from the taglist that will posted on the bus
108 whenever the CD is opened or the currently playing track changes. The
109 taglist will contain GST_TAG_TRACK_NUMBER and GST_TAG_TRACK_COUNT tags.
110 </p>
111 <p>
112 Applications playing back CD audio using playbin and cdda://n URIs should
113 issue a seek command in track format to change between tracks, rather than
114 setting a new cdda://n+1 URI on playbin (as setting a new URI on playbin
115 involves closing and re-opening the CD device, which is much much slower).
116 </p>
117 <p>
118 CDDA sources will automatically emit a number of tags, details about which
119 can be found in the libgsttag documentation. Those tags are:
120 <a class="link" href="gst-plugins-base-libs-gsttag.html#GST-TAG-CDDA-CDDB-DISCID:CAPS" title="GST_TAG_CDDA_CDDB_DISCID"><span class="type">GST_TAG_CDDA_CDDB_DISCID</span></a>, <a class="link" href="gst-plugins-base-libs-gsttag.html#GST-TAG-CDDA-CDDB-DISCID-FULL:CAPS" title="GST_TAG_CDDA_CDDB_DISCID_FULL"><span class="type">GST_TAG_CDDA_CDDB_DISCID_FULL</span></a>,
121 <a class="link" href="gst-plugins-base-libs-gsttag.html#GST-TAG-CDDA-MUSICBRAINZ-DISCID:CAPS" title="GST_TAG_CDDA_MUSICBRAINZ_DISCID"><span class="type">GST_TAG_CDDA_MUSICBRAINZ_DISCID</span></a>, <a class="link" href="gst-plugins-base-libs-gsttag.html#GST-TAG-CDDA-MUSICBRAINZ-DISCID-FULL:CAPS" title="GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL"><span class="type">GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL</span></a>,
122 among others.
123 </p>
124 </div>
125 <p>
126 </p>
127 </div>
128 <div class="refsect1">
129 <a name="gst-plugins-base-libs-gstcddabasesrc.details"></a><h2>Details</h2>
130 <div class="refsect2">
131 <a name="GstCddaBaseSrc-struct"></a><h3>struct GstCddaBaseSrc</h3>
132 <pre class="programlisting">struct GstCddaBaseSrc;</pre>
133 </div>
134 <hr>
135 <div class="refsect2">
136 <a name="GstCddaBaseSrcClass"></a><h3>struct GstCddaBaseSrcClass</h3>
137 <pre class="programlisting">struct GstCddaBaseSrcClass {
138   GstPushSrcClass pushsrc_class;
139
140   /* open/close the CD device */
141   gboolean    (*open)               (GstCddaBaseSrc *src, const gchar *device);
142   void        (*close)              (GstCddaBaseSrc *src);
143
144   /* read one sector (LBA) */
145   GstBuffer * (*read_sector)        (GstCddaBaseSrc *src, gint sector);
146
147   /* return default device or NULL (optional) */
148   gchar *     (*get_default_device) (GstCddaBaseSrc *src);
149
150   /* return NULL-terminated string array of CD devices, or NULL (optional) */
151   gchar **    (*probe_devices)      (GstCddaBaseSrc *src);
152 };
153 </pre>
154 <p>
155 Cdda source base class.
156 </p>
157 <div class="variablelist"><table border="0">
158 <col align="left" valign="top">
159 <tbody>
160 <tr>
161 <td><p><span class="term"><span class="type">GstPushSrcClass</span> <em class="structfield"><code><a name="GstCddaBaseSrcClass.pushsrc-class"></a>pushsrc_class</code></em>;</span></p></td>
162 <td>the parent class</td>
163 </tr>
164 <tr>
165 <td><p><span class="term"><em class="structfield"><code><a name="GstCddaBaseSrcClass.open"></a>open</code></em> ()</span></p></td>
166 <td>opening the device</td>
167 </tr>
168 <tr>
169 <td><p><span class="term"><em class="structfield"><code><a name="GstCddaBaseSrcClass.close"></a>close</code></em> ()</span></p></td>
170 <td>closing the device</td>
171 </tr>
172 <tr>
173 <td><p><span class="term"><em class="structfield"><code><a name="GstCddaBaseSrcClass.read-sector"></a>read_sector</code></em> ()</span></p></td>
174 <td>reading a sector</td>
175 </tr>
176 <tr>
177 <td><p><span class="term"><em class="structfield"><code><a name="GstCddaBaseSrcClass.get-default-device"></a>get_default_device</code></em> ()</span></p></td>
178 <td>getting the default device</td>
179 </tr>
180 <tr>
181 <td><p><span class="term"><em class="structfield"><code><a name="GstCddaBaseSrcClass.probe-devices"></a>probe_devices</code></em> ()</span></p></td>
182 <td>probing possible devices</td>
183 </tr>
184 </tbody>
185 </table></div>
186 </div>
187 <hr>
188 <div class="refsect2">
189 <a name="GstCddaBaseSrcTrack"></a><h3>struct GstCddaBaseSrcTrack</h3>
190 <pre class="programlisting">struct GstCddaBaseSrcTrack {
191   gboolean     is_audio;      /* TRUE if this is an audio track             */
192   guint        num;           /* real track number (usually starts from 1)  */
193   guint        start;         /* first sector of track (LBA, not LSN!)      */
194   guint        end;           /* last sector of track  (LBA, not LSN!)      */
195   GstTagList  *tags;          /* NULL or tags for track (e.g. from cd-text) */
196 };
197 </pre>
198 <p>
199 CD track abstraction to communicate TOC entries to the base class.
200 </p>
201 <div class="variablelist"><table border="0">
202 <col align="left" valign="top">
203 <tbody>
204 <tr>
205 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstCddaBaseSrcTrack.is-audio"></a>is_audio</code></em>;</span></p></td>
206 <td>Whether this is an audio track</td>
207 </tr>
208 <tr>
209 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstCddaBaseSrcTrack.num"></a>num</code></em>;</span></p></td>
210 <td>Track number in TOC (usually starts from 1, but not always)</td>
211 </tr>
212 <tr>
213 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstCddaBaseSrcTrack.start"></a>start</code></em>;</span></p></td>
214 <td>The first sector of this track (LBA)</td>
215 </tr>
216 <tr>
217 <td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstCddaBaseSrcTrack.end"></a>end</code></em>;</span></p></td>
218 <td>The last sector of this track (LBA)</td>
219 </tr>
220 <tr>
221 <td><p><span class="term"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstTagList.html#GstTagList"><span class="type">GstTagList</span></a> *<em class="structfield"><code><a name="GstCddaBaseSrcTrack.tags"></a>tags</code></em>;</span></p></td>
222 <td>Track-specific tags (e.g. from cd-text information), or NULL</td>
223 </tr>
224 </tbody>
225 </table></div>
226 </div>
227 <hr>
228 <div class="refsect2">
229 <a name="GstCddaBaseSrcMode"></a><h3>enum GstCddaBaseSrcMode</h3>
230 <pre class="programlisting">typedef enum {
231   GST_CDDA_BASE_SRC_MODE_NORMAL,          /* stream = one track  */
232   GST_CDDA_BASE_SRC_MODE_CONTINUOUS       /* stream = whole disc */
233 } GstCddaBaseSrcMode;
234 </pre>
235 <p>
236 Mode in which the CD audio source operates. Influences timestamping,
237 EOS handling and seeking.
238 </p>
239 <div class="variablelist"><table border="0">
240 <col align="left" valign="top">
241 <tbody>
242 <tr>
243 <td><p><a name="GST-CDDA-BASE-SRC-MODE-NORMAL:CAPS"></a><span class="term"><code class="literal">GST_CDDA_BASE_SRC_MODE_NORMAL</code></span></p></td>
244 <td>each single track is a stream
245 </td>
246 </tr>
247 <tr>
248 <td><p><a name="GST-CDDA-BASE-SRC-MODE-CONTINUOUS:CAPS"></a><span class="term"><code class="literal">GST_CDDA_BASE_SRC_MODE_CONTINUOUS</code></span></p></td>
249 <td>the entire disc is a single stream
250 </td>
251 </tr>
252 </tbody>
253 </table></div>
254 </div>
255 <hr>
256 <div class="refsect2">
257 <a name="gst-cdda-base-src-add-track"></a><h3>gst_cdda_base_src_add_track ()</h3>
258 <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>            gst_cdda_base_src_add_track         (<em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc"><span class="type">GstCddaBaseSrc</span></a> *src</code></em>,
259                                                          <em class="parameter"><code><a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcTrack" title="struct GstCddaBaseSrcTrack"><span class="type">GstCddaBaseSrcTrack</span></a> *track</code></em>);</pre>
260 <p>
261 CDDA sources use this function from their start vfunc to announce the
262 available data and audio tracks to the base source class. The caller
263 should allocate <em class="parameter"><code>track</code></em> on the stack, the base source will do a shallow
264 copy of the structure (and take ownership of the taglist if there is one).
265 </p>
266 <div class="variablelist"><table border="0">
267 <col align="left" valign="top">
268 <tbody>
269 <tr>
270 <td><p><span class="term"><em class="parameter"><code>src</code></em> :</span></p></td>
271 <td>a <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrc"><span class="type">GstCddaBaseSrc</span></a>
272 </td>
273 </tr>
274 <tr>
275 <td><p><span class="term"><em class="parameter"><code>track</code></em> :</span></p></td>
276 <td>address of <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcTrack" title="struct GstCddaBaseSrcTrack"><span class="type">GstCddaBaseSrcTrack</span></a> to add</td>
277 </tr>
278 <tr>
279 <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
280 <td>FALSE on error, otherwise TRUE.</td>
281 </tr>
282 </tbody>
283 </table></div>
284 </div>
285 </div>
286 <div class="refsect1">
287 <a name="gst-plugins-base-libs-gstcddabasesrc.property-details"></a><h2>Property Details</h2>
288 <div class="refsect2">
289 <a name="GstCddaBaseSrc--device"></a><h3>The <code class="literal">"device"</code> property</h3>
290 <pre class="programlisting">  "device"                   <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>*                : Read / Write</pre>
291 <p>CD device location.</p>
292 <p>Default value: NULL</p>
293 </div>
294 <hr>
295 <div class="refsect2">
296 <a name="GstCddaBaseSrc--mode"></a><h3>The <code class="literal">"mode"</code> property</h3>
297 <pre class="programlisting">  "mode"                     <a class="link" href="gst-plugins-base-libs-gstcddabasesrc.html#GstCddaBaseSrcMode" title="enum GstCddaBaseSrcMode"><span class="type">GstCddaBaseSrcMode</span></a>    : Read / Write</pre>
298 <p>Mode.</p>
299 <p>Default value: Stream consists of a single track</p>
300 </div>
301 <hr>
302 <div class="refsect2">
303 <a name="GstCddaBaseSrc--track"></a><h3>The <code class="literal">"track"</code> property</h3>
304 <pre class="programlisting">  "track"                    <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a>                 : Read / Write</pre>
305 <p>Track.</p>
306 <p>Allowed values: [1,99]</p>
307 <p>Default value: 1</p>
308 </div>
309 </div>
310 </div>
311 <div class="footer">
312 <hr>
313           Generated by GTK-Doc V1.18</div>
314 </body>
315 </html>