Remove all reference to the SDK in pages names
10
TODO.md
@ -5,13 +5,13 @@ gstreamer.com content to hotdoc
|
|||||||
|
|
||||||
Pages to review:
|
Pages to review:
|
||||||
- [installing]
|
- [installing]
|
||||||
- sdk-installing-on-windows.md
|
- installing-on-windows.md
|
||||||
|
|
||||||
For-later pages:
|
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]
|
- tutorial-qt-tutorials.md [tpm: this should all be rewritten from scratch with qmlglsink; QtGStreamer is outdated and unmaintained, we should not promote it]
|
||||||
- sdk-basic-media-player.md
|
- basic-media-player.md
|
||||||
- sdk-qt-gstreamer-vs-c-gstreamer.md
|
- qt-gstreamer-vs-c-gstreamer.md
|
||||||
- sdk-using-appsink-appsrc-in-qt.md
|
- using-appsink-appsrc-in-qt.md
|
||||||
|
|
||||||
|
|
||||||
Deleted pages:
|
Deleted pages:
|
||||||
|
@ -238,4 +238,4 @@ To cross compile for iOS from OS X, use the configuration file
|
|||||||
[Windows Driver Kit 7.1.0]: http://msdn.microsoft.com/en-us/windows/hardware/hh852365
|
[Windows Driver Kit 7.1.0]: http://msdn.microsoft.com/en-us/windows/hardware/hh852365
|
||||||
[XCode]: https://developer.apple.com/devcenter/ios/index.action#downloads
|
[XCode]: https://developer.apple.com/devcenter/ios/index.action#downloads
|
||||||
[here]: http://www.freedesktop.org/software/gstreamer-sdk/cerbero.cbc.template
|
[here]: http://www.freedesktop.org/software/gstreamer-sdk/cerbero.cbc.template
|
||||||
[Installing GStreamer]: sdk-installing.md
|
[Installing GStreamer]: installing.md
|
@ -1,7 +1,7 @@
|
|||||||
# Mac OS X deployment
|
# Mac OS X deployment
|
||||||
|
|
||||||
This page explains how to deploy GStreamer along your application. There
|
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
|
are different mechanisms, which have been reviewed in [](deploying-your-application.md). The details for some
|
||||||
of the mechanisms are given here, and more options might be added to
|
of the mechanisms are given here, and more options might be added to
|
||||||
this documentation in the future.
|
this documentation in the future.
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ are somewhat blurred.
|
|||||||
|
|
||||||
With PackageMaker, simply add GStreamer **runtime ** disk image
|
With PackageMaker, simply add GStreamer **runtime ** disk image
|
||||||
([the same one you used to install the runtime in your development
|
([the same one you used to install the runtime in your development
|
||||||
machine](sdk-installing-on-mac-osx.md)) inside your installer
|
machine](installing-on-mac-osx.md)) inside your installer
|
||||||
package and create a post-install script that mounts the disk image and
|
package and create a post-install script that mounts the disk image and
|
||||||
installs GStreamer package. You can use the following example, where you
|
installs GStreamer package. You can use the following example, where you
|
||||||
should replace `$INSTALL_PATH` with the path where your installer copied
|
should replace `$INSTALL_PATH` with the path where your installer copied
|
@ -12,11 +12,11 @@ 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.
|
your application and its dependencies and package them all together.
|
||||||
|
|
||||||
Read [](sdk-building-from-source-using-cerbero.md) to learn how
|
Read [](building-from-source-using-cerbero.md) to learn how
|
||||||
to install and use Cerbero.
|
to install and use Cerbero.
|
||||||
|
|
||||||
At this point, after reading the Build from source section in
|
At this point, after reading the Build from source section in
|
||||||
[](sdk-building-from-source-using-cerbero.md), you should be able to
|
[](building-from-source-using-cerbero.md), you should be able to
|
||||||
build GStreamer from source and are ready to create recipe and package
|
build GStreamer from source and are ready to create recipe and package
|
||||||
files for your application.
|
files for your application.
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ class Recipe(recipe.Recipe):
|
|||||||
Cerbero gets the software sources to build from a GIT repository, which
|
Cerbero gets the software sources to build from a GIT repository, which
|
||||||
is specified via the `git_root` configuration variable from the Cerbero
|
is specified via the `git_root` configuration variable from the Cerbero
|
||||||
configuration file (see the "Build from software" section in [Installing
|
configuration file (see the "Build from software" section in [Installing
|
||||||
on Linux](sdk-installing-on-linux.md)) and can be overridden by the
|
on Linux](installing-on-linux.md)) and can be overridden by the
|
||||||
`remotes` attribute inside the recipes (if setting the `origin` remote).
|
`remotes` attribute inside the recipes (if setting the `origin` remote).
|
||||||
In this case where no “commit” attribute is specified, Cerbero will use
|
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
|
the commit named “sdk-0.2+git” from the GIT repository when building
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This page explains how to deploy GStreamer along your
|
This page explains how to deploy GStreamer along your
|
||||||
application. There are different mechanisms, which have been reviewed
|
application. There are different mechanisms, which have been reviewed
|
||||||
in [](sdk-deploying-your-application.md). The details for some of the
|
in [](deploying-your-application.md). The details for some of the
|
||||||
mechanisms are given here, and more options might be added to this
|
mechanisms are given here, and more options might be added to this
|
||||||
documentation in the future.
|
documentation in the future.
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ among all applications that use it, though, the extra space requirements
|
|||||||
are somewhat blurred.
|
are somewhat blurred.
|
||||||
|
|
||||||
Simply pack GStreamer **runtime** installer ([the same one you
|
Simply pack GStreamer **runtime** installer ([the same one you
|
||||||
installed in your development machine](sdk-installing-on-windows.md))
|
installed in your development machine](installing-on-windows.md))
|
||||||
inside your installer (or download it from your installer) and execute
|
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
|
the Windows Installer functionality and offers a number of options to
|
@ -122,7 +122,7 @@ The following pages give further directions for some of the above
|
|||||||
options.
|
options.
|
||||||
|
|
||||||
- Platform-specific packaging methods:
|
- Platform-specific packaging methods:
|
||||||
- For [Mac OS X](sdk-mac-osx-deployment.md)
|
- For [Mac OS X](deploying-mac-osx.md)
|
||||||
- For [Windows](sdk-windows-deployment.md)
|
- For [Windows](deploying-windows.md)
|
||||||
- [Multiplatform deployment using
|
- [Multiplatform deployment using
|
||||||
Cerbero](sdk-multiplatform-deployment-using-cerbero.md)
|
Cerbero](deploying-multiplatform-using-cerbero.md)
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 115 KiB After Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 159 KiB |
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 211 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
@ -293,7 +293,7 @@ and used as follows:
|
|||||||
| `GSTREAMER_PLUGINS_ENCODING` | encodebin |
|
| `GSTREAMER_PLUGINS_ENCODING` | encodebin |
|
||||||
| `GSTREAMER_PLUGINS_GES` | nle |
|
| `GSTREAMER_PLUGINS_GES` | nle |
|
||||||
|
|
||||||
Build and run your application as explained in the [Building the tutorial](sdk-installing-for-android-development.md#building-the-tutorials) section.
|
Build and run your application as explained in the [Building the tutorial](installing-for-android-development.md#building-the-tutorials) section.
|
||||||
|
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[Android SDK]: http://developer.android.com/sdk/index.html
|
[Android SDK]: http://developer.android.com/sdk/index.html
|
@ -85,4 +85,4 @@ keep development consistent across all the platforms the SDK supports.
|
|||||||
Once a project has been created using a GStreamer SDK Template, it is
|
Once a project has been created using a GStreamer SDK Template, it is
|
||||||
ready to build and run. All necessary infrastructure is already in
|
ready to build and run. All necessary infrastructure is already in
|
||||||
place. To understand what files have been created and how they interact,
|
place. To understand what files have been created and how they interact,
|
||||||
take a look at the [iOS tutorials](sdk-ios-tutorials.md).
|
take a look at the [iOS tutorials](tutorials-ios.md).
|
@ -51,7 +51,7 @@ There are 3 sets of files in GStreamer binaries:
|
|||||||
Modules](http://msdn.microsoft.com/en-us/library/windows/desktop/aa369820%28v=vs.85%29.aspx)
|
Modules](http://msdn.microsoft.com/en-us/library/windows/desktop/aa369820%28v=vs.85%29.aspx)
|
||||||
files are **additional** files you can use to deploy GStreamer binaries
|
files are **additional** files you can use to deploy GStreamer binaries
|
||||||
alongside your application (see [Windows
|
alongside your application (see [Windows
|
||||||
deployment](sdk-windows-deployment.md)).
|
deployment](deploying-windows.md)).
|
||||||
|
|
||||||
Get **the Runtime and Development files** installers appropriate for
|
Get **the Runtime and Development files** installers appropriate for
|
||||||
your architecture from here:
|
your architecture from here:
|
@ -6,10 +6,10 @@ short-description: Download and install GStreamer
|
|||||||
|
|
||||||
## Choose your platform by clicking on the corresponding logo
|
## Choose your platform by clicking on the corresponding logo
|
||||||
|
|
||||||
[](sdk-installing-on-mac-osx.md)
|
[](installing-on-mac-osx.md)
|
||||||
[](sdk-installing-on-windows.md)
|
[](installing-on-windows.md)
|
||||||
[](sdk-installing-for-android-development.md)
|
[](installing-for-android-development.md)
|
||||||
[](sdk-installing-for-ios-development.md)
|
[](installing-for-ios-development.md)
|
||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
|
|
||||||
@ -20,4 +20,4 @@ environments, you will just need to make sure you have the development
|
|||||||
packages installed (refer to your distribution documentation for more
|
packages installed (refer to your distribution documentation for more
|
||||||
information). If you really want to run upstream style binaries on
|
information). If you really want to run upstream style binaries on
|
||||||
Linux, you can always follow the instructions to [build from source
|
Linux, you can always follow the instructions to [build from source
|
||||||
using cerbero](sdk-building-from-source-using-cerbero.md).
|
using cerbero](building-from-source-using-cerbero.md).
|
108
sitemap.txt
@ -1,11 +1,11 @@
|
|||||||
index.md
|
index.md
|
||||||
sdk-installing.md
|
installing.md
|
||||||
sdk-installing-for-android-development.md
|
installing-for-android-development.md
|
||||||
sdk-installing-for-ios-development.md
|
installing-for-ios-development.md
|
||||||
sdk-installing-on-mac-osx.md
|
installing-on-mac-osx.md
|
||||||
sdk-installing-on-windows.md
|
installing-on-windows.md
|
||||||
sdk-installing-on-linux.md
|
installing-on-linux.md
|
||||||
sdk-building-from-source-using-cerbero.md
|
building-from-source-using-cerbero.md
|
||||||
manual-index.md
|
manual-index.md
|
||||||
manual-introduction.md
|
manual-introduction.md
|
||||||
manual-gstreamer.md
|
manual-gstreamer.md
|
||||||
@ -40,54 +40,54 @@ index.md
|
|||||||
manual-integration.md
|
manual-integration.md
|
||||||
manual-licensing.md
|
manual-licensing.md
|
||||||
manual-quotes.md
|
manual-quotes.md
|
||||||
sdk-tutorials.md
|
tutorials.md
|
||||||
sdk-basic-tutorials.md
|
tutorials-basic.md
|
||||||
sdk-basic-tutorial-hello-world.md
|
tutorial-basic-hello-world.md
|
||||||
sdk-basic-tutorial-concepts.md
|
tutorial-basic-concepts.md
|
||||||
sdk-basic-tutorial-dynamic-pipelines.md
|
tutorial-basic-dynamic-pipelines.md
|
||||||
sdk-basic-tutorial-time-management.md
|
tutorial-basic-time-management.md
|
||||||
sdk-basic-tutorial-toolkit-integration.md
|
tutorial-basic-toolkit-integration.md
|
||||||
sdk-basic-tutorial-media-formats-and-pad-capabilities.md
|
tutorial-basic-media-formats-and-pad-capabilities.md
|
||||||
sdk-basic-tutorial-multithreading-and-pad-availability.md
|
tutorial-basic-multithreading-and-pad-availability.md
|
||||||
sdk-basic-tutorial-short-cutting-the-pipeline.md
|
tutorial-basic-short-cutting-the-pipeline.md
|
||||||
sdk-basic-tutorial-media-information-gathering.md
|
tutorial-basic-media-information-gathering.md
|
||||||
sdk-basic-tutorial-gstreamer-tools.md
|
tutorial-basic-gstreamer-tools.md
|
||||||
sdk-basic-tutorial-debugging-tools.md
|
tutorial-basic-debugging-tools.md
|
||||||
sdk-basic-tutorial-streaming.md
|
tutorial-basic-streaming.md
|
||||||
sdk-basic-tutorial-playback-speed.md
|
tutorial-basic-playback-speed.md
|
||||||
sdk-basic-tutorial-handy-elements.md
|
tutorial-basic-handy-elements.md
|
||||||
sdk-basic-tutorial-platform-specific-elements.md
|
tutorial-basic-platform-specific-elements.md
|
||||||
sdk-playback-tutorials.md
|
tutorials-playback.md
|
||||||
sdk-playback-tutorial-playbin-usage.md
|
tutorial-playback-playbin-usage.md
|
||||||
sdk-playback-tutorial-subtitle-management.md
|
tutorial-playback-subtitle-management.md
|
||||||
sdk-playback-tutorial-short-cutting-the-pipeline.md
|
tutorial-playback-short-cutting-the-pipeline.md
|
||||||
sdk-playback-tutorial-progressive-streaming.md
|
tutorial-playback-progressive-streaming.md
|
||||||
sdk-playback-tutorial-color-balance.md
|
tutorial-playback-color-balance.md
|
||||||
sdk-playback-tutorial-audio-visualization.md
|
tutorial-playback-audio-visualization.md
|
||||||
sdk-playback-tutorial-custom-playbin-sinks.md
|
tutorial-playback-custom-playbin-sinks.md
|
||||||
sdk-playback-tutorial-hardware-accelerated-video-decoding.md
|
tutorial-playback-hardware-accelerated-video-decoding.md
|
||||||
sdk-playback-tutorial-digital-audio-pass-through.md
|
tutorial-playback-digital-audio-pass-through.md
|
||||||
sdk-android-tutorials.md
|
tutorials-android.md
|
||||||
sdk-android-tutorial-link-against-gstreamer.md
|
tutorial-android-link-against-gstreamer.md
|
||||||
sdk-android-tutorial-a-running-pipeline.md
|
tutorial-android-a-running-pipeline.md
|
||||||
sdk-android-tutorial-video.md
|
tutorial-android-video.md
|
||||||
sdk-android-tutorial-media-player.md
|
tutorial-android-media-player.md
|
||||||
sdk-android-tutorial-a-complete-media-player.md
|
tutorial-android-a-complete-media-player.md
|
||||||
sdk-ios-tutorials.md
|
tutorials-ios.md
|
||||||
sdk-ios-tutorial-link-against-gstreamer.md
|
tutorial-ios-link-against-gstreamer.md
|
||||||
sdk-ios-tutorial-a-running-pipeline.md
|
tutorial-ios-a-running-pipeline.md
|
||||||
sdk-ios-tutorial-video.md
|
tutorial-ios-video.md
|
||||||
sdk-ios-tutorial-a-basic-media-player.md
|
tutorial-ios-a-basic-media-player.md
|
||||||
sdk-ios-tutorial-a-complete-media-player.md
|
tutorial-ios-a-complete-media-player.md
|
||||||
sdk-table-of-concepts.md
|
table-of-concepts.md
|
||||||
sdk-deploying-your-application.md
|
deploying-your-application.md
|
||||||
sdk-mac-osx-deployment.md
|
deploying-mac-osx.md
|
||||||
sdk-windows-deployment.md
|
deploying-windows.md
|
||||||
sdk-multiplatform-deployment-using-cerbero.md
|
deploying-multiplatform-using-cerbero.md
|
||||||
gstreamer-command-line-tools.md
|
gstreamer-command-line-tools.md
|
||||||
gst-inspect.md
|
tool-gst-inspect.md
|
||||||
gst-launch.md
|
tool-gst-launch.md
|
||||||
ges-launch.md
|
tool-ges-launch.md
|
||||||
pwg-index.md
|
pwg-index.md
|
||||||
pwg-introduction.md
|
pwg-introduction.md
|
||||||
pwg-intro-preface.md
|
pwg-intro-preface.md
|
||||||
|
@ -28,16 +28,16 @@ concepts is discussed.
|
|||||||
- Tools: [Basic tutorial 10: GStreamer tools]
|
- Tools: [Basic tutorial 10: GStreamer tools]
|
||||||
- Threads: [Basic tutorial 7: Multithreading and Pad Availability]
|
- Threads: [Basic tutorial 7: Multithreading and Pad Availability]
|
||||||
|
|
||||||
[Playback tutorial 1: Playbin usage]: sdk-playback-tutorial-playbin-usage.md
|
[Playback tutorial 1: Playbin usage]: tutorial-playback-playbin-usage.md
|
||||||
[Basic tutorial 8: Short-cutting the pipeline]: sdk-basic-tutorial-short-cutting-the-pipeline.md
|
[Basic tutorial 8: Short-cutting the pipeline]: tutorial-basic-short-cutting-the-pipeline.md
|
||||||
[Basic tutorial 2: GStreamer concepts]: sdk-basic-tutorial-concepts.md
|
[Basic tutorial 2: GStreamer concepts]: tutorial-basic-concepts.md
|
||||||
[Basic tutorial 6: Media formats and Pad Capabilities]: sdk-basic-tutorial-media-formats-and-pad-capabilities.md
|
[Basic tutorial 6: Media formats and Pad Capabilities]: tutorial-basic-media-formats-and-pad-capabilities.md
|
||||||
[Basic tutorial 11: Debugging tools]: sdk-basic-tutorial-debugging-tools.md
|
[Basic tutorial 11: Debugging tools]: tutorial-basic-debugging-tools.md
|
||||||
[Basic tutorial 9: Media information gathering]: sdk-basic-tutorial-media-information-gathering.md
|
[Basic tutorial 9: Media information gathering]: tutorial-basic-media-information-gathering.md
|
||||||
[Basic tutorial 10: GStreamer tools]: sdk-basic-tutorial-gstreamer-tools.md
|
[Basic tutorial 10: GStreamer tools]: tutorial-basic-gstreamer-tools.md
|
||||||
[gst-launch-1.0]: gst-launch.md
|
[gst-launch-1.0]: tool-gst-launch.md
|
||||||
[Basic tutorial 5: GUI toolkit integration]: sdk-basic-tutorial-toolkit-integration.md
|
[Basic tutorial 5: GUI toolkit integration]: tutorial-basic-toolkit-integration.md
|
||||||
[Basic tutorial 3: Dynamic pipelines]: sdk-basic-tutorial-dynamic-pipelines.md
|
[Basic tutorial 3: Dynamic pipelines]: tutorial-basic-dynamic-pipelines.md
|
||||||
[Basic tutorial 7: Multithreading and Pad Availability]: sdk-basic-tutorial-multithreading-and-pad-availability.md
|
[Basic tutorial 7: Multithreading and Pad Availability]: tutorial-basic-multithreading-and-pad-availability.md
|
||||||
[Basic tutorial 4: Time management]: sdk-basic-tutorial-time-management.md
|
[Basic tutorial 4: Time management]: tutorial-basic-time-management.md
|
||||||
[Playback tutorial 2: Subtitle management]: sdk-playback-tutorial-subtitle-management.md
|
[Playback tutorial 2: Subtitle management]: tutorial-playback-subtitle-management.md
|
@ -9,7 +9,7 @@ be done with GStreamer in the Android platform.
|
|||||||
|
|
||||||
It is intended to be downloaded in final, compiled, form rather than
|
It is intended to be downloaded in final, compiled, form rather than
|
||||||
analyzed for its pedagogical value, since it adds very little GStreamer
|
analyzed for its pedagogical value, since it adds very little GStreamer
|
||||||
knowledge over what has already been shown in [](sdk-android-tutorial-media-player.md).
|
knowledge over what has already been shown in [](tutorial-android-media-player.md).
|
||||||
|
|
||||||
|
|
||||||
**FIXME: Do we want to provide a binary of the app?**
|
**FIXME: Do we want to provide a binary of the app?**
|
||||||
@ -56,7 +56,7 @@ retrieved and checked for such URI.
|
|||||||
## Implementing a file chooser dialog
|
## Implementing a file chooser dialog
|
||||||
|
|
||||||
The UI includes a new button . It
|
was not present in [](tutorial-android-media-player.md). It
|
||||||
invokes a file chooser dialog (based on the [Android File
|
invokes a file chooser dialog (based on the [Android File
|
||||||
Dialog](http://code.google.com/p/android-file-dialog/) project) that
|
Dialog](http://code.google.com/p/android-file-dialog/) project) that
|
||||||
allows you to choose a local media file, no matter what extension or
|
allows you to choose a local media file, no matter what extension or
|
||||||
@ -88,5 +88,5 @@ Android.
|
|||||||
|
|
||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[screenshot]: images/sdk-android-tutorial-a-complete-media-player-screenshot.png
|
[screenshot]: images/tutorial-android-a-complete-media-player-screenshot.png
|
||||||
[media-next]: images/media-next.png
|
[media-next]: images/media-next.png
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
![screenshot]
|
![screenshot]
|
||||||
|
|
||||||
The tutorials seen in the [Basic](sdk-basic-tutorials.md) and
|
The tutorials seen in the [Basic](tutorials-basic.md) and
|
||||||
[Playback](sdk-playback-tutorials.md) sections are intended for Desktop
|
[Playback](tutorials-playback.md) sections are intended for Desktop
|
||||||
platforms and, therefore, their main thread is allowed to block (using
|
platforms and, therefore, their main thread is allowed to block (using
|
||||||
`gst_bus_pop_filtered()`) or relinquish control to a GLib main loop. On
|
`gst_bus_pop_filtered()`) or relinquish control to a GLib main loop. On
|
||||||
Android this would lead to the application being tagged as
|
Android this would lead to the application being tagged as
|
||||||
@ -1047,4 +1047,4 @@ tutorials with minimal modifications, so better get used to them\!
|
|||||||
|
|
||||||
As usual, it has been a pleasure having you here, and see you soon\!
|
As usual, it has been a pleasure having you here, and see you soon\!
|
||||||
|
|
||||||
[screenshot]: images/sdk-android-tutorial-a-running-pipeline-screenshot.png
|
[screenshot]: images/tutorial-android-a-running-pipeline-screenshot.png
|
@ -15,7 +15,7 @@ The tutorial code is in the [gst-docs](https://cgit.freedesktop.org/gstreamer/gs
|
|||||||
a `jni` folder for the C code and a `res` folder for UI resources.
|
a `jni` folder for the C code and a `res` folder for UI resources.
|
||||||
|
|
||||||
We recommend that you open this project in Eclipse (as explained
|
We recommend that you open this project in Eclipse (as explained
|
||||||
in [](sdk-installing-for-android-development.md)) so you can
|
in [](installing-for-android-development.md)) so you can
|
||||||
easily see how all the pieces fit together.
|
easily see how all the pieces fit together.
|
||||||
|
|
||||||
Let’s first introduce the Java code, then the C code and finally the
|
Let’s first introduce the Java code, then the C code and finally the
|
||||||
@ -278,4 +278,4 @@ taken when developing specifically for the Android platform.
|
|||||||
|
|
||||||
As usual, it has been a pleasure having you here, and see you soon\!
|
As usual, it has been a pleasure having you here, and see you soon\!
|
||||||
|
|
||||||
[screenshot]: images/sdk-android-tutorial-link-against-gstreamer-screenshot.png
|
[screenshot]: images/tutorial-android-link-against-gstreamer-screenshot.png
|
@ -14,7 +14,7 @@ Android device. It shows:
|
|||||||
Bar](http://developer.android.com/reference/android/widget/SeekBar.html)
|
Bar](http://developer.android.com/reference/android/widget/SeekBar.html)
|
||||||
- How to report the media size to adapt the display surface
|
- How to report the media size to adapt the display surface
|
||||||
|
|
||||||
It also uses the knowledge gathered in the [](sdk-basic-tutorials.md) regarding:
|
It also uses the knowledge gathered in the [](tutorials-basic.md) regarding:
|
||||||
|
|
||||||
- How to use `playbin` to play any kind of media
|
- How to use `playbin` to play any kind of media
|
||||||
- How to handle network resilience problems
|
- How to handle network resilience problems
|
||||||
@ -26,7 +26,7 @@ to build a media player. The most complex part is assembling a pipeline
|
|||||||
which retrieves, decodes and displays the media, but we already know
|
which retrieves, decodes and displays the media, but we already know
|
||||||
that the `playbin` element can take care of all that for us. We only
|
that the `playbin` element can take care of all that for us. We only
|
||||||
need to replace the manual pipeline we used in
|
need to replace the manual pipeline we used in
|
||||||
[](sdk-android-tutorial-video.md) with a single-element
|
[](tutorial-android-video.md) with a single-element
|
||||||
`playbin` pipeline and we are good to go!
|
`playbin` pipeline and we are good to go!
|
||||||
|
|
||||||
However, we can do better than. We will add a [Seek
|
However, we can do better than. We will add a [Seek
|
||||||
@ -344,14 +344,14 @@ charge of displaying the media, and ask the Android layout to be
|
|||||||
recalculated. Eventually, the `onMeasure()` method in
|
recalculated. Eventually, the `onMeasure()` method in
|
||||||
GStreamerSurfaceView will be called and the new size will be taken
|
GStreamerSurfaceView will be called and the new size will be taken
|
||||||
into account. As we have already seen in
|
into account. As we have already seen in
|
||||||
[](sdk-android-tutorial-a-running-pipeline.md), methods which change
|
[](tutorial-android-a-running-pipeline.md), methods which change
|
||||||
the UI must be called from the main thread, and we are now in a
|
the UI must be called from the main thread, and we are now in a
|
||||||
callback from some GStreamer internal thread. Hence, the usage of
|
callback from some GStreamer internal thread. Hence, the usage of
|
||||||
[runOnUiThread()](http://developer.android.com/reference/android/app/Activity.html#runOnUiThread\(java.lang.Runnable\)).
|
[runOnUiThread()](http://developer.android.com/reference/android/app/Activity.html#runOnUiThread\(java.lang.Runnable\)).
|
||||||
|
|
||||||
### Refreshing the Seek Bar
|
### Refreshing the Seek Bar
|
||||||
|
|
||||||
[](sdk-basic-tutorial-toolkit-integration.md)
|
[](tutorial-basic-toolkit-integration.md)
|
||||||
has already shown how to implement a [Seek
|
has already shown how to implement a [Seek
|
||||||
Bar](http://developer.android.com/reference/android/widget/SeekBar.html) using
|
Bar](http://developer.android.com/reference/android/widget/SeekBar.html) using
|
||||||
the GTK+ toolkit. The implementation on Android is very similar.
|
the GTK+ toolkit. The implementation on Android is very similar.
|
||||||
@ -1193,7 +1193,7 @@ static gboolean refresh_ui (CustomData *data) {
|
|||||||
```
|
```
|
||||||
|
|
||||||
If it is unknown, the clip duration is retrieved, as explained in
|
If it is unknown, the clip duration is retrieved, as explained in
|
||||||
[](sdk-basic-tutorial-time-management.md). The current position is
|
[](tutorial-basic-time-management.md). The current position is
|
||||||
retrieved next, and the UI is informed of both through its
|
retrieved next, and the UI is informed of both through its
|
||||||
`setCurrentPosition()` callback.
|
`setCurrentPosition()` callback.
|
||||||
|
|
||||||
@ -1333,7 +1333,7 @@ The one-shot timer calls `delayed_seek_cb()`, which simply calls
|
|||||||
|
|
||||||
### Network resilience
|
### Network resilience
|
||||||
|
|
||||||
[](sdk-basic-tutorial-streaming.md) has already
|
[](tutorial-basic-streaming.md) has already
|
||||||
shown how to adapt to the variable nature of the network bandwidth by
|
shown how to adapt to the variable nature of the network bandwidth by
|
||||||
using buffering. The same procedure is used here, by listening to the
|
using buffering. The same procedure is used here, by listening to the
|
||||||
buffering
|
buffering
|
||||||
@ -1408,5 +1408,5 @@ here into an acceptable Android media player.
|
|||||||
|
|
||||||
As usual, it has been a pleasure having you here, and see you soon!
|
As usual, it has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[screenshot]: images/sdk-android-tutorial-media-player-screenshot.png
|
[screenshot]: images/tutorial-android-media-player-screenshot.png
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
![screenshot]
|
![screenshot]
|
||||||
|
|
||||||
Except for [](sdk-basic-tutorial-toolkit-integration.md),
|
Except for [](tutorial-basic-toolkit-integration.md),
|
||||||
which embedded a video window on a GTK application, all tutorials so far
|
which embedded a video window on a GTK application, all tutorials so far
|
||||||
relied on GStreamer video sinks to create a window to display their
|
relied on GStreamer video sinks to create a window to display their
|
||||||
contents. The video sink on Android is not capable of creating its own
|
contents. The video sink on Android is not capable of creating its own
|
||||||
@ -21,7 +21,7 @@ Since Android does not provide a windowing system, a GStreamer video
|
|||||||
sink cannot create pop-up windows as it would do on a Desktop platform.
|
sink cannot create pop-up windows as it would do on a Desktop platform.
|
||||||
Fortunately, the `VideoOverlay` interface allows providing video sinks with
|
Fortunately, the `VideoOverlay` interface allows providing video sinks with
|
||||||
an already created window onto which they can draw, as we have seen in
|
an already created window onto which they can draw, as we have seen in
|
||||||
[](sdk-basic-tutorial-toolkit-integration.md).
|
[](tutorial-basic-toolkit-integration.md).
|
||||||
|
|
||||||
In this tutorial, a
|
In this tutorial, a
|
||||||
[SurfaceView](http://developer.android.com/reference/android/view/SurfaceView.html)
|
[SurfaceView](http://developer.android.com/reference/android/view/SurfaceView.html)
|
||||||
@ -650,7 +650,7 @@ ask for it immediately.
|
|||||||
The `gst_bin_get_by_interface()` method will examine the whole pipeline
|
The `gst_bin_get_by_interface()` method will examine the whole pipeline
|
||||||
and return a pointer to an element which supports the requested
|
and return a pointer to an element which supports the requested
|
||||||
interface. We are asking for the `VideoOverlay` interface, explained in
|
interface. We are asking for the `VideoOverlay` interface, explained in
|
||||||
[](sdk-basic-tutorial-toolkit-integration.md),
|
[](tutorial-basic-toolkit-integration.md),
|
||||||
which controls how to perform rendering into foreign (non-GStreamer)
|
which controls how to perform rendering into foreign (non-GStreamer)
|
||||||
windows. The internal video sink instantiated by `autovideosink` is the
|
windows. The internal video sink instantiated by `autovideosink` is the
|
||||||
only element in this pipeline implementing it, so it will be returned.
|
only element in this pipeline implementing it, so it will be returned.
|
||||||
@ -910,4 +910,4 @@ to this tutorial in order to build a simple media player.
|
|||||||
It has been a pleasure having you here, and see you soon\!
|
It has been a pleasure having you here, and see you soon\!
|
||||||
|
|
||||||
|
|
||||||
[screenshot]: images/sdk-android-tutorial-video-screenshot.png
|
[screenshot]: images/tutorial-android-video-screenshot.png
|
@ -104,11 +104,11 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> `` gcc basic-tutorial-2.c -o basic-tutorial-2 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> `` gcc basic-tutorial-2.c -o basic-tutorial-2 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
>This tutorial opens a window and displays a test pattern, without audio
|
>This tutorial opens a window and displays a test pattern, without audio
|
||||||
>
|
>
|
||||||
@ -139,9 +139,9 @@ sink = gst_element_factory_make ("autovideosink", "sink");
|
|||||||
As seen in this code, new elements can be created
|
As seen in this code, new elements can be created
|
||||||
with `gst_element_factory_make()`. The first parameter is the type of
|
with `gst_element_factory_make()`. The first parameter is the type of
|
||||||
element to create ([Basic tutorial 14: Handy
|
element to create ([Basic tutorial 14: Handy
|
||||||
elements](sdk-basic-tutorial-handy-elements.md) shows a
|
elements](tutorial-basic-handy-elements.md) shows a
|
||||||
few common types, and [Basic tutorial 10: GStreamer
|
few common types, and [Basic tutorial 10: GStreamer
|
||||||
tools](sdk-basic-tutorial-gstreamer-tools.md) shows how to
|
tools](tutorial-basic-gstreamer-tools.md) shows how to
|
||||||
obtain the list of all available types). The second parameter is the
|
obtain the list of all available types). The second parameter is the
|
||||||
name we want to give to this particular instance. Naming your elements
|
name we want to give to this particular instance. Naming your elements
|
||||||
is useful to retrieve them later if you didn't keep a pointer (and for
|
is useful to retrieve them later if you didn't keep a pointer (and for
|
||||||
@ -225,7 +225,7 @@ values!
|
|||||||
|
|
||||||
The names and possible values of all the properties an element exposes
|
The names and possible values of all the properties an element exposes
|
||||||
can be found using the gst-inspect-1.0 tool described in [Basic tutorial 10:
|
can be found using the gst-inspect-1.0 tool described in [Basic tutorial 10:
|
||||||
GStreamer tools](sdk-basic-tutorial-gstreamer-tools.md).
|
GStreamer tools](tutorial-basic-gstreamer-tools.md).
|
||||||
|
|
||||||
### Error checking
|
### Error checking
|
||||||
|
|
||||||
@ -246,7 +246,7 @@ if (ret == GST_STATE_CHANGE_FAILURE) {
|
|||||||
We call `gst_element_set_state()`, but this time we check its return
|
We call `gst_element_set_state()`, but this time we check its return
|
||||||
value for errors. Changing states is a delicate process and a few more
|
value for errors. Changing states is a delicate process and a few more
|
||||||
details are given in [Basic tutorial 3: Dynamic
|
details are given in [Basic tutorial 3: Dynamic
|
||||||
pipelines](sdk-basic-tutorial-dynamic-pipelines.md).
|
pipelines](tutorial-basic-dynamic-pipelines.md).
|
||||||
|
|
||||||
``` c
|
``` c
|
||||||
/* Wait until error or EOS */
|
/* Wait until error or EOS */
|
||||||
@ -311,7 +311,7 @@ playback-related issues.
|
|||||||
|
|
||||||
The rest of the code is the cleanup sequence, which is the same as
|
The rest of the code is the cleanup sequence, which is the same as
|
||||||
in [Basic tutorial 1: Hello
|
in [Basic tutorial 1: Hello
|
||||||
world!](sdk-basic-tutorial-hello-world.md).
|
world!](tutorial-basic-hello-world.md).
|
||||||
|
|
||||||
## Exercise
|
## Exercise
|
||||||
|
|
||||||
@ -324,11 +324,11 @@ Depending on your platform and available plugins, you might get a
|
|||||||
“negotiation” error, because the sink does not understand what the
|
“negotiation” error, because the sink does not understand what the
|
||||||
filter is producing (more about negotiation in [Basic tutorial 6: Media
|
filter is producing (more about negotiation in [Basic tutorial 6: Media
|
||||||
formats and Pad
|
formats and Pad
|
||||||
Capabilities](sdk-basic-tutorial-media-formats-and-pad-capabilities.md)).
|
Capabilities](tutorial-basic-media-formats-and-pad-capabilities.md)).
|
||||||
In this case, try to add an element called `videoconvert` after the
|
In this case, try to add an element called `videoconvert` after the
|
||||||
filter (this is, build a pipeline of 4 elements. More on
|
filter (this is, build a pipeline of 4 elements. More on
|
||||||
`videoconvert` in [Basic tutorial 14: Handy
|
`videoconvert` in [Basic tutorial 14: Handy
|
||||||
elements](sdk-basic-tutorial-handy-elements.md)).
|
elements](tutorial-basic-handy-elements.md)).
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
@ -8,7 +8,7 @@ information becomes available, instead of having a monolithic pipeline
|
|||||||
defined at the beginning of your application.
|
defined at the beginning of your application.
|
||||||
|
|
||||||
After this tutorial, you will have the necessary knowledge to start the
|
After this tutorial, you will have the necessary knowledge to start the
|
||||||
[Playback tutorials](sdk-playback-tutorials.md). The points reviewed
|
[Playback tutorials](tutorials-playback.md). The points reviewed
|
||||||
here will be:
|
here will be:
|
||||||
|
|
||||||
- How to attain finer control when linking elements.
|
- How to attain finer control when linking elements.
|
||||||
@ -240,10 +240,10 @@ exit:
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
> ``gcc basic-tutorial-3.c -o basic-tutorial-3 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> ``gcc basic-tutorial-3.c -o basic-tutorial-3 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial only plays audio. The media is fetched from the Internet, so it might take a few seconds to start, depending on your connection speed.
|
> This tutorial only plays audio. The media is fetched from the Internet, so it might take a few seconds to start, depending on your connection speed.
|
||||||
>
|
>
|
||||||
@ -338,7 +338,7 @@ for this purpose.
|
|||||||
The signals that a `GstElement` generates can be found in its
|
The signals that a `GstElement` generates can be found in its
|
||||||
documentation or using the `gst-inspect-1.0` tool as described in [Basic
|
documentation or using the `gst-inspect-1.0` tool as described in [Basic
|
||||||
tutorial 10: GStreamer
|
tutorial 10: GStreamer
|
||||||
tools](sdk-basic-tutorial-gstreamer-tools.md).
|
tools](tutorial-basic-gstreamer-tools.md).
|
||||||
|
|
||||||
We are now ready to go! Just set the pipeline to the PLAYING state and
|
We are now ready to go! Just set the pipeline to the PLAYING state and
|
||||||
start listening to the bus for interesting messages (like ERROR or EOS),
|
start listening to the bus for interesting messages (like ERROR or EOS),
|
||||||
@ -493,10 +493,10 @@ front) and link it to the demuxer when the right pad appears. Hint: You
|
|||||||
are already printing on screen the type of the video pads.
|
are already printing on screen the type of the video pads.
|
||||||
|
|
||||||
You should now see (and hear) the same movie as in [Basic tutorial 1:
|
You should now see (and hear) the same movie as in [Basic tutorial 1:
|
||||||
Hello world!](sdk-basic-tutorial-hello-world.md). In
|
Hello world!](tutorial-basic-hello-world.md). In
|
||||||
that tutorial you used `playbin`, which is a handy element that
|
that tutorial you used `playbin`, which is a handy element that
|
||||||
automatically takes care of all the demuxing and pad linking for you.
|
automatically takes care of all the demuxing and pad linking for you.
|
||||||
Most of the [Playback tutorials](sdk-playback-tutorials.md) are devoted
|
Most of the [Playback tutorials](tutorials-playback.md) are devoted
|
||||||
to `playbin`.
|
to `playbin`.
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
@ -513,8 +513,8 @@ media was available.
|
|||||||
|
|
||||||
You can now continue with the basic tutorials and learn about performing
|
You can now continue with the basic tutorials and learn about performing
|
||||||
seeks and time-related queries in [Basic tutorial 4: Time
|
seeks and time-related queries in [Basic tutorial 4: Time
|
||||||
management](sdk-basic-tutorial-time-management.md) or move
|
management](tutorial-basic-time-management.md) or move
|
||||||
to the [Playback tutorials](sdk-playback-tutorials.md), and gain more
|
to the [Playback tutorials](tutorials-playback.md), and gain more
|
||||||
insight about the `playbin` element.
|
insight about the `playbin` element.
|
||||||
|
|
||||||
Remember that attached to this page you should find the complete source
|
Remember that attached to this page you should find the complete source
|
@ -21,7 +21,7 @@ polluting it too much).
|
|||||||
|
|
||||||
Just open a terminal (or console window) and go to the `bin` directory
|
Just open a terminal (or console window) and go to the `bin` directory
|
||||||
of your GStreamer installation (Read again the [Installing
|
of your GStreamer installation (Read again the [Installing
|
||||||
GStreamer](sdk-installing.md) section to find our where this is),
|
GStreamer](installing.md) section to find our where this is),
|
||||||
and you are ready to start typing the commands given in this tutorial.
|
and you are ready to start typing the commands given in this tutorial.
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ descriptions resemble black magic. Fear not, for everyone learns the
|
|||||||
|
|
||||||
The command line for gst-launch-1.0 consists of a list of options followed
|
The command line for gst-launch-1.0 consists of a list of options followed
|
||||||
by a PIPELINE-DESCRIPTION. Some simplified instructions are given next,
|
by a PIPELINE-DESCRIPTION. Some simplified instructions are given next,
|
||||||
se the complete documentation at [the reference page](gst-launch.md)
|
se the complete documentation at [the reference page](tool-gst-launch.md)
|
||||||
for `gst-launch-1.0`.
|
for `gst-launch-1.0`.
|
||||||
|
|
||||||
### Elements
|
### Elements
|
||||||
@ -122,14 +122,14 @@ If you see only one, try to move it, since it is probably on top of the
|
|||||||
second window.
|
second window.
|
||||||
|
|
||||||
This example instantiates a `videotestsrc`, linked to a
|
This example instantiates a `videotestsrc`, linked to a
|
||||||
`videoconvert`, linked to a `tee` (Remember from [](sdk-basic-tutorial-multithreading-and-pad-availability.md) that
|
`videoconvert`, linked to a `tee` (Remember from [](tutorial-basic-multithreading-and-pad-availability.md) that
|
||||||
a `tee` copies to each of its output pads everything coming through its
|
a `tee` copies to each of its output pads everything coming through its
|
||||||
input pad). The `tee` is named simply ‘t’ (using the `name` property)
|
input pad). The `tee` is named simply ‘t’ (using the `name` property)
|
||||||
and then linked to a `queue` and an `autovideosink`. The same `tee` is
|
and then linked to a `queue` and an `autovideosink`. The same `tee` is
|
||||||
referred to using ‘t.’ (mind the dot) and then linked to a second
|
referred to using ‘t.’ (mind the dot) and then linked to a second
|
||||||
`queue` and a second `autovideosink`.
|
`queue` and a second `autovideosink`.
|
||||||
|
|
||||||
To learn why the queues are necessary read [](sdk-basic-tutorial-multithreading-and-pad-availability.md).
|
To learn why the queues are necessary read [](tutorial-basic-multithreading-and-pad-availability.md).
|
||||||
|
|
||||||
### Pads
|
### Pads
|
||||||
|
|
||||||
@ -148,7 +148,7 @@ gst-launch-1.0 souphttpsrc location=https://www.freedesktop.org/software/gstream
|
|||||||
```
|
```
|
||||||
|
|
||||||
This fetches a media file from the internet using `souphttpsrc`, which
|
This fetches a media file from the internet using `souphttpsrc`, which
|
||||||
is in webm format (a special kind of Matroska container, see [](sdk-basic-tutorial-concepts.md)). We
|
is in webm format (a special kind of Matroska container, see [](tutorial-basic-concepts.md)). We
|
||||||
then open the container using `matroskademux`. This media contains both
|
then open the container using `matroskademux`. This media contains both
|
||||||
audio and video, so `matroskademux` will create two output Pads, named
|
audio and video, so `matroskademux` will create two output Pads, named
|
||||||
`video_00` and `audio_00`. We link `video_00` to a `matroskamux` element
|
`video_00` and `audio_00`. We link `video_00` to a `matroskamux` element
|
||||||
@ -219,7 +219,7 @@ producing for a particular pipeline, run `gst-launch-1.0` as usual, with the
|
|||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
|
||||||
Play a media file using `playbin` (as in [](sdk-basic-tutorial-hello-world.md)):
|
Play a media file using `playbin` (as in [](tutorial-basic-hello-world.md)):
|
||||||
|
|
||||||
```
|
```
|
||||||
gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm
|
gst-launch-1.0 playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm
|
||||||
@ -254,7 +254,7 @@ gst-launch-1.0 uridecodebin uri=https://www.freedesktop.org/software/gstreamer-s
|
|||||||
|
|
||||||
This short description of `gst-launch-1.0` should be enough to get you
|
This short description of `gst-launch-1.0` should be enough to get you
|
||||||
started. Remember that you have the [complete documentation available
|
started. Remember that you have the [complete documentation available
|
||||||
here](gst-launch.md).
|
here](tool-gst-launch.md).
|
||||||
|
|
||||||
## `gst-inspect-1.0`
|
## `gst-inspect-1.0`
|
||||||
|
|
||||||
@ -369,11 +369,11 @@ The most relevant sections are:
|
|||||||
element, along with their type and accepted values.
|
element, along with their type and accepted values.
|
||||||
|
|
||||||
For more information, you can check the [documentation
|
For more information, you can check the [documentation
|
||||||
page](gst-inspect.md) of `gst-inspect-1.0`.
|
page](tool-gst-inspect.md) of `gst-inspect-1.0`.
|
||||||
|
|
||||||
## `gst-discoverer-1.0`
|
## `gst-discoverer-1.0`
|
||||||
|
|
||||||
This tool is a wrapper around the `GstDiscoverer` object shown in [](sdk-basic-tutorial-media-information-gathering.md).
|
This tool is a wrapper around the `GstDiscoverer` object shown in [](tutorial-basic-media-information-gathering.md).
|
||||||
It accepts a URI from the command line and prints all information
|
It accepts a URI from the command line and prints all information
|
||||||
regarding the media that GStreamer can extract. It is useful to find out
|
regarding the media that GStreamer can extract. It is useful to find out
|
||||||
what container and codecs have been used to produce the media, and
|
what container and codecs have been used to produce the media, and
|
@ -9,7 +9,7 @@ elements which are extremely useful when debugging.
|
|||||||
|
|
||||||
For simplicity, the following examples are given using the
|
For simplicity, the following examples are given using the
|
||||||
`gst-launch-1.0` tool (Learn about it in
|
`gst-launch-1.0` tool (Learn about it in
|
||||||
[](sdk-basic-tutorial-gstreamer-tools.md)). Use the `-v` command line
|
[](tutorial-basic-gstreamer-tools.md)). Use the `-v` command line
|
||||||
parameter if you want to see the Pad Caps that are being negotiated.
|
parameter if you want to see the Pad Caps that are being negotiated.
|
||||||
|
|
||||||
## Bins
|
## Bins
|
||||||
@ -23,7 +23,7 @@ their task.
|
|||||||
This element has been extensively used throughout the tutorials. It
|
This element has been extensively used throughout the tutorials. It
|
||||||
manages all aspects of media playback, from source to display, passing
|
manages all aspects of media playback, from source to display, passing
|
||||||
through demuxing and decoding. It is so flexible and has so many options
|
through demuxing and decoding. It is so flexible and has so many options
|
||||||
that a whole set of tutorials are devoted to it. See the [](sdk-playback-tutorials.md) for more details.
|
that a whole set of tutorials are devoted to it. See the [](tutorials-playback.md) for more details.
|
||||||
|
|
||||||
### `uridecodebin`
|
### `uridecodebin`
|
||||||
|
|
||||||
@ -228,7 +228,7 @@ Most of the time, `audiorate` is not what you want.
|
|||||||
|
|
||||||
### `queue`
|
### `queue`
|
||||||
|
|
||||||
Queues have been explained in [](sdk-basic-tutorial-multithreading-and-pad-availability.md). Basically, a queue performs two tasks:
|
Queues have been explained in [](tutorial-basic-multithreading-and-pad-availability.md). Basically, a queue performs two tasks:
|
||||||
|
|
||||||
- Data is queued until a selected limit is reached. Any attempt to
|
- Data is queued until a selected limit is reached. Any attempt to
|
||||||
push more buffers into the queue blocks the pushing thread until
|
push more buffers into the queue blocks the pushing thread until
|
||||||
@ -242,7 +242,7 @@ instructed to drop buffers instead of blocking when it is full.
|
|||||||
|
|
||||||
As a rule of thumb, prefer the simpler `queue` element
|
As a rule of thumb, prefer the simpler `queue` element
|
||||||
over `queue2` whenever network buffering is not a concern to you.
|
over `queue2` whenever network buffering is not a concern to you.
|
||||||
See [](sdk-basic-tutorial-multithreading-and-pad-availability.md)
|
See [](tutorial-basic-multithreading-and-pad-availability.md)
|
||||||
for an example.
|
for an example.
|
||||||
|
|
||||||
### `queue2`
|
### `queue2`
|
||||||
@ -256,10 +256,10 @@ queue is the best choice.
|
|||||||
additionally, is able to store the received data (or part of it) on a
|
additionally, is able to store the received data (or part of it) on a
|
||||||
disk file, for later retrieval. It also replaces the signals with the
|
disk file, for later retrieval. It also replaces the signals with the
|
||||||
more general and convenient buffering messages described in
|
more general and convenient buffering messages described in
|
||||||
[](sdk-basic-tutorial-streaming.md).
|
[](tutorial-basic-streaming.md).
|
||||||
|
|
||||||
As a rule of thumb, prefer `queue2` over `queue` whenever network
|
As a rule of thumb, prefer `queue2` over `queue` whenever network
|
||||||
buffering is a concern to you. See [](sdk-basic-tutorial-streaming.md)
|
buffering is a concern to you. See [](tutorial-basic-streaming.md)
|
||||||
for an example (`queue2` is hidden inside `playbin`).
|
for an example (`queue2` is hidden inside `playbin`).
|
||||||
|
|
||||||
### `multiqueue`
|
### `multiqueue`
|
||||||
@ -277,7 +277,7 @@ application.
|
|||||||
|
|
||||||
### `tee`
|
### `tee`
|
||||||
|
|
||||||
[](sdk-basic-tutorial-multithreading-and-pad-availability.md) already
|
[](tutorial-basic-multithreading-and-pad-availability.md) already
|
||||||
showed how to use a `tee` element, which splits data to multiple pads.
|
showed how to use a `tee` element, which splits data to multiple pads.
|
||||||
Splitting the data flow is useful, for example, when capturing a video
|
Splitting the data flow is useful, for example, when capturing a video
|
||||||
where the video is shown on the screen and also encoded and written to a
|
where the video is shown on the screen and also encoded and written to a
|
||||||
@ -296,7 +296,7 @@ gst-launch-1.0 audiotestsrc ! tee name=t ! queue ! audioconvert ! autoaudiosink
|
|||||||
## Capabilities
|
## Capabilities
|
||||||
|
|
||||||
### `capsfilter`
|
### `capsfilter`
|
||||||
[](sdk-basic-tutorial-gstreamer-tools.md) already
|
[](tutorial-basic-gstreamer-tools.md) already
|
||||||
explained how to use Caps filters with `gst-launch-1.0`. When building a
|
explained how to use Caps filters with `gst-launch-1.0`. When building a
|
||||||
pipeline programmatically, Caps filters are implemented with
|
pipeline programmatically, Caps filters are implemented with
|
||||||
the `capsfilter` element. This element does not modify data as such,
|
the `capsfilter` element. This element does not modify data as such,
|
||||||
@ -316,7 +316,7 @@ the `have-type` signal.
|
|||||||
It is instantiated internally by `decodebin`, and you can use it too to
|
It is instantiated internally by `decodebin`, and you can use it too to
|
||||||
find the media type, although you can normally use the
|
find the media type, although you can normally use the
|
||||||
`GstDiscoverer` which provides more information (as seen in
|
`GstDiscoverer` which provides more information (as seen in
|
||||||
[](sdk-basic-tutorial-media-information-gathering.md)).
|
[](tutorial-basic-media-information-gathering.md)).
|
||||||
|
|
||||||
## Debugging
|
## Debugging
|
||||||
|
|
@ -221,17 +221,17 @@ and show you how to build a pipeline manually.
|
|||||||
|
|
||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[Installing on Linux]: sdk-installing-on-linux.md
|
[Installing on Linux]: installing-on-linux.md
|
||||||
[Installing on Mac OS X]: sdk-installing-on-mac-osx.md
|
[Installing on Mac OS X]: installing-on-mac-osx.md
|
||||||
[Installing on Windows]: sdk-installing-on-windows.md
|
[Installing on Windows]: installing-on-windows.md
|
||||||
[Information]: images/icons/emoticons/information.png
|
[Information]: images/icons/emoticons/information.png
|
||||||
[Linux]: sdk-installing-on-linux.md#InstallingonLinux-Build
|
[Linux]: installing-on-linux.md#InstallingonLinux-Build
|
||||||
[Mac OS X]: sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build
|
[Mac OS X]: installing-on-mac-osx.md#InstallingonMacOSX-Build
|
||||||
[Windows]: sdk-installing-on-windows.md#InstallingonWindows-Build
|
[Windows]: installing-on-windows.md#InstallingonWindows-Build
|
||||||
[1]: sdk-installing-on-linux.md#InstallingonLinux-Run
|
[1]: installing-on-linux.md#InstallingonLinux-Run
|
||||||
[2]: sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run
|
[2]: installing-on-mac-osx.md#InstallingonMacOSX-Run
|
||||||
[3]: sdk-installing-on-windows.md#InstallingonWindows-Run
|
[3]: installing-on-windows.md#InstallingonWindows-Run
|
||||||
[Basic tutorial 12: Streaming]: sdk-basic-tutorial-streaming.md
|
[Basic tutorial 12: Streaming]: tutorial-basic-streaming.md
|
||||||
[Basic tutorial 10: GStreamer tools]: sdk-basic-tutorial-gstreamer-tools.md
|
[Basic tutorial 10: GStreamer tools]: tutorial-basic-gstreamer-tools.md
|
||||||
[Basic tutorial 2: GStreamer concepts]: sdk-basic-tutorial-concepts.md
|
[Basic tutorial 2: GStreamer concepts]: tutorial-basic-concepts.md
|
||||||
[Basic tutorial 3: Dynamic pipelines]: sdk-basic-tutorial-dynamic-pipelines.md
|
[Basic tutorial 3: Dynamic pipelines]: tutorial-basic-dynamic-pipelines.md
|
@ -100,7 +100,7 @@ indicate different packing and subsampling of the image planes.
|
|||||||
### Last remarks
|
### Last remarks
|
||||||
|
|
||||||
You can use the `gst-inspect-1.0` tool described in [Basic tutorial 10:
|
You can use the `gst-inspect-1.0` tool described in [Basic tutorial 10:
|
||||||
GStreamer tools](sdk-basic-tutorial-gstreamer-tools.md) to
|
GStreamer tools](tutorial-basic-gstreamer-tools.md) to
|
||||||
learn about the Caps of any GStreamer element.
|
learn about the Caps of any GStreamer element.
|
||||||
|
|
||||||
Bear in mind that some elements query the underlying hardware for
|
Bear in mind that some elements query the underlying hardware for
|
||||||
@ -335,11 +335,11 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> `` gcc basic-tutorial-6.c -o basic-tutorial-6 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> `` gcc basic-tutorial-6.c -o basic-tutorial-6 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial simply displays information regarding the Pad Capabilities in different time instants.
|
> This tutorial simply displays information regarding the Pad Capabilities in different time instants.
|
||||||
>
|
>
|
||||||
@ -466,7 +466,7 @@ This tutorial has shown:
|
|||||||
|
|
||||||
- That Pad Caps can be found using the `gst-inspect-1.0` tool described
|
- That Pad Caps can be found using the `gst-inspect-1.0` tool described
|
||||||
in [Basic tutorial 10: GStreamer
|
in [Basic tutorial 10: GStreamer
|
||||||
tools](sdk-basic-tutorial-gstreamer-tools.md).
|
tools](tutorial-basic-gstreamer-tools.md).
|
||||||
|
|
||||||
Next tutorial shows how data can be manually injected into and extracted
|
Next tutorial shows how data can be manually injected into and extracted
|
||||||
from the GStreamer pipeline.
|
from the GStreamer pipeline.
|
@ -66,7 +66,7 @@ command line, and outputs the retrieved information (If no URI is
|
|||||||
provided it uses a default one).
|
provided it uses a default one).
|
||||||
|
|
||||||
This is a simplified version of what the `gst-discoverer-1.0` tool does
|
This is a simplified version of what the `gst-discoverer-1.0` tool does
|
||||||
([](sdk-basic-tutorial-gstreamer-tools.md)), which is
|
([](tutorial-basic-gstreamer-tools.md)), which is
|
||||||
an application that only displays data, but does not perform any
|
an application that only displays data, but does not perform any
|
||||||
playback.
|
playback.
|
||||||
|
|
||||||
@ -300,11 +300,11 @@ int main (int argc, char **argv) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> ``gcc basic-tutorial-9.c -o basic-tutorial-9 `pkg-config --cflags --libs gstreamer-1.0 gstreamer-pbutils-1.0` ``
|
> ``gcc basic-tutorial-9.c -o basic-tutorial-9 `pkg-config --cflags --libs gstreamer-1.0 gstreamer-pbutils-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial opens the URI passed as the first parameter in the command line (or a default URI if none is provided) and outputs information about it on the screen. If the media is located on the Internet, the application might take a bit to react depending on your connection speed.
|
> This tutorial opens the URI passed as the first parameter in the command line (or a default URI if none is provided) and outputs information about it on the screen. If the media is located on the Internet, the application might take a bit to react depending on your connection speed.
|
||||||
>
|
>
|
@ -56,7 +56,7 @@ there is only one thread, being blocked by the first sink.
|
|||||||
### Request pads
|
### Request pads
|
||||||
|
|
||||||
In [Basic tutorial 3: Dynamic
|
In [Basic tutorial 3: Dynamic
|
||||||
pipelines](sdk-basic-tutorial-dynamic-pipelines.md) we saw
|
pipelines](tutorial-basic-dynamic-pipelines.md) we saw
|
||||||
an element (`uridecodebin`) which had no pads to begin with, and they
|
an element (`uridecodebin`) which had no pads to begin with, and they
|
||||||
appeared as data started to flow and the element learned about the
|
appeared as data started to flow and the element learned about the
|
||||||
media. These are called **Sometimes Pads**, and contrast with the
|
media. These are called **Sometimes Pads**, and contrast with the
|
||||||
@ -179,11 +179,11 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> ``gcc basic-tutorial-7.c -o basic-tutorial-7 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> ``gcc basic-tutorial-7.c -o basic-tutorial-7 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial plays an audible tone through the audio card and opens a window with a waveform representation of the tone. The waveform should be a sinusoid, but due to the refreshing of the window might not appear so.
|
> This tutorial plays an audible tone through the audio card and opens a window with a waveform representation of the tone. The waveform should be a sinusoid, but due to the refreshing of the window might not appear so.
|
||||||
>
|
>
|
||||||
@ -231,7 +231,7 @@ Small adjustments for better demonstration: The “freq” property of
|
|||||||
appear almost stationary in the window), and this style and shader for
|
appear almost stationary in the window), and this style and shader for
|
||||||
`wavescope` make the wave continuous. Use the `gst-inspect-1.0` tool
|
`wavescope` make the wave continuous. Use the `gst-inspect-1.0` tool
|
||||||
described in [Basic tutorial 10: GStreamer
|
described in [Basic tutorial 10: GStreamer
|
||||||
tools](sdk-basic-tutorial-gstreamer-tools.md) to learn all
|
tools](tutorial-basic-gstreamer-tools.md) to learn all
|
||||||
the properties of these
|
the properties of these
|
||||||
elements.
|
elements.
|
||||||
|
|
@ -51,7 +51,7 @@ This audio sink outputs to the sound card via
|
|||||||
Architecture). This sink is available on almost every Linux platform. It
|
Architecture). This sink is available on almost every Linux platform. It
|
||||||
is often seen as a “low level” interface to the sound card, and can be
|
is often seen as a “low level” interface to the sound card, and can be
|
||||||
complicated to configure (See the comment on
|
complicated to configure (See the comment on
|
||||||
[](sdk-playback-tutorial-digital-audio-pass-through.md)).
|
[](tutorial-playback-digital-audio-pass-through.md)).
|
||||||
|
|
||||||
### `pulsesink`
|
### `pulsesink`
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ that their pipelines cannot be interconnected. However, through this
|
|||||||
element, GStreamer can benefit from the decoding elements present in
|
element, GStreamer can benefit from the decoding elements present in
|
||||||
Direct Show. `dshowdecwrapper` wraps multiple Direct Show decoders so
|
Direct Show. `dshowdecwrapper` wraps multiple Direct Show decoders so
|
||||||
they can be embedded in a GStreamer pipeline. Use the `gst-inspect-1.0` tool
|
they can be embedded in a GStreamer pipeline. Use the `gst-inspect-1.0` tool
|
||||||
(see [](sdk-basic-tutorial-gstreamer-tools.md)) to see the
|
(see [](tutorial-basic-gstreamer-tools.md)) to see the
|
||||||
available decoders.
|
available decoders.
|
||||||
|
|
||||||
## Android
|
## Android
|
@ -30,7 +30,7 @@ media besides changing the subsequent playback rate (only to positive
|
|||||||
values). Seek Events, additionally, allow jumping to any position in the
|
values). Seek Events, additionally, allow jumping to any position in the
|
||||||
stream and set positive and negative playback rates.
|
stream and set positive and negative playback rates.
|
||||||
|
|
||||||
In [](sdk-basic-tutorial-time-management.md) seek
|
In [](tutorial-basic-time-management.md) seek
|
||||||
events have already been shown, using a helper function to hide their
|
events have already been shown, using a helper function to hide their
|
||||||
complexity. This tutorial explains a bit more how to use these events.
|
complexity. This tutorial explains a bit more how to use these events.
|
||||||
|
|
||||||
@ -216,11 +216,11 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> `` gcc basic-tutorial-13.c -o basic-tutorial-13 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> `` gcc basic-tutorial-13.c -o basic-tutorial-13 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial opens a window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. The console shows the available commands, composed of a single upper-case or lower-case letter, which you should input followed by the Enter key.
|
> This tutorial opens a window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. The console shows the available commands, composed of a single upper-case or lower-case letter, which you should input followed by the Enter key.
|
||||||
>
|
>
|
@ -12,7 +12,7 @@ any time, in a variety of ways. This tutorial shows:
|
|||||||
|
|
||||||
- How to access and manipulate this data.
|
- How to access and manipulate this data.
|
||||||
|
|
||||||
[](sdk-playback-tutorial-short-cutting-the-pipeline.md) explains
|
[](tutorial-playback-short-cutting-the-pipeline.md) explains
|
||||||
how to achieve the same goals in a playbin-based pipeline.
|
how to achieve the same goals in a playbin-based pipeline.
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
@ -68,7 +68,7 @@ this simplified vision should suffice for now.
|
|||||||
|
|
||||||
As an example, a `filesrc` (a GStreamer element that reads files)
|
As an example, a `filesrc` (a GStreamer element that reads files)
|
||||||
produces buffers with the “ANY” caps and no time-stamping information.
|
produces buffers with the “ANY” caps and no time-stamping information.
|
||||||
After demuxing (see [](sdk-basic-tutorial-dynamic-pipelines.md))
|
After demuxing (see [](tutorial-basic-dynamic-pipelines.md))
|
||||||
buffers can have some specific caps, for example “video/x-h264”. After
|
buffers can have some specific caps, for example “video/x-h264”. After
|
||||||
decoding, each buffer will contain a single video frame with raw caps
|
decoding, each buffer will contain a single video frame with raw caps
|
||||||
(for example, “video/x-raw-yuv”) and very precise time stamps indicating
|
(for example, “video/x-raw-yuv”) and very precise time stamps indicating
|
||||||
@ -76,7 +76,7 @@ when should that frame be displayed.
|
|||||||
|
|
||||||
### This tutorial
|
### This tutorial
|
||||||
|
|
||||||
This tutorial expands [](sdk-basic-tutorial-multithreading-and-pad-availability.md) in
|
This tutorial expands [](tutorial-basic-multithreading-and-pad-availability.md) in
|
||||||
two ways: firstly, the `audiotestsrc` is replaced by an `appsrc` that
|
two ways: firstly, the `audiotestsrc` is replaced by an `appsrc` that
|
||||||
will generate the audio data. Secondly, a new branch is added to the
|
will generate the audio data. Secondly, a new branch is added to the
|
||||||
`tee` so data going into the audio sink and the wave display is also
|
`tee` so data going into the audio sink and the wave display is also
|
||||||
@ -332,11 +332,11 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> `` gcc basic-tutorial-8.c -o basic-tutorial-8 `pkg-config --cflags --libs gstreamer-1.0 gst-audio-1.0` ``
|
> `` gcc basic-tutorial-8.c -o basic-tutorial-8 `pkg-config --cflags --libs gstreamer-1.0 gst-audio-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial plays an audible tone for varying frequency through the audio card and opens a window with a waveform representation of the tone. The waveform should be a sinusoid, but due to the refreshing of the window might not appear so.
|
> This tutorial plays an audible tone for varying frequency through the audio card and opens a window with a waveform representation of the tone. The waveform should be a sinusoid, but due to the refreshing of the window might not appear so.
|
||||||
>
|
>
|
||||||
@ -346,7 +346,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
The code to create the pipeline (Lines 131 to 205) is an enlarged
|
The code to create the pipeline (Lines 131 to 205) is an enlarged
|
||||||
version of [Basic tutorial 7: Multithreading and Pad
|
version of [Basic tutorial 7: Multithreading and Pad
|
||||||
Availability](sdk-basic-tutorial-multithreading-and-pad-availability.md).
|
Availability](tutorial-basic-multithreading-and-pad-availability.md).
|
||||||
It involves instantiating all the elements, link the elements with
|
It involves instantiating all the elements, link the elements with
|
||||||
Always Pads, and manually link the Request Pads of the `tee` element.
|
Always Pads, and manually link the Request Pads of the `tee` element.
|
||||||
|
|
||||||
@ -495,7 +495,7 @@ gst_buffer_unref (buffer);
|
|||||||
```
|
```
|
||||||
|
|
||||||
Once we have the buffer ready, we pass it to `appsrc` with the
|
Once we have the buffer ready, we pass it to `appsrc` with the
|
||||||
`push-buffer` action signal (see information box at the end of [](sdk-playback-tutorial-playbin-usage.md)), and then
|
`push-buffer` action signal (see information box at the end of [](tutorial-playback-playbin-usage.md)), and then
|
||||||
`gst_buffer_unref()` it since we no longer need it.
|
`gst_buffer_unref()` it since we no longer need it.
|
||||||
|
|
||||||
``` c
|
``` c
|
||||||
@ -534,7 +534,7 @@ This tutorial has shown how applications can:
|
|||||||
- Manipulate this data by accessing the `GstBuffer`.
|
- Manipulate this data by accessing the `GstBuffer`.
|
||||||
|
|
||||||
In a playbin-based pipeline, the same goals are achieved in a slightly
|
In a playbin-based pipeline, the same goals are achieved in a slightly
|
||||||
different way. [](sdk-playback-tutorial-short-cutting-the-pipeline.md) shows
|
different way. [](tutorial-playback-short-cutting-the-pipeline.md) shows
|
||||||
how to do it.
|
how to do it.
|
||||||
|
|
||||||
It has been a pleasure having you here, and see you soon\!
|
It has been a pleasure having you here, and see you soon\!
|
@ -156,11 +156,11 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> `` gcc basic-tutorial-12.c -o basic-tutorial-12 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> `` gcc basic-tutorial-12.c -o basic-tutorial-12 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial opens a window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. In the console window, you should see a buffering message, and playback should only start when the buffering reaches 100%. This percentage might not change at all if your connection is fast enough and buffering is not required.
|
> This tutorial opens a window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. In the console window, you should see a buffering message, and playback should only start when the buffering reaches 100%. This percentage might not change at all if your connection is fast enough and buffering is not required.
|
||||||
>
|
>
|
@ -197,11 +197,11 @@ static void handle_message (CustomData *data, GstMessage *msg) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> ``gcc basic-tutorial-4.c -o basic-tutorial-4 `pkg-config --cflags --libs gstreamer-1.0` ``
|
> ``gcc basic-tutorial-4.c -o basic-tutorial-4 `pkg-config --cflags --libs gstreamer-1.0` ``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial opens a window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. 10 seconds into the movie it skips to a new position
|
> This tutorial opens a window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. 10 seconds into the movie it skips to a new position
|
||||||
>
|
>
|
||||||
@ -231,7 +231,7 @@ move the message handling code to its own function
|
|||||||
|
|
||||||
We would then build a pipeline composed of a single element, a
|
We would then build a pipeline composed of a single element, a
|
||||||
`playbin`, which we already saw in [Basic tutorial 1: Hello
|
`playbin`, which we already saw in [Basic tutorial 1: Hello
|
||||||
world!](sdk-basic-tutorial-hello-world.md). However,
|
world!](tutorial-basic-hello-world.md). However,
|
||||||
`playbin` is in itself a pipeline, and in this case it is the only
|
`playbin` is in itself a pipeline, and in this case it is the only
|
||||||
element in the pipeline, so we use directly the `playbin` element. We
|
element in the pipeline, so we use directly the `playbin` element. We
|
||||||
will skip the details: the URI of the clip is given to `playbin` via
|
will skip the details: the URI of the clip is given to `playbin` via
|
@ -456,16 +456,16 @@ int main(int argc, char *argv[]) {
|
|||||||
> 
|
> 
|
||||||
> Need help?
|
> Need help?
|
||||||
>
|
>
|
||||||
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
> If you need help to compile this code, refer to the **Building the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Build), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Build) or [Windows](installing-on-windows.md#InstallingonWindows-Build), or use this specific command on Linux:
|
||||||
>
|
>
|
||||||
> ``gcc basic-tutorial-5.c -o basic-tutorial-5 `pkg-config --cflags --libs gstreamer-interfaces-1.0 gtk+-3.0 gstreamer-1.0``
|
> ``gcc basic-tutorial-5.c -o basic-tutorial-5 `pkg-config --cflags --libs gstreamer-interfaces-1.0 gtk+-3.0 gstreamer-1.0``
|
||||||
>
|
>
|
||||||
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](sdk-installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](sdk-installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](sdk-installing-on-windows.md#InstallingonWindows-Run).
|
>If you need help to run this code, refer to the **Running the tutorials** section for your platform: [Linux](installing-on-linux.md#InstallingonLinux-Run), [Mac OS X](installing-on-mac-osx.md#InstallingonMacOSX-Run) or [Windows](installing-on-windows.md#InstallingonWindows-Run).
|
||||||
>
|
>
|
||||||
> This tutorial opens a GTK+ window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. The Window has some GTK+ buttons to Pause, Stop and Play the movie, and a slider to show the current position of the stream, which can be dragged to change it. Also, information about the stream is shown on a column at the right edge of the window.
|
> This tutorial opens a GTK+ window and displays a movie, with accompanying audio. The media is fetched from the Internet, so the window might take a few seconds to appear, depending on your connection speed. The Window has some GTK+ buttons to Pause, Stop and Play the movie, and a slider to show the current position of the stream, which can be dragged to change it. Also, information about the stream is shown on a column at the right edge of the window.
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
> Bear in mind that there is no latency management (buffering), so on slow connections, the movie might stop after a few seconds. See how [](sdk-basic-tutorial-streaming.md) solves this issue.
|
> Bear in mind that there is no latency management (buffering), so on slow connections, the movie might stop after a few seconds. See how [](tutorial-basic-streaming.md) solves this issue.
|
||||||
>
|
>
|
||||||
> Required libraries: `gstreamer-video-1.0 gtk+-3.0 gstreamer-1.0`
|
> Required libraries: `gstreamer-video-1.0 gtk+-3.0 gstreamer-1.0`
|
||||||
|
|
||||||
@ -562,7 +562,7 @@ g_signal_connect (G_OBJECT (bus), "message::application", (GCallback)application
|
|||||||
gst_object_unref (bus);
|
gst_object_unref (bus);
|
||||||
```
|
```
|
||||||
|
|
||||||
In [](sdk-playback-tutorial-playbin-usage.md), `gst_bus_add_watch()` is
|
In [](tutorial-playback-playbin-usage.md), `gst_bus_add_watch()` is
|
||||||
used to register a function that receives every message posted to the
|
used to register a function that receives every message posted to the
|
||||||
GStreamer bus. We can achieve a finer granularity by using signals
|
GStreamer bus. We can achieve a finer granularity by using signals
|
||||||
instead, which allow us to register only to the messages we are
|
instead, which allow us to register only to the messages we are
|
||||||
@ -718,7 +718,7 @@ slider that allows seeking) can be very easily implemented thanks to
|
|||||||
GStreamer and GTK+ collaborating. If the slider has been dragged to a
|
GStreamer and GTK+ collaborating. If the slider has been dragged to a
|
||||||
new position, tell GStreamer to seek to that position
|
new position, tell GStreamer to seek to that position
|
||||||
with `gst_element_seek_simple()` (as seen in [Basic tutorial 4: Time
|
with `gst_element_seek_simple()` (as seen in [Basic tutorial 4: Time
|
||||||
management](sdk-basic-tutorial-time-management.md)). The
|
management](tutorial-basic-time-management.md)). The
|
||||||
slider has been setup so its value represents seconds.
|
slider has been setup so its value represents seconds.
|
||||||
|
|
||||||
It is worth mentioning that some performance (and responsiveness) can be
|
It is worth mentioning that some performance (and responsiveness) can be
|
||||||
@ -835,7 +835,7 @@ static void application_cb (GstBus *bus, GstMessage *msg, CustomData *data) {
|
|||||||
```
|
```
|
||||||
|
|
||||||
Once me made sure it is the `tags-changed` message, we call the
|
Once me made sure it is the `tags-changed` message, we call the
|
||||||
`analyze_streams` function, which is also used in [](sdk-playback-tutorial-playbin-usage.md) and is
|
`analyze_streams` function, which is also used in [](tutorial-playback-playbin-usage.md) and is
|
||||||
more detailed there. It basically recovers the tags from the stream and
|
more detailed there. It basically recovers the tags from the stream and
|
||||||
writes them in a text widget in the GUI.
|
writes them in a text widget in the GUI.
|
||||||
|
|
||||||
@ -856,7 +856,7 @@ If this media player is not good enough for you, try to change the text
|
|||||||
widget that displays the information about the streams into a proper
|
widget that displays the information about the streams into a proper
|
||||||
list view (or tree view). Then, when the user selects a different
|
list view (or tree view). Then, when the user selects a different
|
||||||
stream, make GStreamer switch streams! To switch streams, you will need
|
stream, make GStreamer switch streams! To switch streams, you will need
|
||||||
to read [](sdk-playback-tutorial-playbin-usage.md).
|
to read [](tutorial-playback-playbin-usage.md).
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
@ -14,7 +14,7 @@ iOS device. It shows:
|
|||||||
Slider](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISlider_Class/Reference/Reference.html)
|
Slider](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISlider_Class/Reference/Reference.html)
|
||||||
- How to report the media size to adapt the display surface
|
- How to report the media size to adapt the display surface
|
||||||
|
|
||||||
It also uses the knowledge gathered in the [](sdk-basic-tutorials.md) regarding:
|
It also uses the knowledge gathered in the [](tutorials-basic.md) regarding:
|
||||||
|
|
||||||
- How to use `playbin` to play any kind of media
|
- How to use `playbin` to play any kind of media
|
||||||
- How to handle network resilience problems
|
- How to handle network resilience problems
|
||||||
@ -26,7 +26,7 @@ pieces to build a media player. The most complex part is assembling a
|
|||||||
pipeline which retrieves, decodes and displays the media, but we
|
pipeline which retrieves, decodes and displays the media, but we
|
||||||
already know that the `playbin` element can take care of all that for
|
already know that the `playbin` element can take care of all that for
|
||||||
us. We only need to replace the manual pipeline we used in
|
us. We only need to replace the manual pipeline we used in
|
||||||
[](sdk-ios-tutorial-video.md) with a single-element `playbin` pipeline
|
[](tutorial-ios-video.md) with a single-element `playbin` pipeline
|
||||||
and we are good to go!
|
and we are good to go!
|
||||||
|
|
||||||
However, we can do better than. We will add a [Time
|
However, we can do better than. We will add a [Time
|
||||||
@ -344,7 +344,7 @@ for some kind of streams), or when it is first detected,
|
|||||||
```
|
```
|
||||||
|
|
||||||
Here we simply store the new size and ask the layout to be recalculated.
|
Here we simply store the new size and ask the layout to be recalculated.
|
||||||
As we have already seen in [](sdk-ios-tutorial-a-running-pipeline.md),
|
As we have already seen in [](tutorial-ios-a-running-pipeline.md),
|
||||||
methods which change the UI must be called from the main thread, and we
|
methods which change the UI must be called from the main thread, and we
|
||||||
are now in a callback from some GStreamer internal thread. Hence, the
|
are now in a callback from some GStreamer internal thread. Hence, the
|
||||||
usage
|
usage
|
||||||
@ -352,7 +352,7 @@ of `dispatch_async()`[.](http://developer.android.com/reference/android/app/Acti
|
|||||||
|
|
||||||
### Refreshing the Time Slider
|
### Refreshing the Time Slider
|
||||||
|
|
||||||
[](sdk-basic-tutorial-toolkit-integration.md) has
|
[](tutorial-basic-toolkit-integration.md) has
|
||||||
already shown how to implement a Seek Bar (or [Time
|
already shown how to implement a Seek Bar (or [Time
|
||||||
Slider](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISlider_Class/Reference/Reference.html)
|
Slider](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISlider_Class/Reference/Reference.html)
|
||||||
in this tutorial) using the GTK+ toolkit. The implementation on iOS is
|
in this tutorial) using the GTK+ toolkit. The implementation on iOS is
|
||||||
@ -1005,7 +1005,7 @@ static gboolean refresh_ui (GStreamerBackend *self) {
|
|||||||
```
|
```
|
||||||
|
|
||||||
If it is unknown, the clip duration is retrieved, as explained in
|
If it is unknown, the clip duration is retrieved, as explained in
|
||||||
[](sdk-basic-tutorial-time-management.md). The current position is
|
[](tutorial-basic-time-management.md). The current position is
|
||||||
retrieved next, and the UI is informed of both through its
|
retrieved next, and the UI is informed of both through its
|
||||||
`setCurrentUIPosition` callback.
|
`setCurrentUIPosition` callback.
|
||||||
|
|
||||||
@ -1144,7 +1144,7 @@ calls `execute_seek()` again.
|
|||||||
|
|
||||||
### Network resilience
|
### Network resilience
|
||||||
|
|
||||||
[](sdk-basic-tutorial-streaming.md) has already
|
[](tutorial-basic-streaming.md) has already
|
||||||
shown how to adapt to the variable nature of the network bandwidth by
|
shown how to adapt to the variable nature of the network bandwidth by
|
||||||
using buffering. The same procedure is used here, by listening to the
|
using buffering. The same procedure is used here, by listening to the
|
||||||
buffering
|
buffering
|
||||||
@ -1207,4 +1207,4 @@ The next tutorial adds the missing bits to turn the application built
|
|||||||
here into an acceptable iOS media player.
|
here into an acceptable iOS media player.
|
||||||
|
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[screenshot]: images/sdk-ios-tutorial-a-basic-media-player-screenshot.png
|
[screenshot]: images/tutorial-ios-a-basic-media-player-screenshot.png
|
@ -10,7 +10,7 @@ be done with GStreamer on the iOS platform.
|
|||||||
|
|
||||||
It is intended to be built and run, rather than analyzed for its
|
It is intended to be built and run, rather than analyzed for its
|
||||||
pedagogical value, since it adds very little GStreamer knowledge over
|
pedagogical value, since it adds very little GStreamer knowledge over
|
||||||
what has already been shown in [](sdk-ios-tutorial-a-basic-media-player.md).
|
what has already been shown in [](tutorial-ios-a-basic-media-player.md).
|
||||||
|
|
||||||
It demonstrates the main functionality that a conventional media player
|
It demonstrates the main functionality that a conventional media player
|
||||||
has, but it is not a complete application yet, therefore it has not been
|
has, but it is not a complete application yet, therefore it has not been
|
||||||
@ -31,7 +31,7 @@ are given here.
|
|||||||
|
|
||||||
A new `UIView` has been added, derived from `UITableViewController`
|
A new `UIView` has been added, derived from `UITableViewController`
|
||||||
which shows a list of clips. When one is selected, the
|
which shows a list of clips. When one is selected, the
|
||||||
`VideoViewController` from [](sdk-ios-tutorial-a-basic-media-player.md) appears
|
`VideoViewController` from [](tutorial-ios-a-basic-media-player.md) appears
|
||||||
and its URI property is set to the URI of the selected clip.
|
and its URI property is set to the URI of the selected clip.
|
||||||
|
|
||||||
The list of clips is populated from three sources: Media from the
|
The list of clips is populated from three sources: Media from the
|
||||||
@ -60,5 +60,5 @@ already be used to showcase the integration of GStreamer and iOS.
|
|||||||
|
|
||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[screenshot0]: images/sdk-ios-tutorial-a-complete-media-player-screenshot-0.png
|
[screenshot0]: images/tutorial-ios-a-complete-media-player-screenshot-0.png
|
||||||
[screenshot1]: images/sdk-ios-tutorial-a-complete-media-player-screenshot-1.png
|
[screenshot1]: images/tutorial-ios-a-complete-media-player-screenshot-1.png
|
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
![screenshot]
|
![screenshot]
|
||||||
|
|
||||||
As seen in the [Basic](sdk-basic-tutorials.md) and
|
As seen in the [Basic](tutorials-basic.md) and
|
||||||
[Playback](sdk-playback-tutorials.md) tutorials, GStreamer integrates
|
[Playback](tutorials-playback.md) tutorials, GStreamer integrates
|
||||||
nicely with GLib’s main loops, so pipeline operation and user interface
|
nicely with GLib’s main loops, so pipeline operation and user interface
|
||||||
can be monitored simultaneously in a very simple way. However, platforms
|
can be monitored simultaneously in a very simple way. However, platforms
|
||||||
like iOS or Android do not use GLib and therefore extra care must be
|
like iOS or Android do not use GLib and therefore extra care must be
|
||||||
@ -522,7 +522,7 @@ static void state_changed_cb (GstBus *bus, GstMessage *msg, GStreamerBackend *se
|
|||||||
The `error_cb()` and `state_changed_cb()` are callbacks registered to
|
The `error_cb()` and `state_changed_cb()` are callbacks registered to
|
||||||
the `error` and `state-changed` events in GStreamer, and their goal is
|
the `error` and `state-changed` events in GStreamer, and their goal is
|
||||||
to inform the user about these events. These callbacks have been widely
|
to inform the user about these events. These callbacks have been widely
|
||||||
used in the [Basic tutorials](sdk-basic-tutorials.md) and their
|
used in the [Basic tutorials](tutorials-basic.md) and their
|
||||||
implementation is very similar, except for two points:
|
implementation is very similar, except for two points:
|
||||||
|
|
||||||
Firstly, the messages are conveyed to the user through the
|
Firstly, the messages are conveyed to the user through the
|
||||||
@ -605,7 +605,7 @@ elements.
|
|||||||
|
|
||||||
These lines create a bus signal watch and connect to some interesting
|
These lines create a bus signal watch and connect to some interesting
|
||||||
signals, just like we have been doing in the [Basic
|
signals, just like we have been doing in the [Basic
|
||||||
tutorials](sdk-basic-tutorials.md). The creation of the watch is done
|
tutorials](tutorials-basic.md). The creation of the watch is done
|
||||||
step by step instead of using `gst_bus_add_signal_watch()` to exemplify
|
step by step instead of using `gst_bus_add_signal_watch()` to exemplify
|
||||||
how to use a custom GLib context. The interesting bit here is the usage
|
how to use a custom GLib context. The interesting bit here is the usage
|
||||||
of a
|
of a
|
||||||
@ -656,4 +656,4 @@ to them!
|
|||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
|
|
||||||
[screenshot]: images/sdk-ios-tutorial-a-running-pipeline-screenshot.png
|
[screenshot]: images/tutorial-ios-a-running-pipeline-screenshot.png
|
@ -49,7 +49,7 @@ few C-to-Objective-C conversions that might be necessary (like `char
|
|||||||
*` to `NSString *`, for example). This eases the usage of this class by
|
*` to `NSString *`, for example). This eases the usage of this class by
|
||||||
the UI code, which is typically made in pure Objective-C.
|
the UI code, which is typically made in pure Objective-C.
|
||||||
`GStreamerBackend` serves exactly the same purpose as the JNI code in
|
`GStreamerBackend` serves exactly the same purpose as the JNI code in
|
||||||
the [](sdk-android-tutorials.md).
|
the [](tutorials-android.md).
|
||||||
|
|
||||||
**GStreamerBackend.m**
|
**GStreamerBackend.m**
|
||||||
|
|
||||||
@ -133,4 +133,4 @@ taken when developing specifically for the iOS platform.
|
|||||||
|
|
||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[screenshot]: images/sdk-ios-tutorial-link-against-gstreamer-screenshot.png
|
[screenshot]: images/tutorial-ios-link-against-gstreamer-screenshot.png
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
![screenshot]
|
![screenshot]
|
||||||
|
|
||||||
Except for [](sdk-basic-tutorial-toolkit-integration.md),
|
Except for [](tutorial-basic-toolkit-integration.md),
|
||||||
which embedded a video window on a GTK application, all tutorials so far
|
which embedded a video window on a GTK application, all tutorials so far
|
||||||
relied on GStreamer video sinks to create a window to display their
|
relied on GStreamer video sinks to create a window to display their
|
||||||
contents. The video sink on iOS is not capable of creating its own
|
contents. The video sink on iOS is not capable of creating its own
|
||||||
@ -20,7 +20,7 @@ Since iOS does not provide a windowing system, a GStreamer video sink
|
|||||||
cannot create pop-up windows as it would do on a Desktop platform.
|
cannot create pop-up windows as it would do on a Desktop platform.
|
||||||
Fortunately, the `VideoOverlay` interface allows providing video sinks with
|
Fortunately, the `VideoOverlay` interface allows providing video sinks with
|
||||||
an already created window onto which they can draw, as we have seen
|
an already created window onto which they can draw, as we have seen
|
||||||
in [](sdk-basic-tutorial-toolkit-integration.md).
|
in [](tutorial-basic-toolkit-integration.md).
|
||||||
|
|
||||||
In this tutorial, a `UIView` widget (actually, a subclass of it) is
|
In this tutorial, a `UIView` widget (actually, a subclass of it) is
|
||||||
placed on the main storyboard. In the `viewDidLoad` method of the
|
placed on the main storyboard. In the `viewDidLoad` method of the
|
||||||
@ -516,7 +516,7 @@ ask for it immediately.
|
|||||||
The `gst_bin_get_by_interface()` method will examine the whole pipeline
|
The `gst_bin_get_by_interface()` method will examine the whole pipeline
|
||||||
and return a pointer to an element which supports the requested
|
and return a pointer to an element which supports the requested
|
||||||
interface. We are asking for the `VideoOverlay` interface, explained in
|
interface. We are asking for the `VideoOverlay` interface, explained in
|
||||||
[](sdk-basic-tutorial-toolkit-integration.md),
|
[](tutorial-basic-toolkit-integration.md),
|
||||||
which controls how to perform rendering into foreign (non-GStreamer)
|
which controls how to perform rendering into foreign (non-GStreamer)
|
||||||
windows. The internal video sink instantiated by `autovideosink` is the
|
windows. The internal video sink instantiated by `autovideosink` is the
|
||||||
only element in this pipeline implementing it, so it will be returned.
|
only element in this pipeline implementing it, so it will be returned.
|
||||||
@ -575,4 +575,4 @@ to this tutorial in order to build a simple media player.
|
|||||||
|
|
||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[screenshot]: images/sdk-ios-tutorial-video-screenshot.png
|
[screenshot]: images/tutorial-ios-video-screenshot.png
|
@ -245,10 +245,10 @@ This tutorial has shown:
|
|||||||
It has been a pleasure having you here, and see you soon\!
|
It has been a pleasure having you here, and see you soon\!
|
||||||
|
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[Mac]: sdk-installing-on-mac-osx.md
|
[Mac]: installing-on-mac-osx.md
|
||||||
[Windows]: sdk-installing-on-windows.md
|
[Windows]: installing-on-windows.md
|
||||||
[Mac OS X]: sdk-installing-on-mac-osx.md#building-the-tutorials
|
[Mac OS X]: installing-on-mac-osx.md#building-the-tutorials
|
||||||
[1]: sdk-installing-on-windows.md#running-the-tutorials
|
[1]: installing-on-windows.md#running-the-tutorials
|
||||||
[iOS]: sdk-installing-for-ios-development.md#building-the-tutorials
|
[iOS]: installing-for-ios-development.md#building-the-tutorials
|
||||||
[android]: sdk-installing-for-android-development.md#building-the-tutorials
|
[android]: installing-for-android-development.md#building-the-tutorials
|
||||||
[warning]: images/icons/emoticons/warning.png
|
[warning]: images/icons/emoticons/warning.png
|
@ -10,7 +10,7 @@ This tutorial shows:
|
|||||||
- How to change them
|
- How to change them
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
[](sdk-basic-tutorial-toolkit-integration.md) has
|
[](tutorial-basic-toolkit-integration.md) has
|
||||||
already explained the concept of GObject interfaces: applications use
|
already explained the concept of GObject interfaces: applications use
|
||||||
them to find out if certain functionality is available, regardless of
|
them to find out if certain functionality is available, regardless of
|
||||||
the actual element which implements it.
|
the actual element which implements it.
|
||||||
@ -298,10 +298,10 @@ It has been a pleasure having you here, and see you soon\!
|
|||||||
|
|
||||||
|
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[Mac]: sdk-installing-on-mac-osx.md
|
[Mac]: installing-on-mac-osx.md
|
||||||
[Windows]: sdk-installing-on-windows.md
|
[Windows]: installing-on-windows.md
|
||||||
[Mac OS X]: sdk-installing-on-mac-osx.md#building-the-tutorials
|
[Mac OS X]: installing-on-mac-osx.md#building-the-tutorials
|
||||||
[1]: sdk-installing-on-windows.md#running-the-tutorials
|
[1]: installing-on-windows.md#running-the-tutorials
|
||||||
[iOS]: sdk-installing-for-ios-development.md#building-the-tutorials
|
[iOS]: installing-for-ios-development.md#building-the-tutorials
|
||||||
[android]: sdk-installing-for-android-development.md#building-the-tutorials
|
[android]: installing-for-android-development.md#building-the-tutorials
|
||||||
[warning]: images/icons/emoticons/warning.png
|
[warning]: images/icons/emoticons/warning.png
|
@ -156,7 +156,7 @@ Now we need to create a Ghost Pad so this partial pipeline inside the
|
|||||||
Bin can be connected to the outside. This Ghost Pad will be connected to
|
Bin can be connected to the outside. This Ghost Pad will be connected to
|
||||||
a Pad in one of the internal Elements (the sink pad of the equalizer),
|
a Pad in one of the internal Elements (the sink pad of the equalizer),
|
||||||
so we retrieve this Pad with `gst_element_get_static_pad()`. Remember
|
so we retrieve this Pad with `gst_element_get_static_pad()`. Remember
|
||||||
from [](sdk-basic-tutorial-multithreading-and-pad-availability.md) that
|
from [](tutorial-basic-multithreading-and-pad-availability.md) that
|
||||||
if this was a Request Pad instead of an Always Pad, we would need to use
|
if this was a Request Pad instead of an Always Pad, we would need to use
|
||||||
`gst_element_request_pad()`.
|
`gst_element_request_pad()`.
|
||||||
|
|
||||||
@ -212,10 +212,10 @@ This tutorial has shown:
|
|||||||
It has been a pleasure having you here, and see you soon\!
|
It has been a pleasure having you here, and see you soon\!
|
||||||
|
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[Mac]: sdk-installing-on-mac-osx.md
|
[Mac]: installing-on-mac-osx.md
|
||||||
[Windows]: sdk-installing-on-windows.md
|
[Windows]: installing-on-windows.md
|
||||||
[Mac OS X]: sdk-installing-on-mac-osx.md#building-the-tutorials
|
[Mac OS X]: installing-on-mac-osx.md#building-the-tutorials
|
||||||
[1]: sdk-installing-on-windows.md#running-the-tutorials
|
[1]: installing-on-windows.md#running-the-tutorials
|
||||||
[iOS]: sdk-installing-for-ios-development.md#building-the-tutorials
|
[iOS]: installing-for-ios-development.md#building-the-tutorials
|
||||||
[android]: sdk-installing-for-android-development.md#building-the-tutorials
|
[android]: installing-for-android-development.md#building-the-tutorials
|
||||||
[warning]: images/icons/emoticons/warning.png
|
[warning]: images/icons/emoticons/warning.png
|
@ -77,8 +77,8 @@ enabled, but, unfortunately, this option is not available in all audio
|
|||||||
drivers.
|
drivers.
|
||||||
|
|
||||||
Another solution involves, using a custom sinkbin (see
|
Another solution involves, using a custom sinkbin (see
|
||||||
[](sdk-playback-tutorial-custom-playbin-sinks.md)) which includes a
|
[](tutorial-playback-custom-playbin-sinks.md)) which includes a
|
||||||
`capsfilter` element (see [](sdk-basic-tutorial-handy-elements.md))
|
`capsfilter` element (see [](tutorial-basic-handy-elements.md))
|
||||||
and an audio sink. The caps that the external decoder supports are
|
and an audio sink. The caps that the external decoder supports are
|
||||||
then set in the capsfiler so the wrong format is not output. This
|
then set in the capsfiler so the wrong format is not output. This
|
||||||
allows the application to enforce the appropriate format instead of
|
allows the application to enforce the appropriate format instead of
|
@ -579,11 +579,11 @@ code of the tutorial and any accessory files needed to build it.
|
|||||||
|
|
||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[Playback tutorial 2: Subtitle management]: sdk-playback-tutorial-subtitle-management.md
|
[Playback tutorial 2: Subtitle management]: tutorial-playback-subtitle-management.md
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[Mac]: sdk-installing-on-mac-osx.md
|
[Mac]: installing-on-mac-osx.md
|
||||||
[Windows]: sdk-installing-on-windows.md
|
[Windows]: installing-on-windows.md
|
||||||
[Mac OS X]: sdk-installing-on-mac-osx.md#building-the-tutorials
|
[Mac OS X]: installing-on-mac-osx.md#building-the-tutorials
|
||||||
[1]: sdk-installing-on-windows.md#running-the-tutorials
|
[1]: installing-on-windows.md#running-the-tutorials
|
||||||
[iOS]: sdk-installing-for-ios-development.md#building-the-tutorials
|
[iOS]: installing-for-ios-development.md#building-the-tutorials
|
||||||
[android]: sdk-installing-for-android-development.md#building-the-tutorials
|
[android]: installing-for-android-development.md#building-the-tutorials
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Goal
|
## Goal
|
||||||
|
|
||||||
[](sdk-basic-tutorial-streaming.md) showed how to
|
[](tutorial-basic-streaming.md) showed how to
|
||||||
enhance the user experience in poor network conditions, by taking
|
enhance the user experience in poor network conditions, by taking
|
||||||
buffering into account. This tutorial further expands
|
buffering into account. This tutorial further expands
|
||||||
[](sdk-basic-tutorial-streaming.md) by enabling
|
[](tutorial-basic-streaming.md) by enabling
|
||||||
the local storage of the streamed media, and describes the advantages of
|
the local storage of the streamed media, and describes the advantages of
|
||||||
this technique. In particular, it shows:
|
this technique. In particular, it shows:
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ this technique. In particular, it shows:
|
|||||||
|
|
||||||
When streaming, data is fetched from the network and a small buffer of
|
When streaming, data is fetched from the network and a small buffer of
|
||||||
future-data is kept to ensure smooth playback (see
|
future-data is kept to ensure smooth playback (see
|
||||||
[](sdk-basic-tutorial-streaming.md)). However, data
|
[](tutorial-basic-streaming.md)). However, data
|
||||||
is discarded as soon as it is displayed or rendered (there is no
|
is discarded as soon as it is displayed or rendered (there is no
|
||||||
past-data buffer). This means, that if a user wants to jump back and
|
past-data buffer). This means, that if a user wants to jump back and
|
||||||
continue playback from a point in the past, data needs to be
|
continue playback from a point in the past, data needs to be
|
||||||
@ -240,7 +240,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
## Walkthrough
|
## Walkthrough
|
||||||
|
|
||||||
This code is based on that of [](sdk-basic-tutorial-streaming.md). Let’s review
|
This code is based on that of [](tutorial-basic-streaming.md). Let’s review
|
||||||
only the differences.
|
only the differences.
|
||||||
|
|
||||||
### Setup
|
### Setup
|
||||||
@ -322,7 +322,7 @@ static gboolean refresh_ui (CustomData *data) {
|
|||||||
|
|
||||||
The first thing we do in `refresh_ui` is construct a new Buffering
|
The first thing we do in `refresh_ui` is construct a new Buffering
|
||||||
`GstQuery` with `gst_query_new_buffering()` and pass it to the pipeline
|
`GstQuery` with `gst_query_new_buffering()` and pass it to the pipeline
|
||||||
(`playbin`) with `gst_element_query()`. In [](sdk-basic-tutorial-time-management.md) we have
|
(`playbin`) with `gst_element_query()`. In [](tutorial-basic-time-management.md) we have
|
||||||
already seen how to perform simple queries like Position and Duration
|
already seen how to perform simple queries like Position and Duration
|
||||||
using specific methods. More complex queries, like Buffering, need to
|
using specific methods. More complex queries, like Buffering, need to
|
||||||
use the more general `gst_element_query()`.
|
use the more general `gst_element_query()`.
|
||||||
@ -419,10 +419,10 @@ This tutorial has shown:
|
|||||||
It has been a pleasure having you here, and see you soon!
|
It has been a pleasure having you here, and see you soon!
|
||||||
|
|
||||||
[information]: images/icons/emoticons/information.png
|
[information]: images/icons/emoticons/information.png
|
||||||
[Mac]: sdk-installing-on-mac-osx.md
|
[Mac]: installing-on-mac-osx.md
|
||||||
[Windows]: sdk-installing-on-windows.md
|
[Windows]: installing-on-windows.md
|
||||||
[Mac OS X]: sdk-installing-on-mac-osx.md#building-the-tutorials
|
[Mac OS X]: installing-on-mac-osx.md#building-the-tutorials
|
||||||
[1]: sdk-installing-on-windows.md#running-the-tutorials
|
[1]: installing-on-windows.md#running-the-tutorials
|
||||||
[iOS]: sdk-installing-for-ios-development.md#building-the-tutorials
|
[iOS]: installing-for-ios-development.md#building-the-tutorials
|
||||||
[android]: sdk-installing-for-android-development.md#building-the-tutorials
|
[android]: installing-for-android-development.md#building-the-tutorials
|
||||||
[warning]: images/icons/emoticons/warning.png
|
[warning]: images/icons/emoticons/warning.png
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
## Goal
|
## Goal
|
||||||
|
|
||||||
[](sdk-basic-tutorial-short-cutting-the-pipeline.md) showed
|
[](tutorial-basic-short-cutting-the-pipeline.md) showed
|
||||||
how an application can manually extract or inject data into a pipeline
|
how an application can manually extract or inject data into a pipeline
|
||||||
by using two special elements called `appsrc` and `appsink`.
|
by using two special elements called `appsrc` and `appsink`.
|
||||||
`playbin` allows using these elements too, but the method to connect
|
`playbin` allows using these elements too, but the method to connect
|
||||||
them is different. To connect an `appsink` to `playbin` see [](sdk-playback-tutorial-custom-playbin-sinks.md).
|
them is different. To connect an `appsink` to `playbin` see [](tutorial-playback-custom-playbin-sinks.md).
|
||||||
This tutorial shows:
|
This tutorial shows:
|
||||||
|
|
||||||
- How to connect `appsrc` with `playbin`
|
- How to connect `appsrc` with `playbin`
|
||||||
@ -219,10 +219,10 @@ static void source_setup (GstElement *pipeline, GstElement *source, CustomData *
|
|||||||
```
|
```
|
||||||
|
|
||||||
The configuration of the `appsrc` is exactly the same as in
|
The configuration of the `appsrc` is exactly the same as in
|
||||||
[](sdk-basic-tutorial-short-cutting-the-pipeline.md):
|
[](tutorial-basic-short-cutting-the-pipeline.md):
|
||||||
the caps are set to `audio/x-raw`, and two callbacks are registered,
|
the caps are set to `audio/x-raw`, and two callbacks are registered,
|
||||||
so the element can tell the application when it needs to start and stop
|
so the element can tell the application when it needs to start and stop
|
||||||
pushing data. See [](sdk-basic-tutorial-short-cutting-the-pipeline.md)
|
pushing data. See [](tutorial-basic-short-cutting-the-pipeline.md)
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
From this point onwards, `playbin` takes care of the rest of the
|
From this point onwards, `playbin` takes care of the rest of the
|
||||||
@ -230,12 +230,12 @@ pipeline, and the application only needs to worry about generating more
|
|||||||
data when told so.
|
data when told so.
|
||||||
|
|
||||||
To learn how data can be extracted from `playbin` using the
|
To learn how data can be extracted from `playbin` using the
|
||||||
`appsink` element, see [](sdk-playback-tutorial-custom-playbin-sinks.md).
|
`appsink` element, see [](tutorial-playback-custom-playbin-sinks.md).
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
This tutorial applies the concepts shown in
|
This tutorial applies the concepts shown in
|
||||||
[](sdk-basic-tutorial-short-cutting-the-pipeline.md) to
|
[](tutorial-basic-short-cutting-the-pipeline.md) to
|
||||||
`playbin`. In particular, it has shown:
|
`playbin`. In particular, it has shown:
|
||||||
|
|
||||||
- How to connect `appsrc` with `playbin` using the special
|
- How to connect `appsrc` with `playbin` using the special
|
@ -286,14 +286,14 @@ static gboolean handle_keyboard (GIOChannel *source, GIOCondition cond, CustomDa
|
|||||||
> page._ Bear in mind that
|
> page._ Bear in mind that
|
||||||
> there is no latency management (buffering), so on slow connections,
|
> there is no latency management (buffering), so on slow connections,
|
||||||
> the movie might stop after a few seconds. See how
|
> the movie might stop after a few seconds. See how
|
||||||
> [](sdk-basic-tutorial-streaming.md) solves this issue.
|
> [](tutorial-basic-streaming.md) solves this issue.
|
||||||
>
|
>
|
||||||
> Required libraries: `gstreamer-1.0`
|
> Required libraries: `gstreamer-1.0`
|
||||||
|
|
||||||
## Walkthrough
|
## Walkthrough
|
||||||
|
|
||||||
This tutorial is copied from
|
This tutorial is copied from
|
||||||
[](sdk-playback-tutorial-playbin-usage.md) with some changes, so let's
|
[](tutorial-playback-playbin-usage.md) with some changes, so let's
|
||||||
review only the changes.
|
review only the changes.
|
||||||
|
|
||||||
``` c
|
``` c
|
||||||
@ -359,7 +359,7 @@ g_object_set (data.playbin, "flags", flags, NULL);
|
|||||||
|
|
||||||
We set the `flags` property to allow Audio, Video and Text (Subtitles).
|
We set the `flags` property to allow Audio, Video and Text (Subtitles).
|
||||||
|
|
||||||
The rest of the tutorial is the same as [](sdk-playback-tutorial-playbin-usage.md), except
|
The rest of the tutorial is the same as [](tutorial-playback-playbin-usage.md), except
|
||||||
that the keyboard input changes the `current-text` property instead of
|
that the keyboard input changes the `current-text` property instead of
|
||||||
the `current-audio`. As before, keep in mind that stream changes are not
|
the `current-audio`. As before, keep in mind that stream changes are not
|
||||||
immediate, since there is a lot of information flowing through the
|
immediate, since there is a lot of information flowing through the
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
These tutorials describe Qt-specific topics. General GStreamer concepts
|
These tutorials describe Qt-specific topics. General GStreamer concepts
|
||||||
will not be explained in these tutorials, so the [Basic
|
will not be explained in these tutorials, so the [Basic
|
||||||
tutorials](sdk-basic-tutorials.md) should
|
tutorials](tutorials-basic.md) should
|
||||||
be reviewed first. The reader should also be familiar with basic Qt
|
be reviewed first. The reader should also be familiar with basic Qt
|
||||||
programming techniques.
|
programming techniques.
|
||||||
|
|
||||||
The Qt tutorials have the same structure as the [Android
|
The Qt tutorials have the same structure as the [Android
|
||||||
tutorials](sdk-android-tutorials.md): Each one builds on top of the
|
tutorials](tutorials-android.md): Each one builds on top of the
|
||||||
previous one and adds progressively more functionality, until a working
|
previous one and adds progressively more functionality, until a working
|
||||||
media player application is obtained in \#FIXME\#
|
media player application is obtained in \#FIXME\#
|
@ -4,18 +4,18 @@
|
|||||||
|
|
||||||
These tutorials describe Android-specific topics. General GStreamer
|
These tutorials describe Android-specific topics. General GStreamer
|
||||||
concepts will not be explained in these tutorials, so the
|
concepts will not be explained in these tutorials, so the
|
||||||
[](sdk-basic-tutorials.md) should be reviewed first. The reader should
|
[](tutorials-basic.md) should be reviewed first. The reader should
|
||||||
also be familiar with basic Android programming techniques.
|
also be familiar with basic Android programming techniques.
|
||||||
|
|
||||||
Each Android tutorial builds on top of the previous one and adds
|
Each Android tutorial builds on top of the previous one and adds
|
||||||
progressively more functionality, until a working media player
|
progressively more functionality, until a working media player
|
||||||
application is obtained in [](sdk-android-tutorial-a-complete-media-player.md).
|
application is obtained in [](tutorial-android-a-complete-media-player.md).
|
||||||
This is the same media player application used to advertise
|
This is the same media player application used to advertise
|
||||||
GStreamer on Android, and the download link can be found in
|
GStreamer on Android, and the download link can be found in
|
||||||
the [](sdk-android-tutorial-a-complete-media-player.md) page.
|
the [](tutorial-android-a-complete-media-player.md) page.
|
||||||
|
|
||||||
Make sure to have read the instructions in
|
Make sure to have read the instructions in
|
||||||
[](sdk-installing-for-android-development.md) before jumping into the
|
[](installing-for-android-development.md) before jumping into the
|
||||||
Android tutorials.
|
Android tutorials.
|
||||||
|
|
||||||
### A note on the documentation
|
### A note on the documentation
|
@ -4,17 +4,17 @@
|
|||||||
|
|
||||||
These tutorials describe iOS-specific topics. General GStreamer
|
These tutorials describe iOS-specific topics. General GStreamer
|
||||||
concepts will not be explained in these tutorials, so the
|
concepts will not be explained in these tutorials, so the
|
||||||
[](sdk-basic-tutorials.md) should be reviewed first. The reader should
|
[](tutorials-basic.md) should be reviewed first. The reader should
|
||||||
also be familiar with basic iOS programming techniques.
|
also be familiar with basic iOS programming techniques.
|
||||||
|
|
||||||
The iOS tutorials have the same structure as the
|
The iOS tutorials have the same structure as the
|
||||||
[](sdk-android-tutorials.md): Each one builds on top of the previous
|
[](tutorials-android.md): Each one builds on top of the previous
|
||||||
one and adds progressively more functionality, until a working media
|
one and adds progressively more functionality, until a working media
|
||||||
player application is obtained in
|
player application is obtained in
|
||||||
[](sdk-ios-tutorial-a-complete-media-player.md).
|
[](tutorial-ios-a-complete-media-player.md).
|
||||||
|
|
||||||
Make sure to have read the instructions in
|
Make sure to have read the instructions in
|
||||||
[](sdk-installing-for-ios-development.md) before jumping into the iOS
|
[](installing-for-ios-development.md) before jumping into the iOS
|
||||||
tutorials.
|
tutorials.
|
||||||
|
|
||||||
All iOS tutorials are split into the following classes:
|
All iOS tutorials are split into the following classes:
|
@ -77,11 +77,11 @@ purposes.
|
|||||||
|
|
||||||
- [Sintel, the Durian Open Movie Project]
|
- [Sintel, the Durian Open Movie Project]
|
||||||
|
|
||||||
[installing GStreamer]: sdk-installing.md
|
[installing GStreamer]: installing.md
|
||||||
[GStreamer documentation]: http://gstreamer.freedesktop.org/documentation/
|
[GStreamer documentation]: http://gstreamer.freedesktop.org/documentation/
|
||||||
[Basic tutorials]: sdk-basic-tutorials.md
|
[Basic tutorials]: tutorials-basic.md
|
||||||
[Playback tutorials]: sdk-playback-tutorials.md
|
[Playback tutorials]: tutorials-playback.md
|
||||||
[Android tutorials]: sdk-android-tutorials.md
|
[Android tutorials]: tutorials-android.md
|
||||||
[iOS tutorials]: sdk-ios-tutorials.md
|
[iOS tutorials]: tutorials-ios.md
|
||||||
[Table of Concepts]: sdk-table-of-concepts.md
|
[Table of Concepts]: table-of-concepts.md
|
||||||
[Sintel, the Durian Open Movie Project]: http://www.sintel.org/
|
[Sintel, the Durian Open Movie Project]: http://www.sintel.org/
|