summaryrefslogtreecommitdiff
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* kate: unref events when freeing events listThiago Santos2014-06-271-0/+1
| | | | Instead of just feeing the queue structs
* kateenc: fix segment event leakThiago Santos2014-06-271-2/+4
| | | | gst_event_replace increments the refcount
* glshader: enable glshader on GLES2Matthew Waters2014-06-253-15/+7
|
* glcolorscale: do passthrough on same capsJulien Isorce2014-06-251-0/+3
| | | | See https://bugzilla.gnome.org/show_bug.cgi?id=732178
* gl: enable glvideomixer on GLES2Julien Isorce2014-06-253-8/+11
|
* glvideomixer: bas output width/height on the pad propertiesMatthew Waters2014-06-251-1/+50
| | | | | | | | | Allows automatic negotiation of the size in the following case: gst-launch-1.0 glvideomixer name=m sink_0::xpos=0 sink_1::xpos=320 ! glimagesink \ videotestsrc ! m. \ videotestsrc pattern=1 ! m. https://bugzilla.gnome.org/show_bug.cgi?id=731878
* glvideomixer: don't clobber already allocated shaderMatthew Waters2014-06-251-0/+3
|
* curls?ftpsink: Fix memory leaks due to new error handlingSebastian Rasmussen2014-06-242-19/+14
| | | | Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732174
* gl: XInitThreads when env variable is setMatthew Waters2014-06-241-0/+9
| | | | | | | | This is too allow gst-launch debugging with multiple GL contexts as well as avoiding segfaulting innocent gtk+ apps that have not called XInitThreads. https://bugzilla.gnome.org/show_bug.cgi?id=731525
* modplug: don't hardcode c++ standard libraryKoop Mast2014-06-221-1/+1
| | | | | | Fixes build with llvm on FreeBSD. https://bugzilla.gnome.org//show_bug.cgi?id=731930
* gl: Need to link to new badvideo library for the video aggregator base classSebastian Dröge2014-06-221-0/+1
|
* hlsdemux: Fix decrypting fragmentsThomas Bluemel2014-06-222-1/+5
| | | | | | | | Only reset the decryption engine on the first buffer of a fragment, not again for the second buffer. This fixes corrupting the second buffer of a fragment. https://bugzilla.gnome.org/show_bug.cgi?id=731968
* waylandsink: Fix compiler warningSebastian Dröge2014-06-211-1/+1
| | | | | | | | gstwaylandsink.c:480:14: error: comparison of constant -1 with expression of type 'enum wl_shm_format' is always false [-Werror,-Wtautological-constant-out-of-range-compare] if (format == -1) ~~~~~~ ^ ~~
* gl:glvideomixer: Add the Compositor in the element metadata classThibault Saunier2014-06-201-5/+3
| | | | So it is possible to pick one compositing element from the registry
* gl: Port glmixer to the GstVideoAggregator baseclassThibault Saunier2014-06-202-39/+19
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=731921
* hlsdemux: Include the debug string in the error messages we propagate from theSebastian Dröge2014-06-191-0/+8
| | | | source
* hlsdemux: Include a more descriptive error messageSebastian Dröge2014-06-191-7/+11
|
* hlsdemux: Propagate error messages from the source element up in the hierarchySebastian Dröge2014-06-192-3/+15
| | | | Instead of inventing our own generic error strings which are mostly useless.
* hlsdemux: Directly convert GErrors to error messagesSebastian Dröge2014-06-191-20/+14
| | | | | This will make sure that we don't leak debug information into the actual error message string and keep it behind the debug string.
* gstsrtpenc: unref event when neededMiguel París Díaz2014-06-181-0/+1
| | | | Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731768
* srtpenc: improve property commentsWim Taymans2014-06-181-2/+5
| | | | | | | Add a Note to the allow-repeat-tx property because it is potentially insecure when used incorrectly. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731714
* gstsrtpenc: add allow-repeat-tx propertyMiguel París Díaz2014-06-182-1/+17
|
* opengl: add element for transforming video geometryLubosz Sarnecki2014-06-184-4/+573
| | | | * add graphene as soft dependency for linear algebra
* glfiltershader: port to GLES2Matthew Waters2014-06-172-9/+97
| | | | Provide a time variable
* waylandsink/wldisplay: verify that all the required interfaces have been ↵George Kiagiadakis2014-06-171-0/+18
| | | | | | | | | | | | | | | | | | | | found on the compositor This allows waylandsink to fail gracefully before going to READY in case one of the required interfaces does not exist. Not all interfaces are necessary for all modes of operation, but it is better imho to fail before going to READY if at least one feature is not supported, than to fail and/or crash at some later point. In the future we may want to relax this restriction and allow certain interfaces not to be present under certain circumstances, for example if there is an alternative similar interface available (for instance, xdg_shell instead of wl_shell), but for now let's require them all. Weston supports them all, which is enough for us now. Other compositors should really implement them if they don't already. I don't like the idea of supporting many different compositors with different sets of interfaces implemented. wl_subcompositor, wl_shm and wl_scaler are really essential for having a nice video sink. Enough said.
* waylandsink: remove the buffer from the surface when going PAUSED -> READYGeorge Kiagiadakis2014-06-171-7/+22
| | | | | | | | | | | | This essentially hides the video and allows the application to potentially draw a black background or whatever else it wants. This allows to differentiate the "paused" and "stopped" modes from the user's point of view. Also reworded a comment there to make my thinking more clear, since the "reason for keeping the display around" is not really the exposed() calls, as there is no buffer shown in READY/NULL anymore.
* waylandsink/wlwindow: do not commit a resize when it happens due to a video ↵George Kiagiadakis2014-06-171-5/+7
| | | | | | | | | | | | info change 1) We know that gst_wayland_sink_render() will commit the surface in the same thread a little later, as gst_wl_window_set_video_info() is always called from there, so we can save the compositor from some extra calculations. 2) We should not commit a resize with the new video info while we are still showing the buffer of the previous video, with the old caps, as that would probably be a visible resize glitch.
* waylandsink/wlwindow: take into account the video aspect ratio when ↵George Kiagiadakis2014-06-171-3/+4
| | | | determining the size of the surface
* waylandsink: improve the way the video size is passed to wlwindow and also ↵George Kiagiadakis2014-06-174-35/+49
| | | | improve the code for window creation
* waylandsink: rename pause/resume_rendering to begin/end_geometry_change and ↵George Kiagiadakis2014-06-171-10/+10
| | | | update their documentation
* waylandsink: remove the manual synchronization from pause/resume_rendering ↵George Kiagiadakis2014-06-172-25/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | and use subsurface sync/desync Previously, in order to change the surface size we had to let the pipeline redraw it, which at first also involved re-negotiating caps, etc, so a synchronization with the pipeline was absolutely necessary. At the moment, we are using wl_viewport, which separates the surface size from the buffer size and it also allows us to commit a surface resize without attaching a new buffer, so it is enough to just do: gst_wayland_video_pause_rendering(): wl_subsurface_set_sync() gst_video_overlay_set_render_rectangle(): wl_subsurface_set_position() wl_viewport_set_destination() wl_surface_damage() wl_surface_commit() ... commit the parent surface ... gst_wayland_video_resume_rendering(): wl_subsurface_set_desync() This is enough to synchronize a surface resize and the pipeline can continue drawing independently. Now of course, the names pause/resume_rendering are bad. I will rename them in another commit.
* waylandsink: protect access to properties with the OBJECT_LOCKGeorge Kiagiadakis2014-06-171-0/+7
|
* waylandsink: protect access to the display with a new display_lockGeorge Kiagiadakis2014-06-172-14/+42
| | | | | | | | Access is protected only for setting/creating/destroying the display handle. set_caps() for example is not protected because it cannot be called before changing state to READY, at which point there will be a display handle available and which cannot change by any thread at that point
* waylandsink: remove the OBJECT_LOCK from set_caps()George Kiagiadakis2014-06-171-10/+3
| | | | It's not really necessary, this method is protected from GstBaseSink with the PREROLL_LOCK
* waylandsink: Replace the OBJECT_LOCK with a private render_lock to lock ↵George Kiagiadakis2014-06-172-15/+18
| | | | | | | | | render operations This is because: * GST_ELEMENT_WARNING/ERROR do lock the OBJECT_LOCK and we deadlock instantly * In future commits I want to make use of GstBaseSink functions that also lock the OBJECT_LOCK inside this code
* waylandsink: move surface resizing logic to the GstWlWindow and make it be ↵George Kiagiadakis2014-06-173-32/+77
| | | | called from the main thread
* waylandsink: cleanup GstWlWindow a bit after the overlaying semantics changeGeorge Kiagiadakis2014-06-172-45/+30
| | | | | | * own_surface is not needed anymore * gst_wl_window_from_surface is not used externally anymore * many initializations to 0 are not needed (GObject does them)
* waylandsink: create and maintain the subsurface inside the sinkGeorge Kiagiadakis2014-06-175-31/+71
| | | | | | | | | | | | | | | | | This means that the given surface in set_window_handle can now be the window's top-level surface on top of which waylandsink creates its own subsurface for rendering the video. This has many advantages: * We can maintain aspect ratio by overlaying the subsurface in the center of the given area and fill the parent surface's area black in case we need to draw borders (instead of adding another subsurface inside the subsurface given from the application, so, less subsurfaces) * We can more easily support toolkits without subsurfaces (see gtk) * We can get properly use gst_video_overlay_set_render_rectangle as our api to set the video area size from the application and therefore remove gst_wayland_video_set_surface_size.
* wayland: add public API for creating & using the display handle GstContextGeorge Kiagiadakis2014-06-171-6/+4
|
* waylandsink: get the external display handle using GstContextGeorge Kiagiadakis2014-06-172-43/+118
| | | | | | | | | | | | | | This drops the ugly GstWaylandWindowHandle structure and is much more elegant because we can now request the display separately from the window handle. Therefore the window handle can be requested in render(), i.e. when it is really needed and we can still open the correct display for getting caps and creating the pool earlier. This change also separates setting the wl_surface from setting its size. Applications should do that by calling two functions in sequence: gst_video_overlay_set_window_handle (overlay, surface); gst_wayland_video_set_surface_size (overlay, w, h);
* waylandsink: drop width/height arguments from gst_wl_window_new_from_surface()George Kiagiadakis2014-06-173-6/+9
|
* waylandsink: add G_BEGIN/END_DECLS on all headers for consistencyGeorge Kiagiadakis2014-06-173-0/+12
|
* waylandsink: fix assertion failure when stopping immediately after starting, ↵George Kiagiadakis2014-06-171-1/+1
| | | | | | | without displaying anything This was triggered in scenarios like filesrc location=nonexistent_file ! decodebin ! waylandsink
* waylandsink: Update wl_scaler to version 2George Kiagiadakis2014-06-173-20/+72
|
* waylandsink/Makefile.am: Fix scaler-client-protocol.h generationGeorge Kiagiadakis2014-06-171-0/+8
|
* waylandsink: remove unused functionsGeorge Kiagiadakis2014-06-174-31/+0
|
* waylandsink: Add myself to the authors listGeorge Kiagiadakis2014-06-171-1/+2
|
* waylandsink/wldisplay: bind to the latest available wl_compositor versionGeorge Kiagiadakis2014-06-171-2/+2
|
* waylandsink: create/destroy the display when entering/leaving the READY ↵George Kiagiadakis2014-06-171-37/+41
| | | | | | | | | | | | | | | | | | | | | state instead of PAUSED This is the only way to get the negotiation working with the dynamic detection of formats from the display, because the pipeline needs to know the supported formats in the READY state and the supported formats can only be known if we open the display. Unfortunately,in wayland we cannot have a separate connection to the display from the rest of the application, so we need to ask for a window handle when going to READY in order to get the display from it. And since it's too early to create a top level window from the state change to READY, create it in render() when there is no other window. This also changes set_window_handle() to not support window handle changes in PAUSED/PLAYING (because it's complex to handle and useless in practice) and make sure that there is always a valid display pointer around in the READY state.
* waylandsink: Support all video formats supported by the displayGeorge Kiagiadakis2014-06-171-7/+28
|