Matthew Waters [Thu, 29 Jan 2015 06:41:19 +0000 (17:41 +1100)]
new caopengllayersink element
renders gstreamer gl scene/video frames to a caopengllayer retreivable
from the "layer" property.
Matthew Waters [Mon, 19 Jan 2015 01:43:23 +0000 (12:43 +1100)]
applemedia: new AVSampleBufferLayerSink
Renders buffers using the CALayer subclass AVSampleBufferDisplayLayer
which can be placed inside a Core Animation render tree.
Matthew Waters [Tue, 24 Feb 2015 08:06:18 +0000 (19:06 +1100)]
gl/calayer: don't use the async callback to render
not until we can provide equivalent functionality for other window
implementations.
Matthew Waters [Mon, 23 Feb 2015 14:20:23 +0000 (01:20 +1100)]
glsyncmeta: also supported with gles3
Alessandro Decina [Tue, 24 Feb 2015 03:23:49 +0000 (14:23 +1100)]
libgstgl: eagl: handle CALayer resize
Vasilis Liaskovitis [Mon, 23 Feb 2015 15:13:31 +0000 (16:13 +0100)]
glmemory: Fix transfer_pbo memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=744977
Julien Isorce [Sun, 22 Feb 2015 10:03:54 +0000 (10:03 +0000)]
gl/cocoa: reduce custom main loop latency
This fix a very slow rendering rate regression that only
happens when using gst-launch, i.e. in the case where
the main thread does not run any NSApp loop.
Git bisect reported it has been introduced by the commit
e10d2417e2fe7aa4733c076984339b0d61caa169:
"move to CGL and CAOpenGLLayer for rendering".
Then the commit
7d463576271e5a4cc1070780ba1a69c971e8be1d:
"gstglwindow_cocoa: fix slow render rate" attempted to fix
the slow rendering rate problem when using gst-launch.
At least for me it does not work. I tried several
combinations, for example to flush CA transactions in the
custom app loop, as mentioned in the doc, but the only solution
that fixes the slow rendering is by reducing the loop latency.
From what I tested, no need to put less than 60ms, even if the
framerate has an interval much lower (16.6ms for 60 fps).
Julien Isorce [Tue, 17 Feb 2015 23:50:51 +0000 (23:50 +0000)]
glmixer: fix some compiler warnings
i686-apple-darwin11-llvm-gcc-4.2
gstglmixer.h:43: error: redefinition of typedef ‘GstGLMixer’
gstglmixerpad.h:32: error: previous declaration of ‘GstGLMixer’ was here
gstglmixer.h:46: error: redefinition of typedef ‘GstGLMixerFrameData’
gstglmixerpad.h:33: error: previous declaration of ‘GstGLMixerFrameData’ was here
Tim-Philipp Müller [Sat, 21 Feb 2015 19:07:29 +0000 (19:07 +0000)]
docs: update
Tim-Philipp Müller [Sat, 21 Feb 2015 19:07:14 +0000 (19:07 +0000)]
docs: add opus elements to documentation
Luis de Bethencourt [Sat, 21 Feb 2015 18:52:00 +0000 (18:52 +0000)]
mxf-example: don't quit on Warning
Don't quit on Warning.
Print out a message when there is an Error or Warning.
Luis de Bethencourt [Sat, 21 Feb 2015 18:47:29 +0000 (18:47 +0000)]
mxf-example: always show gtk window
Show gtk window even when there are no tags, to always have visual feedback
about the pipeline running.
Luis de Bethencourt [Sat, 21 Feb 2015 17:35:03 +0000 (17:35 +0000)]
mxf-example: merge returns in g_value_to_string()
Luis de Bethencourt [Sat, 21 Feb 2015 17:25:51 +0000 (17:25 +0000)]
mxf-example: make bus_callback consistent
Simplify the bus_callback to make it consisten with other examples.
Luis de Bethencourt [Sat, 21 Feb 2015 17:18:02 +0000 (17:18 +0000)]
mxf-example: fix usage of argc and argv
Luis de Bethencourt [Sat, 21 Feb 2015 17:02:09 +0000 (17:02 +0000)]
camerabin examples: remove unneeded variable
ret is only used once, we don't need to store it in a variable for that.
Mathieu Duponchelle [Sat, 21 Feb 2015 13:42:05 +0000 (14:42 +0100)]
gstglmemory: Remove now unused transfer_upload function.
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.
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
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
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.
Olivier Crête [Thu, 19 Feb 2015 23:53:32 +0000 (18:53 -0500)]
aggregator: Remove untrue comment
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
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
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
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
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
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
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.
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.
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
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
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
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.
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
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
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
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
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.
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
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.
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.
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.
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
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
Thiago Santos [Tue, 17 Feb 2015 14:53:49 +0000 (11:53 -0300)]
hlsdemux: remove unused define
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.
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.
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
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.
Thiago Santos [Tue, 17 Feb 2015 13:04:27 +0000 (10:04 -0300)]
hlssink: remove unused attribute
the GFile attribute is never used
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
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.
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.
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.
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
Matthew Waters [Tue, 17 Feb 2015 05:39:56 +0000 (16:39 +1100)]
gl/cocoa: small refactor of layer/view creation into the window
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.
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
Tim-Philipp Müller [Fri, 13 Feb 2015 23:45:20 +0000 (23:45 +0000)]
aggregator: drop GAP events until we handle them properly
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
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
Tim-Philipp Müller [Fri, 13 Feb 2015 16:06:34 +0000 (16:06 +0000)]
audiomixer: 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()
Tim-Philipp Müller [Fri, 13 Feb 2015 15:53:19 +0000 (15:53 +0000)]
aggregator: use new 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).
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.
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
Arun Raghavan [Wed, 28 Jan 2015 06:42:26 +0000 (12:12 +0530)]
opensles: Make debug category naming a bit more consistent
Alessandro Decina [Fri, 13 Feb 2015 08:12:20 +0000 (19:12 +1100)]
applemedia: avfvideosrc: fix crash when non-GL memory is used
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
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
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
Edward Hervey [Thu, 12 Feb 2015 16:33:50 +0000 (17:33 +0100)]
glimagesink: Fix debug statement
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
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 :)
Edward Hervey [Thu, 12 Feb 2015 13:56:12 +0000 (14:56 +0100)]
glimagesink: Sprinkle more debug
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
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.
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
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
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
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
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
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
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.
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.
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.
Sebastian Dröge [Tue, 10 Feb 2015 13:53:55 +0000 (14:53 +0100)]
decklinkvideosink: Actually include the change mentioned in the last commit
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.
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.
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.
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
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)
^
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
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
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.
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.
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.
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.