platform/upstream/gst-plugins-bad.git
9 years agoaggregator: Add property to select how to decide on a start time
Sebastian Dröge [Mon, 15 Jun 2015 16:30:20 +0000 (18:30 +0200)]
aggregator: Add property to select how to decide on a start time

Before aggregator based elements always started at running time 0,
now it's possible to select the first input buffer running time or
explicitly set a start-time value.

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

9 years agosdpdemux: Strip keys from the fmtp that we use internally in our caps
Sebastian Dröge [Wed, 29 Jul 2015 10:25:24 +0000 (11:25 +0100)]
sdpdemux: Strip keys from the fmtp that we use internally in our caps

Skip keys from the fmtp, which we already use ourselves for the
caps. Some software is adding random things like clock-rate into
the fmtp, and we would otherwise here set a string-typed clock-rate
in the caps... and thus fail to create valid RTP caps

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

9 years agoh264parse: Add more NAL types for debugging output.
Jan Schmidt [Wed, 29 Jul 2015 12:59:56 +0000 (22:59 +1000)]
h264parse: Add more NAL types for debugging output.

Register more NAL unit types so that they are dumped
by name in the debug output instead of being labelled
'Invalid'

9 years agompegtsmux: Don't clear the PID on reset.
Jan Schmidt [Wed, 29 Jul 2015 12:57:44 +0000 (22:57 +1000)]
mpegtsmux: Don't clear the PID on reset.

The PID on a pad shouldn't change on a state change, only
if the pad is freed and a new one created. Clearing the PID
prevented mpegtsmux from being reused, because all packets
would end up muxed in PID 0

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

9 years agompegtsmux: Accumulate streamheaders in reverse
Jan Schmidt [Wed, 29 Jul 2015 12:56:28 +0000 (22:56 +1000)]
mpegtsmux: Accumulate streamheaders in reverse

Accumulate streamheader packets in reverse into the
GList for efficiency, and reverse the list once when
processing.

Improves muxing speed when there are a lot of
streamheaders.

9 years agoamcvideoenc: Always set i-frame-interval setting
Sebastian Dröge [Wed, 29 Jul 2015 09:12:43 +0000 (10:12 +0100)]
amcvideoenc: Always set i-frame-interval setting

Most encoders fail to initialize if we don't set it at all.

9 years agoh263parse: fix caps memory leak
Vineeth TM [Wed, 29 Jul 2015 03:56:54 +0000 (12:56 +0900)]
h263parse: fix caps memory leak

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

9 years agoaggregator: Query the peer latency again on the next opportunity after a pad was...
Sebastian Dröge [Tue, 28 Jul 2015 18:15:43 +0000 (21:15 +0300)]
aggregator: Query the peer latency again on the next opportunity after a pad was added or removed

Adding a pad will add a new upstream that might have a bigger minimum latency,
so we might have to wait longer. Or it might be the first live upstream, in
which case we will have to start deadline based aggregation.

Removing a pad will remove a new upstream that might have had the biggest
latency, so we can now stop waiting a bit earlier. Or it might be the last
live upstream, in which case we can stop deadline based aggregation.

9 years agoglcolorconvert-test: Test notify function for setup_wrapped
Nicolas Dufresne [Tue, 28 Jul 2015 15:20:40 +0000 (11:20 -0400)]
glcolorconvert-test: Test notify function for setup_wrapped

gst_gl_memory_setup_wrapped() now takes a destroy notify function. This
destroy notify is called to track the memory life time, hence will
notify each time a memory get destroyed. This test check that the
callback count is correct.

9 years agoglcolorconvert-test: Fix build
Nicolas Dufresne [Tue, 28 Jul 2015 15:06:43 +0000 (11:06 -0400)]
glcolorconvert-test: Fix build

9 years agoglupload: Add fixme about using bufferpool for raw
Nicolas Dufresne [Tue, 28 Jul 2015 12:59:24 +0000 (08:59 -0400)]
glupload: Add fixme about using bufferpool for raw

http://bugzilla.gnome.org/show_bug.cgi?id=752937

9 years agoglupload: Keep input frame mapped as long as needed
Nicolas Dufresne [Mon, 27 Jul 2015 20:58:22 +0000 (16:58 -0400)]
glupload: Keep input frame mapped as long as needed

When performing a raw upload, we need to keep the raw data mapped as
long as needed.

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

9 years agoRevert "glupload: memcpy on raw data upload"
Nicolas Dufresne [Mon, 27 Jul 2015 19:58:10 +0000 (15:58 -0400)]
Revert "glupload: memcpy on raw data upload"

This reverts commit 82c0189b2842e8729e82a4e73491dffc977bc7c2.

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

9 years agodashdemux: gst_mpdparser_get_xml_prop_duration sets default value in case of parsing...
Florin Apostol [Wed, 15 Jul 2015 15:21:00 +0000 (16:21 +0100)]
dashdemux: gst_mpdparser_get_xml_prop_duration sets default value in case of parsing errors

The gst_mpdparser_get_xml_prop_duration function will set the
property_value to the default_value in case the parsing fails.

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

9 years agoopuscommon: Use GString instead of snprintf for concating
Nirbheek Chauhan [Mon, 27 Jul 2015 13:09:13 +0000 (18:39 +0530)]
opuscommon: Use GString instead of snprintf for concating

Safer, easier to understand, and more portable. Also, skip
all this if the log level is too low.

9 years agoglcontext/wgl: fix defenition of gst_gl_context_wgl_new
Matthew Waters [Mon, 27 Jul 2015 11:54:27 +0000 (21:54 +1000)]
glcontext/wgl: fix defenition of gst_gl_context_wgl_new

gstglcontext_wgl.c: In function 'gst_gl_context_wgl_new':
gstglcontext_wgl.c:83:40: error: 'display' undeclared (first use in this function)

9 years agogl/cocoa: fix definition of gst_gl_context_new
Matthew Waters [Mon, 27 Jul 2015 10:03:05 +0000 (20:03 +1000)]
gl/cocoa: fix definition of gst_gl_context_new

gstglcontext_cocoa.m:75:1: error: conflicting types for 'gst_gl_context_cocoa_new'

9 years agogl/win32: fix definition of gst_gl_window_win32_new
Matthew Waters [Mon, 27 Jul 2015 10:00:47 +0000 (20:00 +1000)]
gl/win32: fix definition of gst_gl_window_win32_new

9 years agowayland: fail window open if the display is the correct type
Matthew Waters [Mon, 27 Jul 2015 08:21:19 +0000 (18:21 +1000)]
wayland: fail window open if the display is the correct type

Errors out cleanly if a wayland compositor is not running

9 years agoglwindow: pass display to implementation's _new()
Matthew Waters [Fri, 24 Jul 2015 07:00:27 +0000 (17:00 +1000)]
glwindow: pass display to implementation's _new()

So they have to opportunity to fail if they cannot handle the
display connection.

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

9 years agoglcontext: pass display to implentation's _new()
Matthew Waters [Fri, 24 Jul 2015 06:11:38 +0000 (16:11 +1000)]
glcontext: pass display to implentation's _new()

This allows the context to fail creation based on incompatible
display type's. e.g. glx context with an wayland display handle.

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

9 years agogl: support cgl, egl and glx within a same build
Julien Isorce [Sun, 5 Jul 2015 23:52:06 +0000 (00:52 +0100)]
gl: support cgl, egl and glx within a same build

On osx, with the same build,
gst-launch-1.0 videotestsrc ! glimagesink works with:

GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=gles2
GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=opengl

GST_GL_PLATFORM=glx GST_GL_WINDOW=x11 GST_GL_API=opengl

GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl3

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

9 years agoglupload: Check that caps contain desired caps features
Jan Schmidt [Mon, 27 Jul 2015 06:36:40 +0000 (16:36 +1000)]
glupload: Check that caps contain desired caps features

Use 'contains' checks instead of equality checks on caps features
to allow for uploading when caps also contain GstVideoOverlayComposition
meta.

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

9 years agobluez: Add built sources to CLEANFILES
Nicolas Dufresne [Sat, 25 Jul 2015 13:03:27 +0000 (09:03 -0400)]
bluez: Add built sources to CLEANFILES

9 years agodahdemux: avoid overflows in computation of segment start time and duration
Florin Apostol [Mon, 20 Jul 2015 09:50:44 +0000 (10:50 +0100)]
dahdemux: avoid overflows in computation of segment start time and duration

Used gst_util_uint64_scale to avoid overflows when segment start time
or duration is computed.

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

9 years agohlsdemux: demote error to warning
Thiago Santos [Mon, 13 Jul 2015 18:37:26 +0000 (15:37 -0300)]
hlsdemux: demote error to warning

It is not fatal and can be quite normal when the network is
too slow

9 years agosrtpenc: do not check input buffers
Miguel París Díaz [Fri, 24 Jul 2015 07:42:53 +0000 (09:42 +0200)]
srtpenc: do not check input buffers

With this we avoid an unnecessary and considerable overhead.

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

9 years agogl: move GL_NUM_EXTENSIONS definition after gl.h
Julien Isorce [Sun, 5 Jul 2015 23:45:45 +0000 (00:45 +0100)]
gl: move GL_NUM_EXTENSIONS definition after gl.h

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

9 years agocaopengllayersink: remove unused label context_creation_error
Julien Isorce [Thu, 23 Jul 2015 22:59:22 +0000 (23:59 +0100)]
caopengllayersink: remove unused label context_creation_error

Build error introduced by commit
5457e55f255518d679b59a170951e299ecd8c5f6

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

9 years agoh264parse: Don't discard first AU delimiter
Jan Schmidt [Thu, 23 Jul 2015 16:46:21 +0000 (02:46 +1000)]
h264parse: Don't discard first AU delimiter

Don't throw away AU delimiter(s) that precede the SPS/PPS. Should
fix MPEG-TS playback on iOS/Quicktime when muxing streams that
already have AU delimiters.

See https://bugzilla.gnome.org/show_bug.cgi?id=736213 for getting
h264parse to insert AU delimiters when they don't already
exist.

9 years agoglimagesink: fix allocation meta structure leak
Tim-Philipp Müller [Thu, 23 Jul 2015 10:18:47 +0000 (11:18 +0100)]
glimagesink: fix allocation meta structure leak

gst_query_add_allocation_meta() does not take ownership
of the structure, for some reason.

CID 1312135

9 years agoglupload: fix memory leak
Luis de Bethencourt [Thu, 23 Jul 2015 09:57:26 +0000 (10:57 +0100)]
glupload: fix memory leak

GstCapsFeatures need to be freed with gst_caps_features_free() after use.

CID #1312136, CID #1312136

9 years agoglvideomixer: Add GstControlBinding proxy
Olivier Crête [Fri, 3 Jul 2015 00:10:50 +0000 (20:10 -0400)]
glvideomixer: Add GstControlBinding proxy

This is used to proxy GstControlBinding to the pad on the
parent object. This avoid having to sync the values in the proxy pad,
this is too early if you have a queue between the pad and the actual
aggregation operation.

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

9 years agoaudioaggregator: Register function name
Olivier Crête [Wed, 22 Jul 2015 23:27:19 +0000 (19:27 -0400)]
audioaggregator: Register function name

Otherwise, it sometimes segfaults with debugging enabled

9 years agoaudioaggregator: Use 1.0 style buffer allocation
Olivier Crête [Wed, 22 Jul 2015 23:26:42 +0000 (19:26 -0400)]
audioaggregator: Use 1.0 style buffer allocation

9 years agoglupload: Forward composition meta even without params
Nicolas Dufresne [Wed, 22 Jul 2015 20:58:12 +0000 (16:58 -0400)]
glupload: Forward composition meta even without params

When the sink does not know the window size (e.g not created yet)
it will not add any param to the the composition meta. This is no
reason not to forward this meta API. Fixes issue where it could not
attach until we resize the window.

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

9 years agogloverlaycompositor: Keep memory pointer alive
Nicolas Dufresne [Wed, 22 Jul 2015 19:56:34 +0000 (15:56 -0400)]
gloverlaycompositor: Keep memory pointer alive

Keep the composition memory pointer alive while it's being
wrapped inside a GstGLMemory object.

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

9 years agogloverlaycompositor: Pass buffer stride
Nicolas Dufresne [Wed, 22 Jul 2015 18:17:42 +0000 (14:17 -0400)]
gloverlaycompositor: Pass buffer stride

The overlay pixel buffer stride was not given back
to the GL image.

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

9 years agoaudioaggregator: Sync pad values before aggregating
Nirbheek Chauhan [Tue, 19 May 2015 10:38:08 +0000 (16:08 +0530)]
audioaggregator: Sync pad values before aggregating

We need to sync the pad values before taking the aggregator and pad locks
otherwise the element will just deadlock if there's any property changes
scheduled using GstController since that involves taking the aggregator and pad
locks.

Also add a test for this.

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

9 years agogloverlaycompositor: Hide GstCompsitionOverlay object
Nicolas Dufresne [Wed, 22 Jul 2015 18:05:34 +0000 (14:05 -0400)]
gloverlaycompositor: Hide GstCompsitionOverlay object

This object is only used inside the compositor and does not
need to be expose in libgstgl API.

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

9 years agolibgstgl: Makefile style fix
Nicolas Dufresne [Wed, 22 Jul 2015 17:33:12 +0000 (13:33 -0400)]
libgstgl: Makefile style fix

9 years agocomposition-overlay: Positions are relative to texture
Nicolas Dufresne [Wed, 22 Jul 2015 03:48:25 +0000 (23:48 -0400)]
composition-overlay: Positions are relative to texture

The coordinate are relative to the texture dimension and not
the window dimension now. There is no need to pass the window
dimension or to update the overlay if the dimension changes.

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

9 years agogloverlaycompositor: Create own shader object
Lubosz Sarnecki [Wed, 22 Jul 2015 01:27:45 +0000 (21:27 -0400)]
gloverlaycompositor: Create own shader object

Make gloverlaycompositor independent of the shader used in the sink.

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

9 years agoglimagesink: Properly handle compsositor life time
Nicolas Dufresne [Tue, 21 Jul 2015 22:47:56 +0000 (18:47 -0400)]
glimagesink: Properly handle compsositor life time

Should be created in READY_TO_PAUSED, not PAUSED_TO_PLAYING.
Should be cleared in PAUSED_TO_READY.

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

9 years agoliveadder: remove unneeded variable
Luis de Bethencourt [Wed, 22 Jul 2015 15:10:35 +0000 (16:10 +0100)]
liveadder: remove unneeded variable

ret is declared just to initialize to TRUE and overwrite with the value of
vret. We can return the value of vret directly. vret is TRUE unless the
forward_event_func sets it to FALSE.

9 years agoqt: Don't dist files that might not exist
Edward Hervey [Wed, 22 Jul 2015 13:13:48 +0000 (15:13 +0200)]
qt: Don't dist files that might not exist

We only require moc building at build time.

9 years agoconfigure: require libxml2 >= 2.8 for DASH plugin
Young Han Lee [Wed, 22 Jul 2015 06:50:26 +0000 (15:50 +0900)]
configure: require libxml2 >= 2.8 for DASH plugin

The DASH plugin uses xmlBufferDetach now in the code
that handles ContentProtection elements.

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

9 years agoqt: Tidy up makefile a bit more
Edward Hervey [Wed, 22 Jul 2015 06:05:04 +0000 (08:05 +0200)]
qt: Tidy up makefile a bit more

Separate generated files, from disted files

9 years agoaudioaggregator: Read output buffer duration with lock held
Olivier Crête [Wed, 22 Jul 2015 00:52:23 +0000 (20:52 -0400)]
audioaggregator: Read output buffer duration with lock held

9 years agogstglwidget: use gst_gl_display_create_context
Julien Isorce [Tue, 21 Jul 2015 10:23:21 +0000 (11:23 +0100)]
gstglwidget: use gst_gl_display_create_context

Also handle the failure case.

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

9 years agocaopengllayersink: use gst_gl_display_create_context
Julien Isorce [Tue, 21 Jul 2015 10:28:08 +0000 (11:28 +0100)]
caopengllayersink: use gst_gl_display_create_context

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

9 years agoglstereosplit: use gst_gl_display_create_context
Julien Isorce [Tue, 21 Jul 2015 10:21:27 +0000 (11:21 +0100)]
glstereosplit: use gst_gl_display_create_context

Also unlock the lock on error.

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

9 years agoliveadder: return false if event couldn't be pushed
Luis de Bethencourt [Tue, 21 Jul 2015 13:10:57 +0000 (14:10 +0100)]
liveadder: return false if event couldn't be pushed

Make the gst pad's event function return false if the event couldn't be
pushed to the pad.

9 years agogloverlaycompositor: for loop initial declarations are only allowed in C99 mode
Luis de Bethencourt [Tue, 21 Jul 2015 12:11:17 +0000 (13:11 +0100)]
gloverlaycompositor: for loop initial declarations are only allowed in C99 mode

Fixes compiler warnings

9 years agogl: use gst_gl_display_create_context in more elements.
Julien Isorce [Fri, 19 Jun 2015 10:57:06 +0000 (11:57 +0100)]
gl: use gst_gl_display_create_context in more elements.

glbasefilter, glbasemixer and gltestsrc.

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

9 years agogl/build: fix typo in _HEADERS resulting in installing the wrong file
Matthew Waters [Tue, 21 Jul 2015 07:34:27 +0000 (17:34 +1000)]
gl/build: fix typo in _HEADERS resulting in installing the wrong file

/usr/include/gstreamer-1.0/gst/gl/gl.h:51:43: fatal error:
    gst/gl/gstgloverlaycompositor.h: No such file or directory

9 years agoglcolorconvert: add RGB to NV12/NV21 conversion
Matthew Waters [Tue, 21 Jul 2015 05:39:35 +0000 (15:39 +1000)]
glcolorconvert: add RGB to NV12/NV21 conversion

9 years agoglimagesink: Send reconfigure event when window size changes
Lubosz Sarnecki [Wed, 1 Jul 2015 12:01:45 +0000 (14:01 +0200)]
glimagesink: Send reconfigure event when window size changes

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

9 years agoglimagesinkbin: Add allocation query for GstVideoOverlayComposition
Lubosz Sarnecki [Mon, 20 Jul 2015 18:24:22 +0000 (14:24 -0400)]
glimagesinkbin: Add allocation query for GstVideoOverlayComposition

Adds an GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE query to glupload
and glimagesink.  Detects the query from the downstream elements, so
it is executed only when downstream supports the overlay API.

This makes pipelines with textoverlay ! glupload ! gldownload ! xvimagesink possible.
Uses allocation meta struct for passing the window size upstream.

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

9 years agoglcolorconvert: Apply GstVideoOverlayCompositionMeta buffer to converted buffer
Lubosz Sarnecki [Mon, 20 Apr 2015 11:17:09 +0000 (13:17 +0200)]
glcolorconvert: Apply GstVideoOverlayCompositionMeta buffer to converted buffer

Since glcolorconvert creates a new GstBuffer,
without the GstVideoOverlayCompositionMeta data,
it needs to be copied to not be dropped.

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

9 years agoglupload: Detect overlay meta buffers correctly
Lubosz Sarnecki [Thu, 18 Jun 2015 11:34:58 +0000 (13:34 +0200)]
glupload: Detect overlay meta buffers correctly

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

9 years agoglimagesinkbin: Add GstVideoOverlayCompositionMeta caps features
Lubosz Sarnecki [Thu, 18 Jun 2015 03:43:50 +0000 (05:43 +0200)]
glimagesinkbin: Add GstVideoOverlayCompositionMeta caps features

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

9 years agoglimagesink: Upload and draw overlays with GstGLOverlayCompositor
Lubosz Sarnecki [Thu, 18 Jun 2015 04:04:37 +0000 (06:04 +0200)]
glimagesink: Upload and draw overlays with GstGLOverlayCompositor

Receives the GstOverlayComposition buffer in the glimagesink and draws them.

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

9 years agogloverlaycompositor: Add GstGLOverlayCompositor class
Lubosz Sarnecki [Tue, 30 Jun 2015 15:59:12 +0000 (17:59 +0200)]
gloverlaycompositor: Add GstGLOverlayCompositor class

Manages the GstGLCompositionOverlay objects,
caches already uploaded overlays and draws them.

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

9 years agoglcompositionoverlay: Add compatibility for GL contexts without glGenVertexArrays
Lubosz Sarnecki [Thu, 18 Jun 2015 12:15:01 +0000 (14:15 +0200)]
glcompositionoverlay: Add compatibility for GL contexts without glGenVertexArrays

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

9 years agoglcompositionoverlay: Add class for managing GstVideoOverlayCompositionOverlay buffers
Lubosz Sarnecki [Sat, 13 Jun 2015 13:35:47 +0000 (15:35 +0200)]
glcompositionoverlay: Add class for managing GstVideoOverlayCompositionOverlay buffers

Add a class to store and manage the OpenGL texture,
vertex buffer and GstVideoOverlayRectangle.
Transforms overlay coordinate space to vertex buffer space with aspect ratios in mind.

= Example Pipelines =

Simple pipeline

gst-launch-1.0 videotestsrc ! \
  textoverlay text="Hello World" font-desc="sans bold 30" ! \
  glimagesink

Display 3 static overlays at different positions

gst-launch-1.0 videotestsrc ! \
  textoverlay text="text1" valignment="top" font-desc="sans bold 30" ! \
  textoverlay text="text2" halignment="right" font-desc="sans bold 30" ! \
  textoverlay text="text3" halignment="left" font-desc="sans bold 30" ! \
  glimagesink

Display subtitle file over testsrc

gst-launch-1.0 videotestsrc ! \
  textoverlay name=foo filesrc location=foo.srt ! subparse ! queue ! foo. foo. ! \
  glimagesink

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

9 years agoglupload: Move debug init to top of the file
Lubosz Sarnecki [Thu, 18 Jun 2015 09:33:29 +0000 (11:33 +0200)]
glupload: Move debug init to top of the file

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

9 years agoopusdec: Fix PLC frame size calculations
Carlos Rafael Giani [Mon, 20 Apr 2015 13:04:56 +0000 (15:04 +0200)]
opusdec: Fix PLC frame size calculations

Previously, PLC frames always had a length of 120ms, which caused audio
quality degradation and synchronization errors. Fix this by calculating an
appropriate length for the PLC frame.

The length must be a multiple of 2.5ms. Calculate a multiple of 2.5ms that
is nearest to the current PLC length. Any leftover PLC length that didn't
make it into this frame is accumulated for the next PLC frame.

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

9 years agoadaptivedemux: minor clean-up
Tim-Philipp Müller [Sat, 18 Jul 2015 20:18:23 +0000 (21:18 +0100)]
adaptivedemux: minor clean-up

No need for a foreach callback function that's just a few
lines of code and is only used once, just do the event
pushing inline.

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

9 years agodashdemux: add support for generating Protection events from ContentProtection elements
Alex Ashley [Fri, 6 Feb 2015 13:22:14 +0000 (13:22 +0000)]
dashdemux: add support for generating Protection events from ContentProtection elements

If a ContentProtection element is present in an AdaptationSet element,
send Protection events on the source pad, so that qtdemux can use this
information to correctly generate its source caps for DASH CENC
encrypted streams.

This allows qtdemux to support CENC encrypted DASH streams where the
content protection specific information is carried in the MPD file
rather than in pssh boxes in the initialisation segments.

This commit adds a new function to the adaptivedemux base class to allow
a GstEvent to be queued for a stream. The queue of events are sent the
next time a buffer is pushed for that stream.

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

9 years agovoaacenc: fix output caps for stream-format=ADTS
Tim-Philipp Müller [Mon, 20 Jul 2015 11:40:28 +0000 (12:40 +0100)]
voaacenc: fix output caps for stream-format=ADTS

Should have framed=true in caps. Fixes voaacenc ! mpegtsmux.

9 years agompegtsmux: fix aac caps in pad template for raw aac
Tim-Philipp Müller [Mon, 20 Jul 2015 11:38:28 +0000 (12:38 +0100)]
mpegtsmux: fix aac caps in pad template for raw aac

Raw aac doesn't need framed=true.

Fixes not-negotiated error with voaacenc ! mpegtsmux.

9 years agogtk: Log GDK GL error when failling creating GdkGLContext
Thibault Saunier [Mon, 20 Jul 2015 09:09:20 +0000 (11:09 +0200)]
gtk: Log GDK GL error when failling creating GdkGLContext

9 years agoglmemory: check for pbo availability before attempting pbo download
Matthew Waters [Mon, 20 Jul 2015 08:19:02 +0000 (18:19 +1000)]
glmemory: check for pbo availability before attempting pbo download

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

9 years agoglcontext: fix get_current_gl_api on x11/nvidia drivers
Matthew Waters [Sat, 18 Jul 2015 07:19:18 +0000 (17:19 +1000)]
glcontext: fix get_current_gl_api on x11/nvidia drivers

They require to get_proc_address some functions through the
platform specific {glX,egl}GetProcAddress rather than the default
GL library symbol lookup.

9 years agoglcontext: consolidate get_proc_address function definition
Matthew Waters [Sat, 18 Jul 2015 07:08:36 +0000 (17:08 +1000)]
glcontext: consolidate get_proc_address function definition

Pass the GstGLAPI directly.

9 years agoglcolorconvertelement: propagate failure to convert buffer upstream
Matthew Waters [Fri, 17 Jul 2015 07:47:37 +0000 (17:47 +1000)]
glcolorconvertelement: propagate failure to convert buffer upstream

Rather than just silently continuing

9 years agoglcontext/glx: try creating a context with the highest version
Matthew Waters [Fri, 17 Jul 2015 03:48:00 +0000 (13:48 +1000)]
glcontext/glx: try creating a context with the highest version

nvidia drivers return the exact version in glGstString (GL_VERSION)
we request on creation so start with the highest known version and
work our way down.

9 years agoglcontext: track sharedness with a cookie
Matthew Waters [Wed, 15 Jul 2015 14:37:58 +0000 (00:37 +1000)]
glcontext: track sharedness with a cookie

The previous approach of traversing the other_context weak ref tree was
1. Less performant
2. Incorrect for context destruction removing a link in the tree

Example of 2:
c1 = context_create (NULL)
c2 = context_create (c1)
c3 = context_create (c2)
context_can_share (c1, c3) == TRUE
context_destroy (c2)
unref (c2)
context_can_share (c1, c3) returns FALSE when it should be TRUE!

This does not remove the restriction that context sharedness can only
be tracked between GstGLContext's.

9 years agoglcontext: use the debug object variant for completeness
Matthew Waters [Wed, 15 Jul 2015 14:33:17 +0000 (00:33 +1000)]
glcontext: use the debug object variant for completeness

9 years agogtkgstglwidget: Cleanup unused private member
Nicolas Dufresne [Fri, 17 Jul 2015 20:00:01 +0000 (16:00 -0400)]
gtkgstglwidget: Cleanup unused private member

new_buffer has been moved to base class. Also cleanup
the properties comment, which are also all moved into
the base class.

9 years agogtksink: "widget" must be access from main thread
Nicolas Dufresne [Fri, 17 Jul 2015 19:57:37 +0000 (15:57 -0400)]
gtksink: "widget" must be access from main thread

Document that "widget" property must be accessed from the
main thread (where GTK is running). This is the same for
state transition on these elements. It is very natural to
do so un GTK applications.

9 years agogtkglsink: Don't leak vertex array and buffers
Nicolas Dufresne [Fri, 17 Jul 2015 19:08:53 +0000 (15:08 -0400)]
gtkglsink: Don't leak vertex array and buffers

This is now possible since reset is always called from the
main thread.

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

9 years agogtkgstbasewidget: Fix black frame on resize
Nicolas Dufresne [Fri, 17 Jul 2015 18:36:56 +0000 (14:36 -0400)]
gtkgstbasewidget: Fix black frame on resize

This is solved by only applying the new format when the next
buffer is to be rendered and on the GTK thread.

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

9 years agogtkgstbasewidget: Pass already parsed VideoInfo
Nicolas Dufresne [Fri, 17 Jul 2015 17:05:05 +0000 (13:05 -0400)]
gtkgstbasewidget: Pass already parsed VideoInfo

As the base sink already parse the caps into VideoInfo it
makes sense to pass in VideoInfo to the widget instead.

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

9 years agogtkglsink: Port to GstGtkBaseSink base class
Nicolas Dufresne [Thu, 16 Jul 2015 20:49:32 +0000 (16:49 -0400)]
gtkglsink: Port to GstGtkBaseSink base class

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

9 years agogtksink: Port to GstGtkBaseSink
Nicolas Dufresne [Thu, 16 Jul 2015 20:00:37 +0000 (16:00 -0400)]
gtksink: Port to GstGtkBaseSink

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

9 years agogtkbasesink: Create a base class
Nicolas Dufresne [Thu, 16 Jul 2015 19:59:59 +0000 (15:59 -0400)]
gtkbasesink: Create a base class

This contains all the common code between the gtkglsink and
gtksink.

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

9 years agogtkglsink: Port to GtkGstBaseWidget
Nicolas Dufresne [Thu, 16 Jul 2015 18:30:42 +0000 (14:30 -0400)]
gtkglsink: Port to GtkGstBaseWidget

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

9 years agogtksink: Port to GtkGstBaseWidget
Nicolas Dufresne [Thu, 16 Jul 2015 16:55:11 +0000 (12:55 -0400)]
gtksink: Port to GtkGstBaseWidget

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

9 years agogtk: Add GtkGstBaseWidget
Nicolas Dufresne [Thu, 16 Jul 2015 16:51:34 +0000 (12:51 -0400)]
gtk: Add GtkGstBaseWidget

This is a "pseudo" base class. Basically it's a shared instance
and class structure and a shared set of function between the
two widget. It cannot have it's own type like normal base class
since the one instance will implement GtkGLArea while the other
implements GtkDrawingAreay. To workaround this, the parent instance
and class is a union of both.

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

9 years agouploadelement: Protect against NULL pointer
Nicolas Dufresne [Thu, 16 Jul 2015 20:47:05 +0000 (16:47 -0400)]
uploadelement: Protect against NULL pointer

I notice that if you stop the pipeline during a renegotiation
the upload may be NULL while an allocation query is being run.
In that scenario, returning FALSE to the allocation query is the
best thing.

9 years agogtkgstglwidget: Remove unused gl_caps
Nicolas Dufresne [Wed, 15 Jul 2015 21:35:22 +0000 (17:35 -0400)]
gtkgstglwidget: Remove unused gl_caps

9 years agogtksink: Create a window if the widget is unparented
Nicolas Dufresne [Wed, 15 Jul 2015 20:56:33 +0000 (16:56 -0400)]
gtksink: Create a window if the widget is unparented

The same way as it's now done with the gtkglsink, create a top
level window if the widget is not parented.

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

9 years agogtksink: Ensure the copy pasted code remains the same
Nicolas Dufresne [Wed, 15 Jul 2015 18:35:02 +0000 (14:35 -0400)]
gtksink: Ensure the copy pasted code remains the same

Move back the default property at the same place they are in the
other sink. This helps when using a diff viewer to synchronized
this unfortunate copy paste.

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

9 years agogtk: Fix race between queue_draw and destroy
Nicolas Dufresne [Wed, 15 Jul 2015 18:32:42 +0000 (14:32 -0400)]
gtk: Fix race between queue_draw and destroy

In GTK dispose can be called before the last ref is reached. This
happens when you close the container window. The dispose will be
explicitly called, and destroyed notify will be fired. This patch
fixes this race by properly tracking the widget state.

In the sink, we now set the widget pointer to NULL, so the widget
will properly get created again if you set your pipeline to NULL
state after the widget was destroy, and set it back to PLAYING.

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

9 years agodashdemux: remove typefinder, move it to typefindfunctions in -base
Tim-Philipp Müller [Thu, 16 Jul 2015 20:28:28 +0000 (21:28 +0100)]
dashdemux: remove typefinder, move it to typefindfunctions in -base

Otherwise this plugin will be loaded pretty much whenever
there's anything to typefind. And the code was pretty much
copy'n'paste from -base anyway.

9 years agodashdemux: default timescale is 1
Florin Apostol [Wed, 15 Jul 2015 12:02:54 +0000 (13:02 +0100)]
dashdemux: default timescale is 1

default timescale value should be 1, not 0.

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

9 years agodashdemux: free prop_string only after it's no longer needed
Florin Apostol [Wed, 15 Jul 2015 12:41:37 +0000 (13:41 +0100)]
dashdemux: free prop_string only after it's no longer needed

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

9 years agoUpdate mailing list address from sourceforge to freedesktop
Tim-Philipp Müller [Thu, 16 Jul 2015 16:21:51 +0000 (17:21 +0100)]
Update mailing list address from sourceforge to freedesktop