Commit 6593630e authored by Thibault Saunier's avatar Thibault Saunier 🌵

Merging gst-omx

parents 066ed035 2939a46d
*~
*.bak
*.swp
include: "https://gitlab.freedesktop.org/gstreamer/gst-ci/raw/master/gitlab/ci_template.yml"
Sebastian Dröge <sebastian.droege@collabora.co.uk>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
GStreamer OpenMAX IL wrapper plugin
--------------------------
This plugin wraps available OpenMAX IL components and makes
them available as standard GStreamer elements.
License:
--------
This package and its contents are licensend under the GNU Lesser General
Public License (LGPL).
Dependencies:
-------------
* GStreamer core
* gst-plugins-base
This is GStreamer gst-omx 1.17.0.1.
The GStreamer team is thrilled to announce a new major feature release in the
stable 1.0 API series of your favourite cross-platform multimedia framework!
As always, this release is again packed with new features, bug fixes and
other improvements.
The 1.16 release series adds new features on top of the 1.14 series and is
part of the API and ABI-stable 1.x release series of the GStreamer multimedia
framework.
Full release notes will one day be found at:
https://gstreamer.freedesktop.org/releases/1.16/
Binaries for Android, iOS, Mac OS X and Windows will usually be provided
shortly after the release.
This module will not be very useful by itself and should be used in conjunction
with other GStreamer modules for a complete multimedia experience.
- gstreamer: provides the core GStreamer libraries and some generic plugins
- gst-plugins-base: a basic set of well-supported plugins and additional
media-specific GStreamer helper libraries for audio,
video, rtsp, rtp, tags, OpenGL, etc.
- gst-plugins-good: a set of well-supported plugins under our preferred
license
- gst-plugins-ugly: a set of well-supported plugins which might pose
problems for distributors
- gst-plugins-bad: a set of plugins of varying quality that have not made
their way into one of core/base/good/ugly yet, for one
reason or another. Many of these are are production quality
elements, but may still be missing documentation or unit
tests; others haven't passed the rigorous quality testing
we expect yet.
- gst-libav: a set of codecs plugins based on the ffmpeg library. This is
where you can find audio and video decoders and encoders
for a wide variety of formats including H.264, AAC, etc.
- gstreamer-vaapi: hardware-accelerated video decoding and encoding using
VA-API on Linux. Primarily for Intel graphics hardware.
- gst-omx: hardware-accelerated video decoding and encoding, primarily for
embedded Linux systems that provide an OpenMax
implementation layer such as the Raspberry Pi.
- gst-rtsp-server: library to serve files or streaming pipelines via RTSP
- gst-editing-services: library an plugins for non-linear editing
==== Download ====
You can find source releases of gstreamer in the download
directory: https://gstreamer.freedesktop.org/src/gstreamer/
The git repository and details how to clone it can be found at
https://cgit.freedesktop.org/gstreamer/gstreamer/
==== Homepage ====
The project's website is https://gstreamer.freedesktop.org/
==== Support and Bugs ====
We have recently moved from GNOME Bugzilla to GitLab on freedesktop.org
for bug reports and feature requests:
https://gitlab.freedesktop.org/gstreamer
Please submit patches via GitLab as well, in form of Merge Requests. See
https://gstreamer.freedesktop.org/documentation/contribute/
for more details.
For help and support, please subscribe to and send questions to the
gstreamer-devel mailing list (see below for details).
There is also a #gstreamer IRC channel on the Freenode IRC network.
==== Developers ====
GStreamer source code repositories can be found on GitLab on freedesktop.org:
https://gitlab.freedesktop.org/gstreamer
and can also be cloned from there and this is also where you can submit
Merge Requests or file issues for bugs or feature requests.
Interested developers of the core library, plugins, and applications should
subscribe to the gstreamer-devel list:
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
[omxmpeg4videodec]
type-name=GstOMXMPEG4VideoDec
core-name=/usr/local/lib/libomxil-bellagio.so.0
component-name=OMX.st.video_decoder.mpeg4
rank=257
in-port-index=0
out-port-index=1
hacks=event-port-settings-changed-ndata-parameter-swap;event-port-settings-changed-port-0-to-1
[omxh264dec]
type-name=GstOMXH264Dec
core-name=/usr/local/lib/libomxil-bellagio.so.0
component-name=OMX.st.video_decoder.avc
rank=257
in-port-index=0
out-port-index=1
hacks=event-port-settings-changed-ndata-parameter-swap;event-port-settings-changed-port-0-to-1
[omxmpeg4videoenc]
type-name=GstOMXMPEG4VideoEnc
core-name=/usr/local/lib/libomxil-bellagio.so.0
component-name=OMX.st.video_encoder.mpeg4
rank=0
in-port-index=0
out-port-index=1
hacks=event-port-settings-changed-ndata-parameter-swap;video-framerate-integer;syncframe-flag-not-used
[omxaacenc]
type-name=GstOMXAACEnc
core-name=/usr/local/lib/libomxil-bellagio.so.0
component-name=OMX.st.audio_encoder.aac
rank=0
in-port-index=0
out-port-index=1
hacks=event-port-settings-changed-ndata-parameter-swap
[omxmp3dec]
type-name=GstOMXMP3Dec
core-name=/usr/lib/libomxil-bellagio.so.0
component-name=OMX.st.audio_decoder.mp3.mad
rank=0
in-port-index=0
out-port-index=1
hacks=event-port-settings-changed-ndata-parameter-swap;no-component-role;no-disable-outport;drain-may-not-return
[omxh264dec]
type-name=GstOMXH264Dec
core-name=/usr/lib/libomxil-bellagio.so.0
component-name=OMX.mesa.video_decoder.avc
rank=0
in-port-index=0
out-port-index=1
[omxmpeg2dec]
type-name=GstOMXMPEG2VideoDec
core-name=/usr/lib/libomxil-bellagio.so.0
component-name=OMX.mesa.video_decoder.mpeg2
rank=0
in-port-index=0
out-port-index=1
install_data (['gstomx.conf'], install_dir : omx_conf_dir)
if omx_target == 'rpi'
sub = 'rpi'
elif omx_target == 'bellagio'
sub = 'bellagio'
elif omx_target == 'zynqultrascaleplus'
sub = 'zynqultrascaleplus'
elif omx_target == 'tizonia'
sub = 'tizonia'
else
# No config file defined for the 'generic' target
sub = ''
endif
if sub != ''
subdir (sub)
# Used by tests to load the proper conf file
omx_config_dir = join_paths (meson.current_source_dir(), sub)
else
omx_config_dir = ''
endif
[omxmpeg2videodec]
type-name=GstOMXMPEG2VideoDec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
[omxmpeg4videodec]
type-name=GstOMXMPEG4VideoDec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
[omxh263dec]
type-name=GstOMXH263Dec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
[omxh264dec]
type-name=GstOMXH264Dec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role;signals-premature-eos
[omxtheoradec]
type-name=GstOMXTheoraDec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
[omxvp8dec]
type-name=GstOMXVP8Dec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
[omxmjpegdec]
type-name=GstOMXMJPEGDec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
[omxvc1dec]
type-name=GstOMXWMVDec
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_decode
rank=257
in-port-index=130
out-port-index=131
hacks=no-component-role
sink-template-caps=video/x-wmv,wmvversion=(int)3,format=(string){WMV3,WVC1},width=(int)[1,MAX],height=(int)[1,MAX]
[omxh264enc]
type-name=GstOMXH264Enc
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.video_encode
rank=257
in-port-index=200
out-port-index=201
hacks=no-component-role;no-component-reconfigure
[omxanalogaudiosink]
type-name=GstOMXAnalogAudioSink
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.audio_render
rank=257
in-port-index=100
out-port-index=101
hacks=no-component-role
sink-template-caps=audio/x-raw,format=(string){S16LE,S32LE},layout=(string)interleaved,rate=(int){8000,11025,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000},channels=(int)[1,2]
[omxhdmiaudiosink]
type-name=GstOMXHdmiAudioSink
core-name=/opt/vc/lib/libopenmaxil.so
component-name=OMX.broadcom.audio_render
rank=258
in-port-index=100
out-port-index=101
hacks=no-component-role
sink-template-caps=audio/x-raw,format=(string){S16LE,S32LE},layout=(string)interleaved,rate=(int){8000,11025,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000},channels=(int)[1,8];audio/x-ac3,framed=(boolean)true;audio/x-dts,framed=(boolean)true,block-size=(int){512,1024,2048}
install_data (['gstomx.conf'], install_dir : omx_conf_dir)
[omxmp3dec]
type-name=GstOMXMP3Dec
core-name=@TIZONIA_LIBDIR@/libtizcore.so
component-name=OMX.Aratelia.audio_decoder.mp3
rank=0
in-port-index=0
out-port-index=1
[omxmp3enc]
type-name=GstOMXMP3Enc
core-name=@TIZONIA_LIBDIR@/libtizcore.so
component-name=OMX.Aratelia.audio_encoder.mp3
rank=0
in-port-index=0
out-port-index=1
[omxaacdec]
type-name=GstOMXAACDec
core-name=@TIZONIA_LIBDIR@/libtizcore.so
component-name=OMX.Aratelia.audio_decoder.aac
rank=0
in-port-index=0
out-port-index=1
[omxvp8dec]
type-name=GstOMXVP8Dec
core-name=@TIZONIA_LIBDIR@/libtizcore.so
component-name=OMX.Aratelia.video_decoder.vp8
rank=0
in-port-index=0
out-port-index=1
[omxh264dec]
type-name=GstOMXH264Dec
core-name=@TIZONIA_LIBDIR@/libtizcore.so
component-name=OMX.mesa.video.all
component-role=video_decoder.avc
rank=0
in-port-index=0
out-port-index=1
[omxh264enc]
type-name=GstOMXH264Enc
core-name=@TIZONIA_LIBDIR@/libtizcore.so
component-name=OMX.mesa.video.all
component-role=video_encoder.avc
rank=0
in-port-index=0
out-port-index=1
infile = 'gstomx.conf.in'
outfile = 'gstomx.conf'
configure_file(input : infile,
output : outfile,
configuration : cdata,
install_dir : omx_conf_dir)
[omxh264enc]
type-name=GstOMXH264Enc
core-name=/usr/lib/libOMX.allegro.core.so.1
component-name=OMX.allegro.h264.encoder
in-port-index=0
out-port-index=1
rank=257
hacks=ensure-buffer-count-actual
[omxh264dec]
type-name=GstOMXH264Dec
core-name=/usr/lib/libOMX.allegro.core.so.1
component-name=OMX.allegro.h264.decoder
in-port-index=0
out-port-index=1
rank=257
hacks=pass-profile-to-decoder;pass-color-format-to-decoder;ensure-buffer-count-actual
[omxh265enc]
type-name=GstOMXH265Enc
core-name=/usr/lib/libOMX.allegro.core.so.1
component-name=OMX.allegro.h265.encoder
in-port-index=0
out-port-index=1
rank=257
hacks=ensure-buffer-count-actual
[omxh265dec]
type-name=GstOMXH265Dec
core-name=/usr/lib/libOMX.allegro.core.so.1
component-name=OMX.allegro.h265.decoder
in-port-index=0
out-port-index=1
rank=257
hacks=pass-profile-to-decoder;pass-color-format-to-decoder;ensure-buffer-count-actual
install_data (['gstomx.conf'], install_dir : omx_conf_dir)
{
"omx": {
"description": "GStreamer OpenMAX Plug-ins",
"elements": {},
"filename": "libgstomx.so",
"license": "LGPL",
"package": "GStreamer OpenMAX Plug-ins",
"source": "gst-omx",
"url": "Unknown package origin"
}
}
\ No newline at end of file
---
short-description: GStreamer plugins from OpenMax
...
\ No newline at end of file
build_hotdoc = false
if meson.is_cross_build()
if get_option('doc').enabled()
error('Documentation enabled but building the doc while cross building is not supported yet.')
endif
message('Documentation not built as building the docmentation while cross building is not supported yet.')
subdir_done()
endif
required_hotdoc_extensions = ['gst-extension']
if gst_dep.type_name() == 'internal'
gst_proj = subproject('gstreamer')
plugins_cache_generator = gst_proj.get_variable('plugins_cache_generator')
else
required_hotdoc_extensions += ['gst-extension']
plugins_cache_generator = find_program(join_paths(gst_dep.get_pkgconfig_variable('libexecdir'), 'gstreamer-' + api_version, 'gst-plugins-doc-cache-generator'),
required: false)
endif
plugins_cache = join_paths(meson.current_source_dir(), 'gst_plugins_cache.json')
if plugins_cache_generator.found()
plugins_doc_dep = custom_target('omx-plugins-doc-cache',
command: [plugins_cache_generator, plugins_cache, '@OUTPUT@', '@INPUT@'],
input: plugins,
output: 'gst_plugins_cache.json',
)
else
warning('GStreamer plugin inspector for documentation not found, can\'t update the cache')
endif
hotdoc_p = find_program('hotdoc', required: get_option('doc'))
if not hotdoc_p.found()
message('Hotdoc not found, not building the documentation')
subdir_done()
endif
build_hotdoc = true
hotdoc = import('hotdoc')
if not hotdoc.has_extensions(required_hotdoc_extensions)
if get_option('doc').enabled()
error('Documentation enabled but gi-extension missing')
endif
message('@0@ extensions not found, not building documentation'.format(required_hotdoc_extensions))
subdir_done()
endif
message('Plugins: @0@'.format(plugins))
libs_doc = []
plugins_doc = [hotdoc.generate_doc('omx',
project_version: api_version,
sitemap: 'sitemap.txt',
index: 'index.md',
gst_index: 'index.md',
gst_smart_index: true,
gst_c_sources: ['../gst/*/*.[ch]',],
gst_cache_file: plugins_cache,
gst_plugin_name: 'omx',
dependencies: [gstomx],
)]
/*
Copyright (c) 2012, Broadcom Europe Ltd
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// Spatial coordinates for the cube
static const GLfloat quadx[6*4*3] = {
/* FRONT */
-1.f, -1.f, 1.f,
1.f, -1.f, 1.f,
-1.f, 1.f, 1.f,
1.f, 1.f, 1.f,
/* BACK */
-1.f, -1.f, -1.f,
-1.f, 1.f, -1.f,
1.f, -1.f, -1.f,
1.f, 1.f, -1.f,
/* LEFT */
-1.f, -1.f, 1.f,
-1.f, 1.f, 1.f,
-1.f, -1.f, -1.f,
-1.f, 1.f, -1.f,
/* RIGHT */
1.f, -1.f, -1.f,
1.f, 1.f, -1.f,
1.f, -1.f, 1.f,
1.f, 1.f, 1.f,
/* TOP */
-1.f, 1.f, 1.f,
1.f, 1.f, 1.f,
-1.f, 1.f, -1.f,
1.f, 1.f, -1.f,
/* BOTTOM */
-1.f, -1.f, 1.f,
-1.f, -1.f, -1.f,
1.f, -1.f, 1.f,
1.f, -1.f, -1.f,
};
/** Texture coordinates for the quad. */
static const GLfloat texCoords[6 * 4 * 2] = {
0.f, 0.f,
1.f, 0.f,
0.f, 1.f,
1.f, 1.f,
0.f, 0.f,
1.f, 0.f,
0.f, 1.f,
1.f, 1.f,
0.f, 0.f,
1.f, 0.f,
0.f, 1.f,
1.f, 1.f,
0.f, 0.f,
1.f, 0.f,
0.f, 1.f,
1.f, 1.f,
0.f, 0.f,
1.f, 0.f,
0.f, 1.f,
1.f, 1.f,
0.f, 0.f,
1.f, 0.f,
0.f, 1.f,
1.f, 1.f,
};
optional_deps = []
if x11_dep.found()
optional_deps += x11_dep
endif
if x11_dep.found() or omx_target == 'rpi'
egl_sources = ['testegl.c']
egl_dep = dependency('egl', required : false)
if not egl_dep.found()
egl_dep = cc.find_library ('EGL')
endif
gles2_dep = dependency('glesv2', required : false)
if not gles2_dep.found()
gles2_dep = cc.find_library ('GLESv2')
endif
if omx_target == 'rpi'
brcmegl_dep = dependency('brcmegl', required : true)
optional_deps += brcmegl_dep
endif
executable ('testegl',
sources : egl_sources,
c_args : gst_omx_args,
include_directories : [configinc],
dependencies : [libm, gst_dep, gstvideo_dep, gstgl_dep, egl_dep,
gles2_dep] + optional_deps
)
endif
This diff is collapsed.
if gstgl_dep.found()
subdir('egl')
endif
<Project
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns="http://usefulinc.com/ns/doap#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:admin="http://webns.net/mvcb/">
<name>GStreamer OpenMAX IL wrapper plugin</name>
<shortname>gst-omx>/shortname>
<homepage rdf:resource="http://gstreamer.freedesktop.org/modules/gst-omx.html" />
<created>2005-06-17</created>
<shortdesc xml:lang="en">
a basic collection of elements
</shortdesc>
<description xml:lang="en">
This plugin wraps available OpenMAX IL components and makes
them available as standard GStreamer elements.
</description>
<category></category>
<bug-database rdf:resource="http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&amp;component=gst-omx" />
<screenshots></screenshots>