platform/upstream/gstreamer.git
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.

9 years agotests: compositor: add unit test for proper segment.base handling
Tim-Philipp Müller [Thu, 5 Feb 2015 15:48:41 +0000 (15:48 +0000)]
tests: compositor: add unit test for proper segment.base handling

As adjusted by gst_pad_set_offset(), or when doing segment seeks
or looping for example.

9 years agotests: audiomixer: add unit test for proper segment.base handling
Tim-Philipp Müller [Thu, 5 Feb 2015 15:23:04 +0000 (15:23 +0000)]
tests: audiomixer: add unit test for proper segment.base handling

As adjusted by gst_pad_set_offset(), or when doing segment seeks
or looping for example. See previous audiomixer commit.

9 years agoaudiomixer: Remove weird and wrong segment handling
Sebastian Dröge [Thu, 5 Feb 2015 15:02:54 +0000 (16:02 +0100)]
audiomixer: Remove weird and wrong segment handling

There's no reason why audiomixer should override the segment
base of upstream with whatever value it got from a SEEK event,
or even worse... with 0 if there was no SEEK event yet. This
broke synchronization if upstream provided a segment base other
than 0, e.g. when using pad offsets.
Also that this code did things conditional on the element's state
should've been a big warning already that something is just wrong.
If this breaks anything else now, let's fix it properly :)

Also don't do fancy segment position trickery when receiving a
segment event. It's just not correct.

9 years agoopenslesringbuffer: Only pre-roll a single buffer
Sebastian Dröge [Thu, 5 Feb 2015 11:24:04 +0000 (12:24 +0100)]
openslesringbuffer: Only pre-roll a single buffer

There is no reason to pre-roll more buffers here as we have our own ringbuffer
with more segments around it, and we can immediately provide more buffers to
OpenSL ES when it requests that from the callback.

Pre-rolling a single buffer before starting is necessary though, as otherwise
we will only output silence.

Lowers latency a bit, depending on latency-time and buffer-time settings.

9 years agoopenslesringbuffer: Allocate at most 4 internal buffers
Sebastian Dröge [Thu, 5 Feb 2015 11:22:46 +0000 (12:22 +0100)]
openslesringbuffer: Allocate at most 4 internal buffers

4 is the "typical" number of buffers defined by Android's OpenSL ES
implementation, and its code is optimized for this. Also because we
have our own ringbuffer around this, we will always have enough
buffering on our side already.

Allows for more efficient processing.

9 years agoopenslessink/src: Lower default buffer time to 200ms like alsasink
Sebastian Dröge [Thu, 5 Feb 2015 11:21:55 +0000 (12:21 +0100)]
openslessink/src: Lower default buffer time to 200ms like alsasink

9 years agoglfilter: ensure that the input upload/colorconvert are always available
Matthew Waters [Thu, 5 Feb 2015 05:46:32 +0000 (16:46 +1100)]
glfilter: ensure that the input upload/colorconvert are always available

9 years agoglimagesink: log the converted caps
Matthew Waters [Thu, 5 Feb 2015 00:06:10 +0000 (11:06 +1100)]
glimagesink: log the converted caps

9 years agoglupload: restrict EGL and UploadMeta to RGBA
Matthew Waters [Thu, 5 Feb 2015 00:05:02 +0000 (11:05 +1100)]
glupload: restrict EGL and UploadMeta to RGBA

other formats are highly untested.

9 years agoglcolorconvert: don't intersect with the input caps
Matthew Waters [Thu, 5 Feb 2015 00:04:05 +0000 (11:04 +1100)]
glcolorconvert: don't intersect with the input caps

that limits our formats to whatever is in the input caps

9 years agogl: fix memory leak
Luis de Bethencourt [Wed, 4 Feb 2015 14:10:13 +0000 (14:10 +0000)]
gl: fix memory leak

In gst_gl_filter_fixate_caps () it can goto done without freeing the memory of
the tmp GstStructure. This makes it go out of scope and leak.

CID #1265765

9 years agomotioncells: initialize class variables
Luis de Bethencourt [Wed, 4 Feb 2015 11:52:26 +0000 (11:52 +0000)]
motioncells: initialize class variables

Some variables are not initialized in the constructor. It is highly unlikely
they are used before being set, but it is safer to initialize them.

CID #1197704

9 years agoksvideosrc: Fix missing brace warning
Nicolas Dufresne [Tue, 3 Feb 2015 23:13:25 +0000 (18:13 -0500)]
ksvideosrc: Fix missing brace warning

There is more but it's from ks.h GUID initializer, which is shipped
this way with mingw.

9 years agoksvideosrc: Fix buffer handling
Nicolas Dufresne [Tue, 3 Feb 2015 22:44:34 +0000 (17:44 -0500)]
ksvideosrc: Fix buffer handling

The pseudo buffer pool code was using gst_buffer_is_writable()
alone to try and figure-out if cached buffer could be reused.
It needs to check for memory writability too. Also check map
result and fix map flags.

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

9 years agompegtsmux: avoid leaking force keyunit event when going to NULL
Thiago Santos [Tue, 3 Feb 2015 20:05:06 +0000 (17:05 -0300)]
mpegtsmux: avoid leaking force keyunit event when going to NULL

Do not set to NULL before unreffing the event or it will leak

9 years agompegtsmux: parse force key unit events with the correct function
Anton Gritsay [Mon, 18 Mar 2013 08:15:00 +0000 (08:15 +0000)]
mpegtsmux: parse force key unit events with the correct function

Otherwise it won't be parsed and bogus values would be used.

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

9 years agotsdemux: remove update segment logic
Thiago Santos [Mon, 26 Jan 2015 23:42:25 +0000 (20:42 -0300)]
tsdemux: remove update segment logic

This is not needed in 1.x series anymore

9 years agotsdemux: don't mark streams as needing a new segment on flush
Aurélien Zanelli [Tue, 3 Feb 2015 13:59:16 +0000 (10:59 -0300)]
tsdemux: don't mark streams as needing a new segment on flush

The flush is called on discont and we shouldn't output a new segment
each time a discont happens. So this commit remove the mark for a new
segment when flushing streams by propagating the 'hard' flag passed
on the flusing from the base class.

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

9 years agocorevideotexturecache: Add some assertions instead of just dereferencing NULL
Sebastian Dröge [Tue, 3 Feb 2015 16:32:03 +0000 (17:32 +0100)]
corevideotexturecache: Add some assertions instead of just dereferencing NULL

9 years agocorevideotexturecache: Don't unconditionally use the CoreMedia meta on iOS
Sebastian Dröge [Tue, 3 Feb 2015 16:29:25 +0000 (17:29 +0100)]
corevideotexturecache: Don't unconditionally use the CoreMedia meta on iOS

We might instead have a CoreVideo meta.

9 years agoUndo accidental common module rewind
Tim-Philipp Müller [Tue, 3 Feb 2015 14:55:32 +0000 (14:55 +0000)]
Undo accidental common module rewind

in commit 7d463576

9 years agovtdec: Don't dereference NULL frames when draining/flushing
Sebastian Dröge [Tue, 3 Feb 2015 14:38:40 +0000 (15:38 +0100)]
vtdec: Don't dereference NULL frames when draining/flushing

9 years agogl: remove the egl caps from the src pads
Matthew Waters [Tue, 3 Feb 2015 04:30:08 +0000 (15:30 +1100)]
gl: remove the egl caps from the src pads

we don't actually support producing EGLImage buffers anywhere.

9 years agoglcolorconvert: put GstGLSyncMeta on output buffers
Matthew Waters [Tue, 3 Feb 2015 02:32:47 +0000 (13:32 +1100)]
glcolorconvert: put GstGLSyncMeta on output buffers

allows thread safely using the provided output buffer in a separate
thread

9 years agoglupload: only try the glmemory upload for sysmem/glmemory caps features
Matthew Waters [Mon, 2 Feb 2015 13:35:26 +0000 (00:35 +1100)]
glupload: only try the glmemory upload for sysmem/glmemory caps features

Allows selecting/testing the upload path with explicit caps features.

9 years agoglmemory: add missing initilisation of tex_target when copying
Matthew Waters [Mon, 2 Feb 2015 13:26:20 +0000 (00:26 +1100)]
glmemory: add missing initilisation of tex_target when copying

fixes:

glcolorscale ! video/x-raw\(meta:GstVideoGLTextureUploadMeta\) !
glimagesink

9 years agoglupload: allow NULL buffer for accept vfunc
Matthew Waters [Mon, 2 Feb 2015 13:15:30 +0000 (00:15 +1100)]
glupload: allow NULL buffer for accept vfunc

9 years agoglupload: remove unsed convert field in private struct
Matthew Waters [Mon, 2 Feb 2015 13:13:07 +0000 (00:13 +1100)]
glupload: remove unsed convert field in private struct

9 years agoglupload/download/convert: provide transform_caps functions
Matthew Waters [Mon, 2 Feb 2015 13:11:06 +0000 (00:11 +1100)]
glupload/download/convert: provide transform_caps functions

Allows finer grain decisions about formats and features at each
stage of the pipeline.
Also provide propose_allocation for glupload besed on the supported
methods.

9 years agogstglwindow_cocoa: fix slow render rate
Alessandro Decina [Tue, 3 Feb 2015 00:07:58 +0000 (11:07 +1100)]
gstglwindow_cocoa: fix slow render rate

In gst_gl_window_cocoa_draw we used to just call setNeedsDisplay:YES. That was
creating an implicit CA transaction which was getting committed at the next
runloop iteration. Since we don't know how often the main runloop is running,
and when we run it implicitly (from gst_gl_window_cocoa_nsapp_iteration) we only
do so every 200ms, use an explicit CA transaction instead and commit it
immediately. CA transactions nest and debounce automatically so this will never
result in extra work.

9 years agogstglcaopengllayer: use the correct rectangle type for iOS and OS X
Matthew Waters [Mon, 2 Feb 2015 12:40:16 +0000 (23:40 +1100)]
gstglcaopengllayer: use the correct rectangle type for iOS and OS X

9 years agoglcolorconvert: use the correct caps feature for supported caps
Matthew Waters [Mon, 2 Feb 2015 10:07:48 +0000 (21:07 +1100)]
glcolorconvert: use the correct caps feature for supported caps

glcolorconvert currently only supports converting between GLMemory
targets.

9 years agoglsyncmeta: don't use the gst debug object variants
Matthew Waters [Mon, 2 Feb 2015 09:51:31 +0000 (20:51 +1100)]
glsyncmeta: don't use the gst debug object variants

We are not a GObject or any inferable GstMiniObject supported by
the gst debug system.  Also fixes a segfault.

9 years agogl: update unit test for glmemory api change
Matthew Waters [Fri, 30 Jan 2015 07:51:17 +0000 (18:51 +1100)]
gl: update unit test for glmemory api change

9 years agoglimagesink: clobber the alpha channel by default
Matthew Waters [Fri, 30 Jan 2015 04:13:27 +0000 (15:13 +1100)]
glimagesink: clobber the alpha channel by default

this can be disabled with the ignore-alpha property

9 years agoRevert "libgstgl: gstglcaopengllayer: set the layer as opaque"
Alessandro Decina [Fri, 30 Jan 2015 01:32:17 +0000 (12:32 +1100)]
Revert "libgstgl: gstglcaopengllayer: set the layer as opaque"

This reverts commit 6f152d381ca21595cdc823f32341c8f2fe71b9c7.

The layer shouldn't be always opaque, it should be made a property.

9 years agolibgstgl: gstglcaopengllayer: set the layer as opaque
Alessandro Decina [Fri, 30 Jan 2015 01:22:25 +0000 (12:22 +1100)]
libgstgl: gstglcaopengllayer: set the layer as opaque

9 years agoglcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular...
Sebastian Dröge [Thu, 29 Jan 2015 15:30:34 +0000 (16:30 +0100)]
glcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular textures

9 years agoglcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL
Sebastian Dröge [Thu, 29 Jan 2015 15:26:26 +0000 (16:26 +0100)]
glcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL

It's not defined for GLES.

9 years agoapplemedia: rework GL texture sharing
Alessandro Decina [Thu, 29 Jan 2015 13:28:18 +0000 (00:28 +1100)]
applemedia: rework GL texture sharing

Use YUV instead of RGB textures, then convert using the new apple specific
shader in GstGLColorConvert. Also use GLMemory directly instead of using the
GL upload meta, avoiding an extra texture copy we used to have before.

9 years agoapplemedia: vtdec: fix CMBlockBufferRef leak
Alessandro Decina [Tue, 27 Jan 2015 13:53:59 +0000 (00:53 +1100)]
applemedia: vtdec: fix CMBlockBufferRef leak

Fix huge leak that went unnoticed for too long. Oops.

9 years agolibgstgl: run a custom shader to convert YUV to RGB on mac and ios
Alessandro Decina [Tue, 27 Jan 2015 13:48:27 +0000 (00:48 +1100)]
libgstgl: run a custom shader to convert YUV to RGB on mac and ios

When GL_APPLE_ycbcr_422 is available, run a custom shader to convert
GL_TEXTURE_RECTANGLE textures from YUV to RGB.

See https://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt

9 years agoapplemedia: don't call CVPixelBufferLockBaseAddress when doing texture sharing
Alessandro Decina [Tue, 27 Jan 2015 13:43:09 +0000 (00:43 +1100)]
applemedia: don't call CVPixelBufferLockBaseAddress when doing texture sharing

When doing texture sharing we don't need to call CVPixelBufferLockBaseAddress to
map the buffer in CPU. This cuts about 10% relative cpu time from a vtdec !
glimagesink pipeline.

9 years agogl: initial support for texture targets other than GL_TEXTURE_2D
Alessandro Decina [Tue, 27 Jan 2015 13:13:46 +0000 (00:13 +1100)]
gl: initial support for texture targets other than GL_TEXTURE_2D

Make GstGLMemory hold the texture target (tex_target) the texture it represents
(tex_id) is bound to. Modify gst_gl_memory_wrapped_texture and
gst_gl_download_perform_with_data to take the texture target as an argument.

This change is needed to support wrapping textures created outside libgstgl,
which might be bound to a target other than GL_TEXTURE_2D. For example on OSX
textures coming from VideoToolbox have target GL_TEXTURE_RECTANGLE.

With this change we still keep (and sometimes imply) GL_TEXTURE_2D as the
target of textures created with libgstgl.

API: modify GstGLMemory
API: modify gst_gl_memory_wrapped_texture
API: gst_gl_download_perform_with_data

9 years agogstglcolorconvert: micro optimization
Alessandro Decina [Thu, 22 Jan 2015 02:18:23 +0000 (13:18 +1100)]
gstglcolorconvert: micro optimization

Don't call glClear && glClearColor at each draw since we're going to draw the
whole viewport anyway. Gets rid of a glFlush triggered by glClear on OSX.

9 years agoapplemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional
Alessandro Decina [Thu, 22 Jan 2015 02:17:11 +0000 (13:17 +1100)]
applemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional

Mapping is not necessary and impacts performance when doing texture sharing with
downstream