summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Crête <olivier.crete@collabora.com>2016-06-17 17:20:43 -0400
committerOlivier Crête <olivier.crete@collabora.com>2016-06-17 17:20:43 -0400
commite3511e3a2a047c3f6b780fa8a3841939eedadc6b (patch)
tree04e798baf4a085d3013e4120c853258bf4e37cdc
parent3d0883c6ef2e7fff242351144e987293ebbd1cff (diff)
Update deploying sections
-rw-r--r--TODO.md8
-rw-r--r--attachments/2424841.pngbin85057 -> 0 bytes
-rw-r--r--attachments/2424842.pngbin87853 -> 0 bytes
-rw-r--r--sdk-deploying-your-application.md62
-rw-r--r--sdk-installing.md8
-rw-r--r--sdk-mac-osx-deployment.md312
-rw-r--r--sdk-multiplatform-deployment-using-cerbero.md482
-rw-r--r--sdk-windows-deployment.md241
8 files changed, 291 insertions, 822 deletions
diff --git a/TODO.md b/TODO.md
index a910bb7..a3dfe0c 100644
--- a/TODO.md
+++ b/TODO.md
@@ -9,10 +9,6 @@ Pages to review:
- sdk-installing-on-linux.md
- sdk-installing-on-mac-osx.md
- sdk-installing-on-windows.md
- - sdk-deploying-your-application.md
- - sdk-windows-deployment.md
- - sdk-mac-osx-deployment.md
- - sdk-multiplatform-deployment-using-cerbero.md
Screenshots:
@@ -71,6 +67,10 @@ Reviewed pages:
- sdk-basic-tutorial-hello-world.md
- sdk-gst-inspect.md
- gst-launch.md
+ - sdk-deploying-your-application.md
+ - sdk-windows-deployment.md
+ - sdk-mac-osx-deployment.md
+ - sdk-multiplatform-deployment-using-cerbero.md
For-later pages:
- sdk-qt-tutorials.md [tpm: this should all be rewritten from scratch with qmlglsink; QtGStreamer is outdated and unmaintained, we should not promote it]
diff --git a/attachments/2424841.png b/attachments/2424841.png
deleted file mode 100644
index 647c5bc..0000000
--- a/attachments/2424841.png
+++ /dev/null
Binary files differ
diff --git a/attachments/2424842.png b/attachments/2424842.png
deleted file mode 100644
index 454ab31..0000000
--- a/attachments/2424842.png
+++ /dev/null
Binary files differ
diff --git a/sdk-deploying-your-application.md b/sdk-deploying-your-application.md
index 5100554..b39b3b8 100644
--- a/sdk-deploying-your-application.md
+++ b/sdk-deploying-your-application.md
@@ -1,5 +1,5 @@
---
-short-description: Deploy the SDK with your application
+short-description: Deploy GStreamer with your application
...
# Deploying your application
@@ -10,7 +10,7 @@ installer. You have several options here, and, even though this subject
is not really in the scope of this documentation, we will give some
hints to try to help you.
-# Multiplatform vs. single-platform packaging system
+## Multiplatform vs. single-platform packaging system
The first choice you need to make is whether you want to deploy your
application to more than one platform. If yes, then you have the choice
@@ -33,8 +33,8 @@ pros and cons of each option.
</thead>
<tbody>
<tr class="odd">
-<td><p><strong><span style="color: rgb(0,0,0);">Multiplatform packaging </span></strong><span style="color: rgb(0,0,0);"><strong>system</strong></span></p>
-<p><span style="color: rgb(0,0,0);"> </span>The same system is used to package your application for all platforms</p></td>
+<td><p><strong>Multiplatform packaging system</strong></p>
+<p>The same system is used to package your application for all platforms</p></td>
<td><ul>
<li><p>You only need to develop your packaging system once, and it works for all supported platforms.</p></li>
</ul></td>
@@ -46,24 +46,24 @@ pros and cons of each option.
<td><p><strong>Single-platform packaging system</strong></p>
<p>Your application is packaged using a different system on each platform.</p></td>
<td><ul>
-<li><p>You can make use of all the advantages each <span>packaging </span>system can offer.</p>
-<p> </p></li>
+<li><p>You can make use of all the advantages each packaging system can offer.</p>
+</li>
</ul></td>
<td><ul>
-<li><p>You need to develop a new <span>packaging </span>system for each supported platform.</p></li>
+<li><p>You need to develop a new packaging system for each supported platform.</p></li>
</ul></td>
</tr>
</tbody>
</table>
-The GStreamer SDK itself supports three different platforms (Linux, Mac
-OS X and Windows) and has been built using a multiplatform packaging
+GStreamer itself supports many different platforms (Linux, iOS, Android, Mac
+OS X, Windows, etc) and has been built using a multiplatform packaging
system named **Cerbero**, which is available for you to use, should you
choose to go down this route.
-# Shared vs. private GStreamer deployment
+## Shared vs. private GStreamer deployment
-You can install the GStreamer SDK in the target machine in the same way
+You can install GStreamer in the target machine in the same way
you installed it in your development machine, you can deploy it
privately, or you can even customize it before deploying. Here you have
a few options:
@@ -76,43 +76,43 @@ a few options:
</colgroup>
<thead>
<tr class="header">
-<th> </th>
+<th></th>
<th>Pros</th>
<th>Cons</th>
</tr>
</thead>
<tbody>
<tr class="odd">
-<td><p><strong>Shared SDK</strong></p>
-<p>The GStreamer SDK is installed independently of your application, as a prerequisite, in a common place in the target computer (<code>C:\Program Files</code>, for example). You application uses an environment variable to locate it.</p></td>
+<td><p><strong>Shared GStreamer</strong></p>
+<p>GStreamer is installed independently of your application, as a prerequisite, in a common place in the target computer (<code>C:\Program Files</code>, for example). You application uses an environment variable to locate it.</p></td>
<td><ul>
-<li><p>If more than one application in the target computer uses the SDK, it is installed only once and shared, reducing disk usage.</p></li>
+<li>If more than one application in the target computer uses GStreamer, it is installed only once and shared, reducing disk usage.</li>
</ul></td>
<td><ul>
-<li>Tampering or corruption of the shared SDK installation can make your application fail.</li>
-<li><p>The SDK libraries are unprotected and open to tampering.</p></li>
+<li>Tampering or corruption of the shared GStreamer installation can make your application fail.</li>
</ul></td>
</tr>
<tr class="even">
-<td><p><strong>Private SDK with dynamic linking</strong></p>
-<p>Your application deploys the GStreamer SDK to a private folder.</p></td>
+<td><p><strong>Private GStreamer with dynamic linking</strong></p>
+<p>Your application deploys GStreamer to a private folder.</p></td>
<td><ul>
-<li><p>Your SDK is independent of other applications, so it does not get corrupted if other applications mess with their installations.</p></li>
+<li>Your GStreamer is independent of other applications, so it does not get corrupted if other applications mess with their installations.</li>
</ul></td>
<td><ul>
-<li><p>If multiple applications in the target computer use the GStreamer SDK, it won’t be shared, consuming more disk space.</p></li>
-<li><p>The SDK libraries are unprotected and open to tampering.</p></li>
+<li>If multiple applications in the target computer use GStreamer, it won’t be shared, consuming more disk space.</li>
</ul></td>
</tr>
<tr class="odd">
-<td><p><strong>Private SDK with static linking</strong></p>
-<p>Your application links statically against the GStreamer SDK, so it effectively becomes part of your application binary.</p></td>
+<td><p><strong>Private GStreamer with static linking</strong></p>
+<p>Your application links statically against GStreamer, so it effectively becomes part of your application binary.</p></td>
<td><ul>
-<li>Your SDK is independent of other applications, so it does not get corrupted if other applications mess with their installations.</li>
-<li>It is much harder to tamper with the SDK, since it is embedded in your application.</li>
+<li>Your GStreamer is independent of other applications, so it does not get corrupted if other applications mess with their installations.</li>
+<li>Deployment for ordinary users is easier as you have fewer files.</li>
+<li>This is your only choice on iOS.</li>
</ul></td>
<td><ul>
-<li><span>If multiple applications in the target computer use the GStreamer SDK, it won’t be shared, consuming more disk space.</span></li>
+<li>If multiple applications in the target computer use GStreamer, it won’t be shared, consuming more disk space.</li>
+<li>You need to provide the required files for your users to re-link your application against a modified GStreamer as required by the license.</li>
</ul></td>
</tr>
</tbody>
@@ -122,9 +122,7 @@ The following pages give further directions for some of the above
options.
- Platform-specific packaging methods:
- - For [Mac OS X](Mac%2BOS%2BX%2Bdeployment.html)
- - For [Windows](Windows%2Bdeployment.html)
+ - For [Mac OS X](sdk-mac-osx-deployment.md)
+ - For [Windows](sdk-windows-deployment.md)
- [Multiplatform deployment using
- Cerbero](Multiplatform%2Bdeployment%2Busing%2BCerbero.html)
-
+ Cerbero](sdk-multiplatform-deployment-using-cerbero.md)
diff --git a/sdk-installing.md b/sdk-installing.md
index 7f7e93b..e39e71b 100644
--- a/sdk-installing.md
+++ b/sdk-installing.md
@@ -6,10 +6,10 @@ short-description: Download and install GStreamer
## Choose your platform by clicking on the corresponding logo
-[![](attachments/1540163.png)](sdk-installing-on-mac-osx.md)
-[![](attachments/1540164.png)](sdk-installing-on-windows.md)
-[![](attachments/2654239.png)](sdk-installing-for-android-development.md)
-[![](attachments/3539150.jpeg)](sdk-installing-for-ios-development.md)
+[![](attachments/mac.png)](sdk-installing-on-mac-osx.md)
+[![](attachments/windows.png)](sdk-installing-on-windows.md)
+[![](attachments/android.png)](sdk-installing-for-android-development.md)
+[![](attachments/ios.jpeg)](sdk-installing-for-ios-development.md)
## Linux
diff --git a/sdk-mac-osx-deployment.md b/sdk-mac-osx-deployment.md
index b5dfe0a..b98cec2 100644
--- a/sdk-mac-osx-deployment.md
+++ b/sdk-mac-osx-deployment.md
@@ -1,45 +1,40 @@
# Mac OS X deployment
-This page explains how to deploy GStreamer along your application. There
-are different mechanisms, which have been reviewed in [Deploying your
-application](Deploying%2Byour%2Bapplication.html). The details for some
+This page explains how to deploy GStreamer along your application. There
+are different mechanisms, which have been reviewed in [](sdk-deploying-your-application.md). The details for some
of the mechanisms are given here, and more options might be added to
this documentation in the future.
-The recommended tool to create installer packages for Mac OS X
-is [PackageMaker](http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/PackageMakerUserGuide/Introduction/Introduction.html),
-provided with the [XCode developer
-tools](https://developer.apple.com/technologies/tools/).
+**FIXME: PackageMaker is dead we need a new solution **
-# Shared GStreamer
+## Shared GStreamer
This is the easiest way to deploy GStreamer, although most of the time
it installs unnecessary files which grow the size of the installer and
-the target drive free space requirements. Since the SDK might be shared
+the target drive free space requirements. Since GStreamer might be shared
among all applications that use it, though, the extra space requirements
-are somewhat blurred.![](attachments/2097292/2424841.png)
-![](attachments/thumbnails/2097292/2424842)
-
-With PackageMaker, simply add the GStreamer SDK  **runtime ** disk image
- ([the same one you used to install the runtime in your development
-machine](Installing%2Bon%2BMac%2BOS%2BX.html)) inside your installer
-package and create a post-install script that mounts the disk image and
-installs the SDK package. You can use the following example, where you
-should replace `$INSTALL_PATH` with the path where your installer copied
-the SDK's disk image files (the `/tmp` directory is good place to
+are somewhat blurred.
+
+With PackageMaker, simply add GStreamer **runtime ** disk image
+ ([the same one you used to install the runtime in your development
+machine](sdk-installing-on-mac-osx.md)) inside your installer
+package and create a post-install script that mounts the disk image and
+installs GStreamer package. You can use the following example, where you
+should replace `$INSTALL_PATH` with the path where your installer copied
+GStreamer's disk image files (the `/tmp` directory is good place to
install it as it will be removed at the end of the installation):
``` bash
-hdiutil attach $INSTALL_PATH/gstreamer-sdk-2012.7-x86.dmg
-cd /Volumes/gstreamer-sdk-2012.7-x86/
-installer -pkg gstreamer-sdk-2012.7-x86.pkg -target "/"
-hdiutil detach /Volumes/gstreamer-sdk-2012.7-x86/
-rm $INSTALL_PATH/gstreamer-sdk-2012.7-x86.dmg
+hdiutil attach $INSTALL_PATH/gstreamer-1.0-1.8.1-x86_64-packages.dmg
+cd /Volumes/gstreamer-1.0-1.8.1-x86_64/
+installer -pkg gstreamer-1.0-1.8.1-x86_64.pkg -target "/"
+hdiutil detach /Volumes/gstreamer-1.0-1.8.1-x86_64/
+rm $INSTALL_PATH/gstreamer-1.0-1.8.1-x86_64-packages.dmg
```
-# Private deployment of GStreamer
+## Private deployment of GStreamer
-You can decide to distribute a private copy of the SDK with your
+You can decide to distribute a private copy of GStreamer with your
application, although it's not the recommended method. In this case,
simply copy the framework to the application's Frameworks folder as
defined in the [bundle programming
@@ -49,7 +44,7 @@ guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conc
cp -r /Library/Frameworks/GStreamer.framework ~/MyApp.app/Contents/Frameworks
```
-Note that you can have several versions of the SDK, and targeting
+Note that you can have several versions of GStreamer, and targeting
different architectures, installed in the system. Make sure you only
copy the version you need and that you update accordingly the link
`GStreamer.framework/Version/Current`:
@@ -59,18 +54,18 @@ $ ls -l Frameworks/GStreamer.framework/Version/Current
lrwxr-xr-x 1 fluendo staff 21 Jun 5 18:46 Frameworks/GStreamer.framework/Versions/Current -> ../Versions/0.10/x86
```
-Since the SDK will be relocated, you will need to follow the
-instructions on how to relocate the SDK at the end of this page.
+Since GStreamer will be relocated, you will need to follow the
+instructions on how to relocate GStreamer at the end of this page.
-# Deploy only necessary files, by manually picking them
+## Deploy only necessary files, by manually picking them
On the other side of the spectrum, if you want to reduce the space
requirements (and installer size) to the maximum, you can manually
choose which GStreamer libraries to deploy. Unfortunately, you are on
your own on this road, besides using the object file displaying tool:
[otool](https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/otool.1.html).
-Being a similar technique to deploying a private copy of the SDK, keep
-in mind that you should relocate the SDK too, as explained at the end of
+Being a similar technique to deploying a private copy of GStreamer, keep
+in mind that you should relocate GStreamer too, as explained at the end of
this page.
Bear also in mind that GStreamer is modular in nature. Plug-ins are
@@ -78,186 +73,46 @@ loaded depending on the media that is being played, so, if you do not
know in advance what files you are going to play, you do not know which
plugins and shared libraries you need to deploy.
-# Deploy only necessary packages, using the provided ones
+## Deploy only necessary packages, using the provided ones
-This will produce a smaller installer than deploying the complete
-GStreamer SDK, without the added burden of having to manually pick each
+This will produce a smaller installer than deploying complete
+GStreamer, without the added burden of having to manually pick each
library. You just need to know which packages your application requires.
-![](images/icons/grey_arrow_down.gif)Available packages (Click to
-expand)
-
-<table>
-<colgroup>
-<col width="25%" />
-<col width="25%" />
-<col width="25%" />
-<col width="25%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>Package name</th>
-<th>Dependencies</th>
-<th>Licenses</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td>base-system</td>
-<td> </td>
-<td>JPEG, FreeType, BSD-like, LGPL,<br />
-LGPL-2+, LGPL-2.1, LibPNG and MIT</td>
-<td>Base system dependencies</td>
-</tr>
-<tr class="even">
-<td>gobject-python</td>
-<td>base-system</td>
-<td>LGPL</td>
-<td>GLib/GObject python bindings</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-capture</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer plugins for capture</td>
-</tr>
-<tr class="even">
-<td>gstreamer-clutter</td>
-<td>base-system, gtk+-2.0, gstreamer-core</td>
-<td>LGPL</td>
-<td>GStreamer Clutter support</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-codecs</td>
-<td>base-system, gstreamer-core</td>
-<td>BSD, Jasper-2.0, BSD-like, LGPL,<br />
-LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+</td>
-<td>GStreamer codecs</td>
-</tr>
-<tr class="even">
-<td>gstreamer-codecs-gpl</td>
-<td>base-system, gstreamer-core</td>
-<td>BSD-like, LGPL, LGPL-2+ and LGPL-2.1+</td>
-<td>GStreamer codecs under the GPL license and/or with patents issues</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-core</td>
-<td>base-system</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer core</td>
-</tr>
-<tr class="even">
-<td>gstreamer-dvd</td>
-<td>base-system, gstreamer-core</td>
-<td>GPL-2+, LGPL and LGPL-2+</td>
-<td>GStreamer DVD support</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-effects</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer effects and instrumentation plugins</td>
-</tr>
-<tr class="even">
-<td>gstreamer-networking</td>
-<td>base-system, gstreamer-core</td>
-<td>GPL-3, LGPL, LGPL-2+, LGPL-2.1+<br />
-and LGPL-3+</td>
-<td>GStreamer plugins for network protocols</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-playback</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer plugins for playback</td>
-</tr>
-<tr class="even">
-<td>gstreamer-python</td>
-<td>base-system, gobject-python,<br />
-gstreamer-core</td>
-<td>LGPL and LGPL-2.1+</td>
-<td>GStreamer python bindings</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-system</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL, LGPL-2+ and LGPL-2.1+</td>
-<td>GStreamer system plugins</td>
-</tr>
-<tr class="even">
-<td>gstreamer-tutorials</td>
-<td> </td>
-<td>LGPL</td>
-<td>Tutorials for GStreamer</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-visualizers</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer visualization plugins</td>
-</tr>
-<tr class="even">
-<td>gtk+-2.0</td>
-<td>base-system</td>
-<td>LGPL</td>
-<td>Gtk toolkit</td>
-</tr>
-<tr class="odd">
-<td>gtk+-2.0-python</td>
-<td>base-system, gtk+-2.0</td>
-<td>LGPL and LGPL-2.1+</td>
-<td>Gtk python bindings</td>
-</tr>
-<tr class="even">
-<td>snappy</td>
-<td><p>base-system, gstreamer-clutter,<br />
-gtk+-2.0, gstreamer-playback,<br />
-gstreamer-core, gstreamer-codecs</p></td>
-<td>LGPL</td>
-<td>Snappy media player</td>
-</tr>
-</tbody>
-</table>
-
-Get the disk image file with all the packages:
-
-<table>
-<colgroup>
-<col width="100%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>Universal</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td><p><a href="http://cdn.gstreamer.com/osx/universal/gstreamer-sdk-2013.6-universal-packages.dmg" class="external-link">GStreamer SDK 2013.6 (Congo) for Mac OS X (Deployment Packages)</a> - <a href="http://www.freedesktop.org/software/gstreamer-sdk/data/packages/osx/universal/gstreamer-sdk-2013.6-universal-packages.dmg" class="external-link">mirror</a> - <a href="http://cdn.gstreamer.com/osx/universal/gstreamer-sdk-2013.6-universal-packages.dmg.md5" class="external-link">md5</a> - <a href="http://cdn.gstreamer.com/osx/universal/gstreamer-sdk-2013.6-universal-packages.dmg.sha1" class="external-link">sha1</a></p></td>
-</tr>
-</tbody>
-</table>
-
-<table>
-<tbody>
-<tr class="odd">
-<td><img src="images/icons/emoticons/warning.png" width="16" height="16" /></td>
-<td><p>Due to the size of these files, usage of a <a href="http://en.wikipedia.org/wiki/Download_manager" class="external-link">Download Manager</a> is <strong>highly recommended</strong>. Take a look at <a href="http://en.wikipedia.org/wiki/Comparison_of_download_managers" class="external-link">this list</a> if you do not have one installed. If, after downloading, the installer reports itself as corrupt, chances are that the connection ended before the file was complete. A Download Manager will typically re-start the process and fetch the missing parts.</p></td>
-</tr>
-</tbody>
-</table>
-
-# Relocation of the SDK in OS X
-
-In some situations we might need to relocate the SDK, moving it to a
+| Package name | Dependencies | Licenses | Description |
+|--------------|--------------|----------|-------------|
+| base-system-1.0 | |JPEG, FreeType, BSD-like, LGPL, LGPL-2+, LGPL-2.1, LibPNG and MIT | Base system dependencies |
+| gstreamer-1.0-capture | gstreamer-1.0-core, gstreamer-1.0-encoding | LGPL and LGPL-2+ | GStreamer plugins for capture |
+| gstreamer-1.0-codecs | base-crypto, gstreamer-1.0-core | BSD, Jasper-2.0, BSD-like, LGPL, LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+ | GStreamer codecs |
+| gstreamer-1.0-codecs-gpl | gstreamer-1.0-core | BSD-like, LGPL, LGPL-2+ and LGPL-2.1+ | GStreamer codecs under the GPL license and/or with patents issues |
+| gstreamer-1.0-core | base-system-1.0 | LGPL and LGPL-2+ | GStreamer core |
+| gstreamer-1.0-dvd | gstreamer-1.0-core | GPL-2+, LGPL and LGPL-2+ | GStreamer DVD support |
+| gstreamer-1.0-effects | gstreamer-1.0-core | LGPL and LGPL-2+ | GStreamer effects and instrumentation plugins |
+| gstreamer-1.0-net | base-crypto, gstreamer-1.0-core | GPL-3, LGPL, LGPL-2+, LGPL-2.1+ and LGPL-3+ | GStreamer plugins for network protocols |
+| gstreamer-1.0-playback | gstreamer-1.0-core | LGPL and LGPL-2+ | GStreamer plugins for playback |
+| gstreamer-1.0-system | gstreamer-1.0-core | LGPL, LGPL-2+ and LGPL-2.1+ | GStreamer system plugins |
+| gstreamer-1.0-visualizers | gstreamer-1.0-core | LGPL and LGPL-2+ | GStreamer visualization plugins |
+| gstreamer-1.0-encoding | gstreamer-1.0-core, gstreamer-1.0-playback | LGPL and LGPL2+ | GStreamer plugins for encoding |
+| gstreamer-1.0-editing | gstreamer-1.0-core, gstreamer-1.0-devtools | LGPL and LGPL2+ | GStreamer libraries and plugins for non linear editing |
+| gstreamer-1.0-devtools | gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer developers tools |
+| gstreamer-1.0-libav | gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer plugins wrapping ffmpeg |
+| gstreamer-1.0-net-restricted | base-crypto, gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer plugins for network protocols with potential patent issues in some countries |
+| gstreamer-1.0-codecs-restricted | gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer restricted codecs with potential patent issues in some countries |
+| base-crypto | base-system-1.0 | LGPL and LGPL2+ | Cryptographic libraries |
+
+
+
+## Relocation of GStreamer in OS X
+
+In some situations we might need to relocate GStreamer, moving it to a
different place in the file system, like for instance when we are
-shipping a private copy of the SDK with our application.
+shipping a private copy of GStreamer with our application.
### Location of dependent dynamic libraries.
On Darwin operating systems, the dynamic linker doesn't locate dependent
dynamic libraries using their leaf name, but instead it uses full paths,
-which makes it harder to relocate them as explained in the DYNAMIC
+which makes it harder to relocate them as explained in the DYNAMIC
LIBRARY LOADING section of
[dyld](https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/dyld.1.html)'s
man page:
@@ -270,7 +125,7 @@ man page:
We can get the list of paths used by an object file to locate its
dependent dynamic libraries
-using [otool](https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/otool.1.html):
+using [otool](https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/otool.1.html):
``` bash
$ otool -L /Library/Frameworks/GStreamer.framework/Commands/gst-launch-1.0
@@ -281,15 +136,15 @@ $ otool -L /Library/Frameworks/GStreamer.framework/Commands/gst-launch-1.0
...
```
-As you might have already noticed, if we move the SDK to a different
+As you might have already noticed, if we move GStreamer to a different
folder, it will stop working because the runtime linker won't be able to
find `gstreamer-1.0` in the previous location
`/Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-1.0.0.dylib`.
-This full path is extracted from the dynamic library  ***install name***
-, a path that is used by the linker to determine its location. The
+This full path is extracted from the dynamic library ***install name***
+, a path that is used by the linker to determine its location. The
install name of a library can be retrieved with
-[otool](https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/otool.1.html) too:
+[otool](https://developer.apple.com/library/mac/#documentation/darwin/reference/manpages/man1/otool.1.html) too:
``` bash
$ otool -D /Library/Frameworks/GStreamer.framework/Libraries/libgstreamer-1.0.dylib
@@ -297,41 +152,41 @@ $ otool -D /Library/Frameworks/GStreamer.framework/Libraries/libgstreamer-1.0.dy
/Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-1.0.0.dylib
```
-Any object file that links to the dynamic library `gstreamer-1.0` will
+Any object file that links to the dynamic library `gstreamer-1.0` will
use the
-path `/Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-1.0.0.dylib` to
-locate it, as we saw previously with `gst-launch-1.0`.
+path `/Library/Frameworks/GStreamer.framework/Versions/0.10/x86/lib/libgstreamer-1.0.0.dylib` to
+locate it, as we saw previously with `gst-launch-1.0`.
Since working exclusively with full paths wouldn't let us install our
binaries anywhere in the path, the linker provides a mechanism of string
substitution, adding three variables that can be used as a path prefix.
At runtime the linker will replace them with the generated path for the
-prefix. These variables are `@executable_path`,
-`@loader_path` and `@rpath`, described in depth in the DYNAMIC LIBRARY
+prefix. These variables are `@executable_path`,
+`@loader_path` and `@rpath`, described in depth in the DYNAMIC LIBRARY
LOADING section
-of [dyld](https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/dyld.1.html)'s
+of [dyld](https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/dyld.1.html)'s
man page.
-For our purpose we will use the `@executable_path` variable, which is
+For our purpose we will use the `@executable_path` variable, which is
replaced with a fixed path, the path to the directory containing the
-main executable: `/Applications/MyApp.app/Contents/MacOS`.
-The `@loader_path` variable can't be used in our scope, because it will
+main executable: `/Applications/MyApp.app/Contents/MacOS`.
+The `@loader_path` variable can't be used in our scope, because it will
be replaced with the path to the directory containing the mach-o binary
that loaded the dynamic library, which can vary.
-Therefore, in order to relocate the SDK we will need to replace all
+Therefore, in order to relocate GStreamer we will need to replace all
paths
-containing `/Library/Frameworks/GStreamer.framework/` with `@executable_path/../Frameworks/GStreamer.framework/`, which
+containing `/Library/Frameworks/GStreamer.framework/` with `@executable_path/../Frameworks/GStreamer.framework/`, which
can be done using
-the [install\_name\_tool](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/install_name_tool.1.html)
+the [install\_name\_tool](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/install_name_tool.1.html)
utility
### Relocation of the binaries
As mentioned in the previous section, we can use
-the `install_name_tool` in combination with `otool` to list all paths
+the `install_name_tool` in combination with `otool` to list all paths
for dependant dynamic libraries and modify them to use the new location.
-However the SDK has a huge list of binaries and doing it manually would
+However GStreamer has a huge list of binaries and doing it manually would
be a painful task. That's why a simple relocation script is provided
which you can find in cerbero's repository
(`cerbero/tools/osxrelocator.py`). This scripts takes 3 parameters:
@@ -340,7 +195,7 @@ which you can find in cerbero's repository
2. `old_prefix`: the old prefix we want to change (eg:
`/Library/Frameworks/GStreamer.framework`)
3. `new_prefix`: the new prefix we want to use
- (eg: `@executable_path/../Frameworks/GStreamer.framework/`)
+ (eg: `@executable_path/../Frameworks/GStreamer.framework/`)
When looking for binaries to fix, we will run the script in the
following
@@ -366,14 +221,7 @@ help other libraries finding resources in the new
You can use the following functions:
- - C: [putenv("VAR=/foo/bar")](http://linux.die.net/man/3/putenv)
+ - C: [putenv("VAR=/foo/bar")](http://linux.die.net/man/3/putenv)
- - Python: [os.environ\['VAR'\] =
+ - Python: [os.environ\['VAR'\] =
'/foo/var'](http://docs.python.org/library/os.html)
-
-## Attachments:
-
-![](images/icons/bullet_blue.gif)
-[PackageMaker1.png](attachments/2097292/2424841.png) (image/png)
-![](images/icons/bullet_blue.gif)
-[PackageMaker2.png](attachments/2097292/2424842.png) (image/png)
diff --git a/sdk-multiplatform-deployment-using-cerbero.md b/sdk-multiplatform-deployment-using-cerbero.md
index 3b93d5e..c5f5185 100644
--- a/sdk-multiplatform-deployment-using-cerbero.md
+++ b/sdk-multiplatform-deployment-using-cerbero.md
@@ -1,36 +1,34 @@
# Multiplatform deployment using Cerbero
-Cerbero is the build and packaging system used to construct the
-GStreamer SDK. It uses “recipe” files that indicate how to build
+Cerbero is the build and packaging system used to construct
+GStreamer. It uses “recipe” files that indicate how to build
particular projects, and on what other projects they depend.
-Moreover, the built projects can be combined into packages for
+Moreover, the built projects can be combined into packages for
distribution. These packages are, depending on the target platform,
Windows or OS X installers or Linux packages.
To use Cerbero to build and package your application, you just need to
add a recipe explaining how to build you application and make it depend
-on the `gstreamer-sdk` project. Then Cerbero can take care of building
+on the `gstreamer-sdk` project. Then Cerbero can take care of building
your application and its dependencies and package them all together.
-Read [Building from source using
-Cerbero](Building%2Bfrom%2Bsource%2Busing%2BCerbero.html) to learn how
+Read [](sdk-building-from-source-using-cerbero.md) to learn how
to install and use Cerbero.
-At this point, after reading the Build from source section in [Building
-from source using
-Cerbero](Building%2Bfrom%2Bsource%2Busing%2BCerbero.html), you should be
-able to build the GStreamer SDK from source and are ready to create
-recipe and package files for your application.
+At this point, after reading the Build from source section in
+[](sdk-building-from-source-using-cerbero.md), you should be able to
+build GStreamer from source and are ready to create recipe and package
+files for your application.
In the Cerbero installation directory you will find the
-`cerbero-uninstalled` script. Execute it without parameters to see the
+`cerbero-uninstalled` script. Execute it without parameters to see the
list of commands it accepts:
``` bash
./cerbero-uninstalled
```
-# Adding a recipe for your application
+## Adding a recipe for your application
The first step is to create an empty recipe that you can then tailor to
your needs:
@@ -43,197 +41,82 @@ This will create an initial recipe file in `recipes/my-app.recipe`,
which contains the smallest necessary recipe. This file is a Python
script; set the following attributes to describe your application:
-Attribute Name
-
-Description
-
-Required
-
-Example
-
-`name`
-
-The recipe name.
-
-Yes
-
-*name = 'my-app'*
-
-`version`
-
-The software version.
-
-Yes
-
-*version = '1.0'*
-
-`licenses`
-
-A list of licenses of the software (see `cerbero/enums.py:License` for
-allowed licenses).
-
-Yes
-
-*licenses = \[License.LGPLv2Plus\]*
-
-`deps`
-
-A list of build dependencies of the software as recipe names.
-
-No
-
-*deps = \['other', 'recipe', 'names'\]*
-
-`platform_deps`
-
-Platform specific build dependencies (see `cerbero/enums.py:Platform`
-for allowed platforms).
-
-No
-
-*platform\_deps = {Platform.LINUX: \['some-recipe'\], Platform.WINDOWS:
-\['another-recipe'\]}*
-
-`remotes`
-
-A dictionary specifying the git remote urls where sources are pulled
-from.
-
-No
-
-*remotes = {'origin': '<git://somewhere>'}*
-
-`commit`
-
-The git commit, tag or branch to use, defaulting to "sdk-*`version`*"*.*
-
-No
-
-*commit = 'my-app-branch'*
-
-`config_sh`
-
-Used to select the configuration script.
-
-No
-
-*config\_sh = 'autoreconf -fiv && sh ./configure'*
-
-`configure_options`
-
-Additional options that should be passed to the `configure` script.
-
-No
-
-*configure\_options = '--enable-something'*
-
-`use_system_libs`
-
-Whether to use system provided libs.
-
-No
-
-*use\_system\_libs = True*
-
-`btype`
-
-The build type (see `cerbero/build/build.py:BuildType` for allowed build
-types).
-
-No
-
-*btype = BuildType.CUSTOM*
-
-`stype`
-
-The source type (see `cerbero/build/source.py:SourceType` for allowed
-source types).
-
-No
-
-*stype = SourceType.CUSTOM*
-
-`files_category`
-
-A list of files that should be shipped with packages including this
-recipe *category*. See below for more details.
-
-Cerbero comes with some predefined categories that should be used if the
-files being installed match a category criteria.
-
-The predefined categories are:
-
-`libs` (for libraries), `bins` (for binaries), `devel` (for development
-files - header, pkgconfig files, etc), `python` (for python files) and
-`lang` (for language files).
-
-Note that for the `bins` and `libs` categories there is no need to
-specify the files extensions as Cerbero will do it for you.
-
-Yes\*
-
-*files\_bins = \['some-binary'\]*
-
-*files\_libs = \['libsomelib'\]*
-
-*files\_devel = \['include/something'\] files\_python =
-\['site-packages/some/pythonfile%(pext)s'\]*
-
-*files\_lang = \['foo'\]*
-
-`platform_files_category`
-
-Same as *`files_category`* but for platform specific files.
-
-No
-
-*platform\_files\_some\_category = {Platform.LINUX: \['/some/file'\]}*
-
-\* At least one “files” category should be set.
+| Attribute Name | Description | Required | Example |
+|----------------|-------------|----------|---------|
+| `name` | The recipe name. | Yes | *name = 'my-app'* |
+| `version` | The software version. | Yes | *version = '1.0'* |
+| `licenses` | A list of licenses of the software (see `cerbero/enums.py:License` for allowed licenses). | Yes | *licenses = \[License.LGPLv2Plus\]* |
+| `deps` | A list of build dependencies of the software as recipe names. | No | *deps = \['other', 'recipe', 'names'\]* |
+| `platform_deps` | Platform specific build dependencies (see `cerbero/enums.py:Platform` for allowed platforms). | No | *platform\_deps = {Platform.LINUX: \['some-recipe'\], Platform.WINDOWS: \['another-recipe'\]}* |
+| `remotes` | A dictionary specifying the git remote urls where sources are pulled from. | No | *remotes = {'origin': '<git://somewhere>'}* |
+| `commit` | The git commit, tag or branch to use, defaulting to "sdk-*`version`*"*.* | No | *commit = 'my-app-branch'* |
+| `config_sh` | Used to select the configuration script. | No | *config\_sh = 'autoreconf -fiv && sh ./configure'* |
+| `configure_options` | Additional options that should be passed to the `configure` script. | No | *configure\_options = '--enable-something'* |
+| `use_system_libs` | Whether to use system provided libs. | No | *use\_system\_libs = True* |
+| `btype` | The build type (see `cerbero/build/build.py:BuildType` for allowed build types). | No | *btype = BuildType.CUSTOM* |
+| `stype` | The source type (see `cerbero/build/source.py:SourceType` for allowed source types). | No | *stype = SourceType.CUSTOM* |
+| `files_category` | A list of files that should be shipped with packages including this recipe *category*. See below for more details. Cerbero comes with some predefined categories that should be used if the files being installed match a category criteria. The predefined categories are: `libs` (for libraries), `bins` (for binaries), `devel` (for development files - header, pkgconfig files, etc), `python` (for python files) and `lang` (for language files). *Note that for the `bins` and `libs` categories there is no need to specify the files extensions as Cerbero will do it for you.* | Yes\* | *files\_bins = \['some-binary'\]* *files\_libs = \['libsomelib'\]* *files\_devel = \['include/something'\] files\_python = \['site-packages/some/pythonfile%(pext)s'\]* *files\_lang = \['foo'\]* |
+| `platform_files_category` | Same as *`files_category`* but for platform specific files. | No | *platform\_files\_some\_category = {Platform.LINUX: \['/some/file'\]}* |
+
+> ![warning] At least one “files” category should be set.
Apart from the attributes listed above, it is also possible to override
-some Recipe methods. For example the `prepare` method can be overridden
-to do anything before the software is built, or the `install` and
-`post_install` methods for overriding what should be done during or
+some Recipe methods. For example the `prepare` method can be overridden
+to do anything before the software is built, or the `install` and
+`post_install` methods for overriding what should be done during or
after installation. Take a look at the existing recipes in
-`cerbero/recipes` for example.
+`cerbero/recipes` for example.
Alternatively, you can pass some options to cerbero-uninstalled so some
of these attributes are already set for you. For
example:
```
-./cerbero-uninstalled add-recipe --licenses "LGPL" --deps "glib,gtk+" --origin "git://git.my-app.com" --commit "git-commit-to-use" my-app 1.0
+./cerbero-uninstalled add-recipe --licenses "LGPL" --deps "glib" --origin "git://git.my-app.com" --commit "git-commit-to-use" my-app 1.0
```
-See `./cerbero-uninstalled add-recipe -h` for help.
+See `./cerbero-uninstalled add-recipe -h` for help.
-As an example, this is the recipe used to build the Snappy media player:
+As an example, this is the recipe used to build the Pitivi video editor:
```
class Recipe(recipe.Recipe):
- name = 'snappy'
- version = '0.2+git'
+ name = 'pitivi'
+ version = '0.95'
licenses = [License.GPLv2Plus]
- config_sh = 'autoreconf -fiv && sh ./configure'
- deps = ['glib', 'gstreamer', 'gst-plugins-base', 'clutter', 'clutter-gst']
- platform_deps = { Platform.LINUX: ['libXtst'] }
+ remotes = {'origin': 'git://git.gnome.org/pitivi'}
+ config_sh = 'sh ./autogen.sh --noconfigure && ./configure'
+ configure_options = "--disable-help"
+ commit = 'origin/master'
+ deps = ['gst-editing-services-1.0',
+ 'gst-python-1.0',
+ 'gst-libav-1.0',
+ 'gst-plugins-bad-1.0',
+ 'gst-plugins-ugly-1.0',
+ 'gst-transcoder',
+ 'numpy',
+ 'matplotlib',
+ 'gnome-icon-theme',
+ 'gnome-icon-theme-symbolic',
+ 'shared-mime-info'] # brings in gtk+
+
+ files_libs = ['libpitivi-1.0']
+ files_typelibs = [
+ 'Pitivi-1.0',
+ ]
use_system_libs = True
- remotes = {'upstream': 'git://git.gnome.org/snappy'}
-
- files_bins = ['snappy']
- files_data = ['share/snappy']
-
- def prepare(self):
- if self.config.target_platform == Platform.LINUX:
- self.configure_options += ' --enable-dbus' 
+ files_bins = ['pitivi']
+ files_lang = ['pitivi']
+ files_pitivi = ['lib/pitivi/python/pitivi',
+ 'share/pitivi/',
+ 'share/applications/pitivi.desktop']
```
Cerbero gets the software sources to build from a GIT repository, which
-is specified via the `git_root` configuration variable from the Cerbero
-configuration file (see the "Build from software" section in [Installing
-on Linux](Installing%2Bon%2BLinux.html)) and can be overridden by the
-`remotes` attribute inside the recipes (if setting the `origin` remote).
+is specified via the `git_root` configuration variable from the Cerbero
+configuration file (see the "Build from software" section in [Installing
+on Linux](sdk-installing-on-linux.md)) and can be overridden by the
+`remotes` attribute inside the recipes (if setting the `origin` remote).
In this case where no “commit” attribute is specified, Cerbero will use
the commit named “sdk-0.2+git” from the GIT repository when building
Snappy.
@@ -244,7 +127,7 @@ Once the recipe is ready, instruct Cerbero to build it:
./cerbero-uninstalled build my-app
```
-# Adding a package for you software
+## Adding a package for you software
To distribute your software with the SDK it is necessary to put it into
a package or installer, depending on the target platform. This is done
@@ -263,146 +146,25 @@ This will create an initial package file in `packages/my-app.package`.
The following Package attributes are used to describe your package:
-**Attribute Name**
-
-**Description**
-
-**Required**
-
-**Example**
-
-`name`
-
-The package name.
-
-Yes
-
-*name = 'my-app'*
-
-`shortdesc`
-
-A short description of the package.
-
-No
-
-*shortdesc = 'some-short-desc'*
-
-`longdesc`
-
-A long description of the package.
-
-No
-
-*longdesc = 'Some Longer Description'*
-
-`codename`
-
-The release codename.
-
-No
-
-*codename = 'MyAppReleaseName'*
-
-`vendor`
-
-Vendor for this package.
-
-No
-
-*vendor = 'MyCompany'*
-
-`url`
-
-The package url
-
-No
-
-*url = 'http://www.my-app.com'*
-
-`version`
-
-The package version.
-
-Yes
-
-*version = '1.0'*
-
-`license`
-
-The package license (see `cerbero/enums.py:License` for allowed
-licenses).
-
-Yes
-
-*license = License.LGPLv2Plus*
-
-`uuid`
-
-The package unique id
-
-Yes
-
-*uuid = '6cd161c2-4535-411f-8287-e8f6a892f853'*
-
-`deps`
-
-A list of package dependencies as package names.
-
-No
-
-*deps = \['other', 'package', 'names'\]*
-
-`sys_deps`
-
-The system dependencies for this package.
-
-No
-
-*sys\_deps= {Distro.DEBIAN: \['python'\]}*
-
-`files`
-
-A list of files included in the **runtime** package in the form
-*“recipe\_name:category1:category2:...”*
-
-If the recipe category is omitted, all categories are included.
-
-Yes\*
-
-*files = \['my-app'\]*
-
-*files = \['my-app:category1'\]*
-
-`files_devel`
-
-A list of files included in the **devel** package in the form
-*“recipe\_name:category1:category2:...”*
-
-Yes\*
-
-*files\_devel = \['my-app:category\_devel'\]*
-
-`platform_files`
-
-Same as *files* but allowing to specify different files for different
-platforms.
-
-Yes\*
-
-*platform\_files = {Platform.WINDOWS:
-\['my-app:windows\_only\_category'\]}*
-
-`platform_files_devel`
-
-Same as *files\_devel* but allowing to specify different files for
-different platforms.
-
-Yes\*
-
-*platform\_files\_devel = {Platform.WINDOWS:
-\['my-app:windows\_only\_category\_devel'\]}*
-
-\* At least one of the “files” attributes should be set.
+| Attribute Name | Description | Required | Example |
+|----------------|-------------|----------|---------|
+| `name` | The package name. | Yes | *name = 'my-app'* |
+| `shortdesc` | A short description of the package. | No | *shortdesc = 'some-short-desc'* |
+| `longdesc` | A long description of the package. | No | *longdesc = 'Some Longer Description'* |
+| `codename` | The release codename. | No | *codename = 'MyAppReleaseName'* |
+| `vendor` | Vendor for this package.| No | *vendor = 'MyCompany'* |
+| `url` | The package url | No | *url = 'http://www.my-app.com'* |
+| `version` | The package version. | Yes | *version = '1.0'* |
+| `license` | The package license (see `cerbero/enums.py:License` for allowed licenses). | Yes | *license = License.LGPLv2Plus* |
+| `uuid` | The package unique id | Yes | *uuid = '6cd161c2-4535-411f-8287-e8f6a892f853'* |
+| `deps` | A list of package dependencies as package names. | No | *deps = \['other', 'package', 'names'\]* |
+| `sys_deps` | The system dependencies for this package. | No | *sys\_deps= {Distro.DEBIAN: \['python'\]}* |
+| `files` | A list of files included in the **runtime** package in the form *“recipe\_name:category1:category2:...”* *If the recipe category is omitted, all categories are included.* | Yes\* | *files = \['my-app'\]* *files = \['my-app:category1'\]* |
+| `files_devel` | A list of files included in the **devel** package in the form *“recipe\_name:category1:category2:...”* | Yes\* | *files\_devel = \['my-app:category\_devel'\]* |
+| `platform_files` | Same as *files* but allowing to specify different files for different platforms. | Yes\* | *platform\_files = {Platform.WINDOWS: \['my-app:windows\_only\_category'\]}* |
+| `platform_files_devel` | Same as *files\_devel* but allowing to specify different files for different platforms. | Yes\* | *platform\_files\_devel = {Platform.WINDOWS: \['my-app:windows\_only\_category\_devel'\]}* |
+
+> ![warning] At least one of the “files” attributes should be set.
Alternatively you can also pass some options to `cerbero-uninstalled`,
for
@@ -412,38 +174,43 @@ example:
./cerbero-uninstalled add-package my-app 1.0 --license "LGPL" --codename MyApp --vendor MyAppVendor --url "http://www.my-app.com" --files=my-app:bins:libs --files-devel=my-app:devel --platform-files=linux:my-app:linux_specific --platform-files-devel=linux:my-app:linux_specific_devel,windows:my-app:windows_specific_devel --deps base-system --includes gstreamer-core
```
-See `./cerbero-uninstalled add-package -h` for help.
+See `./cerbero-uninstalled add-package -h` for help.
As an example, this is the package file that is used for packaging the
-`gstreamer-core` package:
+`gstreamer-core` package:
```
class Package(package.Package):
- name = 'gstreamer-codecs'
- shortdesc = 'GStreamer codecs'
- version = '2012.5'
- codename = 'Amazon'
- url = "http://www.gstreamer.com"
+
+ name = 'gstreamer-1.0-codecs'
+ shortdesc = 'GStreamer 1.0 codecs'
+ longdesc = 'GStreamer 1.0 codecs'
+ version = '1.9.0.1'
+ codename = 'Congo'
+ url = "http://gstreamer.freedesktop.org"
license = License.LGPL
vendor = 'GStreamer Project'
- uuid = '6cd161c2-4535-411f-8287-e8f6a892f853'
- deps = ['gstreamer-core']
+ org = 'org.freedesktop.gstreamer'
+ uuid = 'a2e545d5-7819-4636-9e86-3660542f08e5'
+ deps = ['gstreamer-1.0-core', 'base-crypto']
- files = ['flac:libs',
- 'jasper:libs', 'libkate:libs',
+ files = ['flac:libs', 'libkate:libs', 'libdv:libs',
'libogg:libs', 'schroedinger:libs', 'speex:libs',
- 'libtheora:libs', 'libvorbis:libs', 'wavpack:libs', 'libvpx:libs',
- 'taglib:libs',
- 'gst-plugins-base:codecs', 'gst-plugins-good:codecs',
- 'gst-plugins-bad:codecs', 'gst-plugins-ugly:codecs']
- files_devel = ['gst-plugins-base-static:codecs_devel',
- 'gst-plugins-good-static:codecs_devel',
- 'gst-plugins-bad-static:codecs_devel',
- 'gst-plugins-ugly-static:codecs_devel']
+ 'libtheora:libs', 'wavpack:libs', 'libvpx:libs',
+ 'taglib:libs', 'opus:libs', 'libvorbis:libs',
+ 'openjpeg:libs', 'openh264:libs', 'spandsp:libs',
+ 'gst-plugins-base-1.0:plugins_codecs', 'gst-plugins-good-1.0:plugins_codecs',
+ 'gst-plugins-bad-1.0:plugins_codecs', 'gst-plugins-ugly-1.0:plugins_codecs',
+ ]
+ files_devel = ['gst-plugins-base-1.0-static:plugins_codecs_devel',
+ 'gst-plugins-good-1.0-static:plugins_codecs_devel',
+ 'gst-plugins-bad-1.0-static:plugins_codecs_devel',
+ 'gst-plugins-ugly-1.0-static:plugins_codecs_devel',
+ 'gst-plugins-bad-1.0-static:codecs_devel']
platform_files = {
- Platform.LINUX: ['libdv:libs'],
- Platform.DARWIN: ['libdv:libs']
- } 
+ Platform.ANDROID: ['tremor:libs'],
+ Platform.IOS: ['tremor:libs']
+ }
```
At this point you have two main options: you could either have a single
@@ -453,29 +220,32 @@ shared version of the SDK.
### Having a private version of the SDK
To have a private version of the SDK included in a single package you
-don't have to add the `deps` variable to the package file but instead
-list all files you need in the `files` variables. If you decide to go
+don't have to add the `deps` variable to the package file but instead
+list all files you need in the `files` variables. If you decide to go
this road you must make sure that you use a different prefix than the
GStreamer SDK in the Cerbero configuration file, otherwise your package
-will have file conflicts with the GStreamer SDK.
+will have file conflicts with GStreamer.
### Having a shared version of the SDK
If you decide to use a shared version of the SDK you can create a
-package file like the other package files in the GStreamer SDK. Just
-list all packages you need in the `deps` variable and put the files your
-software needs inside the `files` variables. When building a package
+package file like the other package files in GStreamer. Just
+list all packages you need in the `deps` variable and put the files your
+software needs inside the `files` variables. When building a package
this way you must make sure that you use the same prefix and
packages\_prefix as the ones in your Cerbero configuration file.
Finally, build your package by using:
``` bash
-./cerbero-uninstalled package your-package 
+./cerbero-uninstalled package your-package
```
-Where `your-package` is the name of the `.package` file that you created
-in the `packages` directory. This command will build your software and
+Where `your-package` is the name of the `.package` file that you created
+in the `packages` directory. This command will build your software and
all its dependencies, and then make individual packages for them (both
the dependencies and your software). The resulting files will be in the
current working directory.
+
+
+ [warning]: images/icons/emoticons/warning.png \ No newline at end of file
diff --git a/sdk-windows-deployment.md b/sdk-windows-deployment.md
index 3f46412..6fb5097 100644
--- a/sdk-windows-deployment.md
+++ b/sdk-windows-deployment.md
@@ -1,57 +1,57 @@
# Windows deployment
-This page explains how to deploy GStreamer along your application. There
-are different mechanisms, which have been reviewed in [Deploying your
-application](Deploying%2Byour%2Bapplication.html). The details for some
-of the mechanisms are given here, and more options might be added to
-this documentation in the future.
+This page explains how to deploy GStreamer along your
+application. There are different mechanisms, which have been reviewed
+in [](sdk-deploying-your-application.md). The details for some of the
+mechanisms are given here, and more options might be added to this
+documentation in the future.
-# Shared GStreamer
+## Shared GStreamer
This is the easiest way to deploy GStreamer, although most of the time
it installs unnecessary files which grow the size of the installer and
-the target drive free space requirements. Since the SDK might be shared
+the target drive free space requirements. Since GStreamer might be shared
among all applications that use it, though, the extra space requirements
are somewhat blurred.
-Simply pack the GStreamer SDK **runtime** installer ([the same one you
-installed in your development machine](Installing%2Bon%2BWindows.html))
+Simply pack GStreamer **runtime** installer ([the same one you
+installed in your development machine](sdk-installing-on-windows.md))
inside your installer (or download it from your installer) and execute
-it silently using `msiexec`. `msiexec` is the tool that wraps most of
+it silently using `msiexec`. `msiexec` is the tool that wraps most of
the Windows Installer functionality and offers a number of options to
suit your needs. You can review these options by
-executing `msiexec` without parameters. For example:
+executing `msiexec` without parameters. For example using 1.8.1:
```
-msiexec /i gstreamer-sdk-2012.9-x86.msi
+msiexec /i gstreamer-1.0-x86-1.8.1.msi
```
This will bring up the installation dialog as if the user had
-double-clicked on the `msi` file. Usually, you will want to let the user
-choose where they want to install the SDK. An environment variable will
+double-clicked on the `msi` file. Usually, you will want to let the user
+choose where they want to install GStreamer. An environment variable will
let your application locate it later on.
-# Private deployment of GStreamer
+## Private deployment of GStreamer
-You can use the same method as the shared SDK, but instruct its
+You can use the same method as the shared GStreamer, but instruct its
installer to deploy to your application’s folder (or a
-subfolder). Again, use the `msiexec` parameters that suit you best. For
+subfolder). Again, use the `msiexec` parameters that suit you best. For
example:
```
-msiexec /passive INSTALLDIR=C:\Desired\Folder /i gstreamer-sdk-2012.9-x86.msi
+msiexec /passive INSTALLDIR=C:\Desired\Folder /i gstreamer-1.0-x86-1.8.1.msi
```
-This will install the SDK to `C:\Desired\Folder`  showing a progress
+This will install GStreamer to `C:\Desired\Folder` showing a progress
dialog, but not requiring user intervention.
-# Deploy only necessary files, by manually picking them
+## Deploy only necessary files, by manually picking them
On the other side of the spectrum, if you want to reduce the space
requirements (and installer size) to the maximum, you can manually
choose which GStreamer libraries to deploy. Unfortunately, you are on
your own on this road, besides using the [Dependency
-Walker](http://www.dependencywalker.com/) tool to discover inter-DLL
+Walker](http://www.dependencywalker.com/) tool to discover inter-DLL
dependencies.
Bear in mind that GStreamer is modular in nature. Plug-ins are loaded
@@ -59,15 +59,15 @@ depending on the media that is being played, so, if you do not know in
advance what files you are going to play, you do not know which DLLs you
need to deploy.
-# Deploy only necessary packages, using provided Merge Modules
+## Deploy only necessary packages, using provided Merge Modules
If you are building your installer using one of the Professional
-editions of [Visual
+editions of [Visual
Studio](http://www.microsoft.com/visualstudio/en-us/products/2010-editions/professional/overview)
or [WiX](http://wix.sf.net) you can take advantage of pre-packaged
[Merge
Modules](http://msdn.microsoft.com/en-us/library/windows/desktop/aa369820\(v=vs.85\).aspx).
-The GStreamer SDK is divided in packages, which roughly take care of
+GStreamer is divided in packages, which roughly take care of
different tasks. There is the core package, the playback package, the
networking package, etc. Each package contains the necessary libraries
and files to accomplish its task.
@@ -78,179 +78,32 @@ project for your application with Visual Studio and then add the Merge
Modules for the GStreamer packages your application needs.
This will produce a smaller installer than deploying the complete
-GStreamer SDK, without the added burden of having to manually pick each
+GStreamer, without the added burden of having to manually pick each
library. You just need to know which packages your application requires.
-![](images/icons/grey_arrow_down.gif)Available packages (Click to
-expand)
+| Package name | Dependencies | Licenses | Description |
+|--------------|--------------|----------|-------------|
+| base-system-1.0 | |JPEG, FreeType, BSD-like, LGPL, LGPL-2+, LGPL-2.1, LibPNG and MIT | Base system dependencies |
+| gstreamer-1.0-capture | gstreamer-1.0-core, gstreamer-1.0-encoding | LGPL and LGPL-2+ | GStreamer plugins for capture |
+| gstreamer-1.0-codecs | base-crypto, gstreamer-1.0-core | BSD, Jasper-2.0, BSD-like, LGPL, LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+ | GStreamer codecs |
+| gstreamer-1.0-codecs-gpl | gstreamer-1.0-core | BSD-like, LGPL, LGPL-2+ and LGPL-2.1+ | GStreamer codecs under the GPL license and/or with patents issues |
+| gstreamer-1.0-core | base-system-1.0 | LGPL and LGPL-2+ | GStreamer core |
+| gstreamer-1.0-dvd | gstreamer-1.0-core | GPL-2+, LGPL and LGPL-2+ | GStreamer DVD support |
+| gstreamer-1.0-effects | gstreamer-1.0-core | LGPL and LGPL-2+ | GStreamer effects and instrumentation plugins |
+| gstreamer-1.0-net | base-crypto, gstreamer-1.0-core | GPL-3, LGPL, LGPL-2+, LGPL-2.1+ and LGPL-3+ | GStreamer plugins for network protocols |
+| gstreamer-1.0-playback | gstreamer-1.0-core | LGPL and LGPL-2+ | GStreamer plugins for playback |
+| gstreamer-1.0-system | gstreamer-1.0-core | LGPL, LGPL-2+ and LGPL-2.1+ | GStreamer system plugins |
+| gstreamer-1.0-visualizers | gstreamer-1.0-core | LGPL and LGPL-2+ | GStreamer visualization plugins |
+| gstreamer-1.0-encoding | gstreamer-1.0-core, gstreamer-1.0-playback | LGPL and LGPL2+ | GStreamer plugins for encoding |
+| gstreamer-1.0-editing | gstreamer-1.0-core, gstreamer-1.0-devtools | LGPL and LGPL2+ | GStreamer libraries and plugins for non linear editing |
+| gstreamer-1.0-devtools | gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer developers tools |
+| gstreamer-1.0-libav | gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer plugins wrapping ffmpeg |
+| gstreamer-1.0-net-restricted | base-crypto, gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer plugins for network protocols with potential patent issues in some countries |
+| gstreamer-1.0-codecs-restricted | gstreamer-1.0-core | LGPL and LGPL2+ | GStreamer restricted codecs with potential patent issues in some countries |
+| base-crypto | base-system-1.0 | LGPL and LGPL2+ | Cryptographic libraries |
-<table>
-<colgroup>
-<col width="25%" />
-<col width="25%" />
-<col width="25%" />
-<col width="25%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>Package name</th>
-<th>Dependencies</th>
-<th>Licenses</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td>base-system</td>
-<td> </td>
-<td>JPEG, FreeType, BSD-like, LGPL,<br />
-LGPL-2+, LGPL-2.1, LibPNG and MIT</td>
-<td>Base system dependencies</td>
-</tr>
-<tr class="even">
-<td>gobject-python</td>
-<td>base-system</td>
-<td>LGPL</td>
-<td>GLib/GObject python bindings</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-capture</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer plugins for capture</td>
-</tr>
-<tr class="even">
-<td>gstreamer-clutter</td>
-<td>base-system, gtk+-2.0, gstreamer-core</td>
-<td>LGPL</td>
-<td>GStreamer Clutter support</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-codecs</td>
-<td>base-system, gstreamer-core</td>
-<td>BSD, Jasper-2.0, BSD-like, LGPL,<br />
-LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+</td>
-<td>GStreamer codecs</td>
-</tr>
-<tr class="even">
-<td>gstreamer-codecs-gpl</td>
-<td>base-system, gstreamer-core</td>
-<td>BSD-like, LGPL, LGPL-2+ and LGPL-2.1+</td>
-<td>GStreamer codecs under the GPL license and/or with patents issues</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-core</td>
-<td>base-system</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer core</td>
-</tr>
-<tr class="even">
-<td>gstreamer-dvd</td>
-<td>base-system, gstreamer-core</td>
-<td>GPL-2+, LGPL and LGPL-2+</td>
-<td>GStreamer DVD support</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-effects</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer effects and instrumentation plugins</td>
-</tr>
-<tr class="even">
-<td>gstreamer-networking</td>
-<td>base-system, gstreamer-core</td>
-<td>GPL-3, LGPL, LGPL-2+, LGPL-2.1+<br />
-and LGPL-3+</td>
-<td>GStreamer plugins for network protocols</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-playback</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer plugins for playback</td>
-</tr>
-<tr class="even">
-<td>gstreamer-python</td>
-<td>base-system, gobject-python,<br />
-gstreamer-core</td>
-<td>LGPL and LGPL-2.1+</td>
-<td>GStreamer python bindings</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-system</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL, LGPL-2+ and LGPL-2.1+</td>
-<td>GStreamer system plugins</td>
-</tr>
-<tr class="even">
-<td>gstreamer-tutorials</td>
-<td> </td>
-<td>LGPL</td>
-<td>Tutorials for GStreamer</td>
-</tr>
-<tr class="odd">
-<td>gstreamer-visualizers</td>
-<td>base-system, gstreamer-core</td>
-<td>LGPL and LGPL-2+</td>
-<td>GStreamer visualization plugins</td>
-</tr>
-<tr class="even">
-<td>gtk+-2.0</td>
-<td>base-system</td>
-<td>LGPL</td>
-<td>Gtk toolkit</td>
-</tr>
-<tr class="odd">
-<td>gtk+-2.0-python</td>
-<td>base-system, gtk+-2.0</td>
-<td>LGPL and LGPL-2.1+</td>
-<td>Gtk python bindings</td>
-</tr>
-<tr class="even">
-<td>snappy</td>
-<td><p>base-system, gstreamer-clutter,<br />
-gtk+-2.0, gstreamer-playback,<br />
-gstreamer-core, gstreamer-codecs</p></td>
-<td>LGPL</td>
-<td>Snappy media player</td>
-</tr>
-</tbody>
-</table>
If you include a merge module in your deployment project, remember to
-include also its dependencies. Otherwise, the project will build
+include also its dependencies. Otherwise, the project will build
correctly and install flawlessly, but, when executing your application,
-it will miss files.
-
-Get the ZIP file with all Merge Modules for your architecture:
-
-<table>
-<colgroup>
-<col width="100%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>32 bits</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td><p><a href="http://cdn.gstreamer.com/windows/x86/gstreamer-sdk-x86-2013.6-merge-modules.zip" class="external-link">GStreamer SDK 2013.6 (Congo) for Windows 32 bits (Merge Modules)</a> - <a href="http://www.freedesktop.org/software/gstreamer-sdk/data/packages/windows/x86/gstreamer-sdk-x86-2013.6-merge-modules.zip" class="external-link">mirror</a> - <a href="http://cdn.gstreamer.com/windows/x86/gstreamer-sdk-x86-2013.6-merge-modules.zip.md5" class="external-link">md5</a> - <a href="http://cdn.gstreamer.com/windows/x86/gstreamer-sdk-x86-2013.6-merge-modules.zip.sha1" class="external-link">sha1</a></p></td>
-</tr>
-<tr class="even">
-<td><span style="color: rgb(0,0,0);">64 bits</span></td>
-</tr>
-<tr class="odd">
-<td><a href="http://cdn.gstreamer.com/windows/x86-64/gstreamer-sdk-x86_64-2013.6-merge-modules.zip" class="external-link">GStreamer SDK 2013.6 (Congo) for Windows 64 bits (Merge Modules)</a> - <a href="http://www.freedesktop.org/software/gstreamer-sdk/data/packages/windows/x86-64/gstreamer-sdk-x86_64-2013.6-merge-modules.zip" class="external-link">mirror</a> - <a href="http://cdn.gstreamer.com/windows/x86-64/gstreamer-sdk-x86_64-2013.6-merge-modules.zip.md5" class="external-link">md5</a> - <a href="http://cdn.gstreamer.com/windows/x86-64/gstreamer-sdk-x86_64-2013.6-merge-modules.zip.sha1" class="external-link">sha1</a></td>
-</tr>
-</tbody>
-</table>
-
-<table>
-<tbody>
-<tr class="odd">
-<td><img src="images/icons/emoticons/warning.png" width="16" height="16" /></td>
-<td><p>Due to the size of these files, usage of a <a href="http://en.wikipedia.org/wiki/Download_manager" class="external-link">Download Manager</a> is <strong>highly recommended</strong>. Take a look at <a href="http://en.wikipedia.org/wiki/Comparison_of_download_managers" class="external-link">this list</a> if you do not have one installed. If, after downloading, the installer reports itself as corrupt, chances are that the connection ended before the file was complete. A Download Manager will typically re-start the process and fetch the missing parts.</p></td>
-</tr>
-</tbody>
-</table>
+it will miss files. \ No newline at end of file