From e3511e3a2a047c3f6b780fa8a3841939eedadc6b Mon Sep 17 00:00:00 2001 From: Olivier Crête Date: Fri, 17 Jun 2016 17:20:43 -0400 Subject: Update deploying sections --- TODO.md | 8 +- attachments/2424841.png | Bin 85057 -> 0 bytes attachments/2424842.png | Bin 87853 -> 0 bytes sdk-deploying-your-application.md | 62 ++-- sdk-installing.md | 8 +- sdk-mac-osx-deployment.md | 312 +++++------------ sdk-multiplatform-deployment-using-cerbero.md | 482 +++++++------------------- sdk-windows-deployment.md | 241 +++---------- 8 files changed, 291 insertions(+), 822 deletions(-) delete mode 100644 attachments/2424841.png delete mode 100644 attachments/2424842.png 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 Binary files a/attachments/2424841.png and /dev/null differ diff --git a/attachments/2424842.png b/attachments/2424842.png deleted file mode 100644 index 454ab31..0000000 Binary files a/attachments/2424842.png and /dev/null 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. -

Multiplatform packaging system

-

 The same system is used to package your application for all platforms

+

Multiplatform packaging system

+

The same system is used to package your application for all platforms

@@ -46,24 +46,24 @@ pros and cons of each option.

Single-platform packaging system

Your application is packaged using a different system on each platform.

-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: -  + Pros Cons -

Shared SDK

-

The GStreamer SDK is installed independently of your application, as a prerequisite, in a common place in the target computer (C:\Program Files, for example). You application uses an environment variable to locate it.

+

Shared GStreamer

+

GStreamer is installed independently of your application, as a prerequisite, in a common place in the target computer (C:\Program Files, for example). You application uses an environment variable to locate it.

-

Private SDK with dynamic linking

-

Your application deploys the GStreamer SDK to a private folder.

+

Private GStreamer with dynamic linking

+

Your application deploys GStreamer to a private folder.

-

Private SDK with static linking

-

Your application links statically against the GStreamer SDK, so it effectively becomes part of your application binary.

+

Private GStreamer with static linking

+

Your application links statically against GStreamer, so it effectively becomes part of your application binary.

@@ -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) - - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Package nameDependenciesLicensesDescription
base-system JPEG, FreeType, BSD-like, LGPL,
-LGPL-2+, LGPL-2.1, LibPNG and MIT
Base system dependencies
gobject-pythonbase-systemLGPLGLib/GObject python bindings
gstreamer-capturebase-system, gstreamer-coreLGPL and LGPL-2+GStreamer plugins for capture
gstreamer-clutterbase-system, gtk+-2.0, gstreamer-coreLGPLGStreamer Clutter support
gstreamer-codecsbase-system, gstreamer-coreBSD, Jasper-2.0, BSD-like, LGPL,
-LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+
GStreamer codecs
gstreamer-codecs-gplbase-system, gstreamer-coreBSD-like, LGPL, LGPL-2+ and LGPL-2.1+GStreamer codecs under the GPL license and/or with patents issues
gstreamer-corebase-systemLGPL and LGPL-2+GStreamer core
gstreamer-dvdbase-system, gstreamer-coreGPL-2+, LGPL and LGPL-2+GStreamer DVD support
gstreamer-effectsbase-system, gstreamer-coreLGPL and LGPL-2+GStreamer effects and instrumentation plugins
gstreamer-networkingbase-system, gstreamer-coreGPL-3, LGPL, LGPL-2+, LGPL-2.1+
-and LGPL-3+
GStreamer plugins for network protocols
gstreamer-playbackbase-system, gstreamer-coreLGPL and LGPL-2+GStreamer plugins for playback
gstreamer-pythonbase-system, gobject-python,
-gstreamer-core
LGPL and LGPL-2.1+GStreamer python bindings
gstreamer-systembase-system, gstreamer-coreLGPL, LGPL-2+ and LGPL-2.1+GStreamer system plugins
gstreamer-tutorials LGPLTutorials for GStreamer
gstreamer-visualizersbase-system, gstreamer-coreLGPL and LGPL-2+GStreamer visualization plugins
gtk+-2.0base-systemLGPLGtk toolkit
gtk+-2.0-pythonbase-system, gtk+-2.0LGPL and LGPL-2.1+Gtk python bindings
snappy

base-system, gstreamer-clutter,
-gtk+-2.0, gstreamer-playback,
-gstreamer-core, gstreamer-codecs

LGPLSnappy media player
- -Get the disk image file with all the packages: - - --- - - - - - - - - - - -
Universal

GStreamer SDK 2013.6 (Congo) for Mac OS X (Deployment Packages) - mirror - md5 - sha1

- - - - - - - - -

Due to the size of these files, usage of a Download Manager is highly recommended. Take a look at this list 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.

- -# 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': ''}* - -`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': ''}* | +| `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 | - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Package nameDependenciesLicensesDescription
base-system JPEG, FreeType, BSD-like, LGPL,
-LGPL-2+, LGPL-2.1, LibPNG and MIT
Base system dependencies
gobject-pythonbase-systemLGPLGLib/GObject python bindings
gstreamer-capturebase-system, gstreamer-coreLGPL and LGPL-2+GStreamer plugins for capture
gstreamer-clutterbase-system, gtk+-2.0, gstreamer-coreLGPLGStreamer Clutter support
gstreamer-codecsbase-system, gstreamer-coreBSD, Jasper-2.0, BSD-like, LGPL,
-LGPL-2, LGPL-2+, LGPL-2.1 and LGPL-2.1+
GStreamer codecs
gstreamer-codecs-gplbase-system, gstreamer-coreBSD-like, LGPL, LGPL-2+ and LGPL-2.1+GStreamer codecs under the GPL license and/or with patents issues
gstreamer-corebase-systemLGPL and LGPL-2+GStreamer core
gstreamer-dvdbase-system, gstreamer-coreGPL-2+, LGPL and LGPL-2+GStreamer DVD support
gstreamer-effectsbase-system, gstreamer-coreLGPL and LGPL-2+GStreamer effects and instrumentation plugins
gstreamer-networkingbase-system, gstreamer-coreGPL-3, LGPL, LGPL-2+, LGPL-2.1+
-and LGPL-3+
GStreamer plugins for network protocols
gstreamer-playbackbase-system, gstreamer-coreLGPL and LGPL-2+GStreamer plugins for playback
gstreamer-pythonbase-system, gobject-python,
-gstreamer-core
LGPL and LGPL-2.1+GStreamer python bindings
gstreamer-systembase-system, gstreamer-coreLGPL, LGPL-2+ and LGPL-2.1+GStreamer system plugins
gstreamer-tutorials LGPLTutorials for GStreamer
gstreamer-visualizersbase-system, gstreamer-coreLGPL and LGPL-2+GStreamer visualization plugins
gtk+-2.0base-systemLGPLGtk toolkit
gtk+-2.0-pythonbase-system, gtk+-2.0LGPL and LGPL-2.1+Gtk python bindings
snappy

base-system, gstreamer-clutter,
-gtk+-2.0, gstreamer-playback,
-gstreamer-core, gstreamer-codecs

LGPLSnappy media player
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: - - --- - - - - - - - - - - - - - - - - -
32 bits

GStreamer SDK 2013.6 (Congo) for Windows 32 bits (Merge Modules) - mirror - md5 - sha1

64 bits
GStreamer SDK 2013.6 (Congo) for Windows 64 bits (Merge Modules) - mirror - md5 - sha1
- - - - - - - - -

Due to the size of these files, usage of a Download Manager is highly recommended. Take a look at this list 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.

+it will miss files. \ No newline at end of file -- cgit v1.2.3