platform/upstream/gst-plugins-bad.git
9 years agodocs: add new JPEG codecparser API to the docs
Tim-Philipp Müller [Sun, 21 Jun 2015 12:55:29 +0000 (13:55 +0100)]
docs: add new JPEG codecparser API to the docs

And sprinkle some more Since markers

9 years agoexamples: move vp8 parser test to codecparser example directory
Tim-Philipp Müller [Sun, 21 Jun 2015 10:51:38 +0000 (11:51 +0100)]
examples: move vp8 parser test to codecparser example directory

9 years agoexamples: add small jpeg codecparser test
Tim-Philipp Müller [Sun, 21 Jun 2015 10:20:57 +0000 (11:20 +0100)]
examples: add small jpeg codecparser test

https://bugzilla.gnome.org/show_bug.cgi?id=673925

9 years agocodecparsers: jpeg: fix validity checking of data parsed
Tim-Philipp Müller [Sat, 20 Jun 2015 21:49:23 +0000 (22:49 +0100)]
codecparsers: jpeg: fix validity checking of data parsed

g_return_val_if_fail() and g_assert() are not appropriate
for checking untrusted external data.

https://bugzilla.gnome.org/show_bug.cgi?id=673925

9 years agocodecparsers: jpeg: fix up API
Tim-Philipp Müller [Sat, 20 Jun 2015 18:52:42 +0000 (19:52 +0100)]
codecparsers: jpeg: fix up API

- add data pointer to GstJpegSegment and pass segment
  to all parsing functions, rename accordingly
- shorten GstJpegMarkerCode enum type name to GstJpegMarker
- move function gtk-doc blurbs into .c file
- add since markers
- flesh out docs for SOF markers

https://bugzilla.gnome.org/show_bug.cgi?id=673925

9 years agocodecparsers: jpeg: tweak API a little
Tim-Philipp Müller [Sun, 14 Jun 2015 10:41:52 +0000 (11:41 +0100)]
codecparsers: jpeg: tweak API a little

https://bugzilla.gnome.org/show_bug.cgi?id=673925

9 years agocodecparsers: jpeg: hide gst_jpeg_scan_for_marker_code()
Tim-Philipp Müller [Sun, 14 Jun 2015 18:01:12 +0000 (19:01 +0100)]
codecparsers: jpeg: hide gst_jpeg_scan_for_marker_code()

Make this function private for now, since it's unclear whether
it's actually needed seeing that gst_jpeg_parse() scans too.

https://bugzilla.gnome.org/show_bug.cgi?id=673925

9 years agocodecparsers: jpeg: fix and optimize scan for next marker code.
Gwenole Beauchesne [Tue, 24 Sep 2013 14:10:45 +0000 (16:10 +0200)]
codecparsers: jpeg: fix and optimize scan for next marker code.

Fix scan for next marker code when there is an odd number of filler
(0xff) bytes before the actual marker code. Also optimize the loop
to execute with fewer instructions (~10%).

This fixes parsing for Spectralfan.mov.

9 years agocodecparsers: jpeg: fix calculation of segment size.
Gwenole Beauchesne [Wed, 18 Sep 2013 13:56:52 +0000 (15:56 +0200)]
codecparsers: jpeg: fix calculation of segment size.

The size of a marker segment is defined to be exclusive of any initial
marker code. So, fix the size for SOI, EOI and APPn segments but also
the size of any possible segment that is usually "reserved" or not
explicitly defined.

https://bugzilla.gnome.org/show_bug.cgi?id=707447

9 years agocodecparsers: jpeg: fix default Huffman tables generation.
Wind Yuan [Thu, 13 Jun 2013 05:22:18 +0000 (13:22 +0800)]
codecparsers: jpeg: fix default Huffman tables generation.

Fix build_huffman_table() to correctly fill in the associated HUFFVAL
entries to the default Huffman tables.

9 years agocodecparsers: jpeg: add JPEG bitstream parser
Gwenole Beauchesne [Wed, 12 Sep 2012 08:40:06 +0000 (10:40 +0200)]
codecparsers: jpeg: add JPEG bitstream parser

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
https://bugzilla.gnome.org/show_bug.cgi?id=673925

9 years agoh264parse: fix typo in log message
Tim-Philipp Müller [Sat, 20 Jun 2015 15:07:57 +0000 (16:07 +0100)]
h264parse: fix typo in log message

9 years agogldisplay: add gst_gl_display_create_context
Julien Isorce [Mon, 15 Jun 2015 15:09:54 +0000 (16:09 +0100)]
gldisplay: add gst_gl_display_create_context

It also emits a create-context signal so that an application
can provide an external GstGLContext backend.

https://bugzilla.gnome.org/show_bug.cgi?id=750310

9 years agoglcontext: move display from priv
Julien Isorce [Mon, 15 Jun 2015 15:36:26 +0000 (16:36 +0100)]
glcontext: move display from priv

https://bugzilla.gnome.org/show_bug.cgi?id=750310

9 years agoRevert "glcontext: add gst_gl_context_set_display helper"
Julien Isorce [Thu, 18 Jun 2015 09:55:28 +0000 (10:55 +0100)]
Revert "glcontext: add gst_gl_context_set_display helper"

This reverts commit 71b8103cbd16fff9cf5a65cf517083cb794aa3b5.

9 years agoRevert "gl: add GstGLContextGPUProcess backend"
Julien Isorce [Thu, 18 Jun 2015 09:52:18 +0000 (10:52 +0100)]
Revert "gl: add GstGLContextGPUProcess backend"

This reverts commit b377112ee38912d316e77b4e2102041389dc0051.

9 years agoglimagesink: Remove duplicate, useless line of code
Jan Schmidt [Fri, 19 Jun 2015 04:35:37 +0000 (14:35 +1000)]
glimagesink: Remove duplicate, useless line of code

9 years agoopengl: glstero* are only built with full OpenGL
Nicolas Dufresne [Fri, 19 Jun 2015 02:11:05 +0000 (22:11 -0400)]
opengl: glstero* are only built with full OpenGL

Don't try to register the elements unless they are built.

9 years agostyle: Remove white spaces at the end of line
Nicolas Dufresne [Fri, 19 Jun 2015 01:09:24 +0000 (21:09 -0400)]
style: Remove white spaces at the end of line

9 years agoglviewconvert: Fix GLES2 compatibility
Nicolas Dufresne [Thu, 18 Jun 2015 22:09:55 +0000 (18:09 -0400)]
glviewconvert: Fix GLES2 compatibility

9 years agoglviewconvert: Fix broken validity check
Nicolas Dufresne [Thu, 18 Jun 2015 22:02:21 +0000 (18:02 -0400)]
glviewconvert: Fix broken validity check

9 years agoh264parse: Move PAR calcs, and use them for stereoscopic half-aspect
Jan Schmidt [Mon, 15 Jun 2015 06:06:41 +0000 (16:06 +1000)]
h264parse: Move PAR calcs, and use them for stereoscopic half-aspect

Move the pixel-aspect-ratio calculations higher up in caps
determination, so the results are available for a call to
gst_video_multiview_guess_half_aspect() when stereoscopic video
is detected.

9 years ago3dvideo: Add simple gtk example stereoscopic video player
Jan Schmidt [Fri, 29 May 2015 17:09:17 +0000 (03:09 +1000)]
3dvideo: Add simple gtk example stereoscopic video player

https://bugzilla.gnome.org/show_bug.cgi?id=611157

9 years agogl: Add glviewconvert, glstereomix and glstereosplit elements
Jan Schmidt [Fri, 29 May 2015 16:29:04 +0000 (02:29 +1000)]
gl: Add glviewconvert, glstereomix and glstereosplit elements

Conversion elements for transforming multiview/stereoscopic video

https://bugzilla.gnome.org/show_bug.cgi?id=611157

9 years agoglimagesink: Support multiview/stereoscopic video
Jan Schmidt [Fri, 29 May 2015 16:26:32 +0000 (02:26 +1000)]
glimagesink: Support multiview/stereoscopic video

Support video with multiview info in the caps, transform
it to mono anaglyph by default, but allow for configuring
other output modes and handoff to the app via
the draw signal.

https://bugzilla.gnome.org/show_bug.cgi?id=611157

9 years agogl libs: Add glviewconvert helper object
Jan Schmidt [Fri, 29 May 2015 16:21:43 +0000 (02:21 +1000)]
gl libs: Add glviewconvert helper object

Add API for a helper object that can convert between different
stereoscopic video representations, and later do filtering
of multiple view streams.

https://bugzilla.gnome.org/show_bug.cgi?id=611157

9 years agodashdemux: added warnings in gst_mpd_client_setup_streaming function
Florin Apostol [Thu, 18 Jun 2015 15:20:26 +0000 (16:20 +0100)]
dashdemux: added warnings in gst_mpd_client_setup_streaming function

Added some warning messages in gst_mpd_client_setup_streaming to help
debug situations when the function will return FALSE.

Renamed a wrongly spelled variable.

https://bugzilla.gnome.org/show_bug.cgi?id=751149

9 years agodashdemux: corrected comments in gstmpdparser.h
Florin Apostol [Thu, 18 Jun 2015 11:21:43 +0000 (12:21 +0100)]
dashdemux: corrected comments in gstmpdparser.h

Corrected some comments in gstmpdparser.h file.
Moved gst_mpd_client_get_adaptation_sets function to be grouped with
other functions from AdaptationSet group

https://bugzilla.gnome.org/show_bug.cgi?id=751149

9 years agodashdemux: fixed getting representation based on max bandwidth
Florin Apostol [Thu, 18 Jun 2015 12:08:25 +0000 (13:08 +0100)]
dashdemux: fixed getting representation based on max bandwidth

The gst_mpdparser_get_rep_idx_with_max_bandwidth function assumes
representations are ordered by bandwidth and incorrectly returns the
first one when wanting the one with minimum bandwidth.

Corrected gst_mpdparser_get_rep_idx_with_max_bandwidth function to get the
correct representation in case max_bandwidth parameter is 0.

https://bugzilla.gnome.org/show_bug.cgi?id=751153

9 years agoandroidmedia: Allow the application to provide the Java VM
Sebastian Dröge [Thu, 18 Jun 2015 12:38:04 +0000 (14:38 +0200)]
androidmedia: Allow the application to provide the Java VM

In JNI_OnLoad() we will already get the Java VM passed and could
just directly use that. gstreamer_android-1.0.c will now provide
this to us.

Reason for this is that apparently not all Android system are
providing the JNI functions to get the currently running Java VMs, so
we would fail to get. With this we will always be able to get the Java
VM on such systems.

9 years agoandroidmedia: Prefer software codecs over hardware codecs for audio
Sebastian Dröge [Thu, 18 Jun 2015 12:31:39 +0000 (14:31 +0200)]
androidmedia: Prefer software codecs over hardware codecs for audio

Hardware codecs don't make sense for audio and are generally less reliable on
Android than the software codecs.

9 years agoandroidmedia: Failing to detach a thread is not that much of a problem
Sebastian Dröge [Thu, 18 Jun 2015 12:29:33 +0000 (14:29 +0200)]
androidmedia: Failing to detach a thread is not that much of a problem

Someone else might have detached it before us, so make this just normal debug
output instead of a GST_ERROR()

9 years agoandroidmedia: Don't fail if JNI_CreateJavaVM can't be found
Sebastian Dröge [Thu, 18 Jun 2015 08:43:53 +0000 (10:43 +0200)]
androidmedia: Don't fail if JNI_CreateJavaVM can't be found

We only need that if no Java VM is running yet, and all usual cases,
i.e. when calling GStreamer from an actual Android app, there will already
be a Java VM we can just use.

It seems like some phones come without that symbol, let's hope they come
with the other symbol but for now don't make a missing JNI_CreateJavaVM fatal.

9 years agofpsdisplaysink: get rendered and dropped stats from QOS messages
Alessandro Decina [Thu, 18 Jun 2015 05:59:18 +0000 (12:59 +0700)]
fpsdisplaysink: get rendered and dropped stats from QOS messages

Use QOS messages to update rendered and dropped frame stats. This is
the only accurate method. The old method didn't take max-lateness and
latency into account.

9 years agonalutils: trivial patch to check if
Vineeth TM [Wed, 17 Jun 2015 01:44:16 +0000 (10:44 +0900)]
nalutils: trivial patch to check if

trivial patch to add proper ( while checking for if(G_UNLIKELY())

https://bugzilla.gnome.org/show_bug.cgi?id=751087

9 years agoAutomatic update of common submodule
Nicolas Dufresne [Tue, 16 Jun 2015 21:48:51 +0000 (17:48 -0400)]
Automatic update of common submodule

From 6015d26 to f74b2df

9 years agogtkglwidget: Const'ify another array
Sebastian Dröge [Mon, 15 Jun 2015 19:32:43 +0000 (21:32 +0200)]
gtkglwidget: Const'ify another array

9 years agogtkglwidget: Calculate the viewport size ourselves
Sebastian Dröge [Mon, 15 Jun 2015 19:29:46 +0000 (21:29 +0200)]
gtkglwidget: Calculate the viewport size ourselves

Getting the current viewport and modifying it relatively will produce an
interesting feedback loop during widget resizing. Over a few frames we
will gradually move the viewport a bit until it converged again, adding
unnecessary additional borders at the top and left.

9 years agogtk: Use the display width/height for the widget's preferred width/height
Sebastian Dröge [Mon, 15 Jun 2015 19:24:01 +0000 (21:24 +0200)]
gtk: Use the display width/height for the widget's preferred width/height

9 years agogtksink: Add support for xRGB/BGRx
Sebastian Dröge [Mon, 15 Jun 2015 18:45:11 +0000 (20:45 +0200)]
gtksink: Add support for xRGB/BGRx

9 years agogtk: Cairo color formats are in native endianness, GStreamer's in memory order
Sebastian Dröge [Mon, 15 Jun 2015 18:39:59 +0000 (20:39 +0200)]
gtk: Cairo color formats are in native endianness, GStreamer's in memory order

CAIRO_FORMAT_ARGB32 is ARGB on big endian and BGRA on little endian.

9 years agogtk: Implement ignore-alpha property and enable it by default
Sebastian Dröge [Mon, 15 Jun 2015 18:35:38 +0000 (20:35 +0200)]
gtk: Implement ignore-alpha property and enable it by default

9 years agogtk: Sync properties from the sink to the widget upon widget creation
Sebastian Dröge [Mon, 15 Jun 2015 18:13:57 +0000 (20:13 +0200)]
gtk: Sync properties from the sink to the widget upon widget creation

9 years agompegtsmux: Remove redundant min_dts
Nicolas Dufresne [Mon, 15 Jun 2015 14:08:57 +0000 (10:08 -0400)]
mpegtsmux: Remove redundant min_dts

After few iteration, this variable became the same as dts. It's not
the min as the name says, but the dts of the current buffer. Simply
remove and place with dts. Also move the debug trace to actually
print the signed version of the running-time dts.

9 years agoglimagesink: add missing handle-events/ignore-alpha property to the bin
Matthew Waters [Mon, 15 Jun 2015 12:43:54 +0000 (22:43 +1000)]
glimagesink: add missing handle-events/ignore-alpha property to the bin

9 years agogtk: implement pixel and display aspect ratio handling
Matthew Waters [Mon, 15 Jun 2015 08:28:37 +0000 (18:28 +1000)]
gtk: implement pixel and display aspect ratio handling

9 years agovideoaggregator: Print some debug output if we change the timestamp offset
Sebastian Dröge [Mon, 15 Jun 2015 12:29:04 +0000 (14:29 +0200)]
videoaggregator: Print some debug output if we change the timestamp offset

9 years agovideoaggregator: Add some more debug output
Sebastian Dröge [Mon, 15 Jun 2015 12:25:43 +0000 (14:25 +0200)]
videoaggregator: Add some more debug output

9 years agoandroidmedia: Move variables into the scope where they are needed
Sebastian Dröge [Mon, 15 Jun 2015 12:22:00 +0000 (14:22 +0200)]
androidmedia: Move variables into the scope where they are needed

9 years agovideoaggregator: Don't update the ts-offset before updating the actual configured...
Sebastian Dröge [Mon, 15 Jun 2015 12:19:05 +0000 (14:19 +0200)]
videoaggregator: Don't update the ts-offset before updating the actual configured caps

9 years agovideoaggregator: Remember if the last LATENCY query returned live or not and use...
Sebastian Dröge [Mon, 15 Jun 2015 12:18:39 +0000 (14:18 +0200)]
videoaggregator: Remember if the last LATENCY query returned live or not and use the in the QoS messages

9 years agoandroidmedia: Don't query supported color formats for non-video codecs
Sebastian Dröge [Mon, 15 Jun 2015 10:20:24 +0000 (12:20 +0200)]
androidmedia: Don't query supported color formats for non-video codecs

9 years agompegtsmux: fix build error
Vineeth TM [Mon, 15 Jun 2015 01:34:56 +0000 (10:34 +0900)]
mpegtsmux: fix build error

after e000a6f0a4984fbe81190df6cd439c70dafde3d6, there is build error in bad plugins
this happens because, GST_CLOCK_STIME_IS_VALID () is being checked for pad_data
but it expects a GstClockTime parameter. Changing the check to 'dts'

https://bugzilla.gnome.org/show_bug.cgi?id=750961

9 years agogl/examples: update qt examples for api changes
Matthew Waters [Mon, 15 Jun 2015 06:47:15 +0000 (16:47 +1000)]
gl/examples: update qt examples for api changes

9 years agogtk: silence unused variable warnings for unsupported winsys'
Matthew Waters [Mon, 15 Jun 2015 04:35:35 +0000 (14:35 +1000)]
gtk: silence unused variable warnings for unsupported winsys'

9 years agogtk: implement basic wayland GL support
Matthew Waters [Mon, 15 Jun 2015 04:33:08 +0000 (14:33 +1000)]
gtk: implement basic wayland GL support

9 years agocompositor: update zorder documentation.
Mathieu Duponchelle [Sun, 14 Jun 2015 21:20:38 +0000 (23:20 +0200)]
compositor: update zorder documentation.

It is not bound between 0 and 10000 anymore.

9 years agovideoaggregator: No need to artificially bound the zorder.
Mathieu Duponchelle [Sun, 14 Jun 2015 21:13:59 +0000 (23:13 +0200)]
videoaggregator: No need to artificially bound the zorder.

It is an unsigned integer so the upper bound is G_MAXUINT.

9 years agocodecparsers: mpeg4: actually return full number of bits of resync marker
Luis de Bethencourt [Wed, 29 Oct 2014 15:03:04 +0000 (15:03 +0000)]
codecparsers: mpeg4: actually return full number of bits of resync marker

Switch the increment of markersize from when it is used to when it is
returned from compute_resync_marker_size.

This also makes the CHECK_REMAINING in gst_mpeg4_parse_video_packet_header
check for the actually required number of bits now and not one too few.

https://bugzilla.gnome.org/show_bug.cgi?id=739345

9 years agoRevert "codecparsers: remove ignored increment of return"
Tim-Philipp Müller [Sat, 13 Jun 2015 16:36:20 +0000 (17:36 +0100)]
Revert "codecparsers: remove ignored increment of return"

This reverts commit 916b954315abc2f94348ec0be3e116c19b080b54.

Clearly something else was intended, and it also makes
more sense to add the extra bit. The resync marker is
N zero bits plus a 1 bit, and the pattern/mask needs to
be run on N+1 bits too.

(Even after the rever the code doesn't do that of course, so
it still needs to be fixed differently.)

https://bugzilla.gnome.org/show_bug.cgi?id=739345

9 years agoopensles: Fix build with Android API level < 14
Arun Raghavan [Fri, 12 Jun 2015 12:38:44 +0000 (18:08 +0530)]
opensles: Fix build with Android API level < 14

Headers were broken on older Android versions, apparently.

https://bugzilla.gnome.org/show_bug.cgi?id=744459

9 years agoopenslessink: Allow setting the stream type via a property
Arun Raghavan [Wed, 28 Jan 2015 07:36:39 +0000 (13:06 +0530)]
openslessink: Allow setting the stream type via a property

9 years agoopenslessrc: Implement recording presets
Arun Raghavan [Tue, 27 Jan 2015 09:55:59 +0000 (15:25 +0530)]
openslessrc: Implement recording presets

This allows us to signal what kind of audio we are expecting to record,
which should tell the system to apply filters (such as echo
cancellation, noise suppression, etc.) if required.

9 years agodecklinkvideosink: Remove late frame-dropping workaround for basesink bug
Sebastian Dröge [Sat, 13 Jun 2015 09:40:14 +0000 (11:40 +0200)]
decklinkvideosink: Remove late frame-dropping workaround for basesink bug

This was fixed by https://bugzilla.gnome.org/show_bug.cgi?id=749258
in basesink, and is not necessary to duplicate here anymore.

9 years agoglmixerbin: implement proper dynamic pad removal
Matthew Waters [Sat, 13 Jun 2015 08:43:04 +0000 (18:43 +1000)]
glmixerbin: implement proper dynamic pad removal

https://bugzilla.gnome.org/show_bug.cgi?id=750881

9 years agoglimagesink: Don't do pool caching
Nicolas Dufresne [Sat, 13 Jun 2015 00:14:37 +0000 (20:14 -0400)]
glimagesink: Don't do pool caching

We now know that pool caching can cause renegotiation issues
when an element in the pipeline change from passthrough to not
passthrough. As it's not needed, don't cache existing pools.

https://bugzilla.gnome.org/show_bug.cgi?id=748344

9 years agoconfigure.ac: Remove reference to cvs
Nicolas Dufresne [Fri, 12 Jun 2015 22:08:40 +0000 (18:08 -0400)]
configure.ac: Remove reference to cvs

9 years agotsdemux: Segment start should match first PTS
Nicolas Dufresne [Wed, 10 Jun 2015 21:05:52 +0000 (17:05 -0400)]
tsdemux: Segment start should match first PTS

The segment should start at first PTS, and the vairable name lower_pts
state so correctly. Though we where using the first DTS instead. This
could lead to small desynchronization of video stream.

https://bugzilla.gnome.org/show_bug.cgi?id=740575

9 years agotsmux: Add negative DTS support
Nicolas Dufresne [Wed, 10 Jun 2015 16:32:34 +0000 (12:32 -0400)]
tsmux: Add negative DTS support

Use the saved DTS, make it signed and pass that to the stream muxer. This
preserves the running time sign. All usage of -1 as invalid TS are now
replaced with G_MININT64. Negative values will be seen as wrap-around
point, but the delta between PTS and DTS will remain correct. Demuxers
don't care about absolute values, they only cares about deltas.

https://bugzilla.gnome.org/show_bug.cgi?id=740575

9 years agotsmux: Remove uneeded cast and cast macro
Nicolas Dufresne [Wed, 10 Jun 2015 16:31:13 +0000 (12:31 -0400)]
tsmux: Remove uneeded cast and cast macro

https://bugzilla.gnome.org/show_bug.cgi?id=740575

9 years agompegtsmux: Properly detect backward DTS
Nicolas Dufresne [Wed, 10 Jun 2015 15:39:01 +0000 (11:39 -0400)]
mpegtsmux: Properly detect backward DTS

There was code to detect backward dts, but the marker min_dts
was never set. Setting it enable this feature that prevents
potential integer overflow when generating TS.

https://bugzilla.gnome.org/show_bug.cgi?id=740575

9 years agodashdemux: fixed segfault for missing default namespace
Florin Apostol [Fri, 12 Jun 2015 15:44:55 +0000 (16:44 +0100)]
dashdemux: fixed segfault for missing default namespace

Added a check for a_node->ns before accessing a_node->ns->href in
gst_mpdparser_get_xml_node_namespace. This could happen if the xml
is missing the default namespace.

https://bugzilla.gnome.org/show_bug.cgi?id=750866

9 years agodecklinkvideosink: Don't require the same framerate in the input as the mode's framerate
Sebastian Dröge [Fri, 12 Jun 2015 20:33:58 +0000 (22:33 +0200)]
decklinkvideosink: Don't require the same framerate in the input as the mode's framerate

We only really care about the timestamps for the sink.

9 years agoexamples: playout: Add better help text
Nirbheek Chauhan [Fri, 12 Jun 2015 20:10:00 +0000 (01:40 +0530)]
examples: playout: Add better help text

This should help people figure out how to use the example a bit better

9 years agoexamples: playout: Decrement the currently-playing counter correctly
Nirbheek Chauhan [Fri, 12 Jun 2015 20:05:59 +0000 (01:35 +0530)]
examples: playout: Decrement the currently-playing counter correctly

Only do that when we're removing an item that was playing, otherwise we'll mess
things up while trying to edit the play queue (playlist).

9 years agoplayout: New example for seamless audio/video playback
Nirbheek Chauhan [Thu, 29 Jan 2015 00:56:26 +0000 (00:56 +0000)]
playout: New example for seamless audio/video playback

An example app that takes video URIs as command line arguments and switches
between them seamlessly one after the other using compositor and audiomixer.
Both audio-video and video-only media files are valid inputs, but mixing files
of both types in a single invocation is cumbersome to support, and hence does
not work. The example attempts to keep the audio stream moving along perfectly,
and duplicates video frames where necessary to cover gaps in the video
timestamps using the 'ignore-eos' videoaggregator pad property.

Ensuring seamless (and mostly-glitch-free) switching is harder than it sounds,
and hence the example contains plenty of pad probes and running time
calculations to make things work.

The GPtrArray play_queue contains items that are being played back, have been
prepared for playback, and will be played back in the future. The queue itself
is mutable besides the first two items (playing and prepared). The item that has
been prepared should not be edited or removed since it has been prepared in
advance to be activated immediately on the current item's EOS.

The example also has support for switching to the next item in the queue
prematurely; see the --switch-after/-s flag to the application.

Note: the output video is hard-coded at 1280x720, and input video is scaled as
needed to fit this size. Set OUTPUT_VIDEO_WIDTH/HEIGHT to change this.

https://bugzilla.gnome.org/show_bug.cgi?id=748947

9 years agotests: Add test for the 'ignore-eos' compositor sink pad property
Nirbheek Chauhan [Sat, 6 Jun 2015 15:10:13 +0000 (20:40 +0530)]
tests: Add test for the 'ignore-eos' compositor sink pad property

When the 'ignore-eos' property is set on a pad, compositor will keep resending
the last buffer on the pad till the pad is unlinked. We count the buffers
received on appsink, and if it's more than the buffers sent by videotestsrc, the
test passes.

9 years agovideoaggregator: add "ignore-eos" property for input pads
Nirbheek Chauhan [Mon, 9 Feb 2015 19:19:35 +0000 (00:49 +0530)]
videoaggregator: add "ignore-eos" property for input pads

When set, it causes videoaggregator to repeatedly aggregate the last buffer on
an EOS pad instead of skipping it and outputting silence. This is useful, for
instance, while playing back files seamless one after the other, to avoid
videoaggregator ever outputting silence (the checkerboard pattern).

It is to be noted that if all the pads on videoaggregator have this property set
on them, the mixer will never forward EOS downstream for obvious reasons. Hence,
at least one pad with 'ignore-eos' set to FALSE must send EOS to the mixer
before it will be forwarded downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=748946

9 years agompegts: return early if packetizing short section
Jesper Larsen [Fri, 19 Dec 2014 13:43:20 +0000 (14:43 +0100)]
mpegts: return early if packetizing short section

Short sections have 3 bytes of common header, while other sections
have 8 bytes of common header. If packetizing common header of short
section, we should stop after the first 3 bytes.

https://bugzilla.gnome.org/show_bug.cgi?id=735653

9 years agodebugutilsbad: Minor cleanup
Vivia Nikolaidou [Fri, 12 Jun 2015 14:14:02 +0000 (17:14 +0300)]
debugutilsbad: Minor cleanup

Ran gst-indent on debugutilsbad.c, moved headers to noinst in Makefile.am

9 years agogtk: Do not try to activate a NULL GLContext
Thibault Saunier [Fri, 12 Jun 2015 13:39:56 +0000 (15:39 +0200)]
gtk: Do not try to activate a NULL GLContext

At that point in the code nothing guarantees it exists

9 years agogl/tests: remove reference to undefined buffer test
Matthew Waters [Fri, 12 Jun 2015 11:31:48 +0000 (21:31 +1000)]
gl/tests: remove reference to undefined buffer test

9 years agoglmemory: separate pbo transfer from texture transfers
Matthew Waters [Thu, 11 Jun 2015 08:26:50 +0000 (18:26 +1000)]
glmemory: separate pbo transfer from texture transfers

When supported, the potentially longer pbo upload/download can be
initiated before the texture upload/download, potentially increasing
throughput.

9 years agoglmemory: implement on top of glbasebuffer
Matthew Waters [Wed, 10 Jun 2015 06:36:15 +0000 (16:36 +1000)]
glmemory: implement on top of glbasebuffer

Provides convenient access to PBO usage.

Currently texture updates are coupled tightly to data transfers.

9 years agogl: new glbasebuffer GstMemory object
Matthew Waters [Wed, 10 Jun 2015 06:24:59 +0000 (16:24 +1000)]
gl: new glbasebuffer GstMemory object

Provides generic handling of GL buffer objects accessible using
the GL bind points (GL_ARRAY_BUFFER, GL_PIXEL_*_BUFFER).

Implementation based off the current GstGLMemory.

9 years agogl/prototypes: add some buffer function prototypes
Matthew Waters [Wed, 10 Jun 2015 06:23:36 +0000 (16:23 +1000)]
gl/prototypes: add some buffer function prototypes

9 years agogtk: implement video aspect-ratio handling
Matthew Waters [Fri, 12 Jun 2015 05:17:30 +0000 (15:17 +1000)]
gtk: implement video aspect-ratio handling

For both the software and the GL sink's.

Doesn't deal with the pixel-aspect-ratio field at all yet.

9 years agogl/window/x11: only listen on the X Display when needed
Matthew Waters [Fri, 12 Jun 2015 03:14:57 +0000 (13:14 +1000)]
gl/window/x11: only listen on the X Display when needed

5697b6b89b4b2a15c45bd47be940a17f4412ea11 causes us to possibly listen
on a toolkit provided Display connection.  We thus could eat their
precious winsys events.  Only listen if we need to
(!foreign_display or videooverlay).

9 years agogtk: fix a couple of typos
Matthew Waters [Fri, 12 Jun 2015 02:40:50 +0000 (12:40 +1000)]
gtk: fix a couple of typos

9 years agogtkglsink: reset the context/display in READY_TO_NULL
Matthew Waters [Fri, 12 Jun 2015 02:29:37 +0000 (12:29 +1000)]
gtkglsink: reset the context/display in READY_TO_NULL

Fixes context propagation in pipelines with upstream GL elements.

9 years agodashdemux: fix error calculating large presentationTimeOffset values
Alex Ashley [Thu, 11 Jun 2015 16:25:49 +0000 (17:25 +0100)]
dashdemux: fix error calculating large presentationTimeOffset values

If the presentationTimeOffset attribute of a DASH manifest contains
a value that is larger than 2^32, gstmpdparser incorrectly calculates
the stream's presentation time offset. This is due to two bugs:

1: Using gst_mpdparser_get_xml_prop_unsigned_integer rather than
   gst_mpdparser_get_xml_prop_unsigned_integer_64 to parse the
   attribute
2: gst_mpd_client_setup_representation multiplying the value by
   GST_SECOND and then dividing by timescale

https://bugzilla.gnome.org/show_bug.cgi?id=750804

9 years agogstgtk: No need to realize the widget
Nicolas Dufresne [Thu, 11 Jun 2015 16:41:10 +0000 (12:41 -0400)]
gstgtk: No need to realize the widget

The widget already does that.

9 years agogstgtk: Don't leak the widget
Nicolas Dufresne [Thu, 11 Jun 2015 16:38:53 +0000 (12:38 -0400)]
gstgtk: Don't leak the widget

g_object_get() returns a ref, gtk_container_add() only ref_sink().
That mean we still need to unref afterward. This leak was hiding
a reference bug previously present.

9 years agogstgtk: Allow doing gst-inspect-1.0 on these elements
Nicolas Dufresne [Thu, 11 Jun 2015 16:10:23 +0000 (12:10 -0400)]
gstgtk: Allow doing gst-inspect-1.0 on these elements

This patch allow going gst-inspect-1.0 on these elements removing
ugly crash that was previously occurring. The method consist of
making the widget creation as lazy as possible. This way we don't
endup doing gtk_init() before the application. We also ref_sink()
the widget, so we don't crash if the parent widget is discarded,
and cleanly error out with GL if the widget has no parent window,
because calling gtk_widget_realized() can only be done if the widget
has been parented to a window).

9 years agogl: Add support for multiple views in upload, colour convert and download
Jan Schmidt [Fri, 29 May 2015 16:15:51 +0000 (02:15 +1000)]
gl: Add support for multiple views in upload, colour convert and download

Support multiple attached views on input/output buffers
by processing each one, not just the first.

9 years agoh264parse: Add support for passing stereoscopic/multiview info
Jan Schmidt [Fri, 29 May 2015 15:38:16 +0000 (01:38 +1000)]
h264parse: Add support for passing stereoscopic/multiview info

Pass any multiview info from the container or SEI info downstream

9 years agoh264parse: Don't switch to passthrough on set_caps()
Jan Schmidt [Wed, 10 Jun 2015 15:57:08 +0000 (01:57 +1000)]
h264parse: Don't switch to passthrough on set_caps()

Wait until at least one keyframe has been parsed before
deciding to switch to passthrough mode, in case the
stream contains SEI messages that supplement the output
caps - for example by providing stereoscopic information

9 years agogl/window/x11: don't create our own X11 display
Matthew Waters [Thu, 11 Jun 2015 14:32:00 +0000 (00:32 +1000)]
gl/window/x11: don't create our own X11 display

It's not needed anymore with most window operations occuring in the
GL thread.

9 years agogl/window/x11: handle_events() may be called before the window has been created
Matthew Waters [Thu, 11 Jun 2015 14:30:58 +0000 (00:30 +1000)]
gl/window/x11: handle_events() may be called before the window has been created

Fixes an XIO fatal error

9 years agogl: move basesink properties from glimagesinkbin to glsinkbin
Matthew Waters [Thu, 11 Jun 2015 14:29:23 +0000 (00:29 +1000)]
gl: move basesink properties from glimagesinkbin to glsinkbin