mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
Update deploying sections
This commit is contained in:
parent
3d0883c6ef
commit
e3511e3a2a
8 changed files with 286 additions and 817 deletions
8
TODO.md
8
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]
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 83 KiB |
Binary file not shown.
Before Width: | Height: | Size: 86 KiB |
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
are somewhat blurred.
|
||||
|
||||
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
|
||||
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)
|
||||
| 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>
|
||||
|
||||
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>
|
||||
## Relocation of GStreamer in OS X
|
||||
|
||||
<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
|
||||
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)
|
||||
|
|
|
@ -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
|
|
@ -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.
|
Loading…
Reference in a new issue