Update with proper markdown tables
Also install images
|
@ -451,26 +451,12 @@ start until you bring the pipeline to the PLAYING state. We will
|
|||
introduce here the rest of states and their meaning. There are 4 states
|
||||
in GStreamer:
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><p><code>NULL</p></td>
|
||||
<td><p>the NULL state or initial state of an element.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p><code>READY</code></p></td>
|
||||
<td><p>the element is ready to go to PAUSED.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p><code>PAUSED</code></p></td>
|
||||
<td><p>the element is PAUSED, it is ready to accept and process data. Sink elements however only accept one buffer and then block.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p><code>PLAYING</code></p></td>
|
||||
<td><p>the element is PLAYING, the clock is running and the data is flowing.</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
| State | Description |
|
||||
|-----------|--------------------|
|
||||
| `NULL` | the NULL state or initial state of an element. |
|
||||
| `READY` | the element is ready to go to PAUSED. |
|
||||
| `PAUSED` | the element is PAUSED, it is ready to accept and process data. Sink elements however only accept one buffer and then block. |
|
||||
| `PLAYING` | the element is PLAYING, the clock is running and the data is flowing. |
|
||||
|
||||
You can only move between adjacent ones, this is, you can't go from NULL
|
||||
to PLAYING, you have to go through the intermediate READY and PAUSED
|
||||
|
|
|
@ -84,7 +84,7 @@ in the SDK installation).
|
|||
|
||||
**basic-tutorial-7.c**
|
||||
|
||||
``` theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
#include <gst/gst.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
|
|
@ -332,29 +332,18 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
```
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td><img src="images/icons/emoticons/information.png" width="16" height="16" /></td>
|
||||
<td><div id="expander-1760171459" class="expand-container">
|
||||
<div id="expander-control-1760171459" class="expand-control">
|
||||
<span class="expand-control-icon"><img src="images/icons/grey_arrow_down.gif" class="expand-control-image" /></span><span class="expand-control-text">Need help? (Click to expand)</span>
|
||||
</div>
|
||||
<div id="expander-content-1760171459" class="expand-content">
|
||||
<p>If you need help to compile this code, refer to the <strong>Building the tutorials</strong> section for your platform: <a href="Installing+on+Linux.markdown#InstallingonLinux-Build">Linux</a>, <a href="Installing+on+Mac+OS+X.markdown#InstallingonMacOSX-Build">Mac OS X</a> or <a href="Installing+on+Windows.markdown#InstallingonWindows-Build">Windows</a>, or use this specific command on Linux:</p>
|
||||
<div class="panel" style="border-width: 1px;">
|
||||
<div class="panelContent">
|
||||
<p><code>gcc basic-tutorial-8.c -o basic-tutorial-8 `pkg-config --cflags --libs gstreamer-1.0 gst-audio-1.0`</code></p>
|
||||
</div>
|
||||
</div>
|
||||
<p>If you need help to run this code, refer to the <strong>Running the tutorials</strong> section for your platform: <a href="Installing+on+Linux.markdown#InstallingonLinux-Run">Linux</a>, <a href="Installing+on+Mac+OS+X.markdown#InstallingonMacOSX-Run">Mac OS X</a> or <a href="Installing+on+Windows.markdown#InstallingonWindows-Run">Windows</a></p>
|
||||
<p><span>This tutorial plays an audible tone for varying frequency through the audio card and opens a window with a waveform representation of the tone. The waveform should be a sinusoid, but due to the refreshing of the window might not appear so.</span></p>
|
||||
<p>Required libraries: <code>gstreamer-0.10</code></p>
|
||||
</div>
|
||||
</div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
> ![Information](images/icons/emoticons/information.png)
|
||||
> Need help?
|
||||
>
|
||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](Installing+on+Linux.markdown#InstallingonLinux-Build), [Mac OS X](Installing+on+Mac+OS+X.markdown#InstallingonMacOSX-Build) or [Windows](Installing+on+Windows.markdown#InstallingonWindows-Build), or use this specific command on Linux:
|
||||
>
|
||||
> `` gcc basic-tutorial-8.c -o basic-tutorial-8 `pkg-config --cflags --libs gstreamer-1.0 gst-audio-1.0` ``
|
||||
>
|
||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](Installing+on+Linux.markdown#InstallingonLinux-Run), [Mac OS X](Installing+on+Mac+OS+X.markdown#InstallingonMacOSX-Run) or [Windows](Installing+on+Windows.markdown#InstallingonWindows-Run).
|
||||
>
|
||||
> This tutorial plays an audible tone for varying frequency through the audio card and opens a window with a waveform representation of the tone. The waveform should be a sinusoid, but due to the refreshing of the window might not appear so.
|
||||
>
|
||||
> Required libraries: `gstreamer-1.0`
|
||||
|
||||
## Walkthrough
|
||||
|
||||
|
@ -366,7 +355,7 @@ Always Pads, and manually link the Request Pads of the `tee` element.
|
|||
|
||||
Regarding the configuration of the `appsrc` and `appsink` elements:
|
||||
|
||||
``` first-line: 159; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* Configure appsrc */
|
||||
audio_caps_text = g_strdup_printf (AUDIO_CAPS, SAMPLE_RATE);
|
||||
audio_caps = gst_caps_from_string (audio_caps_text);
|
||||
|
@ -387,7 +376,7 @@ fired by `appsrc` when its internal queue of data is running low or
|
|||
almost full, respectively. We will use these signals to start and stop
|
||||
(respectively) our signal generation process.
|
||||
|
||||
``` first-line: 166; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* Configure appsink */
|
||||
g_object_set (data.app_sink, "emit-signals", TRUE, "caps", audio_caps, NULL);
|
||||
g_signal_connect (data.app_sink, "new-sample", G_CALLBACK (new_sample), &data);
|
||||
|
@ -404,7 +393,7 @@ Starting the pipeline, waiting for messages and final cleanup is done as
|
|||
usual. Let's review the callbacks we have just
|
||||
registered:
|
||||
|
||||
``` first-line: 67; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* This signal callback triggers when appsrc needs data. Here, we add an idle handler
|
||||
* to the mainloop to start pushing data into the appsrc */
|
||||
static void start_feed (GstElement *source, guint size, CustomData *data) {
|
||||
|
@ -433,7 +422,7 @@ We take note of the sourceid that `g_idle_add()` returns, so we can
|
|||
disable it
|
||||
later.
|
||||
|
||||
``` first-line: 76; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* This callback triggers when appsrc has enough data and we can stop sending.
|
||||
* We remove the idle handler from the mainloop */
|
||||
static void stop_feed (GstElement *source, CustomData *data) {
|
||||
|
@ -450,7 +439,7 @@ enough so we stop pushing data. Here we simply remove the idle function
|
|||
by using `g_source_remove()` (The idle function is implemented as a
|
||||
`GSource`).
|
||||
|
||||
``` first-line: 22; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* This method is called by the idle GSource in the mainloop, to feed CHUNK_SIZE bytes into appsrc.
|
||||
* The ide handler is added to the mainloop when appsrc requests us to start sending data (need-data signal)
|
||||
* and is removed when appsrc has enough data (enough-data signal).
|
||||
|
@ -500,7 +489,7 @@ We will skip over the waveform generation, since it is outside the scope
|
|||
of this tutorial (it is simply a funny way of generating a pretty
|
||||
psychedelic wave).
|
||||
|
||||
``` first-line: 53; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* Push the buffer into the appsrc */
|
||||
g_signal_emit_by_name (data->app_source, "push-buffer", buffer, &ret);
|
||||
|
||||
|
@ -514,23 +503,23 @@ tutorial 1: Playbin2
|
|||
usage](Playback+tutorial+1+Playbin2+usage.markdown)), and then
|
||||
`gst_buffer_unref()` it since we no longer need it.
|
||||
|
||||
``` first-line: 86; theme: Default; brush: cpp; gutter: true
|
||||
```
|
||||
/* The appsink has received a buffer */
|
||||
static void new_buffer (GstElement *sink, CustomData *data) {
|
||||
GstBuffer *buffer;
|
||||
static void new_sample (GstElement *sink, CustomData *data) {
|
||||
GstSample *sample;
|
||||
|
||||
/* Retrieve the buffer */
|
||||
g_signal_emit_by_name (sink, "pull-buffer", &buffer);
|
||||
if (buffer) {
|
||||
g_signal_emit_by_name (sink, "pull-sample", &sample);
|
||||
if (sample) {
|
||||
/* The only thing we do in this example is print a * to indicate a received buffer */
|
||||
g_print ("*");
|
||||
gst_buffer_unref (buffer);
|
||||
gst_sample_unref (sample);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Finally, this is the function that gets called when the
|
||||
`appsink` receives a buffer. We use the `pull-buffer` action signal to
|
||||
`appsink` receives a buffer. We use the `pull-sample` action signal to
|
||||
retrieve the buffer and then just print some indicator on the screen. We
|
||||
can retrieve the data pointer using the `GST_BUFFER_DATA` macro and the
|
||||
data size using the `GST_BUFFER_SIZE` macro in `GstBuffer`. Remember
|
||||
|
|
|
@ -9,6 +9,16 @@ Feel free to jump straight to the download section, start practicing
|
|||
with the tutorials, or read the F.A.Q. if you don’t know what this is
|
||||
all about.
|
||||
|
||||
|
||||
AA
|
||||
|
||||
![](attachments/2424851.png)
|
||||
|
||||
| test ![](attachments/2424851.png) bb | test2 |
|
||||
|------|-------|
|
||||
| aaa | bbb |
|
||||
|------|-------|
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="25%" />
|
||||
|
@ -18,7 +28,7 @@ all about.
|
|||
</colgroup>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td><a href="Installing%2Bthe%2BSDK.html"><img src="attachments/327688/2424851.png" class="confluence-embedded-image" /></a>
|
||||
<td><a href="Installing%2Bthe%2BSDK.html"><img src="attachments/2424851.png" class="confluence-embedded-image" /></a>
|
||||
<h3 id="Home-Download" style="text-align: center;margin-top: 0.0px;">Download</h3>
|
||||
Download and install the GStreamer SDK</td>
|
||||
<td><a href="Tutorials.html"><img src="attachments/327688/2424852.png" class="confluence-embedded-image" /></a>
|
||||
|
|
|
@ -282,47 +282,15 @@ GSTREAMER_PLUGINS := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_CODECS) play
|
|||
|
||||
#### List of categories and included plugins
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Included plugins</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>GSTREAMER_PLUGINS_CORE</code></td>
|
||||
<td>coreelements coreindexers adder app audioconvert audiorate audioresample audiotestsrc ffmpegcolorspace gdp gio pango typefindfunctions videorate videoscale videotestsrc volume autodetect videofilter</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>GSTREAMER_PLUGINS_PLAYBACK</code></td>
|
||||
<td>decodebin playbin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>GSTREAMER_PLUGINS_CODECS</code></td>
|
||||
<td>subparse ogg theora vorbis alaw annodex apetag audioparsers auparse avi flac flv flxdec icydemux id3demux isomp4 jpeg matroska mulaw multipart png speex taglib wavenc wavpack wavparse y4menc adpcmdec adpcmenc aiff cdxaparse dtmf dvbsuboverlay dvdspu fragmented hdvparse id3tag ivfparse jp2k kate mve mxf nsf nuvdemux opus pcapparse pnm schro siren subenc tta videoparsersbad vmnc vp8 y4mdec</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>GSTREAMER_PLUGINS_VIS</code></td>
|
||||
<td>libvisual goom goom2k1 audiovisualizers</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>GSTREAMER_PLUGINS_EFFECTS</code></td>
|
||||
<td>alpha alphacolor audiofx cutter debug deinterlace effectv equalizer gdkpixbuf imagefreeze interleave level multifile replaygain shapewipe smpte spectrum videobox videocrop videomixer autoconvert bayer coloreffects faceoverlay fieldanalysis freeverb frei0r gaudieffects geometrictransform interlace jp2kdecimator liveadder rawparse removesilence scaletempoplugin segmentclip smooth speed stereo videofiltersbad videomeasure videosignal</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td><code>GSTREAMER_PLUGINS_NET</code></td>
|
||||
<td>rtsp rtp rtpmanager souphttpsrc udp dataurisrc rtpmux rtpvp8 sdpelem</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td><code>GSTREAMER_PLUGINS_CODECS_GPL</code></td>
|
||||
<td>assrender</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td><code>GSTREAMER_PLUGINS_SYS</code></td>
|
||||
<td>eglglessink opensles amc</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
| Category | Included plugins |
|
||||
|--|--|
|
||||
| `GSTREAMER_PLUGINS_CORE` | coreelements coreindexers adder app audioconvert audiorate audioresample audiotestsrc ffmpegcolorspace gdp gio pango typefindfunctions videorate videoscale videotestsrc volume autodetect videofilter |
|
||||
| `GSTREAMER_PLUGINS_PLAYBACK` | decodebin playbin |
|
||||
| `GSTREAMER_PLUGINS_CODECS` | subparse ogg theora vorbis alaw annodex apetag audioparsers auparse avi flac flv flxdec icydemux id3demux isomp4 jpeg matroska mulaw multipart png speex taglib wavenc wavpack wavparse y4menc adpcmdec adpcmenc aiff cdxaparse dtmf dvbsuboverlay dvdspu fragmented hdvparse id3tag ivfparse jp2k kate mve mxf nsf nuvdemux opus pcapparse pnm schro siren subenc tta videoparsersbad vmnc vp8 y4mdec |
|
||||
| `GSTREAMER_PLUGINS_VIS` | libvisual goom goom2k1 audiovisualizers |
|
||||
| `GSTREAMER_PLUGINS_EFFECTS` | alpha alphacolor audiofx cutter debug deinterlace effectv equalizer gdkpixbuf imagefreeze interleave level multifile replaygain shapewipe smpte spectrum videobox videocrop videomixer autoconvert bayer coloreffects faceoverlay fieldanalysis freeverb frei0r gaudieffects geometrictransform interlace jp2kdecimator liveadder rawparse removesilence scaletempoplugin segmentclip smooth speed stereo videofiltersbad videomeasure videosignal |
|
||||
| `GSTREAMER_PLUGINS_NET` | rtsp rtp rtpmanager souphttpsrc udp dataurisrc rtpmux rtpvp8 sdpelem |
|
||||
| `GSTREAMER_PLUGINS_CODECS_GPL` | assrender |
|
||||
| `GSTREAMER_PLUGINS_SYS` | eglglessink opensles amc |
|
||||
|
||||
Build and run your application as explained in the **Building the tutorials** section.
|
||||
|
|
|
@ -2,6 +2,10 @@
|
|||
|
||||
### Choose your platform
|
||||
|
||||
| | |
|
||||
|-|-|
|
||||
| aa | bb |
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="33%" />
|
||||
|
@ -10,7 +14,7 @@
|
|||
</colgroup>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td><p><a href="Installing%2Bon%2BLinux.html"><img src="attachments/1540162.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<td><p><a href="Installing%2Bon%2BLinux.html"><img src="attachments/linux.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<h3 id="InstallingtheSDK-Linux" style="text-align: center;">Linux</h3>
|
||||
<ul>
|
||||
<li>Ubuntu 12.04 (Precise Pangolin)</li>
|
||||
|
@ -21,7 +25,7 @@
|
|||
<li>Fedora 17</li>
|
||||
</ul>
|
||||
<p><span style="color: rgb(255,255,255);">______________________________________</span></p></td>
|
||||
<td><p><a href="Installing%2Bon%2BMac%2BOS%2BX.html"><img src="attachments/1540163.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<td><p><a href="Installing%2Bon%2BMac%2BOS%2BX.html"><img src="attachments/mac.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<h3 id="InstallingtheSDK-MacOSX" style="text-align: center;">Mac OS X</h3>
|
||||
<ul>
|
||||
<li>10.6 (Snow Leopard)</li>
|
||||
|
@ -29,7 +33,7 @@
|
|||
<li>10.8 (Mountain Lion)</li>
|
||||
</ul>
|
||||
<p><span style="color: rgb(255,255,255);">______________________________________</span></p></td>
|
||||
<td><p><a href="Installing%2Bon%2BWindows.html"><img src="attachments/1540164.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<td><p><a href="Installing%2Bon%2BWindows.html"><img src="attachments/windows.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<h3 id="InstallingtheSDK-MicrosoftWindows" style="text-align: center;">Microsoft Windows</h3>
|
||||
<ul>
|
||||
<li>Windows XP</li>
|
||||
|
@ -53,7 +57,7 @@
|
|||
</colgroup>
|
||||
<tbody>
|
||||
<tr class="odd">
|
||||
<td><p><a href="Installing%2Bfor%2BAndroid%2Bdevelopment.html"><img src="attachments/2654239.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<td><p><a href="Installing%2Bfor%2BAndroid%2Bdevelopment.html"><img src="attachments/android.png" class="confluence-embedded-image image-center" /></a></p>
|
||||
<h3 id="InstallingtheSDK-Android" style="text-align: center;">Android</h3>
|
||||
<ul>
|
||||
<li>2.3.1 Gingerbread and above</li>
|
||||
|
@ -63,7 +67,7 @@
|
|||
<span style="color: rgb(255,255,255);"><br />
|
||||
</span>
|
||||
</div></td>
|
||||
<td><p><a href="Installing%2Bfor%2BiOS%2Bdevelopment.html"><img src="attachments/3539150.jpeg" class="confluence-embedded-image image-center" /></a></p>
|
||||
<td><p><a href="Installing%2Bfor%2BiOS%2Bdevelopment.html"><img src="attachments/ios.jpeg" class="confluence-embedded-image image-center" /></a></p>
|
||||
<h3 id="InstallingtheSDK-iOS" style="text-align: center;">iOS</h3>
|
||||
<ul>
|
||||
<li>iOS 6 and above</li>
|
||||
|
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
@ -4,5 +4,6 @@
|
|||
"index": "Home.markdown",
|
||||
"output": "built_doc",
|
||||
"project_name": "gstdotcom",
|
||||
"sitemap": "sitemap.txt"
|
||||
}
|
||||
"sitemap": "sitemap.txt",
|
||||
"extra_assets": ["attachments", "images"]
|
||||
}
|
||||
|
|