platform/upstream/gstreamer.git
8 years agoshmsink: fix possible deadlock in _render()/ _allocator_free()
Matt Crane [Fri, 15 Jan 2016 15:49:12 +0000 (10:49 -0500)]
shmsink: fix possible deadlock in _render()/ _allocator_free()

Drop object lock before unrefing memory, otherwise the object
lock might be taken again from the allocator and then things
deadlock.

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

8 years agoglfilter: First make caps writable in fixate_caps(), then truncate them
Sebastian Dröge [Sat, 16 Jan 2016 15:14:54 +0000 (17:14 +0200)]
glfilter: First make caps writable in fixate_caps(), then truncate them

Truncating requires writable caps.

8 years agoglcolorconvert: Caps passed to fixate_caps() are not owned by us and guaranteed to...
Sebastian Dröge [Sat, 16 Jan 2016 15:12:29 +0000 (17:12 +0200)]
glcolorconvert: Caps passed to fixate_caps() are not owned by us and guaranteed to be fixed

So don't try to fixate them, which takes ownership and steals them from
basetransform.

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

8 years agoRevert "glpool: fix caps refcount issue"
Sebastian Dröge [Sat, 16 Jan 2016 14:55:42 +0000 (16:55 +0200)]
Revert "glpool: fix caps refcount issue"

This reverts commit 3bdcdedfa00b87f1db505218789178318a16c743.

gst_caps_replace() takes a new reference already, if there is a problem then
it is elsewhere. And there are a few problems, see
https://bugzilla.gnome.org/show_bug.cgi?id=760696

8 years agortph265depay: fix unneeded sub-buffer creation
Luis de Bethencourt [Fri, 15 Jan 2016 16:10:02 +0000 (16:10 +0000)]
rtph265depay: fix unneeded sub-buffer creation

We create a sub-buffer just to copy over its metas and then throw it
away immediately, just use the original input buffer directly.

8 years agortph265pay: add "send VPS/SPS/PPS with every key frame" mode
Luis de Bethencourt [Fri, 15 Jan 2016 15:56:59 +0000 (15:56 +0000)]
rtph265pay: add "send VPS/SPS/PPS with every key frame" mode

It's not enough to have timeout or event based VPS/SPS/PPS information
sent in RTP packets. There are some scenarios when key frames may appear
more frequently than once a second, in which case the minimum timeout
for "config-interval" of 1 second for sending VPS/SPS/PPS isn't enough.
It might also be desirable in general to make sure the VPS/SPS/PPS is
available with every keyframe (packet loss aside), so receivers can
actually pick up decoding immediately from the first keyframe if
VPS/SPS/PPS is not signaled out of band.

This commit adds the possibility to send VPS/SPS/PPS with every key frame.
This mode can be enabled by setting "config-interval" property to -1. In
this case the payloader will add VPS, SPS and PPS before every key (IDR)
frame.

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

8 years agortph265pay: change config-interval property type from uint to int
Luis de Bethencourt [Fri, 15 Jan 2016 15:19:41 +0000 (15:19 +0000)]
rtph265pay: change config-interval property type from uint to int

This way we can use -1 as special value, which is nicer than MAXUINT.

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

8 years agoadaptivedemux: replace ghostpad with a standard pad
Thiago Santos [Wed, 13 Jan 2016 12:51:20 +0000 (09:51 -0300)]
adaptivedemux: replace ghostpad with a standard pad

Handling the ghostpad and its internal pad was causing more issues
than helping because of their coupled activation/deactivation
actions.

As we have to install custom chain,event and query functions it is
better to use a floating sink pad internally in the demuxer and just
use those pad functions to push through a standard pad in the demuxer

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

8 years agoadaptivedemux: do not flush the input pad
Florin Apostol [Wed, 11 Nov 2015 17:24:33 +0000 (17:24 +0000)]
adaptivedemux: do not flush the input pad

gst_adaptive_demux_stream_clear_eos_and_flush_state() function will do
all the necessary cleaning.

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

8 years agovideosegmentclip: fail to set_caps if problem in caps structure
Luis de Bethencourt [Fri, 15 Jan 2016 11:44:52 +0000 (11:44 +0000)]
videosegmentclip: fail to set_caps if problem in caps structure

gst_video_segment_clip_set_caps () should return FALSE if there was a
problem reading the framerate values from the caps structure.

8 years agoglquery: provide compat definition for GL_QUERY_RESULT
Matthew Waters [Fri, 15 Jan 2016 06:00:55 +0000 (17:00 +1100)]
glquery: provide compat definition for GL_QUERY_RESULT

e.g. android doesn't have it

While we're here move a state specific assertion after the supported check.
Removes an assertion on GLES

8 years agogl: add compatibility definition of GLint64
Matthew Waters [Fri, 15 Jan 2016 05:07:27 +0000 (16:07 +1100)]
gl: add compatibility definition of GLint64

e.g. anrdoid doesn't have it

8 years agoqml: Mark material dirty when texture buffer is updated
Sergey Borovkov [Fri, 8 Jan 2016 19:19:06 +0000 (22:19 +0300)]
qml: Mark material dirty when texture buffer is updated

Qt might not redraw the scene otherwise.

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

8 years agoglpool: fix caps refcount issue
Matthew Waters [Fri, 15 Jan 2016 03:00:56 +0000 (14:00 +1100)]
glpool: fix caps refcount issue

The caps are from an allocation query which are transfer none but were being
treated as transfer full.

8 years agoglmemory: log the time for glTexSubImage/glReadPixels
Matthew Waters [Mon, 11 Jan 2016 02:30:05 +0000 (13:30 +1100)]
glmemory: log the time for glTexSubImage/glReadPixels

8 years agogl: add a gstglquery object for arbitrary GL queries
Matthew Waters [Fri, 8 Jan 2016 07:36:54 +0000 (18:36 +1100)]
gl: add a gstglquery object for arbitrary GL queries

Currently only GL_TIME_ELAPSED and GL_TIMESTAMP are supported

8 years agogldebug: implement a delayed debug system
Matthew Waters [Mon, 11 Jan 2016 06:22:26 +0000 (17:22 +1100)]
gldebug: implement a delayed debug system

The messages are stored by gst_gl_async_debug_store_log_msg() and output later
by a corresponding store(), output() or an unset()/free().

Some wrapper macros are provided to avoid callers explicitly using __FILE__,
GST_FUNCTION and __LINE__

8 years agogldebug: use gst_info_vasprintf in insert_debug_marker()
Matthew Waters [Mon, 11 Jan 2016 06:26:08 +0000 (17:26 +1100)]
gldebug: use gst_info_vasprintf in insert_debug_marker()

Allows expansion of GST_PTR_FORMAT and GST_SEGMENT_FORMAT arguments.

8 years agogl: add a videoflip element
Matthew Waters [Fri, 15 Jan 2016 00:22:40 +0000 (11:22 +1100)]
gl: add a videoflip element

Behaves exactly the same as the non-GL videoflip element

8 years agoglfilter: recreate the fbo on caps changes
Matthew Waters [Thu, 14 Jan 2016 13:04:20 +0000 (00:04 +1100)]
glfilter: recreate the fbo on caps changes

The width/height may change which requires recreating the depth buffer.

8 years agoglbasefilter: add a class function on set_caps (from GL)
Matthew Waters [Thu, 14 Jan 2016 13:02:43 +0000 (00:02 +1100)]
glbasefilter: add a class function on set_caps (from GL)

This is simply a convenience to avoid duplicating the thread marshalling on
set_caps.

8 years agogltransformation: always build a valid mvp matrix
Matthew Waters [Thu, 14 Jan 2016 13:00:29 +0000 (00:00 +1100)]
gltransformation: always build a valid mvp matrix

The default case is to build an identity matrix.

8 years agogltransformation: support negative scales
Matthew Waters [Thu, 14 Jan 2016 08:03:04 +0000 (19:03 +1100)]
gltransformation: support negative scales

A scale of -1.0 means to flip the video.

8 years agogltransformation: implement passthrough handling
Matthew Waters [Thu, 14 Jan 2016 07:42:05 +0000 (18:42 +1100)]
gltransformation: implement passthrough handling

8 years agogltransformation: implement navigation events
Matthew Waters [Thu, 14 Jan 2016 06:45:03 +0000 (17:45 +1100)]
gltransformation: implement navigation events

Reverses the transformation applied through the properties and forwards the
event.

The process for finding the coordinates on the video are as follows:
1. Convert the given pointer_x and pointer_y to model space at the near and far planes
2. Get the equation of the video plane
3. Find where the ray in 1 intersects the plane
4. Profit!

8 years agoglimagesink: remove reduntant glimagesink from debug logging
Matthew Waters [Thu, 14 Jan 2016 05:59:12 +0000 (16:59 +1100)]
glimagesink: remove reduntant glimagesink from debug logging

8 years agogl/x11/navigation: add button press to the selected event mask
Matthew Waters [Thu, 14 Jan 2016 05:57:40 +0000 (16:57 +1100)]
gl/x11/navigation: add button press to the selected event mask

Otherwise we won't get the button press events and GstNavigation fails.

8 years agoglcolorconvert: try harder to passthrough
Alessandro Decina [Thu, 14 Jan 2016 05:00:00 +0000 (16:00 +1100)]
glcolorconvert: try harder to passthrough

This makes a pipeline like:

... ! video/x-raw(memory:GLMemory),format=UYVY ! glcolorconvert !
video/x-raw(memory:GLMemory),format={UYVY, NV12} ! ...

passthrough instead of converting UYVY => NV12. The conversion would happen
before this change since the element (and basetransform) transform the src caps
to format={NV12, UYVY} (since NV12 comes first in the glcolorconvert:src
template) and then the default caps fixate func would fixate to NV12. Blah.

Also there's no need to intersect against the template caps in ::transform_caps
since basetransform does that right after calling the vfunc.

8 years agogl: implement a colorbalance element
Matthew Waters [Tue, 12 Jan 2016 07:31:29 +0000 (18:31 +1100)]
gl: implement a colorbalance element

It performs the exact same operation as videobalance but with opengl shaders and
was tested with glvideomixer by comparing frames from videobalance and
glcolorbalance.

8 years agoglvideomixer: implement glBlendFunc and glBlendEquation
Matthew Waters [Tue, 12 Jan 2016 07:21:50 +0000 (18:21 +1100)]
glvideomixer: implement glBlendFunc and glBlendEquation

Allows more blending options than just A over B

e.g. frame comparisons are now possible.
  glvideomixer name=m
    sink_0::zorder=0
    sink_1::zorder=1
    sink_1::blend-equation-rgb={subtract,reverse-subtract}
    sink_1::blend-function-src-rgb=src-color
    sink_1::blend-function-dst-rgb=dst-color
  ! glimagesinkelement
  videotestsrc pattern=checkers-4 ! m.sink_0
  videotestsrc pattern=checkers-8 ! m.sink_1

8 years agogldebug: add a specific category for the debug spam from the driver
Matthew Waters [Fri, 8 Jan 2016 07:38:46 +0000 (18:38 +1100)]
gldebug: add a specific category for the debug spam from the driver

8 years agosbc: sbcdec: Fix frame length calculation
Tim Sheridan [Tue, 12 Jan 2016 14:54:23 +0000 (14:54 +0000)]
sbc: sbcdec: Fix frame length calculation

SBC frame length calculation wasn't being rounded up to the nearest byte
(as specified in the A2DP 1.0 specification, section 12.9). This could
cause 'stereo' and 'joint stereo' mode SBC streams to have incorrectly
calculated frame lengths.

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

8 years agonvenc: update for recent GL api changes
Matthew Waters [Tue, 12 Jan 2016 12:34:31 +0000 (23:34 +1100)]
nvenc: update for recent GL api changes

Specifically the GstGLMemoryPBO addition (which was the unadorned GstGLMemory).

8 years agoapplemedia: avfvideosrc: optionally get the GL context from gst_element_set_context
Alessandro Decina [Tue, 12 Jan 2016 03:36:02 +0000 (14:36 +1100)]
applemedia: avfvideosrc: optionally get the GL context from gst_element_set_context

Allow setting the GL context with gst_element_set_context. When available, the
local context obtained via the context query still has the precedence.

8 years agoapplemedia: iosurfacememory: remove NO_SHARE flag
Alessandro Decina [Tue, 12 Jan 2016 03:02:46 +0000 (14:02 +1100)]
applemedia: iosurfacememory: remove NO_SHARE flag

The full memory can be safely shared. Sharing a sub region can't be done and
will fail in the base allocator, triggering a copy.

8 years agofrei0rmixer: replace accept-caps with caps query
Thiago Santos [Mon, 11 Jan 2016 16:33:46 +0000 (13:33 -0300)]
frei0rmixer: replace accept-caps with caps query

It wants to check if upstream can produce a certain format,
accept-caps might only check if the next element can produce it.

8 years agoglbasememory: Free the actual memory object when requested
Matthew Waters [Thu, 7 Jan 2016 09:56:54 +0000 (20:56 +1100)]
glbasememory: Free the actual memory object when requested

Otherwise we are leaking ~400B on each GstMemory allocation.

Freeing in the base class matches the GObject semantics.

8 years agoglmemorypbo: don't double read pixels
Matthew Waters [Thu, 7 Jan 2016 09:54:41 +0000 (20:54 +1100)]
glmemorypbo: don't double read pixels

The optimistic download_transfer was not setting the required flag to not
perform glReadPixels on subsequent map (READ). resulting in glReadPixels
happening twice.

8 years agoglmemory: expose gst_gl_memory_texsubimage
Matthew Waters [Thu, 7 Jan 2016 07:47:37 +0000 (18:47 +1100)]
glmemory: expose gst_gl_memory_texsubimage

Removes extremely similar code from glmemorypbo.

8 years agoglfeature add a specific debug category
Matthew Waters [Thu, 7 Jan 2016 07:05:23 +0000 (18:05 +1100)]
glfeature add a specific debug category

Saves having to trawl through the 'default' category when function retrieval
goes wrong.

8 years agompegtsmux: fix reserve bits so they are 1's
Bob Holcomb [Tue, 5 Jan 2016 19:35:11 +0000 (14:35 -0500)]
mpegtsmux: fix reserve bits so they are 1's

The MPEG standard (ISO-13880-1) says the reserve bits need to be set
to one (2.1.64). This is causing transport streams to fail validation
on some systems.

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

8 years agoopencv: remove check for OpenCV version
Luis de Bethencourt [Fri, 8 Jan 2016 17:11:09 +0000 (17:11 +0000)]
opencv: remove check for OpenCV version

After commit 64080e632, configure checks for all the header files that
should be available in OpenCV 2.3 and later. If any of these files isn't
there the OpenCV elements won't be part of the build.

No need to recheck for opencv2/legacy/legacy.hpp again in
gstpyramidsegment.h. Minimum supported OpenCV version must have this header
and configure already checks for it. Removing check.

8 years agoopencv: always do cvsmooth in place
Luis de Bethencourt [Fri, 8 Jan 2016 15:01:47 +0000 (15:01 +0000)]
opencv: always do cvsmooth in place

After the update to new OpenCV API the transform function using an out
buffer is not necessary. We can always do the transformation in place.

8 years agoopencv: do pyramidsegment's transformation in place
Luis de Bethencourt [Fri, 8 Jan 2016 12:39:29 +0000 (12:39 +0000)]
opencv: do pyramidsegment's transformation in place

Run the transform function of pyramidsegment in place, reusing the image
data as both source and destination in cvPyrSegmentation. This avoids
copying the image back and forth and the extra memory.

8 years agotests: hlsdemux: add test for updating segment stop
Thiago Santos [Thu, 7 Jan 2016 18:21:40 +0000 (15:21 -0300)]
tests: hlsdemux: add test for updating segment stop

Add a test for seeking that only updates stop position and verifies
that start is unmodified

8 years agoadaptivedemux: fix seeking that just updates stop position
Thiago Santos [Thu, 7 Jan 2016 18:21:22 +0000 (15:21 -0300)]
adaptivedemux: fix seeking that just updates stop position

Fixed adaptivedemux seeking without flushing that just wants
to update stop position. This required protecting the segment
variables with a new mutex so that the seeking thread and the
download threads could safely manipulate the segment and
events related to it.

This contention is only locked/unlocked when starting a new
download, when the first fragment of a segment is received and
when seeking so, hopefully, it won't damage performance.

8 years agoadaptivedemux: fix segment update on seeks
Thiago Santos [Wed, 6 Jan 2016 19:51:08 +0000 (16:51 -0300)]
adaptivedemux: fix segment update on seeks

Fixes typo on reverse rate check and also only update the
position when the start/stop was actually changed.

8 years agomxftypes: Don't store pointers in stack allocated guints
Sebastian Dröge [Thu, 7 Jan 2016 16:10:49 +0000 (18:10 +0200)]
mxftypes: Don't store pointers in stack allocated guints

This works usually in this place, unless the compiler optimizes things in
interesting ways in which case it causes stack corruption and crashes later.

The compiler in question here is clang with -O1, which seems to pack the stack
a bit more and causes writing to the guint as pointer to overwrite map.memory,
which then later crashes during unmapping of the memory.

8 years agomxfmetadata: Initialize boolean to FALSE to fix valgrind warning
Sebastian Dröge [Thu, 7 Jan 2016 16:02:33 +0000 (18:02 +0200)]
mxfmetadata: Initialize boolean to FALSE to fix valgrind warning

Seems to be a false warning though.

8 years agoglsyncmeta: only flush with a shared context
Matthew Waters [Thu, 7 Jan 2016 03:08:39 +0000 (14:08 +1100)]
glsyncmeta: only flush with a shared context

The wait code will flush for us for single context pipelines.

8 years agoglcontext: implement checking whether a context has been shared
Matthew Waters [Thu, 7 Jan 2016 03:02:52 +0000 (14:02 +1100)]
glcontext: implement checking whether a context has been shared

Some operations are unnecessary when running with only a single GL
context.
e.g. glFlush when setting a fence object as the flush happens on wait.

API: gst_gl_context_is_shared

8 years agohlsdemux: put boolean values into gboolean variables
Tim-Philipp Müller [Wed, 6 Jan 2016 14:54:30 +0000 (14:54 +0000)]
hlsdemux: put boolean values into gboolean variables

And remove superfluous assignments.

8 years agoplayer: Only set the pipeline to PLAYING in play() if buffering>=100%
Sebastian Dröge [Wed, 6 Jan 2016 14:54:49 +0000 (16:54 +0200)]
player: Only set the pipeline to PLAYING in play() if buffering>=100%

Otherwise the application can break the buffering logic by setting the
pipeline to PLAYING before we buffered enough.

8 years agotests: dashdemux: add tests for post-seek segment boundaries check
Thiago Santos [Tue, 5 Jan 2016 20:41:23 +0000 (17:41 -0300)]
tests: dashdemux: add tests for post-seek segment boundaries check

Checks if the post seek segment is what is expected.

Also makes it easy to add more tests with different seeking flags using the
same functions.

8 years agotests: hlsdemux: add tests for seek with reverse rate and snap flags
Thiago Santos [Tue, 5 Jan 2016 13:41:27 +0000 (10:41 -0300)]
tests: hlsdemux: add tests for seek with reverse rate and snap flags

Add tests to ensure snap flags work as expected for reverse
rates

8 years agoadaptivedemux: stop reverse playback when we reach the limit
Thiago Santos [Tue, 5 Jan 2016 13:39:11 +0000 (10:39 -0300)]
adaptivedemux: stop reverse playback when we reach the limit

Avoids downloading and pushing a full segment just to get 1 nanosecond
of data. This happens frequently when seeking is done with flags
that adjust to boundaries or when the start is aligned with segment
starts. The later is common when segment durations is a multiple of
a second.

8 years agohlsdemux: fix reverse playback seek with snap flags
Thiago Santos [Tue, 5 Jan 2016 12:16:45 +0000 (09:16 -0300)]
hlsdemux: fix reverse playback seek with snap flags

Properly handle snap flags during reverse seeking. In this case
the before/after are also reversed, so handle those as such.

For example: with a sequence of 1s fragments:

|-- 0 --|-- 1 --|-- 2 --|-- 3 --|

If you seek to 1.5s it is inside fragment 1. With reverse and

snap-before: should play from the end of fragment 1
snap-after: should play from the end of fragment 0

8 years agoadaptivedemux: correctly track segment.position in reverse playback
Thiago Santos [Tue, 5 Jan 2016 12:01:10 +0000 (09:01 -0300)]
adaptivedemux: correctly track segment.position in reverse playback

For reverse, set position to segment.stop when starting and also
don't set the position to fragment end timestamp when it finishes,
just leave it at the fragment start.

8 years agohlsdemux: simplify snap flags checking
Thiago Santos [Tue, 5 Jan 2016 11:59:26 +0000 (08:59 -0300)]
hlsdemux: simplify snap flags checking

Replace:
if (boolean) var = true;

with:
var = (boolean);

8 years agohlsdemux: respect keyunit flag for position
Thiago Santos [Mon, 28 Dec 2015 05:18:06 +0000 (02:18 -0300)]
hlsdemux: respect keyunit flag for position

Set the segment start position when keyunit flag is active

8 years agotests: hls_demux: add tests for seeking segment
Thiago Santos [Thu, 24 Dec 2015 21:49:39 +0000 (18:49 -0300)]
tests: hls_demux: add tests for seeking segment

Tests that check that the segment sent after a seek is correct.

Allows testing that multiple seeking flags work as expected

8 years agotests: adaptive_demux: add function to be able to check demuxer events
Thiago Santos [Thu, 24 Dec 2015 12:27:33 +0000 (09:27 -0300)]
tests: adaptive_demux: add function to be able to check demuxer events

Allows writing tests that verify that events are correct.

Useful to monitor and check segments after seeks, for example.

8 years agotests: adaptive: update to allow more flexible seeking tests
Thiago Santos [Wed, 23 Dec 2015 18:25:29 +0000 (15:25 -0300)]
tests: adaptive: update to allow more flexible seeking tests

Allows defining a seek event to be able to change seeking parameters
and create more seeking test scenarios

8 years agotests: hlsdemux: fix makefile variable typo
Thiago Santos [Wed, 23 Dec 2015 18:23:27 +0000 (15:23 -0300)]
tests: hlsdemux: fix makefile variable typo

8 years agoapplemedia: avfvideosrc: enable renegotiation
Alessandro Decina [Wed, 6 Jan 2016 05:50:00 +0000 (16:50 +1100)]
applemedia: avfvideosrc: enable renegotiation

We can actually renegotiate now, so remove old check which disabled it.

8 years agoglcolorconvert: implement usage of a buffer pool
Matthew Waters [Wed, 6 Jan 2016 05:25:38 +0000 (16:25 +1100)]
glcolorconvert: implement usage of a buffer pool

Saves unnecessary glGenTextures and glDeleteTextures which may have a
non-trivial cost.

8 years agoglbasememory: fix copying GstGLAllocationParams
Matthew Waters [Wed, 6 Jan 2016 04:50:07 +0000 (15:50 +1100)]
glbasememory: fix copying GstGLAllocationParams

Fixes a GST_IS_GL_CONTEXT critical

8 years agoglmemorypbo: remove unused code
Matthew Waters [Wed, 6 Jan 2016 04:44:52 +0000 (15:44 +1100)]
glmemorypbo: remove unused code

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

8 years agoapplemedia: avfvideosrc: small negotiation fix
Alessandro Decina [Wed, 6 Jan 2016 02:20:17 +0000 (13:20 +1100)]
applemedia: avfvideosrc: small negotiation fix

Fix negotiation when GLMemory is requested but a context is not available

8 years agoapplemedia: vtenc: accept UYVY on Mac
Alessandro Decina [Wed, 6 Jan 2016 00:40:38 +0000 (11:40 +1100)]
applemedia: vtenc: accept UYVY on Mac

When doing GLMemory avfvideosrc negotiates UYVY. This change allows avfvideosrc
! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...
to do GLMemory and 0-copy with the encoder (with the CV meta).

8 years agoapplemedia: avfvideosrc: change texture format from BGRA to NV12 on iOS
Alessandro Decina [Wed, 6 Jan 2016 00:29:15 +0000 (11:29 +1100)]
applemedia: avfvideosrc: change texture format from BGRA to NV12 on iOS

Change texture format from BGRA to NV12. This allows a pipeline like avfvideosrc
! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...  to
negotiate GLMemory. This makes the glimagesink branch much faster (obviously)
and triggers the 0-copy path between avfvideosrc and vtenc (using the CV meta).
Combined this results in a huge perf improvement on iOS (25-30% of CPU time in a
pipeline like the one above).

Note that this doesn't introduce a new shader conversion in the sink, since BGRA
textures had to be copied/converted from format=BGRA,texture-target=RECTANGLE to
format=RGBA,texture-target=2D anyway.

8 years agoglupload: always add texture-target field to GL caps
Matthew Waters [Mon, 4 Jan 2016 09:26:09 +0000 (20:26 +1100)]
glupload: always add texture-target field to GL caps

1. Various elements/base classes only perform a subset check on accept-caps
2. Some GL elements have texture-target in their pad template
3. When checking subsets, only the caps to check are allowed to contain extra
   fields.  If the 'template' caps have extra fields, the subset fails.
Thus without texture-target on the caps, various accept-caps implementations
were failing.

Also, add some convenience functions for setting and retrieving
texture targets to/from GValue.

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

8 years agoglupload: passthrough composition caps features
Matthew Waters [Tue, 29 Dec 2015 07:16:04 +0000 (18:16 +1100)]
glupload: passthrough composition caps features

Don't unconditionally add it to any and all caps transformations.

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

8 years agoplayer: Remove gst_player_new() and make gst_player_new_full() the normal constructor
Sebastian Dröge [Mon, 4 Jan 2016 07:52:47 +0000 (09:52 +0200)]
player: Remove gst_player_new() and make gst_player_new_full() the normal constructor

In very few cases the simple version was actually needed and having the
parameters hidden by a _full() version caused application that actually needed
it to not use it.

8 years agoglviewconvert: Fix stereoscopic handling w/ texture-target
Jan Schmidt [Sun, 3 Jan 2016 14:03:08 +0000 (01:03 +1100)]
glviewconvert: Fix stereoscopic handling w/ texture-target

The addition of texture-target negotiation broke stereoscopic
handling when not in passthrough mode, so fix that.

8 years agosdpdemux: replace duplicated codes to call new base sdp apis
Hyunjun Ko [Wed, 7 Oct 2015 09:53:43 +0000 (18:53 +0900)]
sdpdemux: replace duplicated codes to call new base sdp apis

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

8 years agortmp: refer to both elements in the README
Reynaldo H. Verdejo Pinochet [Thu, 31 Dec 2015 02:00:47 +0000 (18:00 -0800)]
rtmp: refer to both elements in the README

8 years agortmpsrc: check for failed RTMP context alloc
Reynaldo H. Verdejo Pinochet [Tue, 29 Dec 2015 22:35:14 +0000 (14:35 -0800)]
rtmpsrc: check for failed RTMP context alloc

Avoids an unlikely crash.

Arguably, if allocation fails we have no chance of
recovering but nonetheless, RTMP_Alloc can fail and
librtmp's RTMP_init() (called next) assumes a non-NULL
pointer is passed without checking.

Additionally, unify exit path on error.

8 years agortmpsink: check for failed RTMP context alloc
Reynaldo H. Verdejo Pinochet [Tue, 29 Dec 2015 22:16:58 +0000 (14:16 -0800)]
rtmpsink: check for failed RTMP context alloc

Avoids an unlikely crash.

Arguably, if allocation fails we have no chance of
recovering but nonetheless, RTMP_Alloc can fail and
librtmp's RTMP_init() (called next) assumes a non-NULL
pointer is passed without checking.

Additionally, unify exit path on error.

8 years agortmp: correct librtmp log-level mappings
Reynaldo H. Verdejo Pinochet [Tue, 29 Dec 2015 19:58:31 +0000 (11:58 -0800)]
rtmp: correct librtmp log-level mappings

Additionally, move to a switch in _set_debug_level()
to make easier to follow and compare with the
mappings in _log_callback()

8 years agocodecparsers: vp9: minor clean-up
Tim-Philipp Müller [Wed, 30 Dec 2015 13:16:40 +0000 (13:16 +0000)]
codecparsers: vp9: minor clean-up

Remove setting of parser variable to NULL after free,
that makes no sense (and coverity is no doubt going
to complain about it).

8 years agocodecparsers: vp9: fix macro namespacing and rename GstVp9InterpFilter
Tim-Philipp Müller [Wed, 30 Dec 2015 13:12:13 +0000 (13:12 +0000)]
codecparsers: vp9: fix macro namespacing and rename GstVp9InterpFilter

8 years agocodecparsers: vp9: fix doc typos and sprinkle some Since markers
Tim-Philipp Müller [Wed, 30 Dec 2015 13:08:30 +0000 (13:08 +0000)]
codecparsers: vp9: fix doc typos and sprinkle some Since markers

8 years agocodecparsers: vp9: move license blurb into header and remove aux files
Tim-Philipp Müller [Wed, 30 Dec 2015 11:03:04 +0000 (11:03 +0000)]
codecparsers: vp9: move license blurb into header and remove aux files

This is just a bunch of lookup tables..

8 years agowin32: Update libgstcodecparsers.def with the new symbols
Sebastian Dröge [Wed, 30 Dec 2015 09:54:25 +0000 (11:54 +0200)]
win32: Update libgstcodecparsers.def with the new symbols

8 years agocodecparsers: Add another G_GNUC_INTERNAL
Sebastian Dröge [Wed, 30 Dec 2015 09:54:14 +0000 (11:54 +0200)]
codecparsers: Add another G_GNUC_INTERNAL

8 years agocodecparsers: Spread some G_GNUC_INTERNAL in various places
Sebastian Dröge [Wed, 30 Dec 2015 09:40:59 +0000 (11:40 +0200)]
codecparsers: Spread some G_GNUC_INTERNAL in various places

8 years agovp9parser: Fix indentation to make gst-indent happier
Sebastian Dröge [Wed, 30 Dec 2015 09:38:14 +0000 (11:38 +0200)]
vp9parser: Fix indentation to make gst-indent happier

8 years agovp9parser: Rename symbols to prevent symbol conflicts
Sebastian Dröge [Wed, 30 Dec 2015 09:36:45 +0000 (11:36 +0200)]
vp9parser: Rename symbols to prevent symbol conflicts

Also make clamp() a static function for the same reason and use CLAMP (as
defined by GLib) in the GStreamer code.

8 years agocodecparsers: Add VP9 codec parser
Sreerenj Balachandran [Wed, 30 Dec 2015 09:19:33 +0000 (11:19 +0200)]
codecparsers: Add VP9 codec parser

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

8 years agoglmemorypbo: fix wrapping data on GL 2.1
Matthew Waters [Wed, 30 Dec 2015 01:12:17 +0000 (12:12 +1100)]
glmemorypbo: fix wrapping data on GL 2.1

GL 2.1 only supports pbo upload.

The wrapped data pointer was only being set on the pbo memory and on the
glmemory so when a download was requested (in GL 2.1), glmemory was
allocating a new data pointer and thus not returning the wrapped data.

8 years agoglmemorypbo: only create a pbo memory if the context actually supports it
Matthew Waters [Wed, 30 Dec 2015 01:11:09 +0000 (12:11 +1100)]
glmemorypbo: only create a pbo memory if the context actually supports it

e.g. GL <= 2.0 does not support pbo usage and GL 2.1 only supports pbo upload.

8 years agoglmemory: small code reformat
Matthew Waters [Wed, 30 Dec 2015 01:09:29 +0000 (12:09 +1100)]
glmemory: small code reformat

makes the alloc_params selections fit on a single line.

8 years agotests/glmemory: output data pointer values on failure
Matthew Waters [Wed, 30 Dec 2015 01:06:17 +0000 (12:06 +1100)]
tests/glmemory: output data pointer values on failure

Allows quicker inspection of what failed.

8 years agogleffects: fix shader compilation with legacy opengl
Matthew Waters [Tue, 29 Dec 2015 06:04:57 +0000 (17:04 +1100)]
gleffects: fix shader compilation with legacy opengl

All the gleffects shaders can be run against a gles2 or a legacy opengl glsl
compiler but weren't being advertised as such.

Fixes gleffects under desktop opengl < 3.2.

8 years agoglbasememory: Remove bogus NULL check
Sebastian Dröge [Tue, 29 Dec 2015 16:01:30 +0000 (18:01 +0200)]
glbasememory: Remove bogus NULL check

CID 1346534

8 years agoapplemedia: avfvideosrc: output at highest fps/resolution by default
Alessandro Decina [Mon, 28 Dec 2015 23:57:36 +0000 (10:57 +1100)]
applemedia: avfvideosrc: output at highest fps/resolution by default

Fixate to the highest possible resolution and fps. Otherwise by default we end
up fixating at 2fps and the lowest supported resolution, which is hardly what
someone who bought an overpriced smartphone wants.

8 years agogl: Add \0 terminators for the Apple sync extension
Sebastian Dröge [Mon, 28 Dec 2015 13:53:59 +0000 (15:53 +0200)]
gl: Add \0 terminators for the Apple sync extension

Otherwise GL initialization might check for extensions forever and never finishes.

8 years agoglcontext: Add some debug output when the GL thread is actually running
Sebastian Dröge [Mon, 28 Dec 2015 12:41:59 +0000 (14:41 +0200)]
glcontext: Add some debug output when the GL thread is actually running

8 years agodashdemux: removed unnecessary space trimming in gst_dash_demux_parse_http_head
Florin Apostol [Tue, 22 Dec 2015 11:23:19 +0000 (11:23 +0000)]
dashdemux: removed unnecessary space trimming in gst_dash_demux_parse_http_head

sscanf has removed all spaces when it has constructed zone string. There is
no need to search for leading spaces.

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