platform/upstream/gstreamer.git
9 years agogstglmemory: Remove now unused transfer_upload function.
Mathieu Duponchelle [Sat, 21 Feb 2015 13:42:05 +0000 (14:42 +0100)]
gstglmemory: Remove now unused transfer_upload function.

9 years agoglmemory: disable automatic pbo upload
Matthew Waters [Sat, 21 Feb 2015 12:29:22 +0000 (23:29 +1100)]
glmemory: disable automatic pbo upload

until we can track where the data is/or is going to be.

9 years agohlsdemux: select correct starting position for live streams
Alex Ashley [Fri, 20 Feb 2015 13:55:05 +0000 (13:55 +0000)]
hlsdemux: select correct starting position for live streams

When playing live HLS streams, the media playback starts from the
beginning of the media playlist. When playing a live HLS stream,
media playback should start from 3 fragments from the end of the
playlist.

See section 6.3.3. of the HLS draft [1]

This commit changes the logic to select 3 fragments from the end when
playing a live stream.

[1] http://tools.ietf.org/html/draft-pantos-http-live-streaming-12#page-29

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

9 years agoglememory: only store and act on the map flags on first/last map/unmap
Matthew Waters [Fri, 20 Feb 2015 07:42:23 +0000 (18:42 +1100)]
glememory: only store and act on the map flags on first/last map/unmap

Anytime else, we have no idea how to match up map and unmaps.
We also don't know exactly how the calling code is using us.
Also fixes the case where we're trying to transfer while someone else
is accessing our data pointer or texture resulting in mismatched video
frames.

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

9 years agoaggregator: Use src_lock to protect latency related members
Olivier Crete [Fri, 20 Feb 2015 02:21:56 +0000 (21:21 -0500)]
aggregator: Use src_lock to protect latency related members

One has to use the src_lock anyway to protect the min/max/live so they
can be notified atomically to the src thread to wake it up on changes,
such as property changes. So no point in having a second lock.

Also, the object lock was being held across a call to
GST_ELEMENT_WARNING, guaranteeing a deadlock.

9 years agoaggregator: Remove untrue comment
Olivier Crête [Thu, 19 Feb 2015 23:53:32 +0000 (18:53 -0500)]
aggregator: Remove untrue comment

9 years agoaggregator: Don't try to push tags while flush seeking
Olivier Crête [Thu, 19 Feb 2015 23:30:35 +0000 (18:30 -0500)]
aggregator: Don't try to push tags while flush seeking

The downstream segment could have been flushed already, so
need to re-send the segment event before re-sending the tags.

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

9 years agohlssink: reduce playlist's EXT-X-VERSION to 3
Guillaume Seguin [Thu, 19 Feb 2015 13:34:23 +0000 (14:34 +0100)]
hlssink: reduce playlist's EXT-X-VERSION to 3

We are not using any features greater than the 3rd version,
so reduce to what we actually use to make it compatible with
more players

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

9 years agortpopuspay: default encoding name to OPUS
Vincent Penquerc'h [Thu, 19 Feb 2015 14:30:10 +0000 (14:30 +0000)]
rtpopuspay: default encoding name to OPUS

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

9 years agortpopuspay: make caps writable before truncating them
Vincent Penquerc'h [Thu, 19 Feb 2015 14:05:06 +0000 (14:05 +0000)]
rtpopuspay: make caps writable before truncating them

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

9 years agortpopuspay: negotiate the encoding name
Vincent Penquerc'h [Thu, 5 Feb 2015 10:27:51 +0000 (10:27 +0000)]
rtpopuspay: negotiate the encoding name

Chrome uses a different encoding name that gstreamer.

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

9 years agosimplevideomarkdetect: move offset calculations out of inner loops
Vineeth T M [Thu, 19 Feb 2015 11:51:46 +0000 (17:21 +0530)]
simplevideomarkdetect: move offset calculations out of inner loops

the calculations for detecting the videomark is being repeated
in for loop unnecessarily. Moving this outside of for loop
such that the code need not be executed evertime the loop is executed.

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

9 years agoaggregator: Use the sinkpads iterator directly to query upstream latencies
Sebastian Dröge [Thu, 19 Feb 2015 09:04:28 +0000 (11:04 +0200)]
aggregator: Use the sinkpads iterator directly to query upstream latencies

While gst_aggregator_iterate_sinkpads() makes sure that every pad is only
visited once, even when the iterator has to resync, this is not all we have
to do for querying the latency. When the iterator resyncs we actually have
to query all pads for the latency again and forget our previous results. It
might have happened that a pad was removed, which influenced the result of
the latency query.

9 years agoaggregator: Move gst_aggregator_get_latency_unlocked() a bit
Sebastian Dröge [Thu, 19 Feb 2015 08:57:09 +0000 (10:57 +0200)]
aggregator: Move gst_aggregator_get_latency_unlocked() a bit

It was between another function and its helper function before, which was
confusing when reading the code as it had nothing to do with the other
functions.

9 years agorsninputselector: Fail the latency query if one of the upstream queries fails
Sebastian Dröge [Wed, 18 Feb 2015 23:28:30 +0000 (01:28 +0200)]
rsninputselector: Fail the latency query if one of the upstream queries fails

9 years agoliveadder: Fail the latency query if one of the upstream queries fails
Sebastian Dröge [Wed, 18 Feb 2015 23:28:20 +0000 (01:28 +0200)]
liveadder: Fail the latency query if one of the upstream queries fails

9 years agoaggregator: Fail the latency query if one of the upstream queries fails
Sebastian Dröge [Wed, 18 Feb 2015 23:28:06 +0000 (01:28 +0200)]
aggregator: Fail the latency query if one of the upstream queries fails

9 years agoavfvideosrc: Only set latency if we already know our caps
Sebastian Dröge [Wed, 18 Feb 2015 17:06:09 +0000 (19:06 +0200)]
avfvideosrc: Only set latency if we already know our caps

Otherwise we might set bogus values or GST_CLOCK_TIME_NONE.

Also make sure to reset the caps field to NULL after unreffing
the caps to prevent accidential use afterwards, and unref any
old caps before we remember new caps.

9 years agoaggregator: Document locking order
Olivier Crête [Wed, 18 Feb 2015 20:53:53 +0000 (15:53 -0500)]
aggregator: Document locking order

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

9 years agoaggregator: Rename confusinly named SRC_STREAM_LOCK macros to SRC_LOCK
Olivier Crête [Wed, 18 Feb 2015 20:11:14 +0000 (15:11 -0500)]
aggregator: Rename confusinly named SRC_STREAM_LOCK macros to SRC_LOCK

This will match the name of the lock itself. It is also not a stream
lock as it not recursive and not held while pushing.

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

9 years agoaggregator: Rename confusingly named stream lock to flush lock
Olivier Crête [Wed, 18 Feb 2015 20:06:01 +0000 (15:06 -0500)]
aggregator: Rename confusingly named stream lock to flush lock

This lock is not what is commonly known as a "stream lock" in GStremer,
it's not recursive and it's taken from the non-serialized FLUSH_START event.

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

9 years agoaggregator: Fix macro indendation
Olivier Crête [Wed, 18 Feb 2015 20:04:04 +0000 (15:04 -0500)]
aggregator: Fix macro indendation

Changes no code

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

9 years agogltransform: Fix includes of graphene headers
Nicolas Dufresne [Wed, 18 Feb 2015 22:10:48 +0000 (17:10 -0500)]
gltransform: Fix includes of graphene headers

The graphene-1.0 part should not be in the source code. This directory
is part of the cflags include. This is similar to gstreamer-1.0/
directory. This break compilation if the include directory where
graphene is installed is not in your include path.

9 years agomxfdemux: remove unneeded values
Luis de Bethencourt [Wed, 18 Feb 2015 19:07:42 +0000 (19:07 +0000)]
mxfdemux: remove unneeded values

No need to store the GstFlowReturn when we can check if it is not OK directly

9 years agomxfdemux: renaming GstFlowReturn variable
Luis de Bethencourt [Wed, 18 Feb 2015 18:33:20 +0000 (18:33 +0000)]
mxfdemux: renaming GstFlowReturn variable

Having a variable named ret in a static void function is very confusing since
this usually is to store what the function will return.

9 years agomxfdemux: remove ignored value
Luis de Bethencourt [Wed, 18 Feb 2015 18:00:48 +0000 (18:00 +0000)]
mxfdemux: remove ignored value

Value stored in ret will be ovewritten in the next iteration of the loop. Which
means it is never used.

Plus a style issue to make gst-indent happy and allow the commit.

9 years agoopusenc: Remove g_warnings() for the deprecated audio property
Sebastian Dröge [Wed, 18 Feb 2015 15:41:25 +0000 (17:41 +0200)]
opusenc: Remove g_warnings() for the deprecated audio property

Otherwise there are g_warnings() already when just using gst-inspect or
dumping a pipeline graph.

9 years agodashdemux: protect against malformed isombff format
Thiago Santos [Mon, 16 Feb 2015 02:16:52 +0000 (23:16 -0300)]
dashdemux: protect against malformed isombff format

Be more careful around malformed mpds that announce using
isombff profile but actually are regular mpds

9 years agod3dvideosink: Deactivate the fallback pool and unref the fallback buffer when resetting
Sebastian Dröge [Wed, 18 Feb 2015 10:45:22 +0000 (12:45 +0200)]
d3dvideosink: Deactivate the fallback pool and unref the fallback buffer when resetting

Otherwise we will still have a reference to the surface left, which would
prevent activating the sink again later. E.g. after we lost the device.

Hopefully fixes https://bugzilla.gnome.org/show_bug.cgi?id=744615

9 years agohlsdemux: remove unused define
Thiago Santos [Tue, 17 Feb 2015 14:53:49 +0000 (11:53 -0300)]
hlsdemux: remove unused define

9 years agomssdemux: use correct function to clear fragment info
Thiago Santos [Tue, 17 Feb 2015 14:41:27 +0000 (11:41 -0300)]
mssdemux: use correct function to clear fragment info

Just freeing the url won't reset the byte ranges and can lead to wrong
ranges being used.

9 years agodashdemux: depracate bandwidth-usage in favor of bitrate-limit
Thiago Santos [Tue, 17 Feb 2015 13:50:59 +0000 (10:50 -0300)]
dashdemux: depracate bandwidth-usage in favor of bitrate-limit

Bitrate-limit is already available in the baseclass and, even though
the bandwidth-usage name is better, hls and mss already used
bitrate-limit. This patch deprecates the bandwidth-usage and maps
it to the baseclass bitrate-limite.

9 years agoadaptivedemux: add bitrate-limit property
Thiago Santos [Tue, 17 Feb 2015 13:40:06 +0000 (10:40 -0300)]
adaptivedemux: add bitrate-limit property

Move the property from subclasses to adaptivedemux, it allows
selecing the percentage of the measured bitrate to be used when
selecting stream bitrates

9 years agohlssink: allow creation of 'infinite' playlist
Thiago Santos [Tue, 17 Feb 2015 13:04:30 +0000 (10:04 -0300)]
hlssink: allow creation of 'infinite' playlist

Allow the playlist-length to accept '0' as a value, indicating
that no segment should be removed from the playlist. This allows
generating playlists to be used as VOD when complete.

9 years agohlssink: remove unused attribute
Thiago Santos [Tue, 17 Feb 2015 13:04:27 +0000 (10:04 -0300)]
hlssink: remove unused attribute

the GFile attribute is never used

9 years agoadaptivedemux: add connection-speed property
Thiago Santos [Tue, 17 Feb 2015 13:03:44 +0000 (10:03 -0300)]
adaptivedemux: add connection-speed property

Allows to set a bitrate directly instead of measuring it internally
based on the received chunks. The connection-speed was removed from
mssdemux and hlsdemux as it is now in the base class

9 years agobasecamerabinsrc: don't use private GMutex implementation details
Tim-Philipp Müller [Tue, 17 Feb 2015 00:34:55 +0000 (00:34 +0000)]
basecamerabinsrc: don't use private GMutex implementation details

Don't use private GMutex implementation details to check
whether it has been freed already or not. Just clear mutex
and GCond unconditionally in free function, they are always
inited anyway, and the free function can't be called multiple
times either.

9 years agoaudiovisualizer: don't use private GMutex implementation details
Tim-Philipp Müller [Mon, 16 Feb 2015 23:54:28 +0000 (23:54 +0000)]
audiovisualizer: don't use private GMutex implementation details

Don't use private GMutex implementation details to check
whether it has been freed already or not. Just turn dispose
function into finalize function which will only be called
once, that way we can just clear the mutex unconditionally.

9 years agogl/cocoa: don't deadlock if the dispatch_sync is called from the main thread
Matthew Waters [Tue, 17 Feb 2015 07:17:59 +0000 (18:17 +1100)]
gl/cocoa: don't deadlock if the dispatch_sync is called from the main thread

Provide a helper function to check whether we are being called from
the main thread and act appropriately.

9 years agogl/calayer: only start drawing if the parent gl context is ready
Matthew Waters [Tue, 17 Feb 2015 05:41:17 +0000 (16:41 +1100)]
gl/calayer: only start drawing if the parent gl context is ready

otherwise we may try to use GstGLFuncs * that hasn't been set yet

9 years agogl/cocoa: small refactor of layer/view creation into the window
Matthew Waters [Tue, 17 Feb 2015 05:39:56 +0000 (16:39 +1100)]
gl/cocoa: small refactor of layer/view creation into the window

9 years agoglwindow: Remove assertion in gst_gl_window_show() for subclasses not implementing it
Sebastian Dröge [Mon, 16 Feb 2015 23:04:38 +0000 (01:04 +0200)]
glwindow: Remove assertion in gst_gl_window_show() for subclasses not implementing it

On Android and iOS we can't create a window ourselves, so also can't just show
one. That's not a problem and an assertion is not really needed here.

9 years agovtenc: Check if VTSessionCopyProperty() succeeds before using the result
Sebastian Dröge [Mon, 16 Feb 2015 10:35:09 +0000 (12:35 +0200)]
vtenc: Check if VTSessionCopyProperty() succeeds before using the result

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

9 years agoaggregator: drop GAP events until we handle them properly
Tim-Philipp Müller [Fri, 13 Feb 2015 23:45:20 +0000 (23:45 +0000)]
aggregator: drop GAP events until we handle them properly

9 years agosimplevideomark: refactor code
Vineeth T M [Thu, 12 Feb 2015 06:34:44 +0000 (12:04 +0530)]
simplevideomark: refactor code

the calculations for drawing the videomark is being repeated
in for loop unnecessarily. Moving this outside of for loop
such that the code need not be executed evertime the loop is executed.

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

9 years agotsdemux: Fix segment and segment event handling during seeking
Thiago Santos [Mon, 9 Feb 2015 14:21:35 +0000 (11:21 -0300)]
tsdemux: Fix segment and segment event handling during seeking

Always update the segment and not only for accurate seeking and always
send a new segment event after seeks.

For non-accurate force a reset of our segment info to start from
where our seek led us as we don't need to be accurate

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

9 years agoaudiomixer: use new gst_aggregator_pad_drop_buffer()
Tim-Philipp Müller [Fri, 13 Feb 2015 16:06:34 +0000 (16:06 +0000)]
audiomixer: use new gst_aggregator_pad_drop_buffer()

9 years agovideoaggregator: use new gst_aggregator_pad_drop_buffer()
Tim-Philipp Müller [Fri, 13 Feb 2015 16:03:53 +0000 (16:03 +0000)]
videoaggregator: use new gst_aggregator_pad_drop_buffer()

9 years agoaggregator: use new gst_aggregator_pad_drop_buffer()
Tim-Philipp Müller [Fri, 13 Feb 2015 15:53:19 +0000 (15:53 +0000)]
aggregator: use new gst_aggregator_pad_drop_buffer()

9 years agoaggregator: add gst_aggregator_pad_drop_buffer()
Tim-Philipp Müller [Fri, 13 Feb 2015 15:49:50 +0000 (15:49 +0000)]
aggregator: add gst_aggregator_pad_drop_buffer()

steal_buffer() + unref seems to be a wide-spread idiom
(which perhaps indicates that something is not quite
right with the way aggregator pad works currently).

9 years agoaggregator: only post latency message if anything changed
Tim-Philipp Müller [Thu, 12 Feb 2015 13:32:39 +0000 (13:32 +0000)]
aggregator: only post latency message if anything changed

Perhaps we should check for element state as well and
only post it if in PLAYING state.

9 years agotests: remove GST_DISABLE_PARSE guards from two tests that don't require it
Tim-Philipp Müller [Thu, 12 Feb 2015 15:48:07 +0000 (15:48 +0000)]
tests: remove GST_DISABLE_PARSE guards from two tests that don't require it

9 years agoopensles: Make debug category naming a bit more consistent
Arun Raghavan [Wed, 28 Jan 2015 06:42:26 +0000 (12:12 +0530)]
opensles: Make debug category naming a bit more consistent

9 years agoapplemedia: avfvideosrc: fix crash when non-GL memory is used
Alessandro Decina [Fri, 13 Feb 2015 08:12:20 +0000 (19:12 +1100)]
applemedia: avfvideosrc: fix crash when non-GL memory is used

9 years agoadaptivedemux: Fix logic in fragment_download_finish.
Mathieu Duponchelle [Thu, 5 Feb 2015 17:10:15 +0000 (18:10 +0100)]
adaptivedemux: Fix logic in fragment_download_finish.

This was preventing us from surfacing a meaningful error.

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

9 years agodashdemux: Fix handling of live streams with timeshift buffers.
Mathieu Duponchelle [Thu, 12 Feb 2015 21:06:17 +0000 (22:06 +0100)]
dashdemux: Fix handling of live streams with timeshift buffers.

By implementing get_live_seek_range.

As shown by :

gst-validate-1.0 playbin \
uri=http://dev-iplatforms.kw.bbc.co.uk/dash/news24-avc3/news24.php

This patch handles live seeking, by setting a live seek range
comprised between now - timeShiftBufferDepth and now.

The inteersting thing with this stream is that one can actually
ask fragments up to availabilityStartTime, but it seems quite clear
in the spec that content is only guaranteed to exist up to
timeShiftBufferDepth.

One can test live seeking this way :

gst-validate-1.0 playbin \
uri=http://dev-iplatforms.kw.bbc.co.uk/dash/news24-avc3/news24.php \
--set-scenario seek_back.scenario

with scenario being:

description, seek=true
seek, playback-time=position+5.0, start="position-600.0",
flags=accurate+flush

This example will play the stream, wait for five seconds, then seek back
to a position 10 minutes earlier.

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

9 years agoadaptivedemux: Set first segment time to segment start.
Mathieu Duponchelle [Thu, 12 Feb 2015 21:04:10 +0000 (22:04 +0100)]
adaptivedemux: Set first segment time to segment start.

Otherwise as long as a seek wasn't executed, the position was
reported incorrectly:

gst-validate-1.0 playbin \
uri=http://dev-iplatforms.kw.bbc.co.uk/dash/news24-avc3/news24.php

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

9 years agoglimagesink: Fix debug statement
Edward Hervey [Thu, 12 Feb 2015 16:33:50 +0000 (17:33 +0100)]
glimagesink: Fix debug statement

9 years agogl: Add/Update more debug statements
Edward Hervey [Thu, 12 Feb 2015 14:02:31 +0000 (15:02 +0100)]
gl: Add/Update more debug statements

Where possible, use the _OBJECT variants in order to track better from
which object the debug statement is coming from

Define (and use) GST_CAT_DEFAULT where applicable

Use GST_PTR_FORMAT where applicable

9 years agogl: Make glcontext debug category used in more places
Edward Hervey [Thu, 12 Feb 2015 13:58:14 +0000 (14:58 +0100)]
gl: Make glcontext debug category used in more places

As a bonus it makes the egl context debug messages visible now :)

9 years agoglimagesink: Sprinkle more debug
Edward Hervey [Thu, 12 Feb 2015 13:56:12 +0000 (14:56 +0100)]
glimagesink: Sprinkle more debug

9 years agodashdemux: set proper stream type to streams
Thiago Santos [Thu, 12 Feb 2015 14:15:31 +0000 (11:15 -0300)]
dashdemux: set proper stream type to streams

strncmp returns 0 when it compares equal and not a
boolean

9 years agoaudiomixer: calculate stream_time used to sync pad values correctly
Tim-Philipp Müller [Thu, 12 Feb 2015 11:26:44 +0000 (11:26 +0000)]
audiomixer: calculate stream_time used to sync pad values correctly

Use pad (input) segment to calculate the stream time from the
input timestamp, not the aggregator (output) segment.

9 years agoavfvideosrc: Only use the duration of the sample if it is valid
Sebastian Dröge [Thu, 12 Feb 2015 09:11:19 +0000 (11:11 +0200)]
avfvideosrc: Only use the duration of the sample if it is valid

9 years agoadaptivedemux: track per-fragment bitrates.
Mathieu Duponchelle [Tue, 27 Jan 2015 12:48:42 +0000 (13:48 +0100)]
adaptivedemux: track per-fragment bitrates.

And use the average to go up in resolution, and the last fragment
bitrate to go down.

This allows the demuxer to react rapidly to bitrate loss, and
be conservative for bitrate improvements.

+ Add a construct only property to define the number of fragments
  to consider when calculating the average moving bitrate.

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

9 years agox265enc: Add support for 10bit 4:2:0 and 4:4:4 formats
Sebastian Dröge [Wed, 11 Feb 2015 13:44:16 +0000 (14:44 +0100)]
x265enc: Add support for 10bit 4:2:0 and 4:4:4 formats

9 years agoImprove and fix LATENCY query handling
Sebastian Dröge [Wed, 11 Feb 2015 13:16:21 +0000 (14:16 +0100)]
Improve and fix LATENCY query handling

This now follows the design docs everywhere, especially the maximum latency
handling.

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

9 years agocamerabin examples: memory leak in camerabin examples code
Song Bing [Tue, 10 Feb 2015 07:55:50 +0000 (15:55 +0800)]
camerabin examples: memory leak in camerabin examples code

should unref caps after set to profile. profile will ref it.

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

9 years agocamerabin examples: memory leak in camerabin examples code
Song Bing [Tue, 10 Feb 2015 07:53:21 +0000 (15:53 +0800)]
camerabin examples: memory leak in camerabin examples code

should unref after set object. The object will be refed when set
property.

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

9 years agoopenslesringbuffer: Only allocate at most half the number of internal buffers as...
Sebastian Dröge [Tue, 10 Feb 2015 15:18:34 +0000 (16:18 +0100)]
openslesringbuffer: Only allocate at most half the number of internal buffers as external audioringbuffer ones

Otherwise we might end up reading too much from the audioringbuffer, which
would result in reading silence.

9 years agodecklinkvideosrc: Apply the diff between element and pipeline "base" time in all...
Sebastian Dröge [Tue, 10 Feb 2015 15:01:19 +0000 (16:01 +0100)]
decklinkvideosrc: Apply the diff between element and pipeline "base" time in all cases

Even if both clocks have the same rate, we need to apply this diff. Only when
it's the same clock we don't, as it's our clock then.

9 years agodecklinkvideosrc: Add the diff between the pipeline base time and when we start to...
Sebastian Dröge [Tue, 10 Feb 2015 14:30:44 +0000 (15:30 +0100)]
decklinkvideosrc: Add the diff between the pipeline base time and when we start to play

Add the diff between the external time when we went to playing and
the external time when the pipeline went to playing. Otherwise we
will always start outputting from 0 instead of the current running
time.

9 years agodecklinkvideosink: Actually include the change mentioned in the last commit
Sebastian Dröge [Tue, 10 Feb 2015 13:53:55 +0000 (14:53 +0100)]
decklinkvideosink: Actually include the change mentioned in the last commit

9 years agodecklinkvideo{src,sink}: Sample the internal clock immediately after starting the...
Sebastian Dröge [Tue, 10 Feb 2015 13:48:09 +0000 (14:48 +0100)]
decklinkvideo{src,sink}: Sample the internal clock immediately after starting the device

Otherwise we might stay at 0.0s for too long because we will take the first
timestamp we ever see as 0.0... which will be after we started the device.

9 years agovideoaggregator: When receiving timeout before caps, make sure to also advance our...
Sebastian Dröge [Tue, 10 Feb 2015 09:56:37 +0000 (10:56 +0100)]
videoaggregator: When receiving timeout before caps, make sure to also advance our frame counter

Otherwise we will directly go EOS on the next non-timeout.

9 years agoaggregator: Pause srcpad task on flow errors
Sebastian Dröge [Tue, 10 Feb 2015 09:49:16 +0000 (10:49 +0100)]
aggregator: Pause srcpad task on flow errors

Otherwise we will call the task function over and over again until
upstream finally handled the flow return and shuts us down.

9 years agovideoaggregator: fix buffer selection when duration=-1
Matthew Waters [Sun, 8 Feb 2015 13:59:30 +0000 (00:59 +1100)]
videoaggregator: fix buffer selection when duration=-1

If the src framerate and videoaggreator's output framerate were
different, then we were taking every single buffer that had duration=-1
as it came in regardless of the buffer's start time.  This caused the src
to possibly run at a different speed to the output frames.

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

9 years agodecklink: Fix compiler warning with gcc
Sebastian Dröge [Mon, 9 Feb 2015 20:04:17 +0000 (21:04 +0100)]
decklink: Fix compiler warning with gcc

gstdecklink.cpp: In member function 'virtual HRESULT GStreamerDecklinkInputCallback::VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*)':
gstdecklink.cpp:498:22: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     if (capture_time > m_input->clock_start_time)
                      ^
gstdecklink.cpp:503:22: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     if (capture_time > m_input->clock_offset)
                      ^

9 years agodecklink{audio,video}src: Implement clock slaving if the pipeline clock is not the...
Sebastian Dröge [Mon, 9 Feb 2015 16:17:37 +0000 (17:17 +0100)]
decklink{audio,video}src: Implement clock slaving if the pipeline clock is not the decklink clock

9 years agodecklinkaudio{src,sink}: Only start streams / scheduled playback if there is a videos...
Sebastian Dröge [Mon, 9 Feb 2015 16:15:21 +0000 (17:15 +0100)]
decklinkaudio{src,sink}: Only start streams / scheduled playback if there is a videosrc at this point

9 years agodecklinkaudiosrc: Don't provide a clock
Sebastian Dröge [Mon, 9 Feb 2015 16:04:27 +0000 (17:04 +0100)]
decklinkaudiosrc: Don't provide a clock

The audio source only works together with the video source, and the video
source is already providing a clock.

9 years agodecklinkaudiosink: Throttle reading from the ringbuffer
Sebastian Dröge [Mon, 9 Feb 2015 15:18:03 +0000 (16:18 +0100)]
decklinkaudiosink: Throttle reading from the ringbuffer

The driver has an internal buffer of unspecified and unconfigurable size, and
it will pull data from our ring buffer as fast as it can until that is full.
Unfortunately that means that we pull silence from the ringbuffer unless its
size is by conincidence larger than the driver's internal ringbuffer.

The good news is that it's not required to completely fill the buffer for
proper playback. So we now throttle reading from the ringbuffer whenever
the driver has buffered more than half of our ringbuffer size by waiting
on the clock for the amount of time until it has buffered less than that
again.

9 years agodecklinkaudiosink: Start scheduled playback when going to PLAYING
Sebastian Dröge [Mon, 9 Feb 2015 14:19:11 +0000 (15:19 +0100)]
decklinkaudiosink: Start scheduled playback when going to PLAYING

The ringbuffer's acquire() is too early, and ringbuffer's start() will only be
called after the clock has advanced a bit... which it won't unless we start
scheduled playback.

9 years agovtdec: fix texture sharing on iOS
Alessandro Decina [Mon, 9 Feb 2015 10:18:24 +0000 (21:18 +1100)]
vtdec: fix texture sharing on iOS

Move GLES calls to the context thread. Fix
CVOpenGLESTextureCacheCreateTextureFromImage usage on iOS.

9 years agolibgstgl: set user data and GDestroyNotify for wrapped textures
Alessandro Decina [Mon, 9 Feb 2015 09:44:50 +0000 (20:44 +1100)]
libgstgl: set user data and GDestroyNotify for wrapped textures

9 years agodecklink{audio,video}src: Take the capture times from the pipeline clock
Sebastian Dröge [Sun, 8 Feb 2015 20:53:58 +0000 (21:53 +0100)]
decklink{audio,video}src: Take the capture times from the pipeline clock

Not from the decklink clock. Both will return exactly the same time once the
decklink clock got slaved to the pipeline clock and received the first
observation, but until then it will return bogus values. But as both return
exactly the same values, we can as well use the pipeline clock directly.

9 years agovideoaggregator: don't set element factory details
Tim-Philipp Müller [Sun, 8 Feb 2015 14:32:22 +0000 (14:32 +0000)]
videoaggregator: don't set element factory details

This is an abstract base class, not an element.

9 years agodvdspu: some optimizations
Rob Clark [Sat, 7 Feb 2015 14:19:42 +0000 (01:19 +1100)]
dvdspu: some optimizations

Detect invisible pixels, and skip gstspu_vobsub_blend_comp_buffers()
when there are only invisible pixels.  This significantly reduces the
CPU load in cases of DVDs which don't use the clip_rect to exclude
processing for parts of the screen where the video is visible.

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

9 years agodvdspu: Avoid warning if the video for a still frame arrives after the SPU
Jan Schmidt [Sat, 7 Feb 2015 18:06:48 +0000 (05:06 +1100)]
dvdspu: Avoid warning if the video for a still frame arrives after the SPU

When we don't have a segment on the video pad yet during a still frame
don't freak out.

9 years agoresindvd: Don't send meaningless segment position downstream
Jan Schmidt [Sat, 7 Feb 2015 17:51:13 +0000 (04:51 +1100)]
resindvd: Don't send meaningless segment position downstream

Don't place a meaningless value in the position field in
outgoing segments - values have to be in the range start->stop.

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

9 years agoRevert "aiffparse: make sure we have data before handling sink event"
Luis de Bethencourt [Fri, 6 Feb 2015 16:22:26 +0000 (16:22 +0000)]
Revert "aiffparse: make sure we have data before handling sink event"

This reverts commit a4baabb48d252214d3833b502c7903d9f15f3502.

9 years agoaiffparse: make sure we have data before handling sink event
Luis de Bethencourt [Fri, 6 Feb 2015 15:10:55 +0000 (15:10 +0000)]
aiffparse: make sure we have data before handling sink event

Check AIFF_PARSE_DATA is True before handling sink event, if not goto exit.

9 years agoaudiomixer: remove now-unused base_time field in object structure
Tim-Philipp Müller [Thu, 5 Feb 2015 15:57:59 +0000 (15:57 +0000)]
audiomixer: remove now-unused base_time field in object structure

9 years agoaggregator: Streamline latency calculations
Sebastian Dröge [Fri, 6 Feb 2015 09:59:27 +0000 (10:59 +0100)]
aggregator: Streamline latency calculations

Min latency can never be invalid, latency property can never be invalid
either. So no need to check for all these things in various places.

9 years agoaggregator: If upstream has no max latency but the subclass has, take the subclass...
Sebastian Dröge [Fri, 6 Feb 2015 09:36:28 +0000 (10:36 +0100)]
aggregator: If upstream has no max latency but the subclass has, take the subclass max latency

9 years agoaggregator: Fix min>max latency error check
Sebastian Dröge [Fri, 6 Feb 2015 09:33:59 +0000 (10:33 +0100)]
aggregator: Fix min>max latency error check

We have to include the upstream latency, our own latency and the subclass
latency in the calculations.

FIXME: This is still not entirely correct

9 years agoaggregator: Don't add the latency property to the max latency
Sebastian Dröge [Fri, 6 Feb 2015 09:30:59 +0000 (10:30 +0100)]
aggregator: Don't add the latency property to the max latency

It has no meaning for the max latency and is only used to increase the min
latency.

9 years agoglproto/vao: only supported in core for ES 3.0+
Matthew Waters [Fri, 6 Feb 2015 01:53:15 +0000 (12:53 +1100)]
glproto/vao: only supported in core for ES 3.0+

Was causing horizontally flipped video for frame 2 onward on android

9 years agofaac: relace parsed with framed in aac caps
Thiago Santos [Thu, 5 Feb 2015 16:31:18 +0000 (13:31 -0300)]
faac: relace parsed with framed in aac caps

For AAC it should always be 'framed' and not 'parsed'

9 years agofaac: fix output caps to negotiate with some muxers
Thiago Santos [Thu, 5 Feb 2015 14:39:55 +0000 (11:39 -0300)]
faac: fix output caps to negotiate with some muxers

Add parsed/framed=true to allow negotiation with some
muxers that required parsed input. Encoders already provide
parsed/framed output so it should say so in caps.