Commit graph

4288 commits

Author SHA1 Message Date
Sebastian Rasmussen
1b56e80147 dfbvideosink: Unref pad template caps after usage
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734518
2014-08-10 11:45:30 +01:00
Sebastian Rasmussen
961a704a74 gstgsmenc: Unref caps object after usage
gst_audio_encoder_set_output_format() does not consume caps, so
unreference that object instead.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=734544
2014-08-10 11:26:51 +01:00
Sebastian Rasmussen
e30f4a2851 opus: Improve annotation of internal function
https://bugzilla.gnome.org/show_bug.cgi?id=734543
2014-08-10 11:26:17 +01:00
George Kiagiadakis
ea90ceac01 dashdemux: support downloading segments in reverse order
When a seek with a negative rate is requested, find the target
segment where gstsegment.stop belongs in and then download from
this segment backwards until the first segment.

This allows proper reverse playback.
2014-08-07 16:52:37 +03:00
Matthew Waters
dab074899e glvideomixer: add a background property
That's compatible with the compositor/videomixer property

https://bugzilla.gnome.org/show_bug.cgi?id=731954
2014-08-07 19:21:02 +10:00
Thibault Saunier
0e67c13d2f ext:faad: Set rank to SECONDARY as the libav decoder is concidered better
https://bugzilla.gnome.org/show_bug.cgi?id=676131
2014-08-07 09:23:41 +02:00
Vasilis Liaskovitis
4dacc4ba55 GstGLWindow, GstGLImagesink, x11: Scale navigation events on resized windows
If window is resized, GstStructure pointer values have to be rescaled to
original geometry. A get_surface_dimensions GLWindow class method is added for
this purpose and used in the navigation send_event function.

https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-08-07 13:55:02 +10:00
Thiago Santos
24815a5feb dashdemux: return the error to the source immediately to stop faster
When flushing, this will prevent dashdemux from trying to download more
fragments or more chunks of the same fragment before stopping.

Also improves the error handling to not transform everything non-ok into
an error.

https://bugzilla.gnome.org/show_bug.cgi?id=734014
2014-08-01 10:37:15 -03:00
Matthew Waters
707cb58004 gl: document GST_GL_* environment variables
https://bugzilla.gnome.org/show_bug.cgi?id=733245
2014-08-01 16:43:47 +10:00
Robert Jobbagy
bd3cefeecc faceblur: facedetect: add properties to faceblur
Makes faceblur have the same properties as facedetect. Also improves
the standard defaults and makes them the same in the 2 elements
2014-07-30 16:43:10 -03:00
Robert Jobbagy
43a4498569 faceblur: post message when profile loading fails 2014-07-30 16:43:10 -03:00
Robert Jobbagy
555d29681b facedetect: faceblur: update launch line examples
Reflect 1.0 and more useful examples
2014-07-30 16:43:10 -03:00
Matthew Waters
13960f0043 glimagesink: keep the uploaded buffer around on successful redisplay
We might need it later to perform a redisplay.  GstGLUpload will take
of releasing the previous buffer when it receives a new buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=733726
2014-07-29 13:25:22 +10:00
David Rothlisberger
f5992a6cdd opencv templatematch: Set caps to BGR order
templatematch operates on BGR data. In fact, OpenCV's IplImage always
stores color image data in BGR order -- this isn't documented at all in
the OpenCV source code, but there are hints around the web (see for
example
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html#SECTION00041000000000000000
and http://www.comp.leeds.ac.uk/vision/opencv/iplimage.html ).

gst_templatematch_load_template loads the template (the image to find)
from disk using OpenCV's cvLoadImage, so it is stored in an IplImage in
BGR order. But in gst_templatematch_chain, no OpenCV conversion
functions are used: the imageData pointer of the IplImage for the video
frame (the image to search in) is just set to point to the raw buffer
data. Without this fix, that raw data is in RGB order, so the call to
cvMatchTemplate ends up comparing the template's Blue channel against
the frame's Red channel, producing very poor results.
2014-07-28 14:22:27 -03:00
Thiago Santos
aa5e25820b templatematch: mark pads as proxy caps
Allows negotiation to happen properly
2014-07-28 14:18:02 -03:00
William Manley
1b5483eef9 templatematch: Produce a warning message if we can't load a template image 2014-07-28 14:18:02 -03:00
William Manley
88cb33a1dc templatematch: Match rectangle grows redder with increased match certainty
This is useful for debugging your matches as it indicates how certain the
match was in addition to its position.
2014-07-28 14:18:02 -03:00
William Manley
b608767288 templatematch: Allow changing template property on the fly
Previously changing the template property resulted in an exception
thrown from cvMatchTemplate, because "dist_image" (the intermediate
match-certainty-distribution) was the wrong size (because the
template image size had changed).

Locking has also been added to allow changing the properties (e.g. the
pattern to match) while the pipeline is playing.

 * gst_element_post_message is moved outside of the lock, because it will
   call into arbitrary user code (otherwise, if that user code calls into
   gst_templatematch_set_property on this same thread it would deadlock).

 * gst_template_match_load_template: If we fail to load the new template
   we still unload the previous template, so this element becomes a no-op
   in the pipeline. The alternative would be to keep the previous template;
   I believe unloading the previous template is a better choice, because it
   is consistent with the state this element would be in if it fails to
   load the very first template at start-up.

Thanks to Will Manley for the bulk of this work; any errors are probably
mine.
2014-07-28 14:18:01 -03:00
David Rothlisberger
c77808055d templatematch: Pass video through when nothing to match against
The early return was bypassing the call to gst_pad_push. With no
filter->template (and thus no filter->cvTemplateImage) the rest of this
function is essentially a no-op (except for the call to gst_pad_push).

This (plus the previous commit) allows templatematch to be
enabled/disabled without removing it entirely from the pipeline, by
setting/unsetting the template property.
2014-07-28 14:17:28 -03:00
William Manley
056d652b92 templatematch: Remove no-op call to gst_templatematch_load_template
We have just set filter->template to NULL, so
gst_templatematch_load_template did nothing.
2014-07-28 11:26:13 -03:00
Matthew Waters
13c63154b0 glimagesink: silence gsignal warning
instance '0xblah' has no handler with id '13'
2014-07-27 13:27:10 +10:00
Matthew Waters
5291ba37d9 glimagesink: remove extra argument from debug call 2014-07-24 13:05:00 +10:00
Vasilis Liaskovitis
90a4444609 glimagesink: Add navigation interface and callbacks for GstGLWindow mouse/key signals
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-07-24 12:48:57 +10:00
Wang Xin-yu (王昕宇)
1adb0a77d6 gl: fix multi gl object leaks
1. fix FBO leaks in decide_allocation
2. fix texture leaks in decide_allocation and reset
3. fix texture leaks in FBO incomplete error path
2014-07-24 11:46:56 +10:00
Nicola Murino
bd4ae18938 facedetect: improve enum GstFaceDetectUpdates descriptions
https://bugzilla.gnome.org/show_bug.cgi?id=730509
2014-07-22 06:39:21 -03:00
Nicola Murino
3896dd8413 facedetect: make updates on_change works as expected
https://bugzilla.gnome.org/show_bug.cgi?id=730509
2014-07-22 06:39:21 -03:00
Thiago Santos
e26e112e80 katedec: handle segment event earlier
Delaying the segment event to when caps are decided can cause issues as
the first thing katedec does on its chain function it doing a segment clip.
It will lead to an assertion if the segment format is undefined

https://bugzilla.gnome.org/show_bug.cgi?id=733226
2014-07-21 12:36:19 -03:00
Thiago Santos
b0e63bbb9b katedec: handle streamheaders in caps
Properly handle the caps event by configuring the kate decoding lib using the
available streamheaders. This makes it possible to decode kate subtitles when
the stream is seeked before katedec gets the initial buffers that are usually
the streamheaders.

https://bugzilla.gnome.org/show_bug.cgi?id=733226
2014-07-21 12:36:19 -03:00
Sebastian Dröge
c42595cc69 openni2src: Fix unitialized variable compiler warning
gstopenni2src.cpp:721:14: error: variable 'oni_ts' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:752:26: note: uninitialized use occurs here
  GST_BUFFER_PTS (buf) = oni_ts - src->oni_start_ts;
                         ^~~~~~
gstopenni2src.cpp:721:10: note: remove the 'if' if its condition is always true
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:721:14: error: variable 'oni_ts' is used uninitialized whenever '&&' condition is false [-Werror,-Wsometimes-uninitialized]
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
             ^~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:752:26: note: uninitialized use occurs here
  GST_BUFFER_PTS (buf) = oni_ts - src->oni_start_ts;
                         ^~~~~~
gstopenni2src.cpp:721:14: note: remove the '&&' if its condition is always true
  } else if (src->color->isValid () && src->sourcetype == SOURCETYPE_COLOR) {
             ^~~~~~~~~~~~~~~~~~~~~~~~~
gstopenni2src.cpp:642:18: note: initialize the variable 'oni_ts' to silence this warning
  uint64_t oni_ts;
                 ^
                  = 0
2014-07-21 10:14:17 +02:00
Sebastian Dröge
429f20531f hlsdemux: Make statistics message more generic for other adaptive streaming demuxers to reuse
https://bugzilla.gnome.org/show_bug.cgi?id=725828
2014-07-21 09:37:51 +02:00
Alexander Zallesov
7f4f9f09e3 hlsdemux: Provide statistics about time to download playlists and fragments
https://bugzilla.gnome.org/show_bug.cgi?id=725828
2014-07-21 09:37:51 +02:00
Sebastian Dröge
a7e243b32e curlsshsink: Include gst.h and other stuff before anything else 2014-07-11 21:16:26 +02:00
Sebastian Dröge
1934847981 gl: Always build gstglmixer, not only when full OpenGL support is enabled 2014-07-11 13:58:55 +02:00
Sebastian Dröge
198d8dd5f1 curl: Use winsock2 instead and the GLib macro for checking if we're on Windows 2014-07-11 13:25:57 +02:00
Sebastian Dröge
0ea13d7a65 motioncells: Use no network API if not required 2014-07-11 13:25:18 +02:00
Alexey Pavlov
365d0cfb32 ext: Include winsock.h on Windows when required
https://bugzilla.gnome.org/show_bug.cgi?id=733052
2014-07-11 13:21:21 +02:00
Sebastian Dröge
acb1d5afc3 gl: Link to all required libraries but not more 2014-07-11 12:06:48 +02:00
Sebastian Dröge
92d00d0233 gl: Move GstGLMixer to the plugin for now
It depends on GstAggregator and we don't want to install headers
for that yet.

https://bugzilla.gnome.org/show_bug.cgi?id=732207
2014-07-11 09:41:05 +02:00
Philip Withnall
c57500a7f4 opus: Fix a double-unref in the Opus header code
The headers were never getting reffed when being added to the headers
list, which is later unreffed-and-freed by the caller (e.g.
gst_opus_parse_parse_frame()).

https://bugzilla.gnome.org/show_bug.cgi?id=733013
2014-07-11 09:05:32 +02:00
Nicolas Dufresne
ab29217726 glimagesink: Keep aspect ratio by default
The expected default behaviour for video sink is to maintain the
aspect ratio. Fix the default value to reflect this. The property
default was already TRUE, but the value was not initially TRUE.
2014-07-09 15:03:53 -04:00
Nicolas Dufresne
25c289f6c4 facedetect: Make cascades dir a little more portable 2014-07-04 21:13:49 -04:00
Nicolas Dufresne
09fc19b83f handdetect: Use already mapped image
No need to map again the image, it's already handled by the base class.
2014-07-04 21:13:49 -04:00
Nicolas Dufresne
efde572cec handdetect: Move size warning in set_caps so it's called once 2014-07-04 21:13:49 -04:00
Nicolas Dufresne
34e23c2e21 faceblur: Port to OpencvVideoFilter base class
This fixes issue whit black frames when special memory, like GlMemory is
in used.

https://bugzilla.gnome.org/show_bug.cgi?id=732756
2014-07-04 21:13:49 -04:00
Nicolas Dufresne
42a83d2c64 cvvideofilter: Don't try to make buffer writable
First this is handle by base transform, hence this is a no-op, and if it wasn't it
would lead to a buffer copy being leaked, and then an unreffed buffer being
pushed downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=732756
2014-07-04 21:13:11 -04:00
Nicolas Dufresne
2acdb2ecf2 cvvideofilter: Check buffer_map return value
Check the resturn value and cleanly fail if we could not mapped the buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=732756
2014-07-04 21:12:38 -04:00
Sebastian Rasmussen
77905f632e mimdec: Print invalid fourcc in error message in hex
Previously this was printed as characters which caused later processing
of the error message to sometimes warn about non-UTF-8 characters.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732715
2014-07-04 17:48:14 +01:00
Arun Raghavan
652f0b4fd2 openni2src: Add proper clean up of OpenNI2 objects
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
46a7f258a1 openni2src: Don't embed C++ objects in our GObject
Since C++ objects shoudl be properly constructed, we keep only pointers
to them and manually construct them on the heap.

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
357298c84f openni2src: Close device when stopping the stream
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
0b6eae66df openni2src: Fix timestamping
OpenNI2 makes no guarantees of timestamp starting from zero, just that
it will be a millisecond timestamp. Make timestamps start from zero
manually so things work correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
6c4269c0e5 openni2src: Make the location property not be mandatory
Our calls to device open already handle the unset location case (by
opening any available device).

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
7afb4a386a openni2src: Open device on NULL->READY
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
b6e07e77c2 openni2src: Fix deadlock when _get_caps() is called before READY
The object lock was not being dropped in the empty case. Restructured
the code a bit to make this sort of error less likely.

https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Arun Raghavan
65bddd1e0c openni2src: Mark element as a live source
https://bugzilla.gnome.org/show_bug.cgi?id=732535
2014-07-03 23:08:22 +05:30
Jan Alexander Steffens (heftig)
86080cb5cc rtmpsrc: Report limited bandwidth
Makes uridecodebin treat this source as a stream source,
allowing timeshifting.

https://bugzilla.gnome.org/show_bug.cgi?id=732335
2014-07-01 15:02:37 +02:00
Thiago Santos
f2400d7f16 faceblur: release the haar cascade 2014-06-30 11:54:41 -03:00
Sebastian Dröge
e77a93f6a8 segmentation: Release memory storage in finalize 2014-06-30 00:22:22 +02:00
Sebastian Dröge
d5e7c7bffe textoverlay: Release memory storage and resize image when caps change 2014-06-30 00:18:20 +02:00
Sebastian Dröge
2683c87863 templatematch: Release cvImages when reloading templates are changing caps 2014-06-30 00:15:38 +02:00
Sebastian Dröge
7e0503ca89 pyramidsegment: Release image when changing caps or reusing the element 2014-06-30 00:12:26 +02:00
Sebastian Dröge
e1366c29be handdetect: Release memory storage 2014-06-30 00:09:28 +02:00
Sebastian Dröge
ae1027297c faceblur: Release memory storage
And also release cvImages and memory storage when changing caps or reusing the
element.
2014-06-30 00:07:22 +02:00
Sebastian Dröge
48e95f3d6f edgedetect: Don't leak cvImages when caps are changing or the element is reused 2014-06-30 00:05:53 +02:00
Sebastian Dröge
45ac4ba663 pyramidsegment: Release memory storage when finalizing 2014-06-29 23:43:07 +02:00
Sebastian Dröge
7b63bd6348 schroenc: Remove obsolete FIXME comment 2014-06-29 23:33:20 +02:00
Sebastian Dröge
b4ef216f0b schroenc: Don't leak all input buffers 2014-06-29 23:31:50 +02:00
Sebastian Dröge
dcccabfe22 textoverlay: Free text buffer in finalize 2014-06-29 22:30:56 +02:00
Sebastian Dröge
a84320be50 glimagesink: Chain up to the parent class' finalize function 2014-06-29 22:26:47 +02:00
Sebastian Dröge
f068b64285 glimagesink: Make sure to always unref the display
Even if we didn't create a context yet.
2014-06-29 22:25:43 +02:00
Sebastian Dröge
7f7793ef79 assrender: Make static caps actually static
Otherwise we leak once caps instance on every function call.
2014-06-29 21:05:27 +02:00
Sebastian Dröge
64160a1392 kate: Use G_GSIZE_FORMAT instead of unportable %zu 2014-06-28 23:26:23 +02:00
Thiago Santos
cf76aa2a1d kate: unref events when freeing events list
Instead of just feeing the queue structs
2014-06-27 17:00:03 -03:00
Thiago Santos
c2ebc2349f kateenc: fix segment event leak
gst_event_replace increments the refcount
2014-06-27 16:59:58 -03:00
Matthew Waters
7797b15de7 glshader: enable glshader on GLES2 2014-06-25 18:26:13 +10:00
Julien Isorce
13023f2975 glcolorscale: do passthrough on same caps
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
2014-06-25 06:56:43 +01:00
Julien Isorce
6f45d00a9b gl: enable glvideomixer on GLES2 2014-06-25 06:55:11 +01:00
Matthew Waters
c37ace1844 glvideomixer: bas output width/height on the pad properties
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
2014-06-25 12:00:34 +10:00
Matthew Waters
4c02c4f004 glvideomixer: don't clobber already allocated shader 2014-06-25 10:19:42 +10:00
Sebastian Rasmussen
96c78695f9 curls?ftpsink: Fix memory leaks due to new error handling
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732174
2014-06-24 19:05:34 +02:00
Matthew Waters
5409a3ea2f gl: XInitThreads when env variable is set
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
2014-06-24 23:51:24 +10:00
Koop Mast
386e5774a7 modplug: don't hardcode c++ standard library
Fixes build with llvm on FreeBSD.

https://bugzilla.gnome.org//show_bug.cgi?id=731930
2014-06-22 21:51:21 +01:00
Sebastian Dröge
8a18ac76e1 gl: Need to link to new badvideo library for the video aggregator base class 2014-06-22 18:58:51 +02:00
Thomas Bluemel
b1fac8c781 hlsdemux: Fix decrypting fragments
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
2014-06-22 14:21:35 +02:00
Sebastian Dröge
902a9a56d0 waylandsink: Fix compiler warning
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)
      ~~~~~~ ^  ~~
2014-06-21 16:57:18 +02:00
Thibault Saunier
d516c951e7 gl:glvideomixer: Add the Compositor in the element metadata class
So it is possible to pick one compositing element from the registry
2014-06-20 19:53:33 +02:00
Thibault Saunier
4ce8b409cc gl: Port glmixer to the GstVideoAggregator baseclass
https://bugzilla.gnome.org/show_bug.cgi?id=731921
2014-06-20 19:53:33 +02:00
Sebastian Dröge
95404609c0 hlsdemux: Include the debug string in the error messages we propagate from the
source
2014-06-19 18:34:05 +02:00
Sebastian Dröge
48987fd5a1 hlsdemux: Include a more descriptive error message 2014-06-19 18:34:05 +02:00
Sebastian Dröge
1e795ccce1 hlsdemux: Propagate error messages from the source element up in the hierarchy
Instead of inventing our own generic error strings which are mostly useless.
2014-06-19 18:34:05 +02:00
Sebastian Dröge
213883eb51 hlsdemux: Directly convert GErrors to error messages
This will make sure that we don't leak debug information into the actual
error message string and keep it behind the debug string.
2014-06-19 18:34:05 +02:00
Miguel París Díaz
bf003caf9d gstsrtpenc: unref event when needed
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=731768
2014-06-18 15:54:08 +02:00
Wim Taymans
52d4b7de07 srtpenc: improve property comments
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
2014-06-18 15:37:23 +02:00
Miguel París Díaz
c1052066e8 gstsrtpenc: add allow-repeat-tx property 2014-06-18 15:33:00 +02:00
Lubosz Sarnecki
053252ccc6 opengl: add element for transforming video geometry
* add graphene as soft dependency for linear algebra
2014-06-18 20:41:03 +10:00
Matthew Waters
19e8dbd6ac glfiltershader: port to GLES2
Provide a time variable
2014-06-17 23:21:15 +10:00
George Kiagiadakis
0badc1f5fb waylandsink/wldisplay: verify that all the required interfaces have been 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.
2014-06-17 13:51:30 +02:00
George Kiagiadakis
c4616a550a waylandsink: remove the buffer from the surface when going PAUSED -> READY
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.
2014-06-17 13:51:30 +02:00
George Kiagiadakis
e5334a1f8b waylandsink/wlwindow: do not commit a resize when it happens due to a video 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.
2014-06-17 13:51:30 +02:00
George Kiagiadakis
04b0e54838 waylandsink/wlwindow: take into account the video aspect ratio when determining the size of the surface 2014-06-17 13:51:30 +02:00
George Kiagiadakis
bda600ed92 waylandsink: improve the way the video size is passed to wlwindow and also improve the code for window creation 2014-06-17 13:51:29 +02:00
George Kiagiadakis
86930cab13 waylandsink: rename pause/resume_rendering to begin/end_geometry_change and update their documentation 2014-06-17 13:51:28 +02:00
George Kiagiadakis
06639dd727 waylandsink: remove the manual synchronization from pause/resume_rendering 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.
2014-06-17 13:51:28 +02:00
George Kiagiadakis
c17521c096 waylandsink: protect access to properties with the OBJECT_LOCK 2014-06-17 13:51:28 +02:00
George Kiagiadakis
d4d46fa43a waylandsink: protect access to the display with a new display_lock
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
2014-06-17 13:51:28 +02:00
George Kiagiadakis
c323171dc1 waylandsink: remove the OBJECT_LOCK from set_caps()
It's not really necessary, this method is protected from GstBaseSink with the PREROLL_LOCK
2014-06-17 13:51:28 +02:00
George Kiagiadakis
db8caa9da4 waylandsink: Replace the OBJECT_LOCK with a private render_lock to lock 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
2014-06-17 13:51:28 +02:00
George Kiagiadakis
cffb38993d waylandsink: move surface resizing logic to the GstWlWindow and make it be called from the main thread 2014-06-17 13:51:28 +02:00
George Kiagiadakis
61e077155b waylandsink: cleanup GstWlWindow a bit after the overlaying semantics change
* 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)
2014-06-17 13:51:27 +02:00
George Kiagiadakis
07f671fcaf waylandsink: create and maintain the subsurface inside the sink
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.
2014-06-17 13:51:27 +02:00
George Kiagiadakis
b806313396 wayland: add public API for creating & using the display handle GstContext 2014-06-17 13:51:27 +02:00
George Kiagiadakis
c62ec6f815 waylandsink: get the external display handle using GstContext
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);
2014-06-17 13:51:27 +02:00
George Kiagiadakis
bd5ad17e58 waylandsink: drop width/height arguments from gst_wl_window_new_from_surface() 2014-06-17 13:51:27 +02:00
George Kiagiadakis
0187be8e0c waylandsink: add G_BEGIN/END_DECLS on all headers for consistency 2014-06-17 13:51:27 +02:00
George Kiagiadakis
882e1dd240 waylandsink: fix assertion failure when stopping immediately after starting, without displaying anything
This was triggered in scenarios like
filesrc location=nonexistent_file ! decodebin ! waylandsink
2014-06-17 13:51:27 +02:00
George Kiagiadakis
a543aef5ee waylandsink: Update wl_scaler to version 2 2014-06-17 13:51:26 +02:00
George Kiagiadakis
c86906d76c waylandsink/Makefile.am: Fix scaler-client-protocol.h generation 2014-06-17 13:51:26 +02:00
George Kiagiadakis
87949dcb07 waylandsink: remove unused functions 2014-06-17 13:51:26 +02:00
George Kiagiadakis
2f45d91ccd waylandsink: Add myself to the authors list 2014-06-17 13:51:26 +02:00
George Kiagiadakis
ec18fe8965 waylandsink/wldisplay: bind to the latest available wl_compositor version 2014-06-17 13:51:26 +02:00
George Kiagiadakis
c015a96dda waylandsink: create/destroy the display when entering/leaving the READY 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.
2014-06-17 13:51:26 +02:00
George Kiagiadakis
f6e824ecba waylandsink: Support all video formats supported by the display 2014-06-17 13:51:26 +02:00
George Kiagiadakis
de15c21413 waylandsink: fix crash in case there is no pool because of a caps negotiation error 2014-06-17 13:51:25 +02:00
George Kiagiadakis
162dbd412c waylandsink: set an empty input region on the video surface 2014-06-17 13:51:25 +02:00
George Kiagiadakis
94d02288d0 waylandsink/wlwindow: reuse code between the two constructors 2014-06-17 13:51:25 +02:00
George Kiagiadakis
a98f589aef waylandsink: increase debug messages 2014-06-17 13:51:25 +02:00
George Kiagiadakis
5bb889a3df waylandsink: Use a boolean in combination with render_cond to comply with GCond's usage documentation 2014-06-17 13:51:25 +02:00
George Kiagiadakis
66f8c1389b waylandsink: Implement expose() and handle resizing properly in non-PLAYING states 2014-06-17 13:51:25 +02:00
George Kiagiadakis
086ac4ee81 waylandsink: Use wl_scaler/wl_viewport to scale the surface in the compositor/hardware 2014-06-17 13:51:25 +02:00
George Kiagiadakis
1cbfba5034 waylandsink: Build bindings for the unstable wl_scaler spec 2014-06-17 13:51:24 +02:00
George Kiagiadakis
12444ec84e waylandsink: Set external surfaces and their child objects to use our own event queue
This fixes weird freezes because of frame_redraw_callback() not being
called from the main thread when it should with weston's toy toolkit.

It's also safer to know that frame_redraw_callback() will always be
called from our display thread... Otherwise it could be called after
the sink has been destroyed for example.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
fabc5305be waylandsink: Wait for the frame_cb to redraw and drop frames meanwhile
We are not supposed to redraw until we receive a frame callback and this
is especially useful to avoid allocating too many buffers while the
window is not visible, because the compositor may not call wl_buffer.release
until the window becomes visible (ok, this is a wayland bug, but...).
2014-06-17 13:51:24 +02:00
George Kiagiadakis
51a2c694ad waylandsink: Handle wl_buffer::release and don't reuse buffers that are not released
This is achieved by adding an extra reference on the buffers, which does
not allow them to return to the pool. When they are released, this reference
is dropped.

The rest complexity of this patch (hash table, mutex, flag, explicit release calls)
merely exists to allow a safe, guaranteed and deadlock-free destruction sequence.
See the added comment on gstwaylandsink.c for details.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
4b2d76873d waylandsink/waylandpool: remove useless munmap call
This data pointer is part of a bigger mmap'ed region,
it has not been returned from mmap itself.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
bf2232c999 waylandsink/waylandpool: call the start/stop methods of the parent class
start() makes sure that the minimum ammount of buffers requested is allocated.

stop() makes sure that buffers are actually destroyed and prevents
filling the file system when resizing the surface a lot, because the
wayland-shm-* files will stay on the file system as long as the wl_buffers
created out of them are alive.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
bf19d792d0 waylandsink/waylandpool: unlink mmaped shm files so that they don't remain on the file system 2014-06-17 13:51:24 +02:00
George Kiagiadakis
e56f305274 waylandsink: implement the GstVideoOverlay & GstWaylandVideo interfaces
This is the initial implementation, without the GstVideoOverlay.expose()
method. It only implements using an external (sub)surface and resizing
it with GstWaylandVideo.
2014-06-17 13:51:24 +02:00
George Kiagiadakis
68133361ec waylandsink: implement with stubs the GstWaylandVideo & GstVideoOverlay interfaces 2014-06-17 13:51:23 +02:00
George Kiagiadakis
26ce7f2344 waylandsink: handle the list of supported formats properly
enum wl_shm_format is not a flags enum, as it may have been in the past,
so multiple formats cannot be stored in a bitfield. Use an array instead.
2014-06-17 13:51:23 +02:00
George Kiagiadakis
873671f2b6 waylandsink/wlvideoformat: add mappings for many common formats 2014-06-17 13:51:23 +02:00
George Kiagiadakis
f800e2b4fa waylandsink: unref the buffer pool 2014-06-17 13:51:23 +02:00
George Kiagiadakis
a67b08cdd0 waylandsink/waylandpool: ref the display instead of the sink to avoid cyclic references
The reference to the sink is not really needed anyway in waylandpool,
what matters basically is that the display is active as long as the
pool is active, so we really want to reference the display object
instead of the sink.
2014-06-17 13:51:23 +02:00
George Kiagiadakis
253eafd4ef waylandsink: make the display property useful
Let the display property control the name of the display,
like in x(v)imagesink.
2014-06-17 13:51:23 +02:00
George Kiagiadakis
e7650117af waylandsink: access sink->pool in a more atomic fashion 2014-06-17 13:51:22 +02:00
George Kiagiadakis
58a4d247b3 waylandsink: remove the useless wayland_lock 2014-06-17 13:51:22 +02:00
George Kiagiadakis
350d919719 waylandsink: apply the same debug category to all the subobjects 2014-06-17 13:51:22 +02:00
George Kiagiadakis
ac9503ed65 waylandsink: cleanup header includes 2014-06-17 13:51:22 +02:00
George Kiagiadakis
ae6aebd9d5 waylandsink: split window-related code out to a new GstWlWindow class
GstWlWindow also has API ready to support subsurfaces.
2014-06-17 13:51:22 +02:00
George Kiagiadakis
05f0842572 waylandsink: remove callback and redraw_pending variables from the window structure 2014-06-17 13:51:22 +02:00
George Kiagiadakis
a7eb053708 waylandsink/waylandpool: improve debug message 2014-06-17 13:51:22 +02:00
George Kiagiadakis
0bec75a30f waylandsink/waylandpool: find the video format from the GstVideoInfo instead of accessing the sink
For the sake of isolation only. The format should be the same.
2014-06-17 13:51:21 +02:00
George Kiagiadakis
d1480124a7 waylandsink/waylandpool: refactor code
* make use of GstBufferPool::start/stop functions to allocate/deallocate memory
* get rid of struct shm_pool and do all operations cleanly inside WaylandBufferPool
* store a GstVideoInfo during configuration instead of the width & height
  and use the stride from the video info instead of hardcoding its value
2014-06-17 13:51:21 +02:00
George Kiagiadakis
f6e72c8725 waylandsink: split video format related functions out to a separate file 2014-06-17 13:51:21 +02:00
George Kiagiadakis
0ee558f4c6 waylandsink/waylandpool: move code around for better readability 2014-06-17 13:51:21 +02:00
George Kiagiadakis
1e45b1480c waylandsink: move struct shm_pool and its related functions to waylandpool.c
And also make the instance of this struct to be owned by the buffer
pool instead of the element, for the sake of isolation
2014-06-17 13:51:21 +02:00
George Kiagiadakis
549bdb4a09 waylandsink: Use XDG_RUNTIME_DIR instead of /tmp for the shm file 2014-06-17 13:51:21 +02:00
George Kiagiadakis
4208ae6203 waylandsink: remove unused variables 2014-06-17 13:51:21 +02:00
George Kiagiadakis
e600a323b7 waylandsink: process display events in a separate thread
This also moves the display-related code into a new GstWlDisplay class,
which takes care of the new thread
2014-06-17 13:51:20 +02:00
George Kiagiadakis
eb8ab3732e waylandsink: tidy up the header files 2014-06-17 13:51:20 +02:00
Matthew Waters
e00815a586 glvideomixer: silence incorrect number of arguments in format warning 2014-06-15 15:18:46 +10:00
Matthew Waters
d01d259024 glvideomixer: wire up the alpha pad property 2014-06-15 13:59:07 +10:00
Matthew Waters
b7f1015359 glvideomixer: support input frame scaling 2014-06-15 13:44:04 +10:00
Matthew Waters
5a6bef5c59 glvideomixer: add positioning of input streams
https://bugzilla.gnome.org/show_bug.cgi?id=729798
2014-06-15 12:28:45 +10:00
Matthew Waters
bb0fec7c80 glfilterapp: actually emit the client-draw signal 2014-06-12 23:17:05 +10:00
Tim-Philipp Müller
309395ed4d hls: fix build with GLib 2.32
Provide internal copy of g_list_copy_deep() until we
bump the GLib requirement.

https://bugzilla.gnome.org/show_bug.cgi?id=731555
2014-06-12 10:17:10 +01:00
Matthew Waters
d7f8cc9a78 glfilterapp: remove the reshape/draw properties
The reshape property was never used.
Replace the draw property with a signal.

Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>

https://bugzilla.gnome.org/show_bug.cgi?id=704507
2014-06-12 12:49:42 +10:00
Matthew Waters
2ed84ac40f glimagesink: replace pointer properties with signals
Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>

https://bugzilla.gnome.org/show_bug.cgi?id=704507
2014-06-12 12:18:23 +10:00
Damian Ziobro
be28578942 hlsdemux: Improve parsing quoted key URIs and apply it for I-frame-based stream URI
https://bugzilla.gnome.org/show_bug.cgi?id=730830
2014-06-06 13:13:56 +03:00
Sebastian Dröge
37ffe063f6 hlsdemux: Don't store the current key in the playlist
It's per fragment and applying to all following fragments
until the next key is specified.
2014-06-06 13:08:04 +03:00
Sebastian Dröge
008edeadae hlsdemux: Fix compiler warnings 2014-06-06 13:04:04 +03:00
Thomas Bluemel
babd8969f2 hlsdemux: Reload the variant playlist if refreshing a playlist or downloading a fragment fails
This can happen if the playlists have moved due to the variant playlist
now being redirected to another target. This currently only works as long
as the referenced playlists don't change in relation to the variant
playlist, and the new location is purely due to a new path triggered by a
new redirection target of the variant playlist, or a new redirection
target of the playlist itself.

https://bugzilla.gnome.org/show_bug.cgi?id=731164
2014-06-06 13:02:47 +03:00
Olivier Crête
e259557c5a schroenc: Use an arbitrary framerate if none if given
The schro encoder always requires a framerate, but some source material,
such as RTP doesn't have a fixed one, so just fake it.

https://bugzilla.gnome.org/show_bug.cgi?id=729054
2014-06-05 16:46:22 -04:00
Edward Hervey
5300e59f09 rtmp: proxy logging from librtmp
Helps with debugging various librtmp issues
2014-06-05 09:41:31 +02:00
Edward Hervey
3cb5bc8868 rtmpsrc: Fix position querying
It's the position we're querying, not the duration :)
2014-06-05 09:41:31 +02:00
Aleix Conchillo Flaqué
da30669589 srtp: add support for rollover counters and replay protection window size
We add a new signal, get-rollover-counter, to the SRTP encoder. Given a
ssrc the signal will return the currently internal SRTP rollover counter
for the given stream.

For the SRTP decoder we have a new SRTP caps parameter "roc" that needs
to be set when a new SRTP stream is created for a given SSRC.

https://bugzilla.gnome.org/show_bug.cgi?id=726861
2014-06-03 16:18:25 -04:00
Matthieu Bouron
dac4816823 glimagesink: improve state change debug message 2014-06-03 14:08:34 +10:00
Tim-Philipp Müller
0eed275a51 mpeg2enc: increase max. allowed value for bitrate property
For DVD the limit is around 10Mbit/s, but for e.g. ATSC
it could be much higher.
2014-06-01 10:47:17 +01:00
Nicola Murino
845d33098a motioncells: improve logging
https://bugzilla.gnome.org/show_bug.cgi?id=730141
2014-05-30 16:58:59 -03:00
Nicola Murino
f48358636b motioncells: make framedrop work at 30 fps too
https://bugzilla.gnome.org/show_bug.cgi?id=730141
2014-05-30 16:58:59 -03:00
Nicola Murino
b5cefffb9f motioncells: use standard macro for boolean
https://bugzilla.gnome.org/show_bug.cgi?id=730141
2014-05-30 16:58:59 -03:00
Matthew Waters
5eb4934750 glimagesink: unref the old buffer outside the lock
it could very well deadlock

https://bugzilla.gnome.org/show_bug.cgi?id=723529
2014-05-30 11:46:00 +10:00
Matthew Waters
1cb7e22b98 Revert "[880/906] glimagesink: remove unused stored_buffer field"
This reverts commit af3a68db7d.

Conflicts:
	ext/gl/gstglimagesink.c

https://bugzilla.gnome.org/show_bug.cgi?id=723529
2014-05-30 11:35:04 +10:00
Matthew Waters
da35876537 glfeature: remove GST_GL_API_GLES3
instead check the gl version using gst_gl_context_check_gl_version()
2014-05-30 10:29:37 +10:00
Sebastian Dröge
546feaef5c mssdemux: Always use the redirect target to resolve relative URIs
But redownload the playlists from the original URI if it's not
a permanent redirect.
2014-05-28 12:56:24 +02:00
Sebastian Dröge
ae679506b1 dashdemux: Always use the redirect target to resolve relative URIs
But redownload the playlists from the original URI if it's not
a permanent redirect.
2014-05-28 12:47:51 +02:00
Sebastian Dröge
9cb3d745db hlsdemux: Don't set base URI if there was no redirect 2014-05-28 12:47:22 +02:00
Damian Ziobro
5ca7684b7d hlsdemux: Make parsing of "-quoted key URIs more resilient
https://bugzilla.gnome.org/show_bug.cgi?id=730830
2014-05-28 10:58:21 +02:00
Sebastian Dröge
2f39a3d711 hlsdemux: Always use the redirect target to resolve relative URIs
But redownload the playlists from the original URI if it's not
a permanent redirect.
2014-05-28 10:19:40 +02:00
Matthew Waters
6ce3b82efe gl/upload: add GstGLUploadMeta object
That simply deals with the provider aspect of GstVideoGLTextureUploadMeta.
2014-05-28 14:41:35 +10:00
Julien Isorce
6c92286c6e glimagesink: make it actually honor show-preroll-frame property
https://bugzilla.gnome.org/show_bug.cgi?id=730802
2014-05-27 11:28:27 +01:00
Miguel París Díaz
93ba600ba9 opusenc: Use aux vars to minimize critical region
This avoid dead lock between gst_audio_encoder_finish_frame() and
gst_opus_enc_get_property().
Also, now bytes var is set into protected section.

https://bugzilla.gnome.org/show_bug.cgi?id=729882
2014-05-26 09:23:42 +02:00
Damian Ziobro
5b547a553d hlsdemux: Fix storing of the IV based on the media sequence number
https://bugzilla.gnome.org/show_bug.cgi?id=730574
2014-05-22 13:27:37 +02:00
L. Sorin
5edf0add57 curlsshsink: post error on bus in element, not transfer thread
Looks like this file was missed in Bug 728960:
https://bugzilla.gnome.org/show_bug.cgi?id=728960

https://bugzilla.gnome.org/show_bug.cgi?id=730459
2014-05-21 08:36:51 +02:00
Matthew Waters
37c08c58c5 gl/eglimage: add eglimage context feature
Allows us to selectively use EGLImages only when available

https://bugzilla.gnome.org/show_bug.cgi?id=728234
2014-05-20 23:37:52 +10:00
L. Sorin
9c1e66302d curlsftpsink: authenticate remote host via public key fingerprint
Expose one more libcurl option: CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.
This allows authenticating the server by the MD5 fingerprint of
the server's public key.

https://bugzilla.gnome.org/show_bug.cgi?id=723167
2014-05-20 08:58:08 +02:00
Sebastian Dröge
8070b4e043 glimagesink: Check if context creation failed before trying to use it
Otherwise we will cause assertions everywhere by passing NULL to functions
and eventually crash when dereferencing a NULL pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=730069
2014-05-19 12:25:51 +02:00
Sebastian Dröge
cbc37f389f rsvgdec: Unref handle and output state on error paths
CID 1214604
2014-05-19 09:12:14 +02:00
Nicola Murino
bd34e62872 motioncells: fix memleak
Check gst_buffer_map return and remember to unmap and free memory before
returning

https://bugzilla.gnome.org/show_bug.cgi?id=730133
2014-05-14 20:15:05 -03:00
Matthew Waters
ce561913de gl/download: update to be similar to the glupload semantics 2014-05-14 11:38:01 +10:00
Thiago Santos
a99175a31a hlssink: do not leak playlist object
In finalize, also release the playlist
2014-05-13 16:29:46 -03:00
Thiago Santos
16d969b945 dashdemux: mpdparser: properly unref gstdatetime
Avoid leaking the GstDateTime instances when summing dates

CID #1212143
2014-05-13 11:22:58 -03:00
Thiago Santos
288e8d5c0e dashdemux: mpdparser: avoid double free of segment timeline node
The parsing function already frees the old value (if any), avoid a double
free by not freeing it before calling the function without setting the
pointer to NULL

Coverity ID: 1212178
2014-05-13 10:45:29 -03:00
Thiago Santos
64bea0252b dashdemux: mpdparser: avoid double free
The _parse_url function already frees the previous pointer, avoid
freeing it before without setting to null or we have a double free.

Coverity ID: 1212181
Coverity ID: 1212180
Coverity ID: 1212179
2014-05-13 10:13:37 -03:00
Edward Hervey
8299c5b5b4 schrodec: Use pool configuration
It was leaking the config, but also not using it...

CID #1212155
2014-05-13 14:21:15 +02:00
Edward Hervey
adecec882a rsvg: Don't leak GstVideoCodecState
And avoid useless call to _get_output_state (set_output_state() already
returns it).

CID #1212160
CID #1212161
2014-05-13 14:15:24 +02:00
Edward Hervey
651a4ae2e7 dash: Don't leak GstActiveStream
CID #1212142
2014-05-13 13:52:48 +02:00
Thiago Santos
ce7319c62d mssdemux: avoid deadlocking when erroring
It might get stuck when posting the message while
a reconfigure event is being pushed upstream
2014-05-12 18:28:45 -03:00
Thiago Santos
a1f87d0b4f mssdemux: fix caps leak 2014-05-12 18:08:12 -03:00
Thiago Santos
6b8448c245 mssdemux: handle error messages from internal source
set up a bin message handler to get notified of error messages from
the internal source element
2014-05-12 18:08:12 -03:00
Thiago Santos
b627d7df83 mssdemux: Always accept the latency configure event
Upstream or internal elements are irrelevant and we should
always succeed.
2014-05-12 16:27:37 -03:00
Thiago Santos
b54367e211 mssdemux: reenable segment tracking for streams
Store the latest pushed timestamp so that mssdemux streams know
where they are in time
2014-05-12 16:27:37 -03:00
Thiago Santos
45d5859131 mssdemux: deprecate unused max-queue-size-buffers
There is no internal storage of buffers anymore
2014-05-12 16:27:37 -03:00
Thiago Santos
99a2e425de mssdemux: measure bitrate similarly to hlsdemux
new bitrate = (old bitrate + (last fragment bitrate * 3)) / 4
2014-05-12 16:27:37 -03:00
Thiago Santos
90577c3ae7 mssdemux: remove uridownloader in favor of internal source
Refactor mssdemux to remove uridownloader to use an internal
source element which reduces startup latency and provides smaller
buffers for better buffering management downstream
2014-05-12 16:27:37 -03:00
Thiago Santos
4c59f7df4c dashdemux: initialize the mutex and cond for fragment download 2014-05-12 16:27:37 -03:00
Thiago Santos
21b1d37023 dashdemux: remove unused stream uridownloader
The uridownloader for the stream fragments isn't used anymore.
2014-05-11 15:26:45 -03:00
Sebastian Dröge
d578cbf7d7 assrender: Do not try to add a feature to a caps features ANY
It does not makes sense and asserts

Based on 7f9aac386f from gst-plugins-base.
2014-05-11 07:56:50 +02:00
Tim-Philipp Müller
ab783acd7f rtmpsrc: error out if we get EOS immediately without any data
It's not really right to just go EOS as if nothing was wrong.
2014-05-10 12:57:29 +01:00
Sebastian Dröge
951bb53057 hls: Remove invalid free
data does not have to be freed at all here, it's a pointer to
an arbitrary position inside the current line. Also don't reuse
the data variable for anything else, that will cause crashes
in playlists that have the I-frame playlist URI followed by
other attributes.

CID 1212127
2014-05-09 15:30:00 +02:00
Julien Isorce
9a917fb8a9 gleffects: use gl_vtable 2014-05-08 16:08:08 +01:00
Matthew Waters
a49a371710 gl/upload: implement lazy init
Rename init_format to set_format
2014-05-08 15:33:43 +10:00
Matthew Waters
a27589629d gl: advertise GstGLMemory usage in the caps as capsfeatures
https://bugzilla.gnome.org/show_bug.cgi?id=729658
2014-05-07 21:48:57 +10:00
Thiago Santos
a5b3ba09b8 dashdemux: deprecate max-buffering-time property
It is not used as dashdemux doesn't have a internal buffer
for fragments anymore
2014-05-07 01:00:50 -03:00
Thiago Santos
e9638fe3fd dashdemux: removing old unused code
The 'catch up mode' isn't needed anymore since dashdemux
is downloading and pushing from the same thread
2014-05-07 01:00:49 -03:00
Thiago Santos
5df2edf80c dashdemux: remember to set starting fragment to new fragments 2014-05-07 01:00:49 -03:00
Thiago Santos
733c7c0f16 dashdemux: handle a few more error cases
related to missing plugins, bad URI and a lockup on dealing with
errors from the source.
2014-05-07 01:00:49 -03:00
Thiago Santos
173c353716 dashdemux: Only set timestamp to the first buffer of fragments
Setting it to the other parts of the fragment is slightly wrong
and misleading as it isn't accurate enough.
2014-05-07 01:00:49 -03:00
Thiago Santos
f09dd7e7a5 dashdemux: handle error messages from the sources
Set up a message handling function to be able to catch errors
from the source element and signal the cond to allow the download
loop to retry the download.
2014-05-07 01:00:49 -03:00
Thiago Santos
15952dcd8e dashdemux: check for errors between downloads
To abort earlier in case of failures
2014-05-07 01:00:49 -03:00
Thiago Santos
b5998a4c3b dashdemux: Always accept the latency configure event
Upstream or internal elements are irrelevant and we should
always succeed.
2014-05-07 01:00:49 -03:00
Thiago Santos
d6671e73a6 dashdemux: measure download rate just like hlsdemux
new bitrate = (old bitrate + (last fragment bitrate * 3)) / 4
2014-05-07 01:00:49 -03:00
Thiago Santos
bed3d66605 dashdemux: remove uridownloader from fragments download
Instead, use a source element linked to a ghostpad to provide
smaller buffers and more granular control for downstream
buffering elements while also reducing startup latency
2014-05-07 01:00:49 -03:00
Matthew Waters
6f4fd70867 gl/sink: make sure we always initialize the upload object
https://bugzilla.gnome.org/show_bug.cgi?id=729542
2014-05-07 09:12:23 +10:00
Thiago Santos
7dfd308e8c hlsdemux: fix internal source event leaks 2014-05-06 19:24:55 -03:00
Olivier Crête
0566be384d srtpdec: Don't reset stream if the key hasn't changed 2014-05-06 00:49:59 -04:00
Olivier Crête
b2a6490626 srtpdec: Add "remove-key" action signal to remove a single key
Removing all the keys can be a problem as it also resets the various
counters, so instead add an option to remove a single key.
2014-05-06 00:49:59 -04:00
Olivier Crête
53a4e05261 srtpenc: Use %u in templates to match rtpbin 2014-05-06 00:49:22 -04:00
Olivier Crête
8c9b1ade36 srtpdec: Remove unused field 2014-05-06 00:49:15 -04:00
Thiago Santos
b891bd04d5 hlsdemux: Only set the segment position if there is a timestamp
Only the first buffer of a fragment has its timestamp set, so only
update the segment.position when pushing those buffers to avoid
having GST_CLOCK_TIME_NONE set to the position

https://bugzilla.gnome.org/show_bug.cgi?id=729364
2014-05-05 11:35:35 -03:00
Sebastian Dröge
0ce2b0632e hlsdemux: Set Cache-Control header according to the caching requirements of the playlist 2014-05-05 09:46:06 +02:00
Sebastian Dröge
3c2fe80ab6 mssdemux: Update for uri downloader API changes 2014-05-05 09:41:51 +02:00
Sebastian Dröge
bb8227e279 dashdemux: Update for uri downloader API changes 2014-05-05 09:41:51 +02:00
Sebastian Dröge
816000f726 hls: Store allowcache playlist field in a boolean 2014-05-05 09:41:51 +02:00
Olivier Crête
5d3ce2c611 srtpenc: Add config for the replay window size 2014-05-02 17:27:56 -04:00
Olivier Crête
b51344651e srtpenc: Remove unused object members 2014-05-02 17:25:35 -04:00
Olivier Crête
820200e20e srtpenc: Remove useless structure
Remove now useless structure
2014-05-02 17:19:51 -04:00
Olivier Crête
2906fae146 srtpenc: Remove ssrc parsing from stream
It's no longer used
2014-05-02 17:19:51 -04:00
Olivier Crête
98f8bf46df srtpenc: Remove SSRC from signal, it's meaningless 2014-05-02 17:19:51 -04:00
Olivier Crête
5a38ae5a83 srtpenc: Set the SRTP key as a shared key for all SSRCs
This is already how it was used.
2014-05-02 17:19:51 -04:00
Sebastian Dröge
1aacd0a963 hlsdemux: Update for URI downloader API changes
And make sure to set refresh=TRUE when updating the playlist.
2014-05-02 10:44:41 +02:00
Sebastian Dröge
5d34b071d9 mssdemux: Update for URI downloader API changes
And include the manifest file as referer in requests, and make sure
to set refresh=TRUE when updating the manifest.
2014-05-02 10:43:06 +02:00
Sebastian Dröge
f910ffb637 dashdemux: Update for URI downloader API changes
And include the MPD file as referer in requests, and make sure
to set refresh=TRUE when updating the MPD.
2014-05-02 10:39:22 +02:00
Matthew Waters
dfc6745143 gl: use the bufferpool's upload when available
Avoids duplicating GL resources

https://bugzilla.gnome.org/show_bug.cgi?id=728872
2014-05-02 15:59:28 +10:00
Olivier Crête
775e998dab srtpdec: Only clear streams if they have been created 2014-05-01 19:16:35 -04:00
Olivier Crête
494b8e110d srtpdec: Use object debug 2014-05-01 19:10:43 -04:00
Sebastian Dröge
9c7da93b9d hlsdemux: Always succeed the LATENCY event
Upstream and our internal source is irrelevant for the latency
and we don't want the LATENCY event to ever fail.
2014-05-01 16:18:37 +02:00
Sebastian Dröge
126891e9a5 hlsdemux: Reset the last flow return before restarting the internal source
Otherwise we will never recover from previous errors, and especially
will never start again after a flushing seek if downstream returned
GST_FLOW_FLUSHING to us.
2014-05-01 16:18:37 +02:00
Sebastian Dröge
0d5dcba778 hlsdemux: Only set PTS on the first buffer of a fragment instead of setting the same on all of them 2014-05-01 16:18:37 +02:00
Thiago Santos
aea14053d1 hlsdemux: Always flush the internal proxy pads before downloading
hlsdemux can't rely on the source to push flushes on a seek on ready
as that might not make sense. So always resort to flushing the
internal proxy pads by pushing flush events from the source's src pad.

Also as the seeking is not required anymore, only seek if there is
really a byte range to be used. And store a ref to the source's
src pad to avoid doing get_static_pad for every fragment.
2014-05-01 16:18:16 +02:00
Matthew Waters
5681f78362 glcolorscale: fix operation with dual GL, GLES2 libgstgl 2014-05-01 14:11:00 +10:00
Vincent Penquerc'h
d8fb89e4e6 kate: avoid read buffer overflow in crafted stream
Coverity 1208777
2014-04-30 18:16:11 +01:00
Julien Isorce
56cca649d4 glcolorscale: use a shader on GLESv2
Otherwise you only see black frames

Fix https://bugzilla.gnome.org/show_bug.cgi?id=728947
2014-04-30 17:33:14 +01:00
Julien Isorce
a20f17e29c glimagesink: use new helper function to avoid duplicating default shader text 2014-04-30 15:35:49 +01:00
Julien Isorce
f4626ef619 gleffects: use new helper functions to avoid duplicating the same vertex shader text
And also use the default fragment shader text for the identity effect
2014-04-30 15:35:49 +01:00
Sebastian Dröge
fc38c22f1b hlsdemux: Only unref pending buffer if there is one 2014-04-30 10:14:12 +02:00
Thiago Santos
940576244c hlsdemux: Do not push last buffer after error
In decryption scenario, a buffer is always stored to be sent later
to wait for more data or EOS to be able to strip the final bytes
if requested. In case an error hapenned this buffer can be ignored
and not pushed downstream.
2014-04-29 18:49:15 -03:00
Thiago Santos
bb8887baa7 hlsdemux: flush the adapter in the end of a fragment
In case of error there might be some data left in the
adapter when EOS is received. Clear the adapter to be
able to restart again later if requested.
2014-04-29 18:49:15 -03:00
Thiago Santos
4ab1d9f21f hlsdemux: handle more error cases
Handle some more error cases:

1) When the source element fails to go to ready
2) When decryption fails
3) When there is no source to handle a specific URI
4) When the URI is invalid
2014-04-29 18:49:15 -03:00
Thiago Santos
4431388cab hlsdemux: handle errors from internal source
Set up a message handling function to catch errors from the internal
source and store the last return code to identify error situations
when returning from a fragment download.

Also moves the duration increase to after the download when we
know if it was successful or not
2014-04-29 18:49:15 -03:00
Thiago Santos
f16560c520 hlsdemux: Improve pad switching conditions
When using the internal source, hlsdemux doesn't know the caps of
the input before adding the pad, so remove the arguments that would
use that as it is always NULL.

And use an specific flag to signal when a pad switch is required.
Using the discont flag is a bad idea now because when a fragment
download fails it will lead to exposing a pad group without any
data, causing decodebin to abort.
2014-04-29 18:49:15 -03:00
Thiago Santos
587851ba10 hlsdemux: properly flush decryption status on seeks
Avoids mixing decryption of different fragments when seeking happens
and leading to broken stream output.
2014-04-29 18:49:15 -03:00
Thiago Santos
ff395a7565 hlsdemux: Track fragments duration
When receving EOS from the internal src, increase the current positon
by the fragment duration to allow correct restoring of download position
if the bitrate changes
2014-04-29 18:49:15 -03:00
Thiago Santos
2b73e86881 hlsdemux: properly stop tasks by stopping fragment download
Issue a signal to the fragment download cond to stop
the task earlier
2014-04-29 18:49:15 -03:00
Thiago Santos
60eec1443a hlsdemux: decrypt before typefinding
Make sure typefinding gets the decrypted content instead of
trying to typefind the encrypted data.
2014-04-29 18:49:15 -03:00
Thiago Santos
cc262b0923 hlsdemux: fix decryption function return
Correctly return the decrypted buffer when it succeeds and
return NULL otherwise
2014-04-29 18:49:15 -03:00
Thiago Santos
f6b0cae8b6 hlsdemux: keep connection alive between downloads
Use the same properties as uridownloader to keep connections alive
between consecutive fragments downloads.

1) set keep-alive property to true
2) keep the element in READY instead of in NULL
2014-04-29 18:17:07 -03:00
Thiago Santos
4b9d91d497 hlsdemux: create sources from uri
Instead of using always an http source, create it dynamically from
uri when needed. If not needed just replace the URI on the current
element
2014-04-29 18:17:07 -03:00
Thiago Santos
671f8c0e35 hlsdemux: do not try to run typefind again if caps is the same
Always reset the do_typefind flag if hls did typefind because
trying it on non-zero offsets doesn't make sense and will cause
assertions
2014-04-29 18:17:07 -03:00
Thiago Santos
cc033c7ca0 hlsdemux: enable download bitrate measure
Measure the download bitrate to be able to select
the best playlist.

As the buffers are directly pushed downstream and it
might block. The time is only measured from the download
until the pad push and it is started again after the push
returns.
2014-04-29 18:17:07 -03:00
Thiago Santos
c93c222786 hlsdemux: re-enable decryption after uridownloader removal
Now the decryption is done buffer by buffer instead of on the
whole fragment at once. As it expects multiples of 16 bytes a
GstAdapter was added to properly chunk the buffers.

Also the last buffer must be resized depending on the value of the
last byte of the fragment, so hlsdemux always keeps a pending buffer
as it doesn't know if it is the last one yet
2014-04-29 18:17:07 -03:00
Thiago Santos
3611759557 hlsdemux: replace uridownloader with a GstElement
The GstElement is directly linked into a ghost pad and
its buffers are pushed as received downstream. This way the
buffers are small enough and not a whole fragment that usually
causes extra latency and makes buffering harder
2014-04-29 18:17:07 -03:00
Stefan Sauer
6bb08d1267 sndfile: send a toc for the segments in the audio file 2014-04-29 18:20:30 +02:00
Julien Isorce
1525fa8bad gl: use gst_gl_platform_from_string because we support gl shareList on all platforms 2014-04-28 15:59:06 +01:00
Sebastian Dröge
b47c92df82 hlsdemux: Set Referer in requests to the playlist URI 2014-04-28 10:04:28 +02:00
Tim-Philipp Müller
dbe6fdd6bf docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-27 00:36:32 +01:00
Sebastian Rasmussen
241c3acad5 curl*sink: report errors from curl when setting options
https://bugzilla.gnome.org/show_bug.cgi?id=728960
2014-04-26 10:24:24 +02:00
Sebastian Rasmussen
c75c7a9a53 curl*sink: post error on bus in element, not transfer thread
https://bugzilla.gnome.org/show_bug.cgi?id=728960
2014-04-26 10:23:24 +02:00
Sebastian Rasmussen
13f87a1db1 curlhttpsink: allow for unconditionally disabling proxying
Previously if the proxy server hostname was the empty string
curlhttpsink would never even set the libcurl option. For libcurl
however, having a proxy server hostname be the empty string means that
proxying should be disabled even if environment variables might be set.
Now with the restriction lifted, doing this is allowed.

https://bugzilla.gnome.org/show_bug.cgi?id=728960
2014-04-26 10:21:56 +02:00
Sebastian Rasmussen
da987a3219 curl*sink: fix typos
https://bugzilla.gnome.org/show_bug.cgi?id=728960
2014-04-26 10:20:33 +02:00
Sebastian Rasmussen
bdd2676a67 curl*sink: fix some gst-indent problems
https://bugzilla.gnome.org/show_bug.cgi?id=728960
2014-04-26 10:20:11 +02:00
Julien Isorce
3db1e3e1ed gl: fails glimagesink when shader compilation went wrong
Those shaders are fixed and very simple so it should not fail
but it's worth to handle a such case.
2014-04-24 16:57:01 +01:00
Julien Isorce
673b813ab3 gl: call glClearColor before glClear 2014-04-24 16:57:01 +01:00
Sebastian Dröge
e50f264411 glimagesink: Use the pixel-aspect-ratio adjusted width/height when centering the frame in the display area
Makes sure we actually keep the display aspect ratio
2014-04-23 11:10:28 +02:00
Sebastian Dröge
ebab5b0a43 glimagesink: By default keep the display aspect ratio
Also the default for the pixel-aspect-ratio should be 1/1, not 0/1.
2014-04-23 10:58:12 +02:00
Sebastian Dröge
0662248347 gltestsrc: Unref context when creation failed and guard against that in fill() 2014-04-23 10:27:23 +02:00
Sebastian Dröge
89d2bb75d6 glimagesink: Call gst_object_unref() on the GstGL GObjects again
While they're plain GObjects it does not hurt to call gst_object_unref()
on them and potentially allows to debug reference leaks a bit easier.
2014-04-23 10:24:55 +02:00
Sebastian Dröge
38ebfb2da8 glimagesink: If creating a context or upload failed, destroy it
Fixes deadlocks in error cases when later code assumes the broken
context is actually usable.

https://bugzilla.gnome.org/show_bug.cgi?id=728761
2014-04-23 10:00:48 +02:00
Vincent Penquerc'h
467d9267a2 gl: a couple spelling/grammar fixes 2014-04-21 13:23:46 +01:00
Vincent Penquerc'h
7a3e141204 gl: guard against using a NULL window pointer
Coverity 1195145
2014-04-21 13:23:46 +01:00
Julien Isorce
09116bf10d egl/eglglessink: remove since EGLImage and iOS support have been added in glimagesink
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-04-15 18:29:53 +01:00