platform/upstream/gst-plugins-bad.git
10 years agoaggregator: More fixes around locking when accessing protected private fields
Thibault Saunier [Mon, 26 Jan 2015 10:32:47 +0000 (11:32 +0100)]
aggregator: More fixes around locking when accessing protected private fields

In some more places we were accessing GstAggregator->segment
and GstAggregator->seqnum without holding the GST_OBJECT_LOCK

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

10 years agoaggregator: Make the PAD_LOCK private
Thibault Saunier [Mon, 26 Jan 2015 10:29:08 +0000 (11:29 +0100)]
aggregator: Make the PAD_LOCK private

Instead of using the GST_OBJECT_LOCK we should have
a dedicated mutex for the pad as it is also associated
with the mutex on the EVENT_MUTEX on which we wait
in the _chain function of the pad.

The GstAggregatorPad.segment is still protected with the
GST_OBJECT_LOCK.

Remove the gst_aggregator_pad_peak_unlocked method as it does not make
sense anymore with a private lock.

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

10 years agoaggregator: Hide GstAggregatorPad buffer and EOS fileds
Thibault Saunier [Mon, 26 Jan 2015 10:25:54 +0000 (11:25 +0100)]
aggregator: Hide GstAggregatorPad buffer and EOS fileds

And add a getter for the EOS.

The user should always use the various getters to access
those fields

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

10 years agoaudiomixer: Make flush start/stop test non-racy
Olivier Crête [Thu, 22 Jan 2015 00:09:13 +0000 (19:09 -0500)]
audiomixer: Make flush start/stop test non-racy

The flush stop could have happened between the source trying
to push the segment event and the buffer, this would cause a warning.
Prevent that by taking the source's stream lock while flushing.

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

10 years agoaudiomixer: Replace racy timeout based tested with drain query
Olivier Crête [Thu, 22 Jan 2015 22:41:24 +0000 (17:41 -0500)]
audiomixer: Replace racy timeout based tested with drain query

Using the drain query, we can be certain that the buffer has done going
through the aggregator by taking the stream locks.

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

10 years agoaggregator: Document locking of GstAggregatorPrivate members
Olivier Crête [Wed, 21 Jan 2015 23:41:43 +0000 (18:41 -0500)]
aggregator: Document locking of GstAggregatorPrivate members

Most of them are protected by the object lock, specify
which ones use a different lock.

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

10 years agoaggregator: Document how the segment is protected
Olivier Crête [Wed, 21 Jan 2015 23:47:09 +0000 (18:47 -0500)]
aggregator: Document how the segment is protected

Document that it can only be accessed with the object lock.

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

10 years agoaggregator: Protect all latency related members with the object lock
Olivier Crête [Thu, 22 Jan 2015 00:44:57 +0000 (19:44 -0500)]
aggregator: Protect all latency related members with the object lock

The locking was not consistent, now consistently use the object lock.

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

10 years agoaggregator: Document locking for gst_aggregator_get_latency_unlocked()
Olivier Crête [Thu, 22 Jan 2015 00:43:12 +0000 (19:43 -0500)]
aggregator: Document locking for gst_aggregator_get_latency_unlocked()

Renamed it to _unlocked() to make it clear.

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

10 years agoaggregator: Protect the srcpad caps negotiation with the stream lock
Olivier Crête [Thu, 22 Jan 2015 00:35:25 +0000 (19:35 -0500)]
aggregator: Protect the srcpad caps negotiation with the stream lock

Instead of adding another lock, use the srcpad stream lock, which is already
taken anyway to push out the new caps if needed.

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

10 years agoaggregator: Protect the tags with the object lock
Olivier Crête [Thu, 22 Jan 2015 00:33:18 +0000 (19:33 -0500)]
aggregator: Protect the tags with the object lock

The tags related variables were sometimes protected, sometimes not and
sometimes atomic. Put them all under the object lock.

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

10 years agoaudiomixer: Avoid race in caps negotiation
Olivier Crête [Thu, 22 Jan 2015 00:32:34 +0000 (19:32 -0500)]
audiomixer: Avoid race in caps negotiation

With the current audiomixer, the input caps need to be the same,
otherwise there is an unavoidable race in the caps negotiation. So
enforce that using capsfilters

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

10 years agoaggregator: Consistenly lock the flow_return state
Olivier Crête [Wed, 21 Jan 2015 23:53:20 +0000 (18:53 -0500)]
aggregator: Consistenly lock the flow_return state

Use the object's lock to protect it.

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

10 years agoaudiomixer: Clear GstAudioInfo the the caps
Olivier Crête [Wed, 21 Jan 2015 23:47:40 +0000 (18:47 -0500)]
audiomixer: Clear GstAudioInfo the the caps

When clearing the caps, also clear the matching GstAudioInfo

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

10 years agoaggregator: Consistently lock some members
Olivier Crête [Wed, 21 Jan 2015 23:45:36 +0000 (18:45 -0500)]
aggregator: Consistently lock some members

Some members sometimes used atomic access, sometimes where not locked at
all. Instead consistently use a mutex to protect them, also document
that.

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

10 years agoaudiomixer: Don't reset caps on flush
Olivier Crête [Wed, 21 Jan 2015 23:39:24 +0000 (18:39 -0500)]
audiomixer: Don't reset caps on flush

A flush event doesn't invalidate the previous caps event.

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

10 years agovideoaggregator: Lock access to members of GstAggregatorPad
Olivier Crête [Wed, 14 Jan 2015 19:45:06 +0000 (14:45 -0500)]
videoaggregator: Lock access to members of GstAggregatorPad

Take the pad's object lock before accessing members of the
GstAggregatorPad structure.

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

10 years agoaggregator: Protect exported pad members with the pad's object lock
Olivier Crête [Wed, 14 Jan 2015 19:38:09 +0000 (14:38 -0500)]
aggregator: Protect exported pad members with the pad's object lock

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

10 years agoaggregator: Replace event lock with pad's object lock
Olivier Crête [Wed, 14 Jan 2015 19:35:15 +0000 (14:35 -0500)]
aggregator: Replace event lock with pad's object lock

Reduce the number of locks simplify code, what is protects
is exposed, but the lock was not.

Also means adding an _unlocked version of gst_aggregator_pad_steal_buffer().

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

10 years agoaggregator: Protect data with the same mutex as GCond
Olivier Crête [Sat, 10 Jan 2015 03:01:00 +0000 (22:01 -0500)]
aggregator: Protect data with the same mutex as GCond

Whenever a GCond is used, the safest paradigm is to protect
the variable which change is signalled by the GCond with the same
mutex that the GCond depends on.

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

10 years agovideoaggregator: If getting a timeout before having caps, just advance our position
Nirbheek Chauhan [Wed, 28 Jan 2015 20:58:38 +0000 (02:28 +0530)]
videoaggregator: If getting a timeout before having caps, just advance our position

This can happen if this is a live pipeline and no source produced any buffer
and sent no caps until an output buffer should've been produced according to the
latency.

This fix is similar in spirit to commit be7034d1 by Sebastian for audiomixer.

10 years agogl/calayer: add resize callback based on the bounds rectangle
Matthew Waters [Thu, 29 Jan 2015 06:31:09 +0000 (17:31 +1100)]
gl/calayer: add resize callback based on the bounds rectangle

10 years agogl/caopengllayer: draw asynchronously
Matthew Waters [Thu, 29 Jan 2015 04:26:21 +0000 (15:26 +1100)]
gl/caopengllayer: draw asynchronously

This essentially makes the CAOpenGLLayer draw every refresh cycle.

10 years agogl/cocoa: don't segfault if we have a NULL draw/resize/close callback
Matthew Waters [Wed, 28 Jan 2015 06:59:42 +0000 (17:59 +1100)]
gl/cocoa: don't segfault if we have a NULL draw/resize/close callback

10 years agocgl/calayer: use a callback instead of hardcoding the draw functionality
Matthew Waters [Wed, 28 Jan 2015 06:16:14 +0000 (17:16 +1100)]
cgl/calayer: use a callback instead of hardcoding the draw functionality

10 years agocgl: install the gl context and gl layer headers
Matthew Waters [Wed, 28 Jan 2015 06:13:05 +0000 (17:13 +1100)]
cgl: install the gl context and gl layer headers

10 years agocgl: add a header for the CAOpenGLLayer support
Matthew Waters [Wed, 28 Jan 2015 06:05:14 +0000 (17:05 +1100)]
cgl: add a header for the CAOpenGLLayer support

10 years agodecklinkvideosink: Always lock the mutex before starting the streams
Sebastian Dröge [Wed, 28 Jan 2015 16:02:59 +0000 (17:02 +0100)]
decklinkvideosink: Always lock the mutex before starting the streams

10 years agodecklinkvideosink: Fix deadlock
Sebastian Dröge [Wed, 28 Jan 2015 15:58:27 +0000 (16:58 +0100)]
decklinkvideosink: Fix deadlock

10 years agodecklink{audio,video}sink: Only start scheduled playback once both sources are ready...
Sebastian Dröge [Wed, 28 Jan 2015 14:48:26 +0000 (15:48 +0100)]
decklink{audio,video}sink: Only start scheduled playback once both sources are ready and we are in PLAYING

Otherwise we might start the scheduled playback before the audio or video streams are
actually enabled, and then error out later because they are enabled to late.

We enable the streams when getting the caps, which might be *after* we were
set to PLAYING state.

10 years agodecklink{audio,video}src: Only start the streams once both sources are ready and...
Sebastian Dröge [Wed, 28 Jan 2015 14:26:17 +0000 (15:26 +0100)]
decklink{audio,video}src: Only start the streams once both sources are ready and we are in PLAYING

Otherwise we might start the streams before the audio or video streams are
actually enabled, and then error out later because they are enabled to late.

We enable the streams when getting the caps, which might be *after* we were
set to PLAYING state.

10 years agodecklink: Make sure our clock never returns NONE, always advances and does not jump...
Sebastian Dröge [Wed, 28 Jan 2015 13:21:40 +0000 (14:21 +0100)]
decklink: Make sure our clock never returns NONE, always advances and does not jump when going from PAUSED to PLAYING

It basically behaves the same as the audio clocks.

10 years agodecklinkvideosink: Handle the clock returning GST_CLOCK_TIME_NONE properly
Sebastian Dröge [Wed, 28 Jan 2015 11:20:05 +0000 (12:20 +0100)]
decklinkvideosink: Handle the clock returning GST_CLOCK_TIME_NONE properly

10 years agodecklinkvideo{sink,src}: Make elements more similar to the audio elements by enabling...
Sebastian Dröge [Wed, 28 Jan 2015 10:41:17 +0000 (11:41 +0100)]
decklinkvideo{sink,src}: Make elements more similar to the audio elements by enabling the video input/output only when getting the actual caps

This will also make it easier later to support caps changes and support
selecting the mode based on the caps if that should ever be implemented.

10 years agodecklinkvideosrc: Properly report caps if mode!=auto and handle caps changes properly...
Sebastian Dröge [Mon, 26 Jan 2015 18:02:04 +0000 (19:02 +0100)]
decklinkvideosrc: Properly report caps if mode!=auto and handle caps changes properly for mode=auto

10 years agodecklinkaudiosrc: Don't release input device twice on errors in set_caps()
Sebastian Dröge [Mon, 26 Jan 2015 17:27:10 +0000 (18:27 +0100)]
decklinkaudiosrc: Don't release input device twice on errors in set_caps()

10 years agogl/dispmanx: fix build
Philippe Normand [Tue, 27 Jan 2015 10:25:53 +0000 (11:25 +0100)]
gl/dispmanx: fix build

Commit ab48bb6f0f55091662e595a001e178154ce60cdb changed the API of
GstGLWindow.

10 years agoglmemory: more compatibility defines for gles2 systems
Matthew Waters [Tue, 27 Jan 2015 03:52:47 +0000 (14:52 +1100)]
glmemory: more compatibility defines for gles2 systems

10 years agoglmemory: add some thread safety for gl operations
Matthew Waters [Tue, 27 Jan 2015 01:15:43 +0000 (12:15 +1100)]
glmemory: add some thread safety for gl operations

10 years agoglmemory: use pbo's for download
Matthew Waters [Tue, 27 Jan 2015 00:53:51 +0000 (11:53 +1100)]
glmemory: use pbo's for download

In order to use pbo's efficiently, the transfer operation has to
be separated from the use of the downloaded data which requires some
rearchitecturing around glcolorconvert/gldownload and elements

10 years agoglprototypes: add some (un)map buffer variants for GL/GLES
Matthew Waters [Tue, 27 Jan 2015 00:04:07 +0000 (11:04 +1100)]
glprototypes: add some (un)map buffer variants for GL/GLES

10 years agodashdemux: use audio_%02u and video_%02u names for pads
Thiago Santos [Mon, 26 Jan 2015 20:51:22 +0000 (17:51 -0300)]
dashdemux: use audio_%02u and video_%02u names for pads

Instead of using the default ghostpad%u naming. The audio_/video_
names are more common in demuxers

10 years agodecklinkaudiosrc: Release the audio input on errors, not the video input
Sebastian Dröge [Mon, 26 Jan 2015 14:33:23 +0000 (15:33 +0100)]
decklinkaudiosrc: Release the audio input on errors, not the video input

10 years agoaiffparse: remove unnecessary variable
Luis de Bethencourt [Mon, 26 Jan 2015 13:46:44 +0000 (13:46 +0000)]
aiffparse: remove unnecessary variable

The bps variable is declared with value aiff->bps, read once and never written.
aiff->bps can be used directly instead.

10 years agoaiffparse: fix which stop variable is used in assignment
Luis de Bethencourt [Mon, 26 Jan 2015 12:49:45 +0000 (12:49 +0000)]
aiffparse: fix which stop variable is used in assignment

Assignment is done to variable segment.stop when the intention was to assign to
local variable stop. Instead of overwriting it, the value is now clamped and
segment.stop is set to it soon after.

CID #1265772

10 years agovideoaggregator: fix crash when receiving buffer without timestamps
Tim-Philipp Müller [Mon, 26 Jan 2015 09:22:23 +0000 (09:22 +0000)]
videoaggregator: fix crash when receiving buffer without timestamps

Unset out buffer in clip function when we unref the buffer to be
clipped, otherwise aggregator will continue to use the already-
freed buffer. Fixes crash when buffers without timestamps are
being fed to aggregator. Partly because aggregator ignores the
error flow return.

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

10 years agoRemove unported directdraw plugin
Tim-Philipp Müller [Sun, 18 Jan 2015 18:05:31 +0000 (18:05 +0000)]
Remove unported directdraw plugin

This API has been deprecated for eternities and microsoft
stopped shipping the headers in 2010 accoding to wikipedia,
so let's just remove it and focus on bringing the plugins
based on the newer APIs up to snuff.

10 years agoaiffmux: write padding byte at end of SSND chunk if needed
Matthieu Bouron [Wed, 26 Mar 2014 17:43:33 +0000 (17:43 +0000)]
aiffmux: write padding byte at end of SSND chunk if needed

AIFF chunks are supposed to be even aligned.

Aligning the SSND chunk will allow the aiff muxer to properly write
chunks (like the ID3 one) at the end of the file.

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

10 years agowaylandsink: Free leaked GstStructure
Edward Hervey [Fri, 23 Jan 2015 11:44:22 +0000 (12:44 +0100)]
waylandsink: Free leaked GstStructure

Coverity CID : 1256565

10 years agogltestsrc: Ensure variable is initialized before usage
Edward Hervey [Fri, 23 Jan 2015 11:41:29 +0000 (12:41 +0100)]
gltestsrc: Ensure variable is initialized before usage

Coverity CID: 1256569

10 years agocodecparsers: Indent file
Edward Hervey [Fri, 23 Jan 2015 11:26:16 +0000 (12:26 +0100)]
codecparsers: Indent file

Someone's been commiting without using gst-indent :)

10 years agocodecparsers: Add READ_UE_MAX macro
Edward Hervey [Fri, 23 Jan 2015 11:24:52 +0000 (12:24 +0100)]
codecparsers: Add READ_UE_MAX macro

READ_UE_ALLOWED was almost exclusively used with min == 0, which doesn't
make much point for unsigned integers.

Add a READ_UE_MAX variant and use that instead. Also replaced two usages
of CHECK_ALLOWED (a,0,something) by CHECK_ALLOWED_MAX (a, something)

10 years agointervideosrc: Fix GAP flag setting on non-black frames
Arun Raghavan [Fri, 23 Jan 2015 06:58:42 +0000 (12:28 +0530)]
intervideosrc: Fix GAP flag setting on non-black frames

The previous commit fixed setting the GAP flag on black frames, but
incorrectly dropped the flag on repeated pushes of the same video
buffer.

10 years agogl/tests: update glwindow api change
Matthew Waters [Fri, 23 Jan 2015 06:27:42 +0000 (17:27 +1100)]
gl/tests: update glwindow api change

10 years agogl/window/eagl: fix a couple of typos
Matthew Waters [Fri, 23 Jan 2015 05:52:25 +0000 (16:52 +1100)]
gl/window/eagl: fix a couple of typos

10 years agoglwindow: cleanup/reorganize functions/members into logical groups
Matthew Waters [Fri, 23 Jan 2015 05:39:44 +0000 (16:39 +1100)]
glwindow: cleanup/reorganize functions/members into logical groups

10 years agoapplemedia: update for gstgl cocoa -> cgl change
Matthew Waters [Fri, 23 Jan 2015 04:02:55 +0000 (15:02 +1100)]
applemedia: update for gstgl cocoa -> cgl change

10 years agogl/qt/examples: update for NSOpenGL -> CGL change
Matthew Waters [Fri, 23 Jan 2015 03:18:12 +0000 (14:18 +1100)]
gl/qt/examples: update for NSOpenGL -> CGL change

10 years agoglwindow: remove width/height from _draw()
Matthew Waters [Fri, 23 Jan 2015 03:11:48 +0000 (14:11 +1100)]
glwindow: remove width/height from _draw()

Depending on the platform, it was only ever implemented to 1) set a
default surface size, 2) resize based on the video frame or 3) nothing.
Instead, provide a set_preferred_size () that elements/applications
can use to request a certain size which may be ignored for
videooverlay/other cases.

10 years agoglcontext/cocoa: avoid destroying a possibly 0 GSource id
Matthew Waters [Thu, 22 Jan 2015 10:43:51 +0000 (21:43 +1100)]
glcontext/cocoa: avoid destroying a possibly 0 GSource id

10 years agogl/cocoa: move to CGL and CAOpenGLLayer for rendering
Matthew Waters [Tue, 20 Jan 2015 11:01:39 +0000 (22:01 +1100)]
gl/cocoa: move to CGL and CAOpenGLLayer for rendering

Removes the use of NSOpenGL* variety and functions.  Any Cocoa
specific functions that took/returned a NSOpenGL* object now
take/return the CGL equivalents.

10 years agoglcontext/cocoa: add debug category
Matthew Waters [Thu, 22 Jan 2015 05:08:11 +0000 (16:08 +1100)]
glcontext/cocoa: add debug category

10 years agointervideosrc: Fix GAP flag setting on black frames correctly
Arun Raghavan [Thu, 22 Jan 2015 05:20:23 +0000 (10:50 +0530)]
intervideosrc: Fix GAP flag setting on black frames correctly

This did not actually work since the video_buffer was set to NULL after
the first black frame.

Reported by: Patrik Oldsberg <patrik.oldsberg@ericsson.com>

10 years agointervideosrc: Fix max value of the timeout property
Arun Raghavan [Wed, 21 Jan 2015 18:07:10 +0000 (23:37 +0530)]
intervideosrc: Fix max value of the timeout property

Reported by: Patrik Oldsberg <patrik.oldsberg@ericsson.com>

10 years agoopenh264: Implement the preset interface
Arun Raghavan [Wed, 21 Jan 2015 18:05:55 +0000 (23:35 +0530)]
openh264: Implement the preset interface

Will be useful when we want to set presets on the encoder via encodebin
or such.

10 years agoaudiovisualizer: sync with base class in -base
Luis de Bethencourt [Wed, 21 Jan 2015 15:31:21 +0000 (15:31 +0000)]
audiovisualizer: sync with base class in -base

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

10 years agoaudiovisualizer: ensure default query/event handlers are used
Luis de Bethencourt [Wed, 21 Jan 2015 15:06:21 +0000 (15:06 +0000)]
audiovisualizer: ensure default query/event handlers are used

Sync audiovisualizer class implementation to the one in gst-plugins-base. This
commit matches 9dd0e6cccc971d8a6bcca4e9e4d2ee1dbb20fffa in that module.

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

10 years agosiren: Make some local variables non-static for thread-safety
Sebastian Dröge [Wed, 21 Jan 2015 09:18:11 +0000 (10:18 +0100)]
siren: Make some local variables non-static for thread-safety

Otherwise we will override values from another thread if we encode
or decode frames at the same time in different threads.

10 years agoConstify some static arrays everywhere
Sebastian Dröge [Wed, 21 Jan 2015 09:17:04 +0000 (10:17 +0100)]
Constify some static arrays everywhere

10 years agopo: Fix list of files tracked
Edward Hervey [Wed, 21 Jan 2015 07:49:23 +0000 (08:49 +0100)]
po: Fix list of files tracked

sfsink/sfsrc haven't been ported (and therefore dist'ed) in 1.x

10 years agompegdemux: minor debug update
Edward Hervey [Tue, 9 Dec 2014 08:58:03 +0000 (09:58 +0100)]
mpegdemux: minor debug update

Only show PTS/DTS when they are valid, and include the stream id

10 years agoadaptivedemux: do not skip the first fragment
Thiago Santos [Tue, 20 Jan 2015 17:55:05 +0000 (14:55 -0300)]
adaptivedemux: do not skip the first fragment

Avoid advancing fragment right after downloading the header. If it
is the header, by default, don't advance to the next fragment.

10 years agopo: update POTFILES
Piotr Drąg [Tue, 20 Jan 2015 15:57:15 +0000 (16:57 +0100)]
po: update POTFILES

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

10 years agoh264parse: expose stereo-high profile
Víctor Manuel Jáquez Leal [Fri, 16 Jan 2015 18:32:15 +0000 (19:32 +0100)]
h264parse: expose stereo-high profile

Exposing stereo-high profile as a compatible profile of multiview-high
if the maximum number of encoded views in the stream is two.

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

10 years agoh264parse: parse SPS subset
Víctor Manuel Jáquez Leal [Mon, 19 Jan 2015 16:31:26 +0000 (17:31 +0100)]
h264parse: parse SPS subset

This patch calls gst_h264_parser_parse_subset_sps() when a
SPS subset NAL type is found.

All the bits required for parsing the SPS subset in NALs were
already there, just we need to call them when the this NAL type
is found.

With this parsing, the number of views (minus 1) attribute is
filled, which was a requirement for negotiating the stereo-high
profile.

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

10 years agoh264parse: add initial support for MVC NAL units.
Sreerenj Balachandran [Tue, 19 Mar 2013 12:23:00 +0000 (14:23 +0200)]
h264parse: add initial support for MVC NAL units.

Initial support for MVC NAL units. It is only needed to propagate the
complete set of NAL units downstream at this time.

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

Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
10 years agoadaptivedemux: add explicit cast to make clang happy
Thiago Santos [Tue, 20 Jan 2015 12:23:02 +0000 (09:23 -0300)]
adaptivedemux: add explicit cast to make clang happy

Fixes compilation

10 years agoadaptivedemux: refactor chunk downloading flow
Thiago Santos [Thu, 15 Jan 2015 20:44:45 +0000 (17:44 -0300)]
adaptivedemux: refactor chunk downloading flow

Add more power to the chunk_received function (renamed to data_received)
and also to the fragment_finish function.

The data_received function must parse/decrypt the data if necessary and
also push it using the new push_buffer function that is exposed now. The
default implementation gets data from the stream adapter (all available)
and pushes it.

The fragment_finish function must also advance the fragment. The default
implementation only advances the fragment.

This allows the subsegment handling in dashdemux to continuously download
the same file from the server instead of stopping at every subsegment
boundary and starting a new request

10 years agocompositor: fix illegal memory access in blend function with negative ypos
Vincent Penquerc'h [Mon, 19 Jan 2015 12:37:23 +0000 (12:37 +0000)]
compositor: fix illegal memory access in blend function with negative ypos

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

10 years agodashdemux: add log message about segment time information
Thiago Santos [Mon, 19 Jan 2015 11:37:59 +0000 (08:37 -0300)]
dashdemux: add log message about segment time information

For debugging purposes

10 years agoadaptivedemux: fix multi-period playback
Thiago Santos [Mon, 19 Jan 2015 11:36:42 +0000 (08:36 -0300)]
adaptivedemux: fix multi-period playback

If we say it is the first segment after a new period it will resync
the segment.start value and all buffers will be late for the new period
we are trying to play. Otherwise we want to keep the segment.start with
the previous value to allow the running time to smoothly increase

10 years agodashdemux: Fix compiler warning with clang
Sebastian Dröge [Mon, 19 Jan 2015 10:23:52 +0000 (11:23 +0100)]
dashdemux: Fix compiler warning with clang

gstdashdemux.c:1330:13: error: implicit conversion from enumeration type 'enum _GstAdaptiveDemuxFlowReturn' to different enumeration type
      'GstFlowReturn' [-Werror,-Wenum-conversion]
      ret = GST_ADAPTIVE_DEMUX_FLOW_SUBSEGMENT_END;
          ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

10 years agoglimagesink: fix memleak
Nicola Murino [Sun, 18 Jan 2015 20:05:44 +0000 (21:05 +0100)]
glimagesink: fix memleak

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

10 years agoRemove real plugin which is no longer needed and has never been ported
Tim-Philipp Müller [Sun, 18 Jan 2015 17:25:35 +0000 (17:25 +0000)]
Remove real plugin which is no longer needed and has never been ported

Decoders for these formats exist in gst-libav, if anyone
still has a need for them.

10 years agoRemove libgmyth-based MythTV source element which was never ported
Tim-Philipp Müller [Sun, 18 Jan 2015 17:10:37 +0000 (17:10 +0000)]
Remove libgmyth-based MythTV source element which was never ported

gmyth seems to be unmaintained upstream, and no one has asked
for this to be ported for a very long time, so let's just
remove it. Neither debian nor Fedora seem to ship libgmyth
any longer, and in any case it's most likely deprecated by
the UPnP support in MythTV.

10 years agoglapi: fix compilation with latest MSVC
Lasse Laursen [Fri, 16 Jan 2015 23:06:40 +0000 (10:06 +1100)]
glapi: fix compilation with latest MSVC

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

10 years agoglmemory: use the correct size for the pbo
Matthew Waters [Thu, 15 Jan 2015 01:57:59 +0000 (12:57 +1100)]
glmemory: use the correct size for the pbo

It was missing the GstVideoAlignment padding which could cause GL
errors related to overrunning the size of the pbo.

10 years agoadaptivedemux: prevent early EOS when switching at last fragment
Thiago Santos [Fri, 16 Jan 2015 19:18:35 +0000 (16:18 -0300)]
adaptivedemux: prevent early EOS when switching at last fragment

Check if there is a next fragment before advancing to avoid causing
a bitrate switch (and maybe exposing new pads) only to push EOS.
This causes playback to stop with an error instead of properly
finishing with EOS message.

10 years agodashdemux: Fix detection for the end of segment.
David Waring [Tue, 13 Jan 2015 14:22:02 +0000 (14:22 +0000)]
dashdemux: Fix detection for the end of segment.

The segment start time is calculated as the offset into the current segment.
The old condition to detect the end of period (i.e. segment start time >
period start + period duration) failed when the period start was not 0 since
the segment start time does not take the period start time into account.
Fix this detection by only comparing the segment start to the period duration.

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

10 years agodashdemux: remove unused segment attribute
Thiago Santos [Thu, 15 Jan 2015 02:11:15 +0000 (23:11 -0300)]
dashdemux: remove unused segment attribute

It was never used, only initialized

10 years agodashdemux: implement ISOBMFF profile handling
Thiago Santos [Mon, 12 Jan 2015 20:40:47 +0000 (17:40 -0300)]
dashdemux: implement ISOBMFF profile handling

The ISOBMFF profile allows definind subsegments in a segment. At those
subsegment boundaries the client can switch from one representation to
another as they have aligned indexes.

To handle those the 'sidx' index is parsed from the stream and the
entries point to pts/offset of the samples in the stream. Knowing that
the entries are aligned in the different representation allows the client
to switch mid fragment. In this profile a single fragment is used per
representation and the subsegments are contained in this fragment.

To notify the superclass about the subsegment boundary the chunk_received
function returns a special flow return that indicates that. In this case,
the super class will check if a more suitable bitrate is available and will
change to the same subsegment in this new representation.

It also requires special handling of the position in the stream as the
fragment advancing is now done by incrementing the index of the subsegment.
It will only advance to the next fragment once all subsegments have been
downloaded.

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

10 years agodashdemux: parse the sidx index from isobmff streams
Thiago Santos [Mon, 12 Jan 2015 14:57:02 +0000 (11:57 -0300)]
dashdemux: parse the sidx index from isobmff streams

Allows dashdemux to identify the subsegments in the stream and
switch bitrates when needed

10 years agodashdemux: check for profiles
Thiago Santos [Fri, 9 Jan 2015 19:43:03 +0000 (16:43 -0300)]
dashdemux: check for profiles

Check for available profiles to enable certain features for
dash playback. For now we check for the ISOFF On Demand 2011 profile.

10 years agoadaptivedemux: add a special return to signal subsegment boundary
Thiago Santos [Tue, 13 Jan 2015 13:16:22 +0000 (10:16 -0300)]
adaptivedemux: add a special return to signal subsegment boundary

The subsegment boundary return tells the adaptivedemux that it can
try to switch to another representation as the stream is at a suitable
position for starting from another bitrate.

10 years agoadaptivedemux: Actually use the byte range for the fragment url
Thiago Santos [Tue, 13 Jan 2015 13:15:21 +0000 (10:15 -0300)]
adaptivedemux: Actually use the byte range for the fragment url

Otherwise we would always download the full fragment. This would
make handling subsegments in DASH impossible.

10 years agoadaptivedemux: allow downloads of headers only
Thiago Santos [Tue, 13 Jan 2015 13:13:47 +0000 (10:13 -0300)]
adaptivedemux: allow downloads of headers only

In order to get some subsegment information, subclasses might want
to download only the headers to have enough data (the index)
to decide where to start downloading from the subsegment.

10 years agoadaptivedemux: refactor common code to function
Thiago Santos [Mon, 12 Jan 2015 21:22:14 +0000 (18:22 -0300)]
adaptivedemux: refactor common code to function

Reuse the same function when finishing downloading and signaling to
the download loop thread to get the next fragment or abort

10 years agoadaptivedemux: inform subclass when headers/index are being downloaded
Thiago Santos [Fri, 9 Jan 2015 20:19:54 +0000 (17:19 -0300)]
adaptivedemux: inform subclass when headers/index are being downloaded

This allows the subclasses to know if the chunks that are downloaded are
part of the header or of the index and will parse the parts that are
of their interest.

10 years agouridownloader: a few leak fixes
Vincent Penquerc'h [Thu, 15 Jan 2015 16:11:24 +0000 (16:11 +0000)]
uridownloader: a few leak fixes

10 years agofragment: fix caps and buffer leaks in get_property
Vincent Penquerc'h [Thu, 15 Jan 2015 13:16:07 +0000 (13:16 +0000)]
fragment: fix caps and buffer leaks in get_property