Commit graph

3297 commits

Author SHA1 Message Date
Munez
1cf3d0a590 gl/dispmanx: Fix set_render_rectangle typo
https://bugzilla.gnome.org/show_bug.cgi?id=772698
2016-10-18 11:23:42 +11:00
Arnaud Vrac
e8b24f9189 adaptivedemux: fix buffer size print format
https://bugzilla.gnome.org/show_bug.cgi?id=772706
2016-10-11 09:59:03 +01:00
Edward Hervey
4aadf50012 adaptivedemux: Calculate values before queue2
In order to calculate the *actual* bitrate for downloading a fragment
we need to take into account the time since we requested the fragment.

Without this, the bitrate calculations (previously reported by queue2)
would be biased since they wouldn't take into account the request latency
(that is the time between the moment we request a specific URI and the
moment we receive the first byte of that request).

Such examples were it would be biased would be high-bandwith but high-latency
networks. If you download 5MB in 500ms, but it takes 200ms to get the first
byte, queue2 would report 80Mbit/s (5Mb in 500ms) , but taking the request
into account it is only 57Mbit/s (5Mb in 700ms).

While this would not cause too much issues if the above fragment represented
a much longer duration (5s of content), it would cause issues with short
ones (say 1s, or when doing keyframe-only requests which are even shorter)
where the code would expect to be able to download up to 80Mbit/s ... whereas
if we take the request time into account it's much lower (and we would
therefore end up doing late requests).

Also calculate the request latency for debugging purposes and further
usage (it could allow us to figure out the maximum request rate for
example).

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

https://bugzilla.gnome.org/show_bug.cgi?id=772330
2016-10-08 14:13:51 +02:00
Matthew Waters
9ad4c67578 glwindow: don't use g_thread_join() to join the navigation thread
Using g_thread_join() in _finalize() handlers may result in a deadlock
joining the current thread when the last reference is held by a signal
handler.

e.g.:

error 'Resource deadlock avoided' during 'pthread_join (pt->system_thread, NULL)'

The backtrace looks like this:
[...]
g_thread_join ()
gst_gl_window_finalize ()
gst_gl_window_x11_finalize ()
g_object_unref ()
g_value_unset ()
g_signal_emit_valist ()
g_signal_emit ()
gst_gl_window_send_mouse_event ()
gst_gl_window_mouse_event_cb ()
g_main_dispatch ()
[..]
g_main_loop_run ()
gst_gl_window_navigation_thread ()
g_thread_proxy ()
start_thread ()
clone ()
2016-10-05 18:32:09 +11:00
Matthew Waters
e20dab09ea gl/win32: remove egl implementation
It hasn't been used in ages and is dead code.
2016-10-05 12:20:52 +11:00
Wonchul Lee
69b866326e tsdemux: Add conditions to identify ATSC EAC3
https://bugzilla.gnome.org/show_bug.cgi?id=770528
2016-10-03 15:14:54 -04:00
Sebastian Dröge
254db116a1 player: Remove Return documentation for function returning void 2016-09-30 13:42:06 +03:00
Gwang Yoon Hwang
b75ec0c433 gl/dispmanx: Implements set_render_rectangle to adjust the position of window
We cannot set the x, y coordinate of the video frame at the dispmanx at
this point. We need to teach dispmanx backend to understand about
set_render_rectangle API to draw a video with other UI.

This patch keeps the current behavior which places video frame at the
center of the display if there is no set_render_rectangle call to the
dispmanx window.

https://bugzilla.gnome.org/show_bug.cgi?id=766018
2016-09-28 17:08:52 +10:00
Matthew Waters
c200e47ef8 gl: add necessary padding bytes to all public structs 2016-09-28 17:08:52 +10:00
Sebastian Dröge
fa31ea7ac3 player: Only report the initial duration if the query was successful 2016-09-26 13:26:36 +03:00
Matthew Waters
bad58e2b13 gldisplay: also free the GWeakRef when removing dead contexts
Otherwise we leak GWeakRef's.

Found with make -C tests/check libs/gstglcontext.valgrind
2016-09-22 18:25:37 +10:00
Martin Kelly
c40845731a wayland/Makefile.am: add missing libs
libgstwayland is missing a dependency on $(GST_PLUGINS_BASE_LIBS), so add it.

https://bugzilla.gnome.org/show_bug.cgi?id=771794
2016-09-21 20:07:06 -04:00
Sebastian Dröge
ac6e2af62d player: Remove some leftovers from external GstPlayer 2016-09-17 17:08:22 -04:00
Sebastian Dröge
79cab9f8b8 player: Remove boolean return from set_subtitle_uri()
It can't fail synchronously and is inconsistent with set_uri().
2016-09-15 13:15:51 +02:00
Sebastian Dröge
a036b7ef9f player: Don't change state to PLAYING immediately if a seek is pending
We first have to finish the seek (in PAUSED) and move to PLAYING once
the seek is actually finished (unless a new one is pending then).
2016-09-14 18:07:55 +02:00
Sebastian Dröge
776a9470a0 adaptivedemux: Also never have the SINK flag set on adaptivedemux 2016-09-12 18:38:36 +02:00
Thiago Santos
08da514528 adaptivedemux: fix typo in new API
Fixes supressed -> suppressed typo in previous commit

https://bugzilla.gnome.org/show_bug.cgi?id=770627
2016-09-10 16:53:59 -03:00
Wonchul Lee
aa314c43ba adaptivedemux: prevent to propagate source flag to itself
https://bugzilla.gnome.org/show_bug.cgi?id=770627
2016-09-10 09:49:45 -03:00
Matthew Waters
32273c2c9c meson/gl: use separate deps for gl and glx
e.g. passing with_gl_api=gles2 would still build the glx code but not be
linking against the libGL library which is where the glX* functions are
located and would result in a linker error.

Solved by checking for the libGL library if either opengl or glx may be
needed and then disabling the corresponding deps as requested.
2016-09-09 23:26:24 +10:00
Matthew Waters
b5b7a3aec3 meson: add some starting build files for GL
Currently only works on linux with egl/glx + wayland/x11 but the general
principals have been layed out for adding the other GL platforms/winsys'.
2016-09-09 11:22:47 +10:00
Julien Isorce
179c8f71fb gstplayer: remove leftover update_interval api
old: gst_player_set_position_update_interval
new: gst_player_config_set_position_update_interval

https://bugzilla.gnome.org/show_bug.cgi?id=769144
2016-09-08 08:41:03 +01:00
Alistair Buxton
c3d5057185 gl: Remove duplicate GL_CFLAGS in Makefile.am.
https://bugzilla.gnome.org/show_bug.cgi?id=771021
2016-09-08 09:45:18 +10:00
Thibault Saunier
533ee7be95 aggregator: Use the event_full function for GstAggregatorPads
Allowing us to tell GstPad why we are failing an event, which might
be because we are 'flushing' even if the sinkpad is not in flush state
at that point.
2016-09-06 16:30:28 -03:00
Jan Schmidt
840c2729cc gl: Remove extra duplicate typedef of GstGLFramebuffer
It's triggering a warning building git master on OSX
2016-08-31 04:27:09 +10:00
Alessandro Decina
a7dccec0ff glupload: fix tests and check for the new RECONFIGURE behaviour
The tests were broken since 91fea30, which changed glupload to return
GST_GL_UPLOAD_RECONFIGURE if the texture target in the input buffers doesn't
match the texture-target configured in the output caps.

This commit fixes that and adds more checks for the new behaviour.
2016-08-29 16:06:06 +10:00
Thibault Saunier
2fb716409c Use the new API to post flow ERROR messages on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-26 19:23:31 -03:00
Alessandro Decina
91fea30ff4 gstglupload: make the GLMemoryUpload method output the correct texture-target
Now when used with video/x-raw as input, the GLMemoryUpload method checks for
->tex_target in input GLMemory(es) and sets the output texture-target
accordingly.

Fixes video corruption with a pipeline like avfvideosrc ! video/x-raw !
glimagesink where on macos avfvideosrc pushes RECTANGLE textures but glupload
was configuring texture-target=2D as output.
2016-08-26 17:44:33 +10:00
Thibault Saunier
50473d77cc meson: Make mpegts lib build when using subprojects
The headers passed as parametter are relative to the build dir
basically "../subproject/gst-plugins-bad/gst-libs/gst/mpegts/XXX.h"
but that does not match what is needed at build time when building as
subproject, also we always add current dir as include_dir so we are
safe including directly.

And link mpegtsdemux against the 'math' library as it is needed.
2016-08-25 15:17:17 -03:00
Jan Schmidt
3d2048e40a videoaggregator: Handle if update_caps() returns EMPTY
Don't assume the returned caps from update_caps() is
non-empty.
2016-08-26 03:25:49 +10:00
Jan Schmidt
45df74868c glviewconvert: Fix texture target fixation
Don't set the chosen texture-target into the wrong structure.
The input caps may not be writable, and in any case - the
intention was to configure the othercaps. Also, remove an
extra unref - the othercaps ref is consumed by
gst_caps_make_writable already.
2016-08-26 03:25:49 +10:00
Sebastian Dröge
4f6ae1f48c adaptivedemux: Enable bitrate selection for trick mode streaming again
And scale the bitrate with the absolute rate (if it's bigger than 1.0) to get
to the real bitrate due to faster playback.

This allowed in my tests to play a stream with 10x speed without buffering as
the lowest bitrate is chosen, instead of staying/selecting the highest bitrate
and then buffering all the time.

It was previously disabled for not very well specified reasons, which seem to
be not valid anymore nowadays.
2016-08-25 19:52:37 +03:00
Sebastian Dröge
a2c03f2b00 player: On redirects, remember the redirect URI separately and don't consider this an URI property change
The application does not know anything about the redirect, and changing its
URI internally will cause confusion.

Also don't reset the subtitle URI.
2016-08-24 14:16:23 +03:00
Sebastian Dröge
e416e79af8 player: Don't report spurious STOPPED state changes when doing transient changes there 2016-08-24 14:10:41 +03:00
Sebastian Dröge
c361907873 player: Ensure that rate is initialized to 1.0 2016-08-24 13:38:53 +03:00
Sebastian Dröge
c6d389c772 player: De-duplicate rate setting code and always use the property 2016-08-23 15:02:19 +03:00
Sebastian Dröge
fa8bfb3991 player: Protect setter/getter for the configuration with a mutex 2016-08-23 15:02:19 +03:00
Sebastian Dröge
a0f6105204 player: Move subtitle URI setter next to the uri setter
It's confusing to have them a couple of hundred lines apart.
2016-08-23 15:02:19 +03:00
Jan Schmidt
1d5b32ee91 adaptivedemux: Fix the previous commit
Remove extra files that were not meant to be added to the commit
2016-08-23 02:13:19 +10:00
Jan Schmidt
389e35d032 adaptivedemux: Fix broken updates loop on live streams
Prevent the manifest update loop from looping endlessly
after a seek event, by clearing the variable that tells
the task function not to immediately exit.
2016-08-23 01:57:55 +10:00
Michael Olbrich
0a63569fd1 adaptivedemux: fix stream exposure condition
The new streams should not be exposed until all streams are done with the
current fragment. The old code is incorrect and actually only checked the
current stream. Fix this by properly checking all streams.

Also, ignore the current stream. The code is only reached when the current
stream finished downloading and since
07f49f15b1 ("adaptivedemux: On EOS, handle it
before waking download loop") download_finished is set after
gst_adaptive_demux_stream_advance_fragment_unlocked() is called.

Without this HLS playback with multiple streams is broken, because the new
streams are never exposed.

https://bugzilla.gnome.org/show_bug.cgi?id=770075
2016-08-23 01:40:39 +10:00
Nirbheek Chauhan
42af2d66d8 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Matej Knopp <matej.knopp@gmail.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:35:54 +01:00
Nirbheek Chauhan
2fb76c89fc codecparsers: Explicitly export functions marked inline
On MSVC, inline functions are not available outside of a file unless
explicitly exported
2016-08-19 14:37:04 +01:00
Matthew Waters
306e610547 glwindow: marshal gst_gl_window_resize through the window loop
saves having every caller do it themselves.
2016-08-19 16:07:07 +10:00
Matthew Waters
05a0f0002c gl/wayland: use multi-threaded safe event wayland API
Multiple threads may be accessing the wayland fd at the same time which
requires the use of special wayland API to deal with to ensure nobody
will steal reads and cause a stall for anyone else.
2016-08-19 16:06:26 +10:00
Matthew Waters
0fc3c0f9dc gl/egl: fix inverted typedef
2b6841d had an inverted typedef defining ginptr and EGLAttrib.  Fix that.
2016-08-16 20:34:37 +10:00
Matthew Waters
2b6841da32 gl/build: add configure check for possibly missing EGLAttrib
Fixes the build on older android targets.
2016-08-16 16:51:02 +10:00
Song Bing
4e04f28478 gl/egl/dmabuf: Wrong attribute list type for EGL 1.5
For EGL 1.5 spec, the attribute list type should be EGLAttrib.

https://bugzilla.gnome.org/show_bug.cgi?id=768602
2016-08-16 15:34:08 +10:00
Vincent Penquerc'h
2776cef25d glcontext: fix race joining thread on finalize
https://bugzilla.gnome.org/show_bug.cgi?id=769939
2016-08-16 13:10:30 +10:00
Sebastian Dröge
a9e38d3fec adaptivedemux: Add API for allowing subclasses to download URLs in chunks
This allows to gradually download part of a fragment when the final size is
not known and only a part of it should be downloaded. For example when only
the moof should be parsed and/or a single keyframe should be downloaded.

https://bugzilla.gnome.org/show_bug.cgi?id=741104
2016-08-11 11:56:55 +02:00
Matthew Waters
402ab38f07 glcolorconvert: add missing rgb16 and bgr16 video formats in switch
Fixes an assertion that code should not be reached

https://bugzilla.gnome.org/show_bug.cgi?id=769462
2016-08-04 23:16:14 +10:00
Jan Schmidt
07f49f15b1 adaptivedemux: On EOS, handle it before waking download loop
Otherwise, if the download loop wakes too quickly, it
might miss the last_ret value update from the processing
thread and loop again.
2016-08-04 04:29:38 +10:00
Haihua Hu
fa37e3588e glwindow: Fix glimagesink cannot show frame when connect to qmlglsrc
When connect to qmlglsrc, x11 event loop will be replace by qt event loop
which will cause the window cannot receive event from xserver, such as resize

https://bugzilla.gnome.org/show_bug.cgi?id=768160
2016-08-03 22:10:56 +10:00
Hyunjun Ko
2bb3baa8c9 glupload: Use bufferpool to allocate new buffer in GLTextureUploadMeta
To improve performace of upload with GLTextureUploadMeta,
use bufferpool instead of allocating new buffer every time.

https://bugzilla.gnome.org/show_bug.cgi?id=769293
2016-08-03 21:16:47 +10:00
Matthew Waters
a46d4f3b57 glwindow: move unsetting queue_resize to _resize() instead of _draw()
Makes infinitely more sense and implementation were expecting that behaviour
anyway and would enter a resize, draw, resize, draw, ... cycle instead of only
resizing once.
2016-08-03 21:15:01 +10:00
Sebastian Dröge
050b253d1c adaptivedemux: Never ever hold the manifest lock while changing the source element state
Otherwise we will deadlock in various situations that take the manifest lock
from the streaming thread or when shutting down or ...
2016-08-03 09:15:08 +03:00
Vincent Penquerc'h
535f10b61d adaptivedemux: retry once on 4xx/5xx in certain conditions
This helps catch those 404 server errors in live streams when
seeking to the very beginning, as the server will handle a
request with some delay, which can cause it to drop the fragment
before sending it.

https://bugzilla.gnome.org/show_bug.cgi?id=753751
2016-08-02 12:52:34 +01:00
Alex Ashley
341cdb198f adaptivedemux: expose HTTP status
To allow adaptivedemux to make retry decisions, it needs to know what
sort of HTTP error has occurred. For example, the retry logic for a
410 error is different from a 504 error.

https://bugzilla.gnome.org/show_bug.cgi?id=753751
2016-08-02 12:52:34 +01:00
Vincent Penquerc'h
5b7f60dada adaptivedemux: allow seeking before start in live streams
Some derived classes (at least dashdemux) expose a seeking range
based on wall clock. This means that a subsequent seek to the start
of this range will be before the allowed range.

To solve this, seeks without the ACCURATE flag are allowed to seek
before the start for live streams, in which case the segment is
shifted to start at the start of the new seek range. If there is
an end position, is is shifted too, to keep the duration constant.

https://bugzilla.gnome.org/show_bug.cgi?id=753751
2016-08-02 12:52:34 +01:00
Sebastian Dröge
c1982d8b2f adaptivedemux: Also call reset() in READY->PAUSED
This allows subclasses to have initialization code in a single place.
2016-07-29 12:34:19 +03:00
Matthew Waters
01157c4433 glframebuffer: add compatibility definition for GL_DEPTH_STENCIL_ATTACHMENT
GLES2 doesn't have it defined...
2016-07-26 15:57:54 +10:00
Matthew Waters
5da138d1ae glfilter: rewrite subclasses for filter_texture() occuring on GL thread
There's no need for the jump to an extra thread in most cases, especially
when relying solely on a shader to render.  We can use the provided
render_to_target() functions to simplify filter writing.
2016-07-26 14:07:24 +10:00
Matthew Waters
6edd89c883 glutils: remove unused GstGLDisplayProjection 2016-07-26 14:07:24 +10:00
Matthew Waters
06b4b52a20 glcontext: remove not thread-safe get/set_error()
Use GError's instead if necessary.
2016-07-26 14:07:24 +10:00
Matthew Waters
518e8a3fd2 glframebuffer: rewrite for a more consistent API
Facilities are given to create fbo's and attach GL memory (renderbuffers
or textures).  It also keeps track of the renderable size for use with
effective use with glViewport().
2016-07-26 14:07:24 +10:00
Matthew Waters
aa109016a3 gl: use GLMemory for accessing textures everywhere
This simplifies and consolidates a lot of duplicated code creating
and modifying textures.
2016-07-26 14:07:24 +10:00
Matthew Waters
f10a67ec44 glfilter: rename draw_texture to draw_fullscreen_quad
And remove unused arguments.
2016-07-26 14:07:24 +10:00
Matthew Waters
9e06a75018 gl: add memory type for renderbuffer's
Soon to be used for framebuffers for e.g. depth buffers or throwaway color
buffers.
2016-07-26 14:07:24 +10:00
Matthew Waters
0daa380245 glformat: define our own set of formats from the GL defines
also add some depth/stencil formats
2016-07-26 14:07:24 +10:00
Matthew Waters
6f4091bbd3 glbasememory: assert for a valid allocator instead of segfaulting 2016-07-26 14:07:24 +10:00
Sebastian Dröge
aa1a663c8a player: Add some 'const' to config getters 2016-07-25 13:06:46 +03:00
Sebastian Dröge
1f7d341d92 player: G-I annotation fixes 2016-07-25 13:06:36 +03:00
Guillaume Desmottes
0f692e202e player: move 'position-update-interval' setting to the config struct
https://bugzilla.gnome.org/show_bug.cgi?id=769144
2016-07-25 13:03:20 +03:00
Guillaume Desmottes
6e39cef802 player: add API to change http user agent
Introducing a new 'config' API similar to GstBufferPoolConfig.

https://bugzilla.gnome.org/show_bug.cgi?id=765314
2016-07-25 13:02:35 +03:00
Tim-Philipp Müller
c593e0a17f gl: wayland: improve debug message when connecting to display
And another copy'n'paste-o.

https://bugzilla.gnome.org/show_bug.cgi?id=768929
2016-07-18 17:47:50 +01:00
Guillaume Desmottes
d29ec01b8a camerabinpreview: fix bus leak
We were never removing the watch introduced in
gst_camerabin_create_preview_pipeline() so its extra ref on the bus was
never released.

https://bugzilla.gnome.org/show_bug.cgi?id=768838
2016-07-15 13:41:48 -03:00
Jan Schmidt
585e60c4ab adaptivedemux: Add more safeguards around state changes.
Make state changes of internal elements more reliable by locking
their state, and ensuring that they aren't blocked pushing data
downstream before trying to set their state.

Add a boolean to avoid starting tasks when the main
thread is busy trying to shut the element down.
2016-07-15 14:33:23 +10:00
Jan Schmidt
5fc21d5c74 adaptivedemux: Add debug code to change bitrate.
Add some disabled-by-default debugging code that forces
bitrate changes by modulating the measured bitrate every
few fragments
2016-07-15 14:33:23 +10:00
Jan Schmidt
03f96dd731 adaptivedemux: More locking/switching fixes
Try harder to make switching pads work better by
making sure concurrent downloads are finished before exposing
a new set of pads.

Release the manifest lock when signalling no-more-pads, as
that can call back into adaptivedemux again
2016-07-15 14:33:23 +10:00
Jan Schmidt
963a273f61 adaptivedemux: Don't switch streams and expose pads while downloading.
If other stream fragments are still downloading but new streams
have been scheduled, don't expose them yet - wait until the last
one finishes. Otherwise, we can cancel a partially downloaded
auxilliary stream and cause a gap.
2016-07-15 14:33:23 +10:00
Jan Schmidt
62ca319927 adaptivedemux: Drop the manifest lock during outbound actions
Drop the manifest lock when performing actions that might
call back into adaptivedemux and trigger deadlocks, such
as adding/removing pads or sending in-band events (EOS).

Unlock the manifest lock when changing the child bin state to
NULL, as it might call back to acquire the manifest lock when
shutting down pads.

Drop the manifest lock while pushing events.
2016-07-15 14:33:23 +10:00
Nirbheek Chauhan
a3d58818e8 Fix various gboolean vs GstFlowReturn problems
Caught by building with MSVC which gave warnings for these
2016-07-11 15:02:06 +01:00
Edward Hervey
e4c955e4d7 adaptivedemux: Also consider more seek flags as "snap" seeks
In the case of KEY_UNIT and TRICKMODE_KEY_UNITS seeks, we want to
"snap" to the closest fragment.

Without this, we end up pushing out a segment which does not match
the first fragment timestamp being pushed out, resulting in one or
more buffers being eventually dropped because they are out of segment.
2016-07-07 17:28:57 +02:00
Sebastian Dröge
43a2ee8948 adaptivedemux: Add custom flow return for allowing subclasses to specify when a fragment is finished
If it is finished before upstream going EOS.

https://bugzilla.gnome.org/show_bug.cgi?id=767365
2016-07-01 14:11:51 +02:00
Sebastian Dröge
ca9f62e1d0 adaptivedemux: Get rid of internal stream adapter and let subclasses handle this directly
This allows subclasses to have more control and especially ensure that they
push data downstream with the correct offsets.

https://bugzilla.gnome.org/show_bug.cgi?id=764684
2016-07-01 14:10:31 +02:00
Tim-Philipp Müller
e92894e4ab codecparsers: jpeg2000: don't allow 0 value for array access with i-1 2016-07-01 12:20:14 +01:00
Tim-Philipp Müller
1462ac7cdf codecparsers: jpeg2000: fix possible out-of-bounds array access
sizeof(array) != G_N_ELEMENTS(array).

CID 1362900
2016-07-01 12:15:28 +01:00
Matthew Waters
087bb0ed6a glviewconvert: fix transformation matrix usage
Calling glUniformMatrix before the shader is bound is invalid and
would result in errors like:

GL_INVALID_OPERATION in glUniformMatrix(program not linked)

Move glUniformMatrix() to after the gst_gl_shader_use() call.
2016-06-30 21:54:03 +10:00
Matthew Waters
e0ecd774dd glupload: fix raw data uploader with addition of GstVideoGLTextureType
Fixes regression from 989200820d

https://bugzilla.gnome.org/show_bug.cgi?id=768217
2016-06-30 14:07:32 +10:00
Olivier Crête
461201c396 glvideoconvert: RG/LA is available in OpenGL ES 3, so let that through 2016-06-29 23:55:18 -04:00
Matthew Waters
5592a966c6 Revert "Revert "gl/eagl: try getting a gles3 context""
This reverts commit eb14273631.

vtdec now successfully outputs textures that can be converted by
glcolorconvert in GLES3 contexts.
2016-06-29 18:04:28 +10:00
Matthew Waters
989200820d glmemory: add the texture type to allocate to parameters
Rather than assuming something.  e.g. zerocopy on iOS with GLES3 requires
the use of Luminance/Luminance Alpha formats and does not work with
Red/RG textures.
2016-06-29 18:04:28 +10:00
Matthew Waters
6958b7a014 glcolorconvert: don't assume Red/RG textures will be used
Take the used texture type from the memory instead.

Fixes conversion from multi-planar YUV formats with two components per plane
(NV12, NV21, YUY2, UYVY, GRAY16_*, etc) with Luminance Alpha input textures.

This is also needed for zerocopy decoding on iOS with GLES 3.x.
2016-06-29 18:04:28 +10:00
Matthew Waters
b9cdc9d4b0 glcontext: correct precondition for get_gl_version
The intention was to assert if both maj and min were NULL (as there would be no
point calling the function).  Instead if either maj or min were NULL, the assert
would occur.

Fix that.
2016-06-29 18:04:28 +10:00
Luis de Bethencourt
276dd2750f jpeg2000parse: fix typo in sampling check
Fixing small typo that changes the value of the return.
2016-06-28 12:12:29 +02:00
Aaron Boxer
e7e6a3579d jpeg2000parse: use enums for colorspace and sampling, rather than strings
Also, move gstjpeg2000sampling to codecparsers project

https://bugzilla.gnome.org/show_bug.cgi?id=767908
2016-06-24 11:23:31 +03:00
Sebastian Dröge
0e58e86c4c eglimage: Only register debug category if dmabuf support is enabled
It's not used otherwise currently and causes compiler warnings.
2016-06-23 16:00:00 +03:00
Wang Xin-yu (王昕宇)
6ed2ca373a glcontext/wgl: try wglCreateContextAttribsARB even not gl3 core profile
https://bugzilla.gnome.org/show_bug.cgi?id=764018
2016-06-21 22:57:13 +10:00
Matthew Waters
8a67cd90b3 glcontext: fix get_current_gl_api() on win32
Another case of incorrect calling conventions.

Using this function on win32 would corrupt the stack pointer and end in
massive hilarity.
2016-06-21 22:57:00 +10:00
Matthew Waters
d3f3787d64 glsl: fixup external-oes shaders by mangling the required extension
Newer devices require using a different GLSL extension for accessing
external-oes textures in a shader using the texture() functions.

While the GL_OES_EGL_image_external_essl3 should supposedly be supported
on a any GLES3 android device, the extension was defined after a lot of the
older drivers were built so they will not know about it.  Thus there are two
possible interpretations of which of texture[2D]() should be supported for
external-oes textures.  Strict adherence to the GL_OES_EGL_image_external
extension spec which uses texture2D() or following GLES3's pattern, also
allowing texture() as a function for accessing external-oes textures

This adds another mangling pass to convert
 #extension GL_OES_EGL_image_external : ...
into
 #extension GL_OES_EGL_image_external_essl3 : ...
on GLES3 and when the GL_OES_EGL_image_external_essl3 extension is supported.

Only uses texture() when the GLES3 and the GL_OES_EGL_image_external_essl3
extension is supported for external-oes textures.
Uses GLES2 + texture2D() + GL_OES_EGL_image_external in all other external-oes
cases.

https://bugzilla.gnome.org/show_bug.cgi?id=766993
2016-06-21 21:27:47 +10:00
Guillaume Desmottes
172529e151 audioaggregator: fix buffer leak
If the pad was still owning a buffer when being destroyed it was leaked.

Fix a leak with the test_flush_start_flush_stop test.

https://bugzilla.gnome.org/show_bug.cgi?id=766663
2016-06-21 10:52:47 +03:00