platform/upstream/gstreamer.git
8 years agoUse GstDataQueue instead of GAsyncQueue for storing buffers
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Use GstDataQueue instead of GAsyncQueue for storing buffers

8 years agoUse the buffer's free_func to map byteArray data without making a copy
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Use the buffer's free_func to map byteArray data without making a copy

8 years agoRemove open failure test code and debug log
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Remove open failure test code and debug log

8 years agoUse YV12 as the default format
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Use YV12 as the default format

8 years agoAdd a deinit function and remove jclass references in case of error
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Add a deinit function and remove jclass references in case of error

8 years agoSurfaceTexture constructure needs texture_id
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
SurfaceTexture constructure needs texture_id

8 years agoAdd ahcsrc Camera source element prototype
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Add ahcsrc Camera source element prototype

8 years agoAdd android.hardware.Camera (and deps) JNI wrappers
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Add android.hardware.Camera (and deps) JNI wrappers

8 years agoAdding Dalvik Virtual Machine routines and macros
Youness Alaoui [Wed, 17 Oct 2012 23:42:59 +0000 (19:42 -0400)]
Adding Dalvik Virtual Machine routines and macros

8 years agoandroidmedia: Add androidmedia plugin
Youness Alaoui [Wed, 17 Oct 2012 21:56:33 +0000 (17:56 -0400)]
androidmedia: Add androidmedia plugin

8 years agospandsp: Add tone generator
Sebastian Dröge [Fri, 15 Jan 2016 13:31:54 +0000 (14:31 +0100)]
spandsp: Add tone generator

8 years agompegtsmux: set non-0 payload length in PES header if video ES packet is small enough
Hyunjun Ko [Tue, 14 Jul 2015 04:40:46 +0000 (13:40 +0900)]
mpegtsmux: set non-0 payload length in PES header if video ES packet is small enough

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

8 years agompegtsmux: reset pes_bytes_written when starting to write new PES packet
Hyunjun Ko [Tue, 14 Jul 2015 04:42:54 +0000 (13:42 +0900)]
mpegtsmux: reset pes_bytes_written when starting to write new PES packet

In case of an unbounded packet (video usually), pes_bytes_written was
no reset.

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

8 years agompegtsmux: add support for H.265/HEVC video
Tim-Philipp Müller [Tue, 19 Jan 2016 17:08:50 +0000 (17:08 +0000)]
mpegtsmux: add support for H.265/HEVC video

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

8 years agogl: fix compiler warnings with gcc-6
Tim-Philipp Müller [Tue, 19 Jan 2016 13:20:23 +0000 (13:20 +0000)]
gl: fix compiler warnings with gcc-6

In file included from effects/gstgleffectrgbtocurve.c:25:0:
effects/gstgleffectscurves.h:174:32: error: 'xray_curve' defined but not used
 static const GstGLEffectsCurve xray_curve = {
...

8 years agolibs: g-i: fix init section to avoid compiler warnings
Tim-Philipp Müller [Tue, 19 Jan 2016 08:39:58 +0000 (08:39 +0000)]
libs: g-i: fix init section to avoid compiler warnings

..GstPlayer-1.0.c: In function ‘main’:
..GstPlayer-1.0.c:587:3: warning: implicit declaration of function ‘gst_init’

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

8 years agoapplemedia: vtenc: fix build on iOS
Alessandro Decina [Tue, 19 Jan 2016 08:18:43 +0000 (19:18 +1100)]
applemedia: vtenc: fix build on iOS

8 years agoapplemedia: always fill GstBuffers with GstMemory
Alessandro Decina [Tue, 19 Jan 2016 04:50:22 +0000 (15:50 +1100)]
applemedia: always fill GstBuffers with GstMemory

Always fill buffers with our custom memory. The custom memory will avoid
mapping CV/CM buffers unless necessary.

8 years agoapplemedia: implement copying of meta
Ilya Konstantinov [Sat, 18 Apr 2015 21:30:48 +0000 (00:30 +0300)]
applemedia: implement copying of meta

Before this, buffers would lose their Core Video / Core Media meta
over intervideo* boundary.

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

8 years agoapplemedia: implement GstAppleCoreVideoMemory
Ilya Konstantinov [Thu, 2 Apr 2015 17:04:18 +0000 (20:04 +0300)]
applemedia: implement GstAppleCoreVideoMemory

Implement a new memory type wrapping CVPixelBuffer.

There are two immediate advantages:
 a) Make the GstMemory itself retain the CVPixelBuffer. Previously,
    the containing GstBuffer was solely responsible for the lifetime of
    the backing CVPixelBuffer.

    With this change, we remove the GST_MEMORY_FLAG_NO_SHARE so that
    GstMemory objects be referenced by multiple GstBuffers (doing away
    with the need to copy.)

  b) Delay locking CVPixelBuffer into CPU memory until it's actually
     mapped -- possibly never.

The CVPixelBuffer object is shared among references, shares and
(in planar formats) planes, so a wrapper GstAppleCoreVideoPixelBuffer
structure was introduced to manage locking.

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

8 years agoapplemedia: iosurfacememory: alloc with g_new0
Alessandro Decina [Tue, 19 Jan 2016 01:56:40 +0000 (12:56 +1100)]
applemedia: iosurfacememory: alloc with g_new0

...since the base class doesn't use g_slice anymore

8 years agodashdemux: added check that availabilityStartTime is present for live streams
Florin Apostol [Fri, 8 Jan 2016 11:04:13 +0000 (11:04 +0000)]
dashdemux: added check that availabilityStartTime is present for live streams

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

8 years agoadaptivedemux: improved error message if availabilityStartTime is missing for a live...
Florin Apostol [Wed, 4 Nov 2015 18:15:24 +0000 (18:15 +0000)]
adaptivedemux: improved error message if availabilityStartTime is missing for a live stream

For a live mpd, if availabilityStartTime is missing, adaptive demux asserts
with: Unexpected critical/warning: gst_date_time_to_g_date_time: assertion
'datetime != NULL' failed.

This patch improves the error message to:
Unexpected critical/warning: gst_mpd_client_seek_to_time: assertion
'client->mpd_node->availabilityStartTime != NULL' failed

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

8 years agotests: adaptive-stremaing: fix memory leak in test_http_src
Florin Apostol [Thu, 14 Jan 2016 18:27:50 +0000 (18:27 +0000)]
tests: adaptive-stremaing: fix memory leak in test_http_src

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

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