Commit graph

4956 commits

Author SHA1 Message Date
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
Edward Hervey
6a2e39eefa wayland: Remove dead assignment
We set it just after variable declaration

CID #1197709
2014-04-14 07:56:16 +02:00
Matthew Waters
364b01aca9 glimagesink: remove unused texture 2014-04-13 22:16:45 +10:00
Matthew Waters
d4a72b61c0 glimagesink: move upload into _prepare() 2014-04-13 22:14:52 +10:00
Sebastian Dröge
e9dbcb69cd gl: Set glimagesink rank to SECONDARY
This is a full-featured video sink now and especially should be
used instead of osxvideosink on OSX if available.
2014-04-12 22:25:14 +02:00
Sebastian Dröge
0bd53c9ccb glimagesink: First handle GL window setup, then create the context and its thread 2014-04-12 17:01:09 +02:00
Aleix Conchillo Flaqué
01c15547d4 srtpdec: fix assertion checking ssrc from rtcp packets
rtcp_buffer_get_ssrc is called even with RTP buffers. this means we
might end up with an exception and not find any valid RTCP packet type
and thus hit GST_RTCP_TYPE_INVALID. we now take care of this.

https://bugzilla.gnome.org/show_bug.cgi?id=727512
2014-04-12 05:08:20 +02:00
Matthew Waters
15d0c04933 gl/mem: allocate the memory per plane
This patch provides the basic infrastructure required for this.
Upload and Download has been ported to this.

Has the nice effect of allowing GstGLMemory to be our
refcounted texture object for any texture type (not just RGBA).

Should not lose any features/video formats.
2014-04-11 10:37:06 +10:00
Matthew Waters
95abfda139 gl: add colorconvert object that converts between color spaces/formats
Currently used by both upload and download objects separately.
2014-04-11 10:37:05 +10:00
Vincent Penquerc'h
aa2b8f179e faac: fix faac API error checking
Coverity 1139790
2014-04-10 17:55:21 +01:00
Vincent Penquerc'h
2e940ba253 dashdemux: do not ignore failure to register typefinder
Coverity 1139629
2014-04-10 17:52:02 +01:00
Vincent Penquerc'h
2dd898793e dashdemux: fix time leak
Coverity 1147016
2014-04-10 17:48:03 +01:00
Vincent Penquerc'h
59654c68ee dashdemux: remove dead code and variable
A recent commit made stream not able to be NULL, ending up with
a flag being always set to FALSE when it matters.

Coverity 1146968, 1147012
2014-04-10 17:46:32 +01:00
Vincent Penquerc'h
bbda6a1ab9 curl: remove unneeded NULL check
We just checked for NULL and allocated if it was. And glib aborts
if it can't allocate, I'm told.

Coverity 1139841
2014-04-10 17:37:22 +01:00
Vincent Penquerc'h
feede7ddfa curl: remove duplicate assignment
Coverity 1197708
2014-04-10 17:33:55 +01:00
Sebastian Dröge
f82d9ec4a9 hlsdemux: Also update the sequence position when updating non-live playlists 2014-04-10 16:53:42 +02:00
Sebastian Dröge
a06d4ea408 hlsdemux: Try reloading the playlist first if downloading a fragment fails
But only add this for non-live playlists. For live playlists we already
have another thread that is periodically updating playlists.

Reason for this is that sometimes downloading a fragment can fail because
the URIs have changed or expired since last time.
2014-04-10 15:06:53 +02:00
Sebastian Dröge
864399f299 hlsdemux: When updating a non-live playlist make sure to find the current sequence by time
Sequence numbers in different playlists are not guaranteed to be the same for the
same position, e.g. fragments could have different durations in different playlists.

In theory we should do exactly the same for live playlists, but unfortunately we can't
because doing this kind of seeking requires the complete playlist since we started
playback. For live playlists the server is however dropping fragments in the beginning
over time and we have no absolute time references.
2014-04-10 15:06:53 +02:00
Vincent Penquerc'h
14f8172d2b smoothstreaming: avoid using an uninitialized manifest
If we did not set the manifest yet, early out in the seeking query.

Coverity 1139737
2014-04-10 09:51:07 +01:00
Vincent Penquerc'h
b3a18a2fcc hlssink: catch failure to write playlist file
Coverity 1139613
2014-04-09 18:44:38 +01:00
Vincent Penquerc'h
e308986807 kate: fix implicit promotion to signed int breaking on largeish inputs
Coverity 1139858, 1139857
2014-04-09 18:31:31 +01:00
Vincent Penquerc'h
14dc7839cf ladspa: remove duplicate assignment
Coverity 1139706
2014-04-09 18:16:52 +01:00
Vincent Penquerc'h
0e3c1f6e3a mimdec: fix open error checking
Coverity 206364
2014-04-09 18:12:58 +01:00
Vincent Penquerc'h
956be9a018 schrodec: remove unnecessary check
The tag was dereferenced earier. From the libschroedinger code,
it's not obvious to see whether tag and frame would be NULL at
the same time. I think is likely that both will be non NULL
here, but that's not certain. Additional tests may be needed
to avoid dereferencing tag and/or frame, but what to do if
only one is NULL isn't obvious, as the _get_tag function does
transfer ownership so isn't undoable.

Coverity 1139850
2014-04-09 17:53:57 +01:00
Vincent Penquerc'h
88879654df smoothstreaming: remove unnecessary check
The function is static, the only call site passes a non NULL
pointer, and the pointer is dereferenced before anyway.

Coverity 1139839
2014-04-09 17:10:06 +01:00
Vincent Penquerc'h
54704b6f5d srtp: remove dead assignment
Coverity 1197707
2014-04-09 16:55:30 +01:00
Vincent Penquerc'h
612cdeec80 resindvd: avoid crashing in pathological case
When we'd see an unknown stream type, then a SDDS stream.
Then we'd get to the end of the switch with a NULL temp stream
pointer, and dereference it.

Coverity 1139708
2014-04-09 14:37:48 +01:00
Vincent Penquerc'h
25d4ca70c9 opus: add missing va_end in variadic function
Coverity 1139944
2014-04-09 11:03:17 +01:00
Vincent Penquerc'h
084c4d5dc4 mpeg2enc: remove dead assignment
Coverity 1139829
2014-04-09 10:33:10 +01:00
Vincent Penquerc'h
9eab659d1d gl: pass large structure by const pointer, not value
Avoids large pointless memcpy.

Coverity 206236, 206237
2014-04-09 10:31:19 +01:00
Vincent Penquerc'h
fd6a4f7372 flite: fix off by one in channel mask building
The first loop would shift 1 by 64, which is either undefined
or implementation defined, instead of clearing the top bit.

Coverity 1197691
2014-04-08 17:35:37 +01:00
Vincent Penquerc'h
a78e516cbf hls: restore NULL test mistakenly removed
Thanks to tpm for point out I'm an idiot.
2014-04-08 17:10:27 +01:00
Vincent Penquerc'h
c319b1cc8f hls: only set DISCONT flag on a valid buffer
Recent refactoring causes this code to be called with either a NULL
fragment, or a non NULL fragment. In the former case, we don't have
a buffer. In the latter case, the original code dealing with DISCONT
assumed the buffer was valid. Testing for a NULL buffer here thus
does not seem to change the intent, and fixes:

Coverity 1195147
2014-04-08 16:56:04 +01:00
Vincent Penquerc'h
45b8225a02 hls: bring NULL test before dereference
Coverity 1195168
2014-04-08 16:46:56 +01:00
Vincent Penquerc'h
4b5068f5dd gl: test for frame NULLness before dereferencing it
Coverity 1195172, 1195171
2014-04-08 16:25:51 +01:00
Vincent Penquerc'h
db7934233f resindvd: guard against overflow in audio subtitle streams
Turns out there was the same issue as with subtitles.

There is space for a single audio stream, but up to 255
may be used based on a uint8_t value in a struct, which may
or may not be read from the (untrusted) data.
A comment in ifo_types.h says this value is either 0 or 1, so
we can ensure this here without drawbacks.

Coverity 1139585
2014-04-08 14:24:31 +01:00
Vincent Penquerc'h
380f95ea01 resindvd: guard against overflow in menu subtitle streams
There is space for a single subtitle stream, but up to 255
may be used based on a uint8_t value in a struct, which may
or may not be read from the (untrusted) data.
A comment in ifo_types.h says this value is either 0 or 1, so
we can ensure this here without drawbacks.

Coverity 1139586
2014-04-08 14:21:53 +01:00
Vincent Penquerc'h
57a138df86 dtsdec: fix buffer overflows
Channels can be up to 7. Also add a guard in case more can be
returned in the future.

Coverity 1139820, 1139821
2014-04-08 12:41:16 +01:00
Edward Hervey
eb0a307e28 soundtouch: Add missing break in switch
Whoops, modifying the pitch when modifying the output rate ...

CID #1139749
2014-04-08 11:23:50 +02:00
Edward Hervey
2e808ca1e9 rsvg: Add missing break in switch statement
This wasn't fatal before (worst case it would clear an already empty
adapter).

CID #1139758
2014-04-08 11:21:44 +02:00
Edward Hervey
8ca5387b0f mpeg2enc: Add missing break in switch
QUERY_CAPS is fully handled, we don't need to passthrough to the default
handler.

CID #1139756
2014-04-08 11:20:29 +02:00
Edward Hervey
334bcd433b bz2: Initialize variables
There is a small chance that we might end up in the done step without
having any output available.

Furthermore, when going through not_ready, we need to ensure gst_buffer_unmap
has a properly initialized GstMapInfo.

CID #1139923
CID #1139924
CID #1139919
CID #1139920
2014-04-08 09:55:15 +02:00
Sebastian Dröge
82b7c915bb glimagesink: Create GL context and set up window from the streaming thread
gst_gl_context_create() might need to dispatch some operations to the
application's main thread, and calling this in the change_state function
can cause deadlocks.
2014-04-07 11:21:07 +02:00
Wim Taymans
ff5d1a18f3 wildmidi: fix possible uninitialized variables 2014-04-03 11:54:41 +02:00
Wim Taymans
6c014f7e36 mpdparse: only add location when node existed
Actually return FALSE when the location node was non-existing
Only add the location node when it existed
2014-04-03 11:48:07 +02:00
Matthew Waters
e01e2cce9f gl: pass video info's by reference 2014-04-02 23:05:47 +11:00
Matthew Waters
98c486025a gl: fix array initialization 2014-04-02 23:05:11 +11:00
Matthew Waters
cb8f90e4c3 glbumper: remove redundant check 2014-04-02 22:54:55 +11:00
Matthew Waters
5b0da41038 gl: fix assignment of temporary variables 2014-04-02 22:43:41 +11:00
Matthew Waters
e58cd96b96 gl: avoid adding a NULL pool to propose allocation 2014-04-02 22:42:50 +11:00
Matthieu Bouron
820685409e dashdemux: use correct print format for gint64
https://bugzilla.gnome.org/show_bug.cgi?id=727385
2014-03-31 14:50:17 +02:00
Sebastian Dröge
b86e502a8b hlsdemux: Handle errors when switching playlists properly 2014-03-30 19:22:25 +02:00
Sebastian Dröge
89ca4535eb hlsdemux: Go EOS if the end of the segment is reached 2014-03-30 19:22:25 +02:00
Sebastian Dröge
911023eb88 hlsdemux: Store buffer end position in segment.position 2014-03-30 19:22:24 +02:00
Sebastian Dröge
f701755b83 hlsdemux: Don't set the segment offset
It's causing wrong running times after seeks or bitrate
switches.
2014-03-29 10:33:45 +01:00
Sebastian Dröge
e11a99e26a hlsdemux: Set DISCONT flag on all buffers in reverse playback mode 2014-03-29 10:33:45 +01:00
Sebastian Dröge
8109ed8785 hlsdemux: Fix forwards and backwards searching in the files list 2014-03-29 10:33:45 +01:00
Sebastian Dröge
6039734f3e hlsdemux: Unset DTS of all buffers
We won't get a valid DTS from the source.
2014-03-29 10:33:45 +01:00
Sebastian Dröge
cad284e843 hlsdemux: Send flush start event before waiting for the tasks to finish
Otherwise we'll wait until buffers are completely processed downstream,
which might take quite some time.
2014-03-29 10:33:45 +01:00
Sebastian Dröge
91ec00a0c0 hlsdemux: Implement trick modes via I-frame variant lists 2014-03-29 10:33:45 +01:00
Sebastian Dröge
77231ab957 hlsdemux: Implement parsing of #EXT-X-I-FRAME-STREAM-INF
These are I-frame-only variant lists that can be used
for trick mode playback.
2014-03-29 10:33:45 +01:00
Rico Tzschichholz
d10fcf4d3f build: Fix make dist 2014-03-28 20:02:40 +00:00
Julien Isorce
7dd3b2fff7 eglglessink: unref last buffer on DRAIN
Similar to 093574053f
in gstbasesink

https://bugzilla.gnome.org/show_bug.cgi?id=726107
2014-03-28 11:54:45 +00:00
Reynaldo H. Verdejo Pinochet
2008ec409b eglglessink: fix wrong doc block for create_window
Wrong since 1ad253b9 when prop name was changed from
can_create_window to create_window.
2014-03-27 18:54:27 -03:00
Julien Isorce
75c92dc915 gl: only set CAPS_FEATURE_MEMORY_EGL_IMAGE on egl platform 2014-03-27 07:07:01 +00:00
Julien Isorce
218244a040 gl: let the user includes itself our egl headers if needed
Forgot to address this change.

https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 19:17:03 +00:00
Julien Isorce
0ae3c984aa gl: add EGLImage support
* picked from old libgstegl:
  - GstEGLImageMemory
  - GstEGLImageAllocator
  - last_buffer management from removed GstEGLImageBufferPool

* add-ons:
  - GstEGLImageMemory now old a reference on GstGLContext
    so that it can delete the EGLImage and its gltexture source
    while having the associated gl context being current.
  - add EGLImage support for GstVideoGLTextureUploadMeta which
    mainly call EGLImageTargetTexture2D
  - GstGLBufferPool now supports GstEGLImageAllocator
  - glimagesink / glfilters / etc.. now propose GstEGLImageAllocator
    to upstream

https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 19:09:13 +00:00
Jan Schmidt
6b784cf808 rtmpsink: Remove URL check for valid playpath.
The playpath is an optional component of the URL - don't require it.
2014-03-26 09:05:55 +11:00
Wim Taymans
9adb1734cf srtpenc: unlock object lock before posting error
Posting an error with the object lock will deadlock. Rework the code
a bit to make things more simple.
2014-03-25 17:46:32 +01:00
Gwenole Beauchesne
21b897de2f gl: fix out-of-source builds.
Always use the locally generated <gst/gl/gstglconfig.h> file.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2014-03-24 17:56:13 +01:00
Matthew Waters
faa94a8737 gl: silence a critical if upstream does not provide us with meta params 2014-03-20 07:01:01 +11:00
Julien Isorce
fa4ce072ee gl: silence warnings building for RPI related to 'vcos_*'
Similar than 1190a79b19
2014-03-19 14:43:13 +00:00
Julien Isorce
e870244e39 gl: keep only one occurence of '#include <EGL/egl.h>'
To simply maintainance if we need to put specific includes around it.
2014-03-19 14:43:13 +00:00
Thijs Vermeir
1a5560441d make: whitespace cleanups 2014-03-17 12:00:09 +01:00
Matthew Waters
6b3fe44185 Move gst-plugins-gl to bad 2014-03-16 15:17:59 +01:00
Matthew Waters
870503dc6b gl: silence all the compiler warnings 2014-03-16 15:17:44 +01:00
Matthew Waters
4bdf5f336a move gl elements to ext subdirectory 2014-03-16 11:23:16 +01:00
Matthew Waters
b90d824626 [838/906] gl: Use GL_TEXTURE_2D instead of GL_TEXTURE_RECTANGLE
We create our textures (in Desktop GL) with GL_TEXTURE_RECTANGLE,
vaapi attempts to bind our texture to GL_TEXTURE_2D which throws a
GL_INVALID_OPERATION error and as thus, no video.

Also, by moving exclusively to GL_TEXTURE_2D and the npot extension
we also remove a difference between the Desktop GL and GLES2 code.

https://bugzilla.gnome.org/show_bug.cgi?id=712287
2014-03-15 18:37:03 +01:00
Matthew Waters
a5b877fb13 [717/906] remove outdated cmake build files 2014-03-15 18:36:56 +01:00
Matthew Waters
13067b104c [704/906] Use gst_object_[un]ref so we can get refcounts in the log 2014-03-15 18:36:56 +01:00
Matthew Waters
c52b138a8d [604/906] gst_element_class_set_details_simple() => gst_element_class_set_metadata() 2014-03-15 18:36:50 +01:00
Matthew Waters
93f7e993ad [603/906] update FSF address 2014-03-15 18:36:50 +01:00
Matthew Waters
3affb44884 [544/906] fix memory leaks from not g_free()ing string returned by gst_element_get_name 2014-03-15 18:36:46 +01:00
Matthew Waters
6f2acb94c6 [502/906] Update versioning for gstreamer 1.0
Renames GST_MAJORMINOR to GST_API_VERSION in build files
removes -lgstinterfaces from _LDADD flags
2014-03-15 18:36:44 +01:00
Julien Isorce
b88351ad0c [488/906] libvisual-gl: full compatibility with projectM-libvisual if libprojectM >= 2.0.1
Fix bug #310775
2014-03-15 18:36:43 +01:00
Julien Isorce
6f1530c658 [486/906] libvisual-gl: add minimal support to libvisual plugins that uses Framebuffer objects
Fix bug #310775

gst-launch audiotestsrc ! libvisual_gl_projectM ! glimagesink is working
but for now you cannot append any other opengl filters between
libvisual_gl_projectM and glimagesink because our FBO is turned OFF.

It would require that libvisual allows to split rendering between
pass1,2,3... and final rendering. In order to unbind our FBO before
the passN, and then rebind it just before the final libvisual rendering.
2014-03-15 18:36:43 +01:00
Julien Isorce
c298f99b5d [484/906] libvisual_gl: correctly setup depth and blend functions 2014-03-15 18:36:43 +01:00
Jonathan Matthew
a3cc71ae5f [482/906] ext: Add a libvisual plugin wrapping opengl libvisual
Fix bug #202069
2014-03-15 18:36:42 +01:00
Sebastian Dröge
7ddd67baef hlsdemux: Always calculate the current download rate
Also take into account the last download rate when
calculating it.
2014-03-12 12:35:22 +01:00
Aurélien Zanelli
da601be78f sbcenc: Allow user to set channel-mode
Don't return error when channel-mode is already set, just check that it
is coherent with number of channels.

https://bugzilla.gnome.org/show_bug.cgi?id=726098
2014-03-12 09:06:33 +01:00
Sebastian Dröge
bd54a212d3 hlsdemux: Fix comparison in bitrate selection 2014-03-09 20:50:44 +01:00
Sebastian Dröge
c9bb878fe5 m3u8: Fix off-by-one in the download range end 2014-03-07 16:24:19 +01:00
Sebastian Dröge
d2880dce68 hlsdemux: Implement proper segment handling
https://bugzilla.gnome.org/show_bug.cgi?id=695846
https://bugzilla.gnome.org/show_bug.cgi?id=723268
2014-03-06 23:16:56 +01:00
Sebastian Dröge
cd02546089 hlsdemux: Implement handling of byte ranges 2014-03-06 16:36:10 +01:00
Zallesov
7ed08a1326 hlsdemux: Fix seeking further than track duration
Don't fail the seek but instead send an EOS event from the streaming thread.
2014-03-06 09:39:22 +01:00
Sebastian Dröge
5d5ca5139e hlsdemux: Switch playlists after pushing the fragment
Makes sure we properly set the discont flag for the next buffer,
not the current one.
2014-03-05 20:44:02 +01:00
Matthieu Bouron
4da4dfc4bf assrender: handle video/x-raw(ANY) if downstream supports the GstVideoOverlayCompositionMeta API
https://bugzilla.gnome.org/show_bug.cgi?id=721950
2014-03-05 20:41:20 +01:00
Sebastian Dröge
0a32c5f7a4 hlsdemux: Implement proper handling of discontinuities
It's not really correct yet for seeks but better than what
we had before.

See https://bugzilla.gnome.org/show_bug.cgi?id=695846
2014-03-01 17:15:54 +01:00
Aleix Conchillo Flaqué
a04fe75047 srtpenc: unref caps after gst_query_set_caps_result
https://bugzilla.gnome.org/show_bug.cgi?id=725412
2014-03-01 16:40:39 +01:00
Alex Ashley
b7ef52c515 hlsdemux: Segfaults if playlist has no media files
hlsdemux causes a null pointer dereference if the media playlist
does not contain any media files. The gst_m3u8_client_get_duration
function assumes that demux->client->current->files is valid when
computing duration.

gst_m3u8_client_update needed to be modified to check for the
case of downloading an M3U8 file that doesn't contain any media
files, and returning an error to gsthlsdemux.c

This bug can be reproduced by creating a master m3u8 file that
contains one media playlist that points back to the master m3u8
file.  For example create a file called bug725134.m3u8:
  #EXTM3U
  #EXT-X-VERSION:4
  #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS="avc1.42001f mp4a.40.2", RESOLUTION=640x352
  bug725134.m3u8

https://bugzilla.gnome.org/show_bug.cgi?id=725134
2014-03-01 16:34:59 +01:00
Sebastian Dröge
8284f7bc61 openalsrc: Remove unused function to fix compiler warning 2014-02-27 21:45:34 +01:00
Sebastian Dröge
874af7db4e hlsdemux: Init and clear a mutex
GLib initialises automatically for us for some reason... but of course
does not clear the mutex once the demuxer is destroyed.
2014-02-27 15:50:12 +01:00
Sebastian Dröge
5f0a5c3594 hlsdemux: Unref seek events before returning from the seek handler
Otherwise we leak them all.
2014-02-27 15:41:30 +01:00
Alex Ashley
161254d7c0 hlsdemux: Fix parsing of CODECS and RESOLUTION
hlsdemux does not check for the '"' character in #EXT-X-STREAM-INF
attributes. The CODECS parameter is an example of an attribute
that might use the '"' symbol and might contain a ',' character
inside this quoted string.

For example: CODECS="avc1.77.30, mp4a.40.2"

hlsdemux does not correctly parse the RESOLUTION attribute, it
assumes that an '=' character is used to delineate the width
and height values, but the HLS RFC states that a 'x' character
must be used as the delimiter between width and height.

https://bugzilla.gnome.org/show_bug.cgi?id=725140
2014-02-26 09:23:22 +01:00
Alex Ashley
91775a1abd hlsdemux: Fix for URLs that contain a '/' in the query parameter
If the URL for the master manifest files contains a '/' character
in the query parameter (for example
http://example.net/1054559_h264_1500k.mp4/master.m3u8?acl=/*1054559_h264_1500k.mp4),
hlsdemux is incorrectly converting the relative URLs of the media
playlists in to absolute URLs. It is incorrectly using the last '/' it
finds in the URL. According to RFC3986 the '/' character is allowed in
the query part of the URL.

https://bugzilla.gnome.org/show_bug.cgi?id=725137
2014-02-26 09:20:58 +01:00
Julien Isorce
966fb81db0 eglglessink: move GstEGLImageBufferPool to gstegl lib
https://bugzilla.gnome.org/show_bug.cgi?id=706054
2014-02-25 17:29:18 +00:00
Sebastian Dröge
b3a7242910 hlsdemux: Keep track of timestamps by adding them up during playback
...instead of adding them from the start of playlist every time. This
among other things fixes timestamps for live streams, where the playlist
is some kind of ringbuffer of fragments and thus adding from the beginning
of the playlist will miss the past fragments.

https://bugzilla.gnome.org/show_bug.cgi?id=724983
2014-02-23 15:18:22 +01:00
Sebastian Dröge
090bf91974 hlsdemux: Deprecate fragments-cache property
The buffering/caching is handling completely different now and
outside of hlsdemux.
2014-02-23 11:01:57 +01:00
Brendan Long
7f591f9c7e katedec: Merge new tags with existing tags to prevent overwriting demuxer tags
https://bugzilla.gnome.org/show_bug.cgi?id=724699
2014-02-23 10:52:15 +01:00
Sebastian Dröge
b47a4faf5f ext: Use Codec/Demuxer/Adaptive for the adaptive streaming demuxers 2014-02-23 00:11:04 +01:00
Sebastian Dröge
a51116add3 hlsdemux: Refactor threading and downloading
We now download fragments as fast as possible and push them downstream
while another thread is just responsible for updating live playlists
every now and then.

This simplifies the code a lot and together with the new buffering
mode for adaptive streams in multiqueue makes streams start much faster.

Also simplify threading a bit and hopefully make the GstTask usage safer.
2014-02-23 00:10:45 +01:00
Sebastian Dröge
76e74547c7 hlsdemux: Only switch pads if the caps are changing 2014-02-23 00:10:45 +01:00
Chris Bass
6342d225bf dashdemux: ensure segments aren't fetched before they're available
Incorrect time scaling in gst_dash_demux_wait_for_fragment_to_be_available()
means that media segments are fetched before their availablity time. This
patch fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=724875
2014-02-22 16:29:13 +01:00
Chris Bass
462c04cade dashdemux: initialise demux->last_manifest_update
demux->last_manifest_update is not initialised at startup, with the
effect that live manifests are reloaded immediately after the download
loop begins. This patch fixes this.

https://bugzilla.gnome.org/show_bug.cgi?id=724790
2014-02-20 20:26:25 +01:00
Andoni Morales Alastruey
99feef2d08 hlsdemux: fix update interval with respect of the spec 2014-02-14 13:07:39 +01:00
Sebastian Dröge
e40b72bc9b hlsdemux: Ignore empty lines in the playlist
Based on a patch by Andoni Morales.
2014-02-12 18:50:09 +01:00
Sebastian Dröge
65c1faf553 hlsdemux: Make sure to ignore \r in line endings in every case 2014-02-12 18:47:45 +01:00
Sebastian Dröge
13997abbf9 hlsdemux: Give a proper name to the srcpads and remove it when resetting the element 2014-02-12 18:27:21 +01:00
Sebastian Dröge
adea24cdf8 hlsdemux: Stop leaking GErrors in some error paths 2014-02-12 16:46:31 +01:00
Gil Pedersen
62ddd34807 hlsdemux: don't pause task when it is stopped
This fixes a potential dead-lock situation from GstTask

https://bugzilla.gnome.org/show_bug.cgi?id=675869
2014-02-12 16:04:52 +01:00
Sebastian Dröge
281f2f3590 hlsdemux: Wait for the update task to finish when shutting down 2014-02-12 16:01:05 +01:00
Sebastian Dröge
4dcacc1773 hlsdemux: Prevent rounding errors due to division by using gst_util_uint64_scale() 2014-02-12 15:33:06 +01:00
Arnaud Vrac
6e54b8ee53 hlsdemux: schedule next update based on the fragment duration 2014-02-12 15:18:29 +01:00
Sebastian Dröge
05efcbf757 hlsdemux: Properly error out if caps can't be typefind instead of using NULL caps 2014-02-12 15:16:23 +01:00
Arnaud Vrac
63e18bb7bf hlsdemux: log fragment timestamp 2014-02-12 14:39:15 +01:00
Sebastian Dröge
dc45d236d2 hlsdemux: Use g_ascii_xdigit_value() instead of our own version of it 2014-02-12 14:10:02 +01:00
Sebastian Dröge
a84220a658 hlsdemux: Error out if the key is not 16 bytes large 2014-02-12 13:40:41 +01:00
Sebastian Dröge
8c3ef21a68 hlsdemux: Download playlists with compression, keys and fragments without 2014-02-12 13:13:30 +01:00
Sebastian Dröge
a11c6640bf mssdemux: Download the manifest with compression, the fragments without 2014-02-12 13:11:38 +01:00
Sebastian Dröge
48ba499ed2 dashdemux: Download MPD with compression, the fragments without 2014-02-12 13:10:50 +01:00
Sebastian Dröge
245a7d94f5 hlsdemux: Don't set the element private data on the srcpads
It's not used anyway.
2014-02-12 11:26:04 +01:00
Sebastian Dröge
60f1dadd1c hlsdemux: Use gst_pad_use_fixed_caps() on the srcpads 2014-02-12 11:25:41 +01:00
Sebastian Dröge
bc42a18f92 hlsdemux: Cache the key fragment instead of downloading it over and over again 2014-02-12 10:59:38 +01:00
Sebastian Dröge
792d1e0109 hlsdemux: Fix cleanup when decryption fails
First unmap buffers, then unref them. And also unref the
key fragment.
2014-02-12 10:58:45 +01:00
Lihua Liu
f3464e01bb curlsmtpsink: Include timezone information in mail header
https://bugzilla.gnome.org/show_bug.cgi?id=724125
2014-02-11 21:03:18 +01:00
Sebastian Dröge
5e55bae14b hlsdemux: Don't try decryption if an unsupported method is found 2014-02-11 18:15:45 +01:00
Sebastian Dröge
56faad51bb hlsdemux: Properly parse IV from the playlist
Without this every fragment's first 16 bytes will be corrupted
if not the fallback IV is used by the playlist.
2014-02-11 18:15:07 +01:00
Sebastian Dröge
591598da48 hlsdemux: Propagate download errors properly and post error messages if they're fatal 2014-02-11 14:57:16 +01:00
Sebastian Dröge
3a5abc233d ext: Update for GstUriDownloader API changes 2014-02-11 14:18:32 +01:00
Sebastian Dröge
73d9a8b0c9 hlsdemux: Start downloading the next fragment immediately after caching the initial fragments
And only afterwards wait until a fragment was played. Otherwise we're keeping
our cache most of the time at "fragments-cache" fragments minus one.

Also allow setting "fragments-cache" to 1 now to start playback even faster.
2014-02-10 18:30:21 +01:00
Sebastian Dröge
4f04f3e68e hlsdemux: Start fetching new fragments whenever we have less fragments cached than given by the fragments-cache property
Waiting until our cache is empty before starting to fetch the next fragment
kind of defeats the purpose of caching multiple fragments.
2014-02-10 18:27:58 +01:00
Sebastian Dröge
89c592ccdd hlsdemux: Fix bitrate calculation
g_get_monotonic_time() returns microseconds, not nanoseconds.
2014-02-10 18:21:38 +01:00
Sebastian Dröge
a4847fd4db hlsdemux: Actually store doubles as such and don't truncate them to ints
Fixes broken duration reporting.
2014-02-10 17:27:10 +01:00
Sebastian Dröge
a5387eb372 hlsdemux: Use locale-independent int/float parsing functions from GLib 2014-02-10 17:27:10 +01:00
Wim Taymans
64367f33a6 fluiddec: add more soundfont search paths
Fedora installs the soundfonts in /usr/share/soundfonts/ so make sure we
look there as well.
2014-02-10 14:34:40 +01:00
Руслан Ижбулатов
270b57fc33 Change soundfont file search path for fluiddec
Use glib to get a list of system "share" directories, then go through that
list, appending 'sounds/sf2/' to each directory to get a soundfont directory,
and looking for .sf2 files there.

This way fluiddec is able to load sf2 files on W32, because otherwise the
path '/usr/share/sounds/sf2' makes no sense there.

Fixes #724013
2014-02-10 11:34:16 +01:00
Sebastian Dröge
6799e3b879 hlsdemux: Prefer to use nettle for decryption but fall-back to libgcrypt
nettle is used by newer versions of gnutls, while older versions of gnutls
used libgcrypt. Support both for now as not every distro has nettle yet.

nettle is preferred as it is more efficient to use and much smaller.
2014-02-09 18:52:24 +01:00
Sebastian Dröge
6abed8da20 hlsdemux: Update to non-deprecated GLib thread API 2014-02-09 18:19:33 +01:00
Sebastian Dröge
e8befb7ce3 hlsdemux: Use libgcrypt directly instead of going through gnutls
gnutls is also just wrapping gcrypt, but we don't need any of
the TLS related functionality. We just need to be able to decrypt
AES128-CBC.
2014-02-09 18:09:36 +01:00
Sebastian Dröge
15e0db90e8 srtpdec: Fix comparison compiler warning
error: comparison of constant -1 with expression of type
'GstSrtpCipherType' is always false
2014-02-08 19:59:43 +01:00
Sebastian Dröge
43e73bc3e9 motioncells: Remove unused private fields 2014-02-08 19:29:33 +01:00
Sebastian Dröge
50321b1ccd segmentation: Fix integer underflow check
error: comparison of unsigned expression < 0 is
always false [-Werror,-Wtautological-compare]
2014-02-08 19:28:26 +01:00
Sebastian Dröge
78d9134d63 dfbvideosink: Fix unitialized variable compiler warning 2014-02-08 18:58:38 +01:00
Sebastian Dröge
5c22b7f4a3 bz2: Fix typo in header include guards 2014-02-08 18:57:30 +01:00
Carlos Rafael Giani
d12fdf785c mpg123: improved error report and checks
Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org>
2014-02-04 17:30:13 +01:00
Sebastian Dröge
7548d5f7f9 openexrdec: Don't start scanning for the header from the start again each time
This will be incredible slow if the upstream block size is very small. Instead
continue scanning for the header where we previously stopped.

For the standard filesrc block-size this made decoding a file about
3 times faster.

https://bugzilla.gnome.org/show_bug.cgi?id=719890
2014-01-18 13:56:28 +01:00
Sebastian Dröge
1f9c305694 sfdec: This is a decoder, not a demuxer
Don't confuse autopluggers!

https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-01-18 13:34:13 +01:00
Jan Schmidt
9d31536adf resindvd: Merge changes across from master mpegdemux
Merge various changes and fixes from the master mpegdemux
Performance improvement from the way streams are organised,
return flow combining, language tag event generation,
adjustments and fixes in debug output, and things like that.
2014-01-16 20:16:47 +11:00
Tim-Philipp Müller
078b82d6d1 resindvdsrc: fix minor memory leak when creating title info message 2014-01-15 11:52:09 +00:00
Sebastian Dröge
e8d569f54d faceblur: set maximum feature size to 0x0
Previously faces would only be detected if they were at least 30x30 pixels
large and at most 32x32 pixels. We keep the minimum setting (maybe needs
a property as in facedetect) but disable the maximum feature size.

See https://bugzilla.gnome.org/show_bug.cgi?id=722158
2014-01-14 10:38:37 +01:00
Kipp Cannon
b33b1390cc facedetect: set maximum feature size to 0x0
This disables the "max feature size" feature. The current configuration
is totally busted: The max feature size is hard-coded to 2 pixels more
than the user-supplied min feature size which pretty much means you need
to guess the size of the person's face to within a few pixels to get the
code to find it.

https://bugzilla.gnome.org/show_bug.cgi?id=722158
2014-01-14 10:37:41 +01:00
Vincent Penquerc'h
d1877b0b95 schroenc: set buffer offset to buffer timestamp
oggmux expects this to order incoming buffers

https://bugzilla.gnome.org/show_bug.cgi?id=722078
2014-01-13 10:02:45 +00:00
Thiago Santos
3d2f3bcf62 dashdemux: remove unnecessary variable
Instead of using 2 indexes that were actually the same, use only
one. Saves a variable.
2014-01-09 09:13:48 -03:00
Thiago Santos
cea909b877 dashdemux: fix seeking when the mpd uses a segment template
Remove the dashdemux seeking function to use the one implemented
in mpdparser as it is more complete. This also makes dashdemux not
crash when seeking on streams that use segment templates.
2014-01-09 09:11:23 -03:00
Stefan Sauer
c894c2d721 sfdec: skip '\0' strings for metadata
libsndfile does not filter empty strings. We get a warning from gstreamer when
setting this as a tag.
2014-01-06 22:17:15 +01:00
Stefan Sauer
a59d2c4817 sfdec: break long method
Extract taglist creation into separate funtion.
2014-01-06 22:17:15 +01:00
Stefan Sauer
b1ddd2e682 sfdec: remove left over property-id enum 2014-01-06 15:06:40 +01:00
Stefan Sauer
18ec1c9bd7 sfdec: the read functions already return frames_read
Fixes choppy output.
2014-01-05 23:45:34 +01:00
Stefan Sauer
ef2eef0365 sndfile: enable rf64 format 2014-01-05 23:45:34 +01:00
Stefan Sauer
207a184931 sfdec: add date to taglist 2014-01-05 23:45:34 +01:00
Miguel París Díaz
e944195b64 srtpdec: Fix GstCaps memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=721382
2014-01-03 10:46:29 +01:00
Stefan Sauer
3149dbb44b sndfile: emit midi-base-note tag
Query instrument data. Use both 'loop_info' and 'instrument' to inform about the
basenote.
2013-12-30 15:54:29 +01:00
Sebastian Dröge
fd803921c9 opusparse: Don't send caps in GstBaseParse::start()
This is too early and will confuse the event order. The other
code that sets the caps is at the right position and does it
properly already.
2013-12-28 12:39:25 +01:00
Vincent Penquerc'h
585a6c4add opusenc: increase max payload size to 4000 bytes
1275 is the maximum size of a frame, but the encoder may return
up to 3 frames, and we need a few extra bytes for TOC, etc. We
use 4000, which is a bit more, and suggested in the libopus docs.
2013-12-27 14:29:46 +00:00
Thiago Santos
da329b44a4 dashdemux: remove stream loop thread
Download and push from the same task, makes code a lot simpler
to maintain. Also pushing from separate threads avoids deadlocking
when gst_pad_push blocks due to downstream queues being full.
2013-12-24 17:07:52 -03:00
Thiago Santos
d353d229b1 dash: detect EOS when segments are generated by template
Use the Period duration do know when to end the stream
2013-12-24 17:07:52 -03:00
Thiago Santos
5b1eda95eb dashdemux: do not try to access buffer after losing the ref
For obvious reasons
2013-12-24 17:07:52 -03:00
Thiago Santos
be54766975 dashdemux: use a separate GstUriDownloader per stream
Avoids one download having to wait for another to finish
before starting
2013-12-24 17:07:52 -03:00
Thiago Santos
f33c52377f dashdemux: store GstActiveStream to avoid getting it every time
GstActiveStream is used everywhere to operate on the MPD client,
better store it in the GstDashDemuxStream to avoid getting it
everytime
2013-12-24 17:07:52 -03:00
Thiago Santos
7c6ccda3ec dashdemux: simplify locking for streams
Use a single lock for all streams instead of having separate locks.
This makes maintenance easier and at most points we would need
a single lock before iterating on all streams data. So not much
is gained from individual locks.
2013-12-24 17:07:51 -03:00
Thiago Santos
a2583e54d1 dashdemux: fix multiple period mpd playback
Make dash playlists with multiple periods work again by waiting
to switch the periods when all streams have reached the end of
the current period. The stream_loop is responsible for advancing
the period, but the download loops will already start downloading
data for the next period as soon as possible.
2013-12-24 17:07:51 -03:00
Thiago Santos
1483b59c6b dashdemux: add combine flows function
Use a flow combination function to decide the result from the
stream_loop
2013-12-24 17:07:51 -03:00
Thiago Santos
6611d14eed dashdemux: handle multiple languages
Handle multiple languages by using the not-linked return to stop
the download task for that stream. It can be reactivated when
a reconfigure event is received. Stopping the unused streams is
relevant to save network bandwidth
2013-12-24 17:07:51 -03:00
Thiago Santos
31e4ba0094 dashdemux: Use 1 download task per stream
Instead of having a single download task for all streams, this
commit makes each stream have its own download loop, allowing
parallel download of fragments.
2013-12-24 17:07:51 -03:00
Thiago Santos
3bd66d17fc dashdemux: refactor fragment fetching into smaller functions
Makes it easier to maintain and extend. This is a first step into
adding multi language support to dashdemux
2013-12-24 17:07:51 -03:00
Thiago Santos
1d2de4a034 dashdemux: run gst-indent
Lots of indentation issues making it very annoying to commit
because of the indent hook. Fix this for once.
2013-12-24 17:07:51 -03:00
Thiago Santos
08636f3bab dashdemux: expose all streams
always expose all streams instead of only exposing one of each type.

This is more aligned with gstreamer's way of working. Allows the user
to select the stream that it wants to use by linking its pad and leaving
the unused ones as unlinked.
2013-12-24 17:07:51 -03:00
Sebastian Dröge
7f5422c06d eglglessink: Properly clean up renderbuffers and EAGL context 2013-12-24 11:51:16 +01:00
Stefan Sauer
0e3917b9c0 modplug: small seeking code reshuffle
Put the code that checks stop values together. Don't clamp a cur value of -1 to 0 (should not happen right now).
2013-12-20 20:00:55 +01:00
Stefan Sauer
a18ad22b47 sfdec: make _stop() non fatal when we have an error already
Having no open file in _stop() is okay. Just reset state.
2013-12-20 20:00:55 +01:00
Stefan Sauer
0c34d807d4 sfdec: add event function and seeking support 2013-12-20 20:00:55 +01:00
Stefan Sauer
bf956c487f sfdec: add taglist support
Map the metadata strings and a bunch of info-fields to GStreamer tags.
2013-12-20 20:00:55 +01:00
Stefan Sauer
b884eac02c sfdec: add query implementation for position and duration 2013-12-20 20:00:55 +01:00
Stefan Sauer
5f89bee749 sndfile: rewrite sndfile for 1.0
Add a sfdec for a start. Instead of a source plugin, this is a demuxer/decoder combination. This makes it work with auto-plugging.
2013-12-20 20:00:54 +01:00
Thiago Santos
6348113777 mssdemux: updating docs explaining how it works
mssdemux changed a lot and the docs were not correct anymore.

Also adds the 'Adaptive' category to its details
2013-12-20 00:40:42 -03:00
Thiago Santos
ff1e88ce93 mssdemux: do not push event holding object lock
Can lead to deadlocks as the push might block downstream in
serialized event cases.
2013-12-20 00:40:42 -03:00
Thiago Santos
aa61251371 mssdemux: lock around 'cancelled' flag
Prevents race conditions when pipeline is seeking near eos
2013-12-20 00:40:42 -03:00
Sebastian Dröge
d9525c134b eglglessink: Don't set the EAGLContext of the main thread and don't reuse it either
... instead create a new context for every sink instance.

https://bugzilla.gnome.org/show_bug.cgi?id=720421
2013-12-19 21:37:33 +01:00
Jan Schmidt
81ad21d63e directfb: Add hack to fix compile with broken DirectFB define
Compilation breaks because some versions of DirectFB redefine
__no_instrument_function__, which is used in the G_GNUC_NO_INSTRUMENT
macro.
2013-12-19 11:23:23 +11:00
Thiago Santos
628461b4d1 mssdemux: fix segfault when trying to access codec_data
Check if codec_data was obtained before trying to use it to
prevent a segfault
2013-12-18 18:52:19 -03:00
Thiago Santos
5948a07324 mssdemux: also generate caps from audiotag attribute
Some audio will have its audio format defined by the AudioTag
instead of the Fourcc. Fallback to using AudioTag if Fourcc
isn't available
2013-12-18 18:52:19 -03:00
Thiago Santos
26acbbcca9 mssdemux: make sure streams stop properly on cancelled
specially when the gst_task_join is waiting for the task
to go stop and the task itself sets its back to paused, causing
a deadlock on exit.
2013-12-18 18:52:19 -03:00
Thiago Santos
99c8fb7330 mssdemux: track segments per stream
As streams now flow independently, the GstSegment needs to be put
on each stream so they can track the position of each one correctly
instead of being mixed in a single segment
2013-12-18 18:52:19 -03:00
Guillaume Desmottes
f44c6ed526 mssdemux: push language code tag
https://bugzilla.gnome.org/show_bug.cgi?id=712358
2013-12-18 18:52:19 -03:00
Guillaume Desmottes
d6a9f17d8a mssmanifest: store the language of the stream
https://bugzilla.gnome.org/show_bug.cgi?id=712358
2013-12-18 18:52:19 -03:00
Thiago Santos
67f3190301 mssdemux: remove the stream loop task
Download and push from the same task, makes code a lot simpler
to maintain. Also pushing from separate threads avoids deadlocking
when gst_pad_push blocks due to downstream queues being full
2013-12-18 18:52:19 -03:00
Thiago Santos
4e6e1315da mssdemux: Improve logging
Show the stream's pad on log messages to make easier to debug
issues in the multiple threads
2013-12-18 18:52:18 -03:00
Thiago Santos
056420940e mssdemux: improve flow return handling
Handle different flow returns both from the streaming and the
downloading loops
2013-12-18 18:52:18 -03:00
Thiago Santos
e847bea1e1 mssdemux: remove stream locks
Simplify the locking by using a single lock instead of having one
lock per stream. This still works and is simpler to maintain.
2013-12-18 18:52:18 -03:00
Thiago Santos
2ce4f6a8e4 mssdemux: avoid downloading not-linked streams
When a stream gets a not-linked return, it will be marked as so and
won't download any more new fragments until a reconfigure event
is received. This will make mssdemux expose all pads, but only download
fragments for the streams that are actually being used.

Relying on the pads being linked/unlinked isn't enough in this scenario
as there might be an input-selector downstream that is actually discarding
buffers for a given linked pad.

When streams are switching, the old active stream can be blocked because
input-selector will block not-linked streams. In case the mssdemux's
stream loop is blocked pushing a buffer to a full queue downstream it will
never unblock as the queue will not drain (input-selector is blocking).

In this scenario, stream switching will deadlock as input-selector is
waiting for the newly active stream data and the stream_loop that would
push this data is blocked waiting for input-selector.

To solve this issue, whenever an stream is reactivated on a reconfigure
it will enter into the 'catch up mode', in this mode it can push buffers
from its download thread until it reaches the currrent GstSegment's position.
This works because this timestamp will always be behind or equal to the maximum
timestamp pushed for all streams, after pushing data for this timestamp,
the stream will go back to default and be pushed sequentially from the main
streaming thread. By this time, the input-selector should have already
released the thread.

https://bugzilla.gnome.org/show_bug.cgi?id=711849
2013-12-18 18:52:18 -03:00
Sebastian Dröge
d111f37f74 curl: Fix indention 2013-12-17 12:18:16 +01:00
Haridass Selvaraj
23ab7d8c49 curlftpsink: Optionally create a temporary file during FTP transfer/upload
https://bugzilla.gnome.org/show_bug.cgi?id=711620
2013-12-17 12:18:01 +01:00
Aleix Conchillo Flaqué
fefd021ee2 srtp: add 256-bit key support
* ext/srtp/gstsrtp.[ch]: added GST_SRTP_CIPHER_AES_256_ICM to
  GstSrtpCipherType and new function cipher_key_size.

* ext/srtp/gstsrtpenc.c: maximum key size is now 46 characters (14 for
  the salt plus the key). If different ciphers are chosen for RTP and
  RTCP the maximum needed key size is expected.

* ext/srtp/gstsrtpdec.c: minor documentation updates.

https://bugzilla.gnome.org/show_bug.cgi?id=720434
2013-12-13 17:51:18 -05:00
Tim-Philipp Müller
b3910cabaf gsmdec: process all available input frames in one go
Instead of parsing, decoding and sending out
lots os little 20ms audio buffers one by one.
2013-12-12 23:34:27 +00:00
Jan Schmidt
8cca2d55f5 soundtouch: Call default event handler for basetransform
Make pipeline end properly at EOS and not leak by passing events
to the default event handler.
2013-12-10 23:06:53 +11:00
Jan Schmidt
d56d00cccd resindvd: Remove racy glib warning.
Sometimes, the pad probes can be called twice - for OOB events
travelling downstream. Clear out the pad block id, so it only
gets removed once.
2013-12-10 22:48:47 +11:00
Tim-Philipp Müller
621bf0d22e gsmdec: fix decoding of audio/ms-gsm variant
Alternates between 33 and 32 byte frames, but must start
with a 33 byte frame. This has been broken for ages since
the element was ported to the audio decoder base class.

https://bugzilla.gnome.org/show_bug.cgi?id=709416
2013-12-10 10:57:39 +00:00
Sebastian Dröge
c635cb233f sbcdec: Require caps to be set before any data processing 2013-12-05 12:05:30 +01:00
Sebastian Dröge
2e80c88129 opusdec: Require caps to be set before any data processing 2013-12-05 12:04:59 +01:00
Sebastian Dröge
f1d863c296 mpg123audiodec: Require caps to be set before any data processing 2013-12-05 12:04:39 +01:00
Sebastian Dröge
f8caef5772 gsmdec: Require caps to be set before any data processing 2013-12-05 12:04:23 +01:00
Sebastian Dröge
0fbe76c4b5 openjpegdec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:50:17 +01:00
Sebastian Dröge
23735c703d daaladec: Use new gst_video_decoder_set_needs_format() API 2013-12-05 11:50:17 +01:00
Sebastian Dröge
a6bf25faa5 openexrdec: Instead of trying to parse the bitstream, just look for the next header
This should be more robust and allows us to handle new versions of the
file format if the library supports it.
2013-12-04 22:38:20 +01:00
Sebastian Dröge
26bf14c9fd openni2src: Check color format 2013-12-03 14:53:24 +01:00
Sebastian Dröge
4b3d2a1b09 openni2src: Add support for the video meta 2013-12-03 14:47:32 +01:00
Sebastian Dröge
dbb64a69f4 openni2src: Use GstVideoFrame API for better handling of strides
And do proper stride conversion.
2013-12-03 14:46:25 +01:00
Sebastian Dröge
39c82d0dec openni2src: Fix buffer handling to actually work and properly timestamp buffers 2013-12-03 14:35:57 +01:00
Sebastian Dröge
7a3eaa8f8a openni2src: Don't shut down library when finalizing an element instance 2013-12-03 14:35:42 +01:00
Sebastian Dröge
04e8d63597 openni2src: Fix negotiation and creation of a video buffer pool 2013-12-03 14:35:21 +01:00
Sebastian Dröge
034757e936 openni2src: Use debug category properly 2013-12-03 14:34:56 +01:00
Sebastian Dröge
6450d87c63 openni2src: Classification of the element should be Source/Video 2013-12-02 17:03:46 +01:00
Sebastian Dröge
4b7bead2d4 openni2src: Use GstVideoInfo to create caps and don't leak them 2013-12-02 17:02:17 +01:00
Sebastian Dröge
1ba3edf682 openni2src: Some random cleanup and minor fixes 2013-12-02 16:59:14 +01:00
Miguel Casas-Sanchez
64675f0712 openni: Add OpenNNI2 plugin
https://bugzilla.gnome.org/show_bug.cgi?id=708914
2013-12-02 11:17:02 +01:00
Tim-Philipp Müller
40c10dc59e mpeg2enc: avoid list for one single value in template caps 2013-12-01 23:31:25 +00:00
Antonio Ospite
c4fbff50df mssdemux: fix setting codec_data when using WaveFormatEx
When using WaveFormatEx the actual codec private data is at the end of
the wav header structure, after the cbSize field, see for example the
notes at http://wiki.multimedia.cx/index.php?title=WAVEFORMATEX

The previous code was erroneously passing the whole WAVEFORMATEX
structure as codec_data.

The smoothstreaming specifications[1,2,3] always mention WAVEFORMATEX
and never smaller structures like WAVEFORMAT or PCMWAVEFORMAT, so the
buffer can assumed to be at least 18 bytes and always consuming the wav
header gives the (possibly empty) codec private data.

[1] http://web.archive.org/web/20120907004742/http://www.iis.net/community/files/media/smoothspecs/%5BMS-SMTH%5D.pdf
[2] http://download.microsoft.com/download/B/0/B/B0B199DB-41E6-400F-90CD-C350D0C14A53/%5BMS-SSTR%5D.pdf
[3] http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/%5BMS-SSTR%5D.pdf

https://bugzilla.gnome.org/show_bug.cgi?id=699924
2013-11-27 09:26:36 -03:00
Antonio Ospite
f02e7a2439 mssdemux: use mssdemux_debug debug category for gstmssmanifest.c too 2013-11-27 09:26:36 -03:00
Antonio Ospite
8345c5acfb mssdemux: fix coding style 2013-11-27 09:26:36 -03:00
Sebastian Dröge
de3abac8ed openexrdec: Consider the pixel aspect ratio stored in the file 2013-11-23 19:11:42 +01:00
Sebastian Dröge
a90585c686 openexr: Add OpenEXR decoder element
This currently converts from ARGB64_F16 (16 bit float per component)
to ARGB64 by clipping. We should add support for the F16 format and
implement a conversion filter element that can apply gamma curves,
change exposure, etc.
2013-11-23 18:51:52 +01:00
Sebastian Dröge
da65dccd78 openexr: Add OpenEXR plugin
See http://www.openexr.com
2013-11-23 18:51:35 +01:00
Sebastian Dröge
f8db818a8d openjpeg: Fix names of debug categories 2013-11-23 18:51:16 +01:00
Olivier Crête
b58ca88fb9 srtpenc: Set the first session flag to false once one is create
Otherwise it always thinks it's the first session.

https://bugzilla.gnome.org/show_bug.cgi?id=711495
2013-11-19 20:18:48 -05:00
Olivier Crête
2b75eb85c4 srtpdec: Make sure that stream-id/caps/segment are sent before buffers
It may be possible that only one of the two sink pads is linked in that case,
the events need to be created from the other pad.
2013-11-19 20:12:54 -05:00
Olivier Crête
de1fb842e6 srtpdec: Pass is_rtcp to setcaps function 2013-11-19 19:10:06 -05:00
Olivier Crête
8c76d7c77e srtp: Implement SRTCP demultiplexing
Separate multiplexed RTP and RTCP if they arrive
on the rtp_sink pad.
2013-11-19 18:34:08 -05:00
Sebastian Dröge
898966a44c daala: Fix compilation 2013-11-19 00:38:45 +01:00
Thiago Santos
27b0086e4a mssdemux: do not try to deinit the downloadrate while it is used
This can cause an assertion or deadlocks.
2013-11-15 12:01:55 -03:00
Thiago Santos
fe77ee47c9 mssdemux: also consider /manifest
The spec says /Manifest, but /manifest is easily found on some
services, so handle that, too.

https://bugzilla.gnome.org/show_bug.cgi?id=710223
2013-11-15 12:01:54 -03:00
Matthieu Bouron
5e5bc19cca eglglessink: fix non-egl display context query 2013-11-13 15:50:17 +01:00
Thiago Santos
d59af97930 hlssink: do not lose ref to the multifilesink
It is needed to update location properties and it was being lost on
state changes, causing issues if the pipeline was to be reused
2013-11-07 12:50:55 -03:00
Thiago Santos
805e313cce hlssink: make sure it is handled as a sink
It only gets the sink flag set when it adds the multifilesink, that
happens in null->ready and it might be too late. Set the flag
explicitly on the constructor.

https://bugzilla.gnome.org/show_bug.cgi?id=711086
2013-11-07 12:50:55 -03:00
Sebastian Dröge
19b5092685 eglglessink: Query upstream first to get a EGLDisplay 2013-11-04 19:59:10 +01:00
L. Sorin
15717842e4 curl: curlsftpsink - new libcurl-based sink element for SFTP
Note: SFTP = SSH File Transfer Protocol
The sink acts as a client and uploads data to the SFTP server.

https://bugzilla.gnome.org/show_bug.cgi?id=709795
2013-11-01 17:20:04 +01:00
Reynaldo H. Verdejo Pinochet
980f5b4702 cdaudio: Remove cdaudio plugin
This element is being removed due to it been
considered obsolete and the functionaily it
provides no longer needed.

Details on the decision can be found here:

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

Fixes:

https://bugzilla.gnome.org/show_bug.cgi?id=711232
2013-11-01 07:21:56 -07:00
Reynaldo H. Verdejo Pinochet
2285d4440b cdaudio: port to 1.X
https://bugzilla.gnome.org/show_bug.cgi?id=711223
2013-10-31 13:25:46 -07:00
Andoni Morales Alastruey
e5385db3c9 eglglessink: remove unused functions in the eagl backend
https://bugzilla.gnome.org/show_bug.cgi?id=711159
2013-10-30 16:36:04 +01:00
Alex Ashley
58072914fa hlsdemux: fix memory leak in gst_hls_demux_get_next_fragment
This patch fixes three memory leaks in hlsdemux, one that occurs
during normal operation and two that occur during error conditions.

The gst_hls_demux_get_next_fragment function calls
gst_fragment_get_buffer which increments the reference count
on the buffer but gst_hls_demux_get_next_fragment never calls unref on
the buffer. This means that the reference count for each downloaded
fragment never gets to zero and so its memory is never released.

This patch adds a call to gst_buffer_unref after the flags have been
updated on the buffer.

There is a leak-on-error in gst_hls_demux_decrypt_fragment if it fails
to download the key file. If the key fails to download, null is
returned without doing an unref on the encrypted fragment. The
semantics of gst_hls_demux_decrypt_fragment is that it takes ownership
of the encrypted fragment and releases it before returning.

There is a leak-on-error in gst_hls_src_buf_to_utf8_playlist in the
unlikely event that the gst_buffer_map fails. In the "happy path"
operation of gst_hls_src_buf_to_utf8_playlist the buffer gets an unref
before the function returns, therefore the error condition must do the
same.

https://bugzilla.gnome.org/show_bug.cgi?id=710881
2013-10-25 23:12:25 -03:00
Olivier Crête
2046ba220f pitch: Fix inverted condition in setcaps 2013-10-12 16:04:25 -04:00
Thiago Santos
9a50ca5fbc hlsdemux: Small improvement on always valid if condition
No need to check for !cancelled as the above if guarantees it
to be true
2013-10-03 09:15:37 -03:00
Thiago Santos
72e05dfd7c hlsdemux: Do not call _stop holding the updates lock
It will cause a deadlock and the calers for _get_next_fragment
will already call _stop if required when _get_next_fragment fails.

Fixes #690148
2013-10-03 09:15:37 -03:00
Greg Rutz
6819d1a206 dashdemux: Improve if cause readability
Fixed up the error-handling code when downloading fragments.
Modifed the error-handling code to use positive logic when
testing for cancellation of the download loop.

https://bugzilla.gnome.org/show_bug.cgi?id=701404
2013-10-03 09:15:37 -03:00
Thiago Santos
b8dd95e219 dashdemux: actually return true on latency query
Do not forget to set the return for latency query
2013-10-03 09:15:37 -03:00
Alex Ashley
42fd04ce48 dashdemux: stop fetching live fragments that don't yet exist
There is an issue for live streams where download_loop will keep
downloading segments until it gets a 404 error for a segment
that has not yet been published. This is a problem because this
request for a segment that doesn't exist will propagate all the
way back to the origin server(s). This means that dashdemux causes
extra load on the origin server(s) for segments that aren't yet
available.

This patch uses availabilityStartTime, period
and the host's idea of UTC to decide if a fragment is available to
be requested from an HTTP server and filter out requests for fragments
that are not yet available.

https://bugzilla.gnome.org/show_bug.cgi?id=701404
2013-10-03 09:15:37 -03:00
Sebastian Dröge
c57be26ed9 openjpeg: Port OpenJPEG plugin to the 2.0 API 2013-10-02 20:07:16 +02:00
Tim-Philipp Müller
2d29f22338 opencv: don't unref NULL caps in finalize
Fixes gst-inspect-1.0 -a and generic states unit test.
2013-09-29 23:43:23 +01:00
Sebastian Dröge
3d5e214f83 eglglessink: Port iOS part to 1.0 2013-09-28 20:36:21 +02:00
Javier Jardón
a1cc9ca4de hlssink: Use floats for the EXTINF duration values
https://bugzilla.gnome.org/show_bug.cgi?id=708851
2013-09-28 13:20:08 +02:00
Javier Jardón
203f527653 hlssink: Write EXT-X-VERSION tag in the playlist file
https://bugzilla.gnome.org/show_bug.cgi?id=708851
2013-09-28 13:20:08 +02:00
Alex Ashley
0bdf13c36a hlsdemux: Fix dereferencing of NULL pointer
On some live HLS streams, gst_hls_demux_switch_playlist causes
assertion failures because it tried to dereference a NULL fragment.
This is because g_queue_peek_tail sometimes was returning NULL and
this case was not being checked.

This patch does two things:
* move the g_queue_peek_tail inside the semaphore protection
* check if q_queue_peek_tail returns NULL

https://bugzilla.gnome.org/show_bug.cgi?id=708849
2013-09-28 13:14:01 +02:00
Sebastian Dröge
fef9ef6a8e dash/smoothstreaming: Remove unused debug category with the same name
It caused static linking to fail.
2013-09-19 20:09:59 +02:00
Sebastian Dröge
6cfbda3b7e eglglessink: Fix static linking for Android by passing --tag=CC to libtool 2013-09-19 16:44:48 +02:00
Sebastian Dröge
ad0252fc04 eglglessink: Update for new GstContext API 2013-09-18 23:09:05 +02:00
Olivier Crête
b92791d102 hlsdemux: Reset GstUriDownloader cancellation when restarting to play 2013-09-17 17:41:39 -04:00
Iain Lane
fd4cb22ae4 modplug: Specify directory when including stdafx.h
modplug stopped exposing their directory in their pcfile, meaining
consumers accessing the headers directly fail to build.

75e9b16698/
2013-09-10 11:08:24 +02:00
Julien Isorce
3a84875294 eglglessink: change pool->sink->last_buffer to pool->last_buffer
So that GstEGLImageBufferPool does not depend on GstEglGlesSink
The goal is still to move it into gstegl lib
2013-09-04 13:32:14 +01:00
Julien Isorce
fdaa26e1c8 eglglessink: buffer pool does not need to maintain a ref on the display
Because it does not use it and also it may not know it when
we create the pool
2013-09-04 13:32:14 +01:00
Julien Isorce
d16583d771 eglglessink: add GstEGLImageBufferPoolSendBlockingAllocate callback
The goal here is to prepare GstEGLBufferPool to be moved into
gstegl lib. So it has to not depend on 'gst_eglglessink_queue_object'
2013-09-04 13:32:14 +01:00
Julien Isorce
c0ca9bc422 eglglessink: prepare gst_egl_adaptation_allocate_eglimage to be moved
into gstegl lib or splited between gstegl lib and gstgl lib
because it both depends on egl and gl

So it has to not depend on GstEglAdaptationContext
2013-09-04 13:32:14 +01:00
Sebastian Dröge
8e5f0e37f8 soundtouch: Fix compilation with soundtouch 1.4.0
It used FLOAT_SAMPLES/INTEGER_SAMPLES #defines instead of ones properly
prefixed with a namespace.

https://bugzilla.gnome.org/show_bug.cgi?id=707390
2013-09-03 17:36:53 +02:00
Sebastian Dröge
576b4826c8 soundtouch: Allow compilation against float and integer version of the library
https://bugzilla.gnome.org/show_bug.cgi?id=707270
2013-09-02 10:29:49 +02:00
Josep Torra
47c35ee52e dashdemux: Fix warnings when building in OS X Snow Leopard
gstdashdemux.c:1753: warning: format '%llu' expects type 'long long unsigned int', but argument 8 has type 'long unsigned int'
gstdashdemux.c:2224: warning: format '%llu' expects type 'long long unsigned int', but argument 9 has type 'guint64'
gstdashdemux.c:2224: warning: format '%llu' expects type 'long long unsigned int', but argument 10 has type 'guint64'
2013-08-30 21:52:35 +02:00
Josep Torra
0b54b0568d dashdemux: Fix warnings when building in OS X Snow Leopard
gstmpdparser.h:530: warning: type qualifiers ignored on function return type
gstmpdparser.c:4177: warning: type qualifiers ignored on function return type
2013-08-30 21:36:19 +02:00
Tim-Philipp Müller
8293594397 dfbvideosink: make "layer-mode" property an enum
https://bugzilla.gnome.org/show_bug.cgi?id=703520
2013-08-29 15:46:14 +01:00
Tim-Philipp Müller
f79448552a dfbvideosink: don't use deprecated GLib thread API
https://bugzilla.gnome.org/show_bug.cgi?id=703520
2013-08-29 14:48:28 +01:00
Kazunori Kobayashi
90020e21df dfbvideosink: port to 1.0
including the following supports and fixes:

* Create DirectFB surfaces from GstBufferPool
* Add NV12 pixel format support
* Don't use the cursor in the exclusive mode
  - EnableCusor() can be only used when the administrative mode is set
    in DirectFB 1.6.0 and later.
* Support multiple plane rendering for planar color formats
  - This accommodates the chroma plane offsets of the framebuffer
    in planar formats.
* Invoke SetConfiguration regardless of video mode setting in setcaps()
  - SetConfiguration() method should be invoked regardless of
    the result of gst_dfbvideosink_get_best_vmode(), since the two are
    unrelated.
* Disable DirectFB signal handler
  - "--dfb:no-sighandler" option is passed to DirectFBInit().
    This prevents DirectFB from trying to kill the process and allows
    GStreamer's termination sequence to proceed normally.

https://bugzilla.gnome.org/show_bug.cgi?id=703520
2013-08-29 14:37:48 +01:00
Sebastian Dröge
f7db01b0e1 webpdec: Some cleanup and minor fixes 2013-08-26 10:22:06 +02:00
Sreerenj Balachandran
499d515a9f webp: Add WebP image decoder plugin
https://bugzilla.gnome.org/show_bug.cgi?id=706285
2013-08-26 10:18:16 +02:00
Nicola Murino
e481ecbf22 facedetect: new property to control bus messages updates
https://bugzilla.gnome.org/show_bug.cgi?id=655622
2013-08-23 13:12:28 +02:00
Sebastian Dröge
21ea46568b opencv: Fix indention 2013-08-23 12:01:32 +02:00
Sebastian Dröge
5e25d41b84 opencv: Port to non-deprecated GMutex/GCond API 2013-08-23 12:01:07 +02:00
Miguel Casas-Sanchez
fbb5dd38c7 opencv: Add disparity-map calculation element
https://bugzilla.gnome.org/show_bug.cgi?id=704760
2013-08-23 11:58:21 +02:00
Tim-Philipp Müller
b8f9d674be srtpdec: fix buffers being dropped due to shadowed variable
Spotted by gstblub@gmail.com.

https://bugzilla.gnome.org/show_bug.cgi?id=706091
2013-08-16 19:48:03 +01:00
Chris Bass
7f21226956 dashdemux: offset segment numbers by startNumber
For SegmentTemplate elements containing a startNumber attribute, the
`number' member of GstMediaSegments should be offset by the value of
startNumber; however, this is not currently the case. As a result, the
first URI(s) requested by the download loop will be wrong.

This commit ensures that segment numbers will be offset by startNumber
when one is present in a SegmentTemplate element.

https://bugzilla.gnome.org/show_bug.cgi?id=705661
2013-08-16 11:15:47 -03:00
Chris Bass
19a45554bf dashdemux: remove incorrect timestamp scaling.
When using a SegmentTemplate element, the timestamps of the buffers
output by dashdemux are incorrect, causing problems downstream.

The reason is that GstMediaSegment start times are calculated (in
gst_mpdparser_get_chunk_by_index) by multiplying segment index by
segment duration and then scaling the result according the `timebase'
attribute from the MPD. However, the segment duration is already a
GstClockTime (i.e., it has already been scaled according to the timebase
from the MPD and converted to a nanosecond value), so multiplying it by
the segment index will give the correct timestamp without the need for
any further scaling.

https://bugzilla.gnome.org/show_bug.cgi?id=705679
2013-08-16 10:22:21 -03:00
Sebastian Dröge
2e8af6973f ext: Use new flush vfunc of video codec base classes and remove reset implementations 2013-08-15 15:46:58 +02:00
Thiago Santos
1b1332cb6d mssdemux: use gst_data_queue_push_force for adding events to queue
This prevents locking on startup when a stream only has a single buffer
for one of the streams and mssdemux decides to push an EOS event right
after it.
2013-08-13 12:44:41 -03:00
Thiago Santos
2db211e243 dashdemux: use push_force when adding events to the dataqueue
This prevents deadlocks on startup on files that have only a very
large buffer for a stream and the queue is filled and will lock on
the eos event that is pushed after the buffer. As no buffers have yet
been pushed to other streams, the pipeline locks on preroll
2013-08-13 11:49:54 -03:00
Olivier Crête
d346e75606 srtp: Let packets through without touching them if no crypto or auth is set 2013-08-12 12:27:33 -04:00
Olivier Crête
a10e800dfd srtpdec: Refactor code a bit
Simplify the error handling case and get the packet push out of the if()
2013-08-12 12:27:16 -04:00
Olivier Crête
04bd37dd67 srtpdec: Don't error on invalid packet, just drop it 2013-08-12 11:57:04 -04:00
Andoni Morales Alastruey
28609ca93c hlsdemux: add support for redirections 2013-08-12 16:41:52 +02:00
Thiago Santos
ac07f8577b dashdemux: properly error out when manifest has no streams
Post an error message when the manifest is parsed and no valid streams
are found be activated and used.

Fixes #704308
2013-07-30 22:06:38 -03:00
Sebastian Dröge
f2b14c68d5 midi: Fix handling of the SEGMENT query 2013-07-29 12:17:57 +02:00
Edward Hervey
97426a1caa all: Fix for GST_DISABLE_GST_DEBUG
Where applicable, remove methods that don't do anything different than
the default implementation.
2013-07-29 09:42:12 +02:00
David Schleef
ec35c36536 celt: remove, replaced by opus. 2013-07-28 14:24:25 -07:00
Edward Hervey
f2a10e415e mpg123: Remove dead assignment
harder ? :)
2013-07-27 06:39:15 +02:00
David Schleef
0f53ba8aed ladspa: initialize debug category earlier
You know, before it's used.
2013-07-26 13:21:05 -07:00
Sebastian Dröge
b9124cad88 hlsdemux: Implement pkcs7 unpadding
Every encrypted fragment will be a multiple of 128 bits, the last byte
contains the number of bytes that were added as padding in the end
and should be removed.

https://bugzilla.gnome.org/show_bug.cgi?id=701673
2013-07-23 13:30:52 +02:00
Sebastian Dröge
5b702b894e mssdemux: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
b5e7ed0428 resindvd: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
e63094abd5 hlsdemux: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
493ee3383a dash: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Alex Ashley
ed16c9c560 hls: fix for assert failure when using encrypted HLS streams
When using an HLS encrypted stream, an assertion failure is thrown:
(gst-launch-1.0:31028): GLib-GObject-WARNING **: cannot register
existing type `GstFragment'

(gst-launch-1.0:31028): GLib-CRITICAL **: g_once_init_leave: assertion
`result != 0' failed

Eventually tracked this down to the call gst_fragment_new()
in function gst_hls_demux_decrypt_fragment.

The GstFragment class is defined in ext/hls/gstfragment.c and in
gst-libs/gst/uridownloader/gstfragment.c. Having two class definitions
with the same name causes the assert failure when trying to allocate
GstFragment. Deleting the version from hls and editing the
Makefile.am solves this assert failure.

https://bugzilla.gnome.org/show_bug.cgi?id=704555
2013-07-22 14:55:17 +01:00
Sebastian Dröge
e56efddd4a resindvd: Send stream-start event before anything else on the mpeg demuxer srcpads 2013-07-22 09:19:06 +02:00
Miguel Casas-Sanchez
7c2177b19f grabcut: Add GrabCut segmentation element
https://bugzilla.gnome.org/show_bug.cgi?id=702722
2013-07-17 11:28:28 +02:00
Thiago Santos
ec630db32f dashdemux: fix typo in check_queue_full function
It should return True when the queue IS full

Fixes #704226
2013-07-15 10:05:59 -03:00
Thiago Santos
1472dd3d58 dashdemux: implement queue full check function
Checks if the queue is full according to max buffering time
set by the user

https://bugzilla.gnome.org/show_bug.cgi?id=701404
2013-07-09 01:18:54 -03:00
Thiago Santos
95c2638ba5 dashdemux: minor refactor
Split one very large function into 2 smaller but still large functions.

Also change the if conditions to positive checks to improve readability.
2013-07-09 00:47:07 -03:00
Thiago Santos
5a5e66ec90 dashdemux: handle live playback resync
During a live stream it is possible for dashdemux to lag behind on a
slow connection or to rush ahead of the connection os too fast.

For the first case it is necessary to jump some segments ahead to be able to
continue playback as old segments are usually deleted from the server.

For the later, dashdemux should wait a little before attempting another
download do give time to the server to produce a new segment
2013-07-08 23:40:14 -03:00
Thiago Santos
b316d8a677 dashdemux: fix template based segment generation
When using a template based segment list, do not try to
contruct a finite segment list for the limits of the available periods.

We might not know when the period ends (for live streams) and we can
always create the segment on demand when requested by dashdemux,
avoiding use of some memory and cpu when re-creating this list.
2013-07-08 23:39:49 -03:00
Thiago Santos
a8a355108a dashdemux: use more appropriate data structures for parsing
Replaces the 2 likely larger lists with more appropriate structures
to improve performance.

Replaces S nodes GList for a GQueue, this reduces latency to startup
because of traversing the list just append an element.

Replaces the processed media segments GList for a GPtrArray as it is
constantly acessed by index during playback.
2013-07-08 23:39:49 -03:00
Thiago Santos
b8fc98849a dashdemux: answer to latency queries
Set live if stream is live and also add to the max latency the
max internal buffering
2013-07-08 23:39:49 -03:00
Thiago Santos
9a38127467 dashdemux: prevent assertion when duration is unknown
Duration from segment being unknown is a issue from the MPD and not
a programming issue, so the assert isn't useful here. Instead check
and return an error code so the caller can fallback to alternatives
2013-07-03 19:11:45 -03:00
Thiago Santos
3030c25aed dashdemux: Fix event leak when parsing manifest fails
Always remember to unref the event before proceeding, in both success
and failure cases
2013-07-03 19:11:11 -03:00
Thiago Santos
788757dc1f dashdemux: various cleanups
Removing unused function, replacing // comments with /* */ and
replacing some GST_WARNING with GST_INFO/_DEBUG as they are meant
to be
2013-07-03 15:34:41 -03:00
Alex Ashley
5ad2a2d161 dashdemux: Change first fragment selection for live streams
When dashdemux selects its first fragment, it always selects the
first fragment listed in the manifest. For on-demand content,
this is the correct behaviour. However for live content, this
behaviour is undesirable because the first fragment listed in the
manifest might be some considerable time behind "now".

The commit uses the host's idea of UTC and tries to find the
oldest fragment that contains samples for this time of day.

https://bugzilla.gnome.org/show_bug.cgi?id=701509
2013-07-03 15:34:30 -03:00
Thiago Santos
5c480dfc13 dashdemux: only generate index segment uri if there is a template
Simple fix to avoid an assertion.
2013-07-03 10:23:45 -03:00
Greg Rutz
5920ee2777 dashdemux: Implement inheritance for certain MPD elements
According to the MPEG-DASH spec, certain elements (i.e.
SegmentBase, SegmentTemplate, and SegmentList) should inherit
attributes from the same elements in the containing AdaptationSet
or Period.

Updated the SegmentBase, SegmentTemplate, and SegmentList parsers
to properly inherit attributes from the corresponding elements in
AdaptationSet and/or Period.

https://bugzilla.gnome.org/show_bug.cgi?id=702677
2013-07-03 10:23:45 -03:00
Greg Rutz
5e0ed52880 dashdemux: Properly detect presence of xml attributes
Convert all xml attribute/content parsing functions to return a
boolean value indicating whether or not the attribute/content was
present.  We need this finer-grained control in order to properly
implement the inheritance policies described in the spec

Also fixed several memory leak conditions when handling errors in
the xml attribute/content parsing functions.

https://bugzilla.gnome.org/show_bug.cgi?id=702677
2013-07-03 10:23:45 -03:00
Thiago Santos
467b22c567 dashdemux: change debug message from warning to info
It isn't a warning/issue.
2013-07-03 10:23:45 -03:00
Thiago Santos
94c6497dfa dashdemux: protect from access to empty list data
Check if the list has elements before trying to access the last one
and causing a segfault
2013-07-03 10:23:45 -03:00
Thiago Santos
0a88daaf8e dashdemux: protect against failed header downloads
Avoids criticals when downloaded fragment is NULL
2013-07-03 10:23:45 -03:00
Olivier Crête
3f26bb9154 dashdemux: Handle case without an initialization segment
If no initialization segment is defined, then don't print a
critical or a warning, just ignore it.

https://bugzilla.gnome.org/show_bug.cgi?id=701961
2013-07-02 01:30:24 -03:00
Thiago Santos
4c89fab390 dash: save 1 or 2 string copies when getting fragment uris
Only create new string if required, saving maybe 1 or 2 str copies per
fragment.
2013-07-01 18:52:08 -03:00
Thiago Santos
aa1fe88a08 dashdemux: each fragment can have its own index
Return index URI/range to dashdemux from the mpdparser to be able
to download and deliver them downstream for playback.
2013-07-01 18:52:08 -03:00
Thiago Santos
d68fffc217 dashdemux: handle top-level index urls
Parse and provide access to top-level index segments if available.
dashdemux should push those whenever a header is pushed.

Fixes #700489
2013-07-01 18:52:08 -03:00
Arthur Shipkowski
54d87f071c dashdemux: Fix critical error output when Initialization has no URL
Issue evinced by
http://yt-dash-mse-test.commondatastorage.googleapis.com/car-20120827-manifest.mpd
which produces output like ** (gst-launch-1.0:8060): CRITICAL **:
gst_mpdparser_get_initializationURL: assertion `InitializationURL->sourceURL
!= NULL' failed

https://bugzilla.gnome.org/show_bug.cgi?id=700489
2013-07-01 18:51:30 -03:00
Thiago Santos
d9c324c6c7 dashdemux: prevent crash by checking if the segment node is present
Do not try to access range data if there is no segment node
2013-07-01 14:35:02 -03:00
Thiago Santos
d0befd39f0 dash: use same debug category for dashdemux and the mpd parser
Makes debugging easier
2013-07-01 14:22:02 -03:00
Thiago Santos
4f17112392 dashdemux: add support for range based segments
Use the mediaRange information and pass it to the uridownloader
to correctly download only the segment ranges indicated in the
MPD

https://bugzilla.gnome.org/show_bug.cgi?id=702206
2013-07-01 14:22:01 -03:00
Olivier Crête
ad7ffe64a6 srtp: Don't require a key if both auth and cipher are null 2013-06-28 20:35:16 -04:00
Olivier Crête
47a6118fbc srtp: Move the enums to the common header
The types are used in both the encoder and decoder
2013-06-28 20:35:15 -04:00
Olivier Crête
4d7a186513 srtp: Remove unused code 2013-06-28 20:13:38 -04:00
Greg Rutz
45111f2efe dashdemux: Cleanup memory allocation/deallocation
Ensure that g_free/xmlFree is used correctly based on how the
memory was allocated.

When deallocating GLists, there were many places that were using
g_list_foreach and g_list_free.  Converted these occurrences to
call g_list_free_full.

Add NULL checks to all xmlFree calls since the documentation does
not guarantee that passing NULL is safe

In places where we are strdup'ing memory allocated by libxml2,
changed those calls to use xmlMemStrdup().

There were several places where we were missing g_slice_free when
deallocating a top-level node structure.

https://bugzilla.gnome.org/show_bug.cgi?id=702837
2013-06-25 20:53:17 -03:00
Sebastian Dröge
21ccbbffe5 daaladec: Add decoder element 2013-06-23 11:32:42 +02:00
Sebastian Dröge
da47131cd6 daalaenc: Add encoder element 2013-06-23 11:32:42 +02:00
Sebastian Dröge
07053e5c53 daala: Initial version of a Daala plugin 2013-06-23 11:32:42 +02:00
Edward Hervey
f88f1d0a35 srtp: Fix dist
The enums should not be dist-ed and instead be re-generated when
compiling.
2013-06-23 09:06:29 +02:00
Benjamin Gaignard
3fc6f1d9b7 wayland: Add support for RGBx and RGBA formats
Wayland interface could offer two buffers pixels formats: WL_SHM_FORMAT_XRGB8888 and WL_SHM_FORMAT_ARGB8888.
Update waylandsink to support them and check if the format is really available.

https://bugzilla.gnome.org/show_bug.cgi?id=702112
2013-06-18 14:03:13 +02:00
Tim-Philipp Müller
67e71d7931 opencv: fix CFLAGS order and add plugins base libs includes to CXXFLAGS
https://bugzilla.gnome.org/show_bug.cgi?id=702297
2013-06-18 12:47:34 +01:00
Alban Browaeys
90b51562ab opencv: fixes build by moving the c++ header to gstsegmentation.cpp
Fixes:
In file included from gstsegmentation.h:51:0,
                 from gstopencv.c:42:
/usr/include/opencv2/video/background_segm.hpp:47:16: fatal error: list:
No such file or directory
 #include <list>
                ^
compilation terminated.

https://bugzilla.gnome.org/show_bug.cgi?id=702297
2013-06-18 13:37:26 +02:00
Patricia Muscalu
0d6fc0215c curlsmtpsink: removed an incorrect assert
https://bugzilla.gnome.org/show_bug.cgi?id=702036
2013-06-11 21:08:28 +02:00
Miguel Casas-Sanchez
c313e1d3b8 opencv: add foreground/background segmentation element
Add an element to the opencv plugin for foregroung/background image
sequence segmentation, using one out of 3 algorithms.

https://bugzilla.gnome.org/show_bug.cgi?id=701421
2013-06-11 14:32:43 +02:00
Olivier Crête
5732c53c81 dashdemux: Make gst-indent happy 2013-06-10 18:01:09 -04:00
Sebastian Dröge
aad0992ae6 eglglessink: Remove workaround for a bug in the RPi EGL implementation
It's fixed in the latest firmware since a few weeks.
2013-06-08 14:49:34 +02:00
Arthur Shipkowski
3d50af3e4b dashdemux: Fix issue with get returning a value for max-buffering-time
It was not properly divided by GST_SECONDS. Also fix issue with
max-buffering-time being multiplied by GST_SECONDS every time the
property is retrieved.

https://bugzilla.gnome.org/show_bug.cgi?id=700487
2013-06-07 22:58:33 -03:00
Sebastian Dröge
a7889b05b3 dash: Add to Makefile.am for make dist 2013-06-05 18:01:10 +02:00
Stefan Sauer
3d72bc2bd9 ladspa: fix typos in launch examples 2013-05-28 10:27:17 +02:00
Stefan Sauer
f65bdac49b ladspa: use the registry cache for plugin details
Split the introspection and registration part. This way we only need to open all
plugins when updating the registry. When reading the registry we can register
the elements entierly from the cache.
2013-05-28 10:27:17 +02:00
Miguel Casas-Sanchez
407f3e1856 opencv: Add colour image enhancement element based on Retinex algorithm
Add colour image enhancement element based on Retinex algorithm. Two types
exist, namely basic and multiscale; both are described in this article:

Rahman, Zia-ur, Daniel J. Jobson, and Glenn A. Woodell. "Multi-scale retinex
for color image enhancement." Image Processing, 1996. Proceedings.,
International Conference on. Vol. 3. IEEE, 1996

Visually speaking the result looks a bit funny, but is pretty invariable to
lightning changes, which is good for some applications, like image
segmentation.

https://bugzilla.gnome.org/show_bug.cgi?id=700977
2013-05-27 11:27:20 +02:00
Patricia Muscalu
8303561bd9 curlsmtpsink: terminate transfer thread properly
If no EOS has been sent, the curl readfunc callback will
return ABORT. The media file in that case will not be properly
finalized.

https://bugzilla.gnome.org/show_bug.cgi?id=700886
2013-05-24 23:47:50 +01:00
Miguel Casas-Sanchez
ac4efd2914 opencv: Add skin color detection element
https://bugzilla.gnome.org/show_bug.cgi?id=700654
2013-05-23 11:05:28 +02:00
David Schleef
127fcf05a7 flitetestsrc: audio format is "S16" not "s16" 2013-05-18 14:02:18 -07:00
Thiago Santos
d434f36245 dashdemux: send stream start event
Removes warnings about strict sticky events ordering
2013-05-17 21:23:55 -03:00
Thiago Santos
750137c4be mssdemux: fix wma pro caps creation
WmaPro is actually wmaversion 3, and can also be found by the
WMAP fourcc.

Some manifests also contain the block_align field as "PacketSize"
in the audio track description, the libav decoders require it
to be present in caps.

Fixes #699921
2013-05-17 12:08:10 -03:00
Thiago Santos
504142ea93 mssdemux: fix assertions when a stream caps can't be created
Fixes two assertions related to cleanup for a pad that couldn't
be exposed because the caps couldn't be identified from the
Manifest

Fixes #699921
2013-05-17 11:37:30 -03:00
Thiago Santos
ef66e39d03 eagl: fix handling of surface dimension changes
Detect when the eagl surface changed its dimension (when the user rotates
the device for example) and adapt the egl internals to draw to that,
preventing that ios resizes the image again when drawing.

This is particularly harmful when eagl would scale down a image
to draw and the ios screen would scale it back up because the
surface is now bigger than when the element was configured.
2013-05-16 15:16:30 -03:00
Thiago Santos
27d726fbfa mssdemux: parse block_align, channels and rate from waveformatex if possible
wma v2 expects block_align, channels and rate fields set to its caps.
This isn't present direclty on the manifests, so mssdemux should parse
it from the waveformatex structure

https://bugzilla.gnome.org/show_bug.cgi?id=699924
2013-05-16 15:00:39 -03:00
Thiago Santos
f74f9cd3ab mssdemux: add bitrate info to audio streams
bitrate info is always present on the QualityLevel xml node as part
of the adaptive selection processing, put it into caps as some
decoders require it (avdec_wmav2 for example)

https://bugzilla.gnome.org/show_bug.cgi?id=699924
2013-05-16 15:00:39 -03:00
Thiago Santos
62860f4fa9 mssdemux: send stream id and newsegment before pushing data
Fixes sticky events ordering warnings when data is pushed

https://bugzilla.gnome.org/show_bug.cgi?id=699924
2013-05-16 15:00:39 -03:00
Olivier Crête
220f075423 dashdemux: Announce correct mpegts caps 2013-05-15 22:24:29 -04:00
Nicolas Dufresne
4c4fc14afc mimic: Ensure segment is sent before caps and buffer
https://bugzilla.gnome.org/show_bug.cgi?id=700420
2013-05-15 19:30:40 -04:00
Sebastian Dröge
9e2aee01a8 kateenc: Delay segment event until we have caps 2013-05-15 10:12:09 +02:00
Sebastian Dröge
d997c5db0e katedec/tiger: Don't queue sticky events that would come before CAPS 2013-05-15 10:02:29 +02:00
Sebastian Dröge
c4fe52e33e kateparse: Fix event handling
Internal state should only be reset on FLUSH_STOP, not FLUSH_START.

Also forward pre-caps events immediately and don't queue them.
2013-05-15 09:47:21 +02:00
Sebastian Dröge
1c16489af7 hls: Use GstURIDownloader from the library for now to keep everything in a usable state 2013-05-15 09:21:21 +02:00
Nicolas Dufresne
d45623f532 ladspa: Fix compilation issue when lrdf is enabled
https://bugzilla.gnome.org/show_bug.cgi?id=700328
2013-05-14 19:52:47 +01:00
Juan Manuel Borges Caño
30d7908df2 openal: improved port to 1.0
https://bugzilla.gnome.org/show_bug.cgi?id=698013
2013-05-13 23:48:01 +01:00
Tim-Philipp Müller
0c1f059245 dirac: remove old dirac-research library based codec
It's not developed any more and replaced by the
libschroedinger-based elements in gst-plugins-good.
(The libschroedinger 1.0.9 release notes state "This
is an exciting release: most of the encoding tools in
dirac-research have been ported over to Schrödinger, so
now schro has the same or better compression efficiency
as dirac-research.")
2013-05-12 23:51:32 +01:00
Tim-Philipp Müller
020c93b973 ofa: port to 1.0 2013-05-12 23:42:06 +01:00
Tim-Philipp Müller
0c23ac0565 musicbrainz: remove trm element which is not useful any more
TRM IDs are MusicBrainz' old audio fingerprinting system from
Relatable, they were phased out in favour of MusicIPs PUIDs.

https://wiki.musicbrainz.org/History:TRM
2013-05-12 20:57:25 +01:00
Tim-Philipp Müller
b3e70d30cf neonhttpsrc: add support for SCHEDULING query 2013-05-12 18:52:56 +01:00
Tim-Philipp Müller
e1f4f5ccaa neonhttpsrc: add iradio-mode property and post icy metadata as tags 2013-05-12 18:52:56 +01:00
Tim-Philipp Müller
ca3a83a60d neonhttpsrc: port to 1.0 2013-05-12 18:52:55 +01:00
Sebastian Dröge
275e104be6 egl: Add destroy notify instead of always calling eglTerminate() on the display
In some scenarios, for example in QtWebKit, might be difficult to obtain full
control on the egl display and it might be only accessible indirectly via
eglGetCurrentDisplay().

https://bugzilla.gnome.org/show_bug.cgi?id=700058
2013-05-10 12:50:05 +02:00
Tim-Philipp Müller
0d7967e25e dashdemux: rename src template from src%d to src_%u 2013-05-08 23:17:08 +01:00
Thiago Santos
573a4d440c dash: remove superfluous files
Authors and license are at the top of the source files
2013-05-08 18:59:31 -03:00
Thiago Santos
919cb34fee dash: do not use deprecated glib mutex API 2013-05-08 18:14:46 -03:00
Thiago Santos
34e1b59eca dashdemux: fixing compiler warnings about print formats 2013-05-08 18:14:46 -03:00
Thiago Santos
5855511ba4 dash: enable in configure/makefiles
It was intentionally disabled up to this point to prevent
compile failures as dashdemux development commits were all for
0.10 up to here
2013-05-08 18:14:46 -03:00
Thiago Santos
9f190cdff7 dashdemux: port to 1.0 2013-05-08 18:14:46 -03:00
Thiago Santos
b338cc0d34 dashdemux: Fix another wrong assertion
Also adds a couple log messages for easier debugging
2013-05-08 18:14:46 -03:00
Thiago Santos
3472efda75 dashdemux: remove wrong asserts
Those asserts should be the contrary that they are. And also
the surround functions should already check that. Removing them.
2013-05-08 18:14:46 -03:00
Wim Taymans
665d59edba dashdemux: only start timestamp from 0 for live stream
We only want to adjust the timestamps so that they start from 0 for live
streams. Non-live streams already start from 0 and after a seek we actually want
to timestamp to be the position we seek to.
2013-05-08 18:14:45 -03:00
Wim Taymans
4f9f0b84cf dashdemux: make timestamps start from 0
Non-live streams should timestamp buffers with a running-time starting from
0. Since we already push a 0 -> -1 segment, bring the timestamps to 0
by subtracting the initial timestamp.
2013-05-08 18:14:45 -03:00
Wim Taymans
4ab58e0fb1 dashdemux: also send newsegment on startup 2013-05-08 18:14:45 -03:00
Wim Taymans
cfcaa23959 dashdemux: small cleanup 2013-05-08 18:14:43 -03:00
Thiago Santos
afccf149af dashdemux: live stream playback crashfix 2013-05-08 18:14:42 -03:00
Thiago Santos
d9baed8302 dash: mpdparser: do not cleanup xml lib too early
The xmlCleanupParser function seems to cleanup all statically
allocated libxml variables, making it unusable. We can't guarantee
that dashdemux won't need it anymore, so better not call it.
2013-05-08 18:14:42 -03:00
Thiago Santos
14feeb3ccb dashdemux: reimplementing live streams manifest updates
Manifest updates should be done periodically for live streams,
this patch makes the demuxer create a new manifest client for
the new version and transfers the stream position to the new
one, discarding the old one afterwards.
2013-05-08 18:14:42 -03:00
Thiago Santos
b01a3729c0 dash: mpdparser: allow periods without start time for live streams
Live streams can have undefined start times for the periods and
mpdparser can let that pass instead of erroring out
2013-05-08 18:14:41 -03:00
Thiago Santos
cff4498f7c dash: mpdparser: use guint64 for timestamps
The timestamps can be pretty big, so use guint64 for them
2013-05-08 18:14:41 -03:00
Thiago Santos
a53fd87508 dashdemux: mpd parsing: fix query parameter parsing
Try harder to detect URL parameters and split them to accomodate
the fragment url in the concat:

base-url + fragment-url + url-parameters
2013-05-08 18:14:41 -03:00
Thiago Santos
4ca530f2fe dashdemux: plug some leaks
Add some missing free/unrefs spotted by valgrind
2013-05-08 18:14:41 -03:00
Thiago Santos
c82606a600 dashdemux: remove unused mutexes 2013-05-08 18:14:41 -03:00
Thiago Santos
737d328bb5 dashdemux: properly reset stream status after a flush
The stream eos/end of period status must also be reset after a flushing
seek. This makes seeking after EOS work.
2013-05-08 18:14:41 -03:00
Andre Moreira Magalhaes (andrunko)
fbbf713e45 dashdemux: keep a list of streams periods
Keep a list of streams per period so that the download loop can keep
downloading while the stream loop is still pushing old period's data.
2013-05-08 18:14:41 -03:00
Andre Moreira Magalhaes (andrunko)
b9272dc0e6 dashdemux: Properly parse base uri from mpd. 2013-05-08 18:14:40 -03:00
Andre Moreira Magalhaes (andrunko)
6ecb58c4f8 dashdemux: Remove unused members. 2013-05-08 18:14:40 -03:00
Andre Moreira Magalhaes (andrunko)
497500dbfe dashdemux: Only send newsegment on seek. 2013-05-08 18:14:40 -03:00
Thiago Santos
3bc62ccc51 dashdemux: send segments that overwrite previous ones
This is only done for seeks, so it is fine
2013-05-08 18:14:40 -03:00
Andre Moreira Magalhaes (andrunko)
2b83b4410c dashdemux: switch bitrates without switching pads 2013-05-08 18:14:40 -03:00
Andre Moreira Magalhaes (andrunko)
11697b9968 dashdemux: Remove unusued method. 2013-05-08 18:14:40 -03:00
Andre Moreira Magalhaes (andrunko)
daea47d3f4 dashdemux: Set stream need_header after seek and has_data_queued to FALSE when flushing stream. 2013-05-08 18:14:40 -03:00
Thiago Santos
4a9d7f0a9f dashdemux: do not pause/start the stream loop on playing/paused changes
The demuxer shouldn't care about paused/playing, it should act the
same in both states
2013-05-08 18:14:39 -03:00
Thiago Santos
2fe509d50a dashdemux: remove property that isn't used anymore
Remove some pieces of code that are from an old property
that isn't used anymore
2013-05-08 18:14:39 -03:00
Thiago Santos
460542daaf dashdemux: add a downloadrate utility
A small struct that keeps a short history of fragment download bitrates
to have an average measure of N last fragments instead of using only
the last downloaded bitrate
2013-05-08 18:14:39 -03:00
Thiago Santos
28449ce7d1 dashdemux: sprinkling some more log 2013-05-08 18:14:39 -03:00
Thiago Santos
94dcb60127 dashdemux: change bitrates based on the stream bitrate
Do not use a global bitrate as the sizes of the fragments matter
when calculating the download rate as the connection setup time is
also being taken into the download duration, a smaller fragment
will have a lower bitrate than a larger one.

This avoids switching the bitrates for streams frequently because
of bitrate mismatches
2013-05-08 18:14:39 -03:00
Thiago Santos
770df6277a dashdemux: refactor to use the uridownloader lib instead of internal copy 2013-05-08 18:14:39 -03:00
Andre Moreira Magalhaes (andrunko)
5efedbff0a dashdemux: Make sure switch_pads won't leak any pad. 2013-05-08 18:14:39 -03:00
Andre Moreira Magalhaes (andrunko)
e92531c8f6 dashdemux: Properly stop download and stream tasks where appropriate. 2013-05-08 18:14:39 -03:00
Thiago Santos
288903a203 dashdemux: avoid an assertion when stopping the pipeline
Avoids asserting when dataqueues are setting to flushing due
to a pipeline stop during a pad switch.
2013-05-08 18:14:39 -03:00
Thiago Santos
83c0e1e25d dashdemux: download the next fragment with smaller timestamp
Instead of downloading 1 fragment per stream per download loop,
select the stream with the earlier timestamp and get a fragment
only for that one.

The old algorithm would lead to problems when the fragment durations
were too different for streams.
2013-05-08 18:14:39 -03:00
Thiago Santos
dbd6bde9d1 dashdemux: track segments in the demuxer
Use a GstSegment to track the current segment information in the
demuxer.
2013-05-08 18:14:38 -03:00
Thiago Santos
39924c60a1 dashdemux: remove buffering message emission from dashdemux
dashdemux shouldn't emit the buffering message as that can pause
the pipeline. It has no proper knowledge of the downstream buffering
status so it can pause the pipeline when it isn't necessary. It should
have an internal buffer for downloading the streams ahead of playback,
but that shouldn't make it able to stop the pipeline for buffering.

A particular case in which this is bad is when a pad switch happens
(changing bitrates for example), the new pads dashdemux creates
will get linked to demuxers and new queues will be created,
these queues are initially empty and dashdemux will quickly
drain its buffers by pushing them to those queues. So it
would have no more buffers internally and would emit a
buffering message with a low ratio, causing the pipeline
to pause when it wouldn't be necessary.
2013-05-08 18:14:35 -03:00
Thiago Santos
10b5d4d1cc dashdemux: removing unused code
Cleaning up by removing unused code and variables
2013-05-08 18:14:35 -03:00
Thiago Santos
0d9b5923af dashdemux: re-enable and fix adaptive switching
It is still unstable, but at least it works when the switches aren't
happening after every fragment
2013-05-08 18:14:34 -03:00
Thiago Santos
2d85107299 dashdemux: correctly signal EOS on manifest end
Put EOS on the streams queues after the last fragment from the
last period for each stream. This way we keep it serialized
with the buffers and it will work when streams have different
ending times
2013-05-08 18:14:34 -03:00
Thiago Santos
a19c689dfa dashdemux: detect end-of-period correctly
Detect end of period when there are no more buffers on any of the
streams
2013-05-08 18:14:34 -03:00
Thiago Santos
3a055ac2d1 dashdemux: Use the smallest queue value to define buffering state
The smallest queue should be used to prevent blocking the download
thread when a stream has too much data buffered, leaving the other
streams starving from fragments
2013-05-08 18:14:34 -03:00
Thiago Santos
9777fc5cb5 dash: fix parsing of streams to get correct fragment durations
Use the current stream base time instead of the 0th stream base time
to get default duration for fragments.
2013-05-08 18:14:34 -03:00
Thiago Santos
54542a6000 dashdemux: block waiting for buffers instead of busy wait
Make the streaming loop block waiting for buffers on the queues instead
of busy waiting eating cpu continuously on a queue length check
2013-05-08 18:14:34 -03:00
Thiago Santos
80c6973319 dashdemux: fix seeking on multiple streams
Each stream has its own durations and timestamps, the fragment number
is different for each stream when seeking, so the seek has to be done
for all streams, rather than on a single stream and propagated to
others
2013-05-08 18:14:34 -03:00
Thiago Santos
7330225ac8 dashdemux: Replace GQueue by GstDataQueue
GstDataQueue has proper locking and provides functions to limit the
size of the queue. Also has blocking calls that are useful to
our multithread scenario in Dash.
2013-05-08 18:14:34 -03:00
Thiago Santos
27b1abbda3 dashdemux: move the buffers queues to the streams
Store the buffers separately for each stream, this is clearer than
having a queue with a list of buffers. It also allows easier selection
of buffers to push in later refactors
2013-05-08 18:14:34 -03:00
Thiago Santos
1556d8cb03 dashdemux: refactor streams data to its own struct
Keeps code more organized and similar to what other demuxers
usually do
2013-05-08 18:14:33 -03:00
Thiago Santos
f46ba44e99 dash: do not try to print a pointer as a string 2013-05-08 18:14:33 -03:00
Thiago Santos
f27bb684f7 dashdemux: Remove timing code that delays pushing of fragments
Fragments should be pushed ASAP as downstream should be responsible for
doing the syncrhonization and proper buffering.

This has the great side effect of fixing most of the seeking A/V sync issues.
2013-05-08 18:14:33 -03:00
Thiago Santos
a1447a8ede dash: fixing build warnings
Also running through gst-indent
2013-05-08 18:14:33 -03:00
Louis-Francis Ratté-Boulianne
6acf2fba8f gstdashdemux: add need_header member to know whether the initialization fragment should be pushed 2013-05-08 18:14:33 -03:00
Louis-Francis Ratté-Boulianne
0bed9a6646 dashdemux: don't wait for the whole duration of a fragment when seeking 2013-05-08 18:14:33 -03:00
Louis-Francis Ratté-Boulianne
489d7a174c dashdemux: switch pads and send header file when a newsegment event is sent 2013-05-08 18:14:33 -03:00
Louis-Francis Ratté-Boulianne
04004cdf65 dashdemux: various fixes 2013-05-08 18:14:33 -03:00
David Corvoysier
c901f610c2 Applied gst-indent 2013-05-08 18:14:33 -03:00
David Corvoysier
582aa51fd6 Replaced URL pointing to obsolete Klagenfurt MPD by a new one 2013-05-08 18:14:33 -03:00
Gianluca Gennari
c988ee3a4b mpdparser: fix escape sequence in URL template resolving 2013-05-08 18:14:33 -03:00
Gianluca Gennari
470c860ffa mpdparser: do not switch pads when bitstreamSwitching = true 2013-05-08 18:14:32 -03:00
Gianluca Gennari
e0c55050e1 dashdemux: complete support for manifest file updates 2013-05-08 18:14:32 -03:00
Gianluca Gennari
7092a9c1ac dashdemux: add support for manifest file updates
- the MPD file is updated in the download loop (only if we have a "dynamic" MPD and minimumUpdatePeriod is valid);
- properly LOCK/UNLOCK the GstMpdClient;
2013-05-08 18:14:32 -03:00
Gianluca Gennari
7371b7997b dashdemux: new API to set/get segment index and period index
TODO: rework segment selection to support Representations or Adaptation Sets with segments not aligned
2013-05-08 18:14:32 -03:00
Gianluca Gennari
e7fad847bb dashdemux: new API to load the stream Period with a given index
this avoids to fiddle with stream internals in the code
2013-05-08 18:14:32 -03:00
Gianluca Gennari
9d43e33319 dashdemux: implement seeking across Periods 2013-05-08 18:14:32 -03:00
David Corvoysier
f7c6403432 Applied gst-indent 2013-05-08 18:14:32 -03:00
David Corvoysier
e323c099a0 By default, do not forward pad queries upstream, because it may have unforessen side-effects (forwarding the new 1.0 GST_CAPS query would prevent pad linking for instance) 2013-05-08 18:14:32 -03:00
Olivier Blin
d058a7f2b2 plugin: register as dashdemux instead of fragmented
This fixes conflicts with the HLS plugin, which is also named
fragmented.
When building its registry, gstreamer was picking one or the other
between hls and dashdemux.
2013-05-08 18:14:31 -03:00
Gianluca Gennari
895e804a86 dashdemux: check if we have received the MPD file in the proper way 2013-05-08 18:14:31 -03:00
Gianluca Gennari
8f13f246e0 mpdparser: silence warning 2013-05-08 18:14:31 -03:00
Olivier Blin
0b5eb519e7 dashdemux: fix printing buffering time and download rate/size
This was broken on armv7.
2013-05-08 18:14:31 -03:00
Olivier Blin
bd2784ffbb dashdemux: fix unused-but-set variable 2013-05-08 18:14:30 -03:00
Olivier Blin
cbebb01f23 dashdemux: use new gst_mpd_client_get_next_fragment_duration API
This fixes build that has been broken by commit
fb9aeac6552021b176a4c4bd07265e02a0b70e0f.

gst_mpd_client_get_target_duration has been removed, and
gst_mpd_client_get_next_fragment_duration should be used instead.
2013-05-08 18:14:29 -03:00
Gianluca Gennari
f728e424b2 dashdemux: remove FIXME comment
pad switching across multiple periods works perfectly fine now
and it is done only when there is a change in the CAPS
2013-05-08 18:14:29 -03:00
Gianluca Gennari
e96cc18ab9 dashdemux: send new-segment events to all pads 2013-05-08 18:14:27 -03:00
Gianluca Gennari
9387365fc9 dashdemux: reworked the API to retrieve fragment timestamp, fragment duration and media presentation duration
This was necessary to support variable-duration Fragments.

in the new API:
- gst_mpd_client_get_current_position returns the timestamp of the NEXT fragment to download;
- gst_mpd_client_get_next_fragment_duration returns the duration of the next fragment to download;
- gst_mpd_client_get_media_presentation_duration returns the mediaPresentationDuration from the MPD file;

also there is a new internal parser function:
- gst_mpd_client_get_segment_duration extracts the constant segment duration from the MPD file
(only used when there is no SegmentTimeline syntax element in the current representation)

In gst_mpd_client_get_next_fragment, we set the timestamp/duration of the fragment just downloaded
copying the values from the corresponding GstMediaSegment.

TODO: rework SEEKING to support seeking across different Periods.
2013-05-08 18:14:25 -03:00
Gianluca Gennari
dc5d7d258e dashdemux: use effective segment duration to reschedule the streaming task
do not assume segment duration is constant

Conflicts:

	ext/dash/gstdashdemux.c
2013-05-08 18:14:22 -03:00
Gianluca Gennari
cfcd9ffac6 dashdemux: reworked gst_dash_demux_get_buffering_time() to return the effective buffering time
do not assume the Fragment duration is constant
2013-05-08 18:14:16 -03:00
Gianluca Gennari
0abd777257 dashdemux: complete support for Media Presentations with several Periods
- Periods are played in sequence, from PeriodStart to PeriodEnd
- seamless switching from one Period to the next one works fine;
- the 'new-segment' generation is broken, so if we need to switch pads for a new Period there is a crash;
2013-05-08 18:14:10 -03:00
Gianluca Gennari
9d09e99ebe mpdparser: initial support for Media Presentations made of several Periods
- build a list of the available Periods with their start and duration time
- add the list of GstStreamPeriod in the GstMpdClient data struct
- remove cur_period from GstMpdClient and introduce an API to get the current GstStreamPeriod
- several API clean-ups
2013-05-08 18:14:10 -03:00
Olivier Blin
ba3bd1c69a mpdparser: support BaseURL for SegmentURL using mediaRange
This is used in big_buck_bunny_CappedVBR_Multirate_4s_0_AudioVideo_MainProfile.mpd
2013-05-08 18:14:10 -03:00
Olivier Blin
767a5ebed0 mpdparser: factorize adding range parameter to URL 2013-05-08 18:14:08 -03:00
Gianluca Gennari
53f383eff0 dashdemux: reworked caps detection
also reworked the API to extract audio/video parameters from the manifest file
(mimeType, width, height, rate, num channels)
2013-05-08 18:14:06 -03:00
Gianluca Gennari
fe05060044 dashdemux: do not send bogus duration messages when mediaPresentationDuration is unknown 2013-05-08 18:14:03 -03:00
Gianluca Gennari
fba69179e4 mpdparser: support SegmentTimeline syntax also for list-based media segment generation 2013-05-08 18:14:03 -03:00
Gianluca Gennari
362b5e9446 mpdparser: add support for SegmentTimeline syntax elements
build the list of segments to be played using the SegmentTimeline syntax, if present
bugfixes:
- for dynamic MPD files, when mediaPresentationDuration is not present use minimumUpdatePeriod instead
- do not add a spurious '$' when building an URL from a template like "$Bandwidth$/init.mp4v"
- introduce gst_mpd_client_add_media_segment() to avoid code duplication
2013-05-08 18:14:03 -03:00
David Corvoysier
41733d8296 Fixed wrong index in fragments 2013-05-08 18:14:03 -03:00
Gianluca Gennari
8e9ba056d7 mpdparser: fix memory leak in gst_mpd_client_get_next_fragment_set()
we have to free next_fragment_uri
2013-05-08 18:14:03 -03:00
David Corvoysier
cf0ab8e1f3 Removed unused function 2013-05-08 18:14:03 -03:00
David Corvoysier
84c8de8ab6 Seek event handling cleanup 2013-05-08 18:14:02 -03:00
Gianluca Gennari
b580ee8cd7 dashdemux: fix playing of single-segment media streams
other fixes:
- fixed a buffering bug: now we stop buffering when we reach the end of manifest
- now gst_mpd_client_get_target_duration() always returns a valid duration
(in case of single-segment streams, we return either Period duration or mediaPresentation duration)
TODO: support SegmentTimeline
2013-05-08 18:14:02 -03:00
Gianluca Gennari
5ade664680 uridownloader: deleted useless declaration of gst_uri_downloader_free() 2013-05-08 18:14:00 -03:00
Gianluca Gennari
122f10669f uridownloader: when possible, reuse existing element to download a new URI
previously a new element was allocated for each media segment, and it was never freed
2013-05-08 18:14:00 -03:00
Gianluca Gennari
5b830c3c91 dashdemux: unref caps in function need_add_header() 2013-05-08 18:13:58 -03:00
Gianluca Gennari
3726ff73ad dashdemux: fix extraction of SegmentTemplate->initialization in gst_mpd_client_get_next_header()
now the following MPD files are properly supported:

http://dash.edgesuite.net/adobe/hdworld_dash/HDWorld-1600.mpd
http://dash.edgesuite.net/adobe/hdworld_dash/HDWorld.mpd
2013-05-08 18:13:58 -03:00
Gianluca Gennari
cd84aaa9aa dashdemux: fix memory leak in gst_dash_demux_get_next_header() 2013-05-08 18:13:58 -03:00
David Corvoysier
95ee452625 We now only accept actual manifest files, and not any XML file 2013-05-08 18:13:58 -03:00
David Corvoysier
763f4c3fc3 Added a typefind helper for DASH: this commit should be reverted as soon as a proper patch has been submitted to gst-plugins-base 2013-05-08 18:13:57 -03:00
David Corvoysier
29c62f4780 Fixed state machine (again) 2013-05-08 18:13:57 -03:00
David Corvoysier
a7ad12e208 Code refactoring 2013-05-08 18:13:57 -03:00
David Corvoysier
f4756f7cb0 Fixed state machine 2013-05-08 18:13:57 -03:00
David Corvoysier
7f2207732b Improve consistency of the tasks shutdown code 2013-05-08 18:13:57 -03:00
David Corvoysier
28aaff747c Added missing g_list_free 2013-05-08 18:13:57 -03:00
David Corvoysier
30fece810f Do not answer to URI queries 2013-05-08 18:13:56 -03:00
David Corvoysier
0e2c3ffc0b Try queries upstream if we cannot process them 2013-05-08 18:13:56 -03:00
David Corvoysier
089daeba1b Renamed demux->next_stream in demux->next_push 2013-05-08 18:13:56 -03:00
David Corvoysier
943f4fa152 Inlined one-line utility funciton that was called only once 2013-05-08 18:13:56 -03:00
David Corvoysier
3cb7b12cbe Fixed regression after the introduction of the multi-screen support, preventing the pipeline from stopping properly 2013-05-08 18:13:56 -03:00
David Corvoysier
6f5d6f91ff Modified log level of shutdown message 2013-05-08 18:13:56 -03:00
David Corvoysier
90be873ee1 Comments: We don't select a single representation, but a representation for each stream Code: cleanup of gst_get_next_fragment (also renamed in gst_get_next_fragment_set) 2013-05-08 18:13:56 -03:00
David Corvoysier
d3c4c48923 Removed debug trace 2013-05-08 18:13:56 -03:00
David Corvoysier
6be9a30ad8 Added introduction and general design notes 2013-05-08 18:13:56 -03:00
David Corvoysier
35c04708ba Fixed wrong comment 2013-05-08 18:13:56 -03:00
David Corvoysier
6255b2762f Documented gst_dash_demux_download_loop 2013-05-08 18:13:55 -03:00
David Corvoysier
5b6bede189 Commented gst_dash_demux_stream_loop 2013-05-08 18:13:55 -03:00
David Corvoysier
b9d6796cb5 Commented needs_pad_switch 2013-05-08 18:13:55 -03:00
David Corvoysier
54fcbf89f1 Documented the representation switch mechanism 2013-05-08 18:13:55 -03:00
David Corvoysier
7764efb761 Replaced references to playlist (HLS) by references to manifest (DASH) 2013-05-08 18:13:55 -03:00
David Corvoysier
ad22e0da6d Renamed gst_dash_demux_switch_playlist to gst_dash_demux_select_representation and added comments 2013-05-08 18:13:55 -03:00
David Corvoysier
204ea9fc67 Removed obsolete comment 2013-05-08 18:13:55 -03:00
David Corvoysier
ae32818105 Applied gst-indent 2013-05-08 18:13:55 -03:00
David Corvoysier
28215b9e12 Updated README 2013-05-08 18:13:55 -03:00
Gianluca Gennari
b4057976be mpdparser: support MPD files with SegmentBase elements encoded inside a SegmentList element
also properly support MPD files without any Initialization segment
2013-05-08 18:13:55 -03:00
Gianluca Gennari
375634f669 mpdparser/dashdemux: fixed get_width, get_height, get_audio_rate, get_num_audio_channels API functions
the actual values now can be extracted also from the AdaptationSet element;
checking NULL structs for better robustness;
2013-05-08 18:13:55 -03:00
Gianluca Gennari
98a41f2c9e mpdparser: added support for single-segment streams with the URL encoded in the baseURL syntax element 2013-05-08 18:13:54 -03:00
Gianluca Gennari
779bf29879 mpdparser: added lang attribute to ProgramInformation node 2013-05-08 18:13:52 -03:00
Gianluca Gennari
94644fa82e mpdparser: added support for Accessibility, Role, Rating, Viewpoint elements to AdaptationSet node
those are DescriptorType elements, so they are just parsed and dumped for now;
2013-05-08 18:13:50 -03:00
Gianluca Gennari
416ea67979 mpdparser: support multiple ProgramInformation nodes
now we keep a list of ProgramInformation nodes for each Period node
2013-05-08 18:13:48 -03:00
Gianluca Gennari
dd198bc86d mpdparser: fixed parsing of SegmentList syntax element, and eliminated Represention node list from Period node
SegmentList nodes are allowed into Period, AdaptationSet or Representation nodes
and there is at most 1 element, so no need to keep a list;

Period nodes cannot have any Represention elements, as AdaptationSet nodes are mandatory;
this breaks compatibility with some legacy DASH test sequences.
2013-05-08 18:13:48 -03:00
Gianluca Gennari
8e3092661a mpdparser: fixed return with no value
gstmpdparser.c: In function ‘gst_mpdparser_get_list_and_nb_of_audio_language’:
gstmpdparser.c:2891: warning: ‘return’ with no value, in function returning non-void
2013-05-08 18:13:48 -03:00
Gianluca Gennari
7330bbfa7a mpdparser.c/.h: changed license from dual MIT/LGPL 2.0 to LGPL 2.1
uniformed licencinsing to the other libraries in the dashdemux project
2013-05-08 18:13:48 -03:00
hzakari
ec44485510 Optimize the two functions that return the number and the list of languages in a single function 2013-05-08 18:13:48 -03:00
Hamid ZAKARI
fab388c9fd Add the headers to the adaptationsets segments if any one of these changed representation 2013-05-08 18:13:46 -03:00
Hamid ZAKARI
713d02b81a Support Multi languages (need a decodebin2 patch) 2013-05-08 18:13:45 -03:00
Hamid ZAKARI
a4ac4a3117 Remove the "TODO" comment 2013-05-08 18:13:45 -03:00
David Corvoysier
3c937636ee Renamed LICENSE into COPYING 2013-05-08 18:13:44 -03:00
David Corvoysier
79dc12cc05 Updated authors 2013-05-08 18:13:44 -03:00
David Corvoysier
6fc0db0e0b Initial import of gstdashdemux sources 2013-05-08 18:13:43 -03:00
Tim-Philipp Müller
43fea50c8a smoothstreaming: pass width, height, channels and rate as integer
g_ascii_strtoull() returns a long long integer, but we need to
pass a normal int to gst_structure_set() for fields of G_TYPE_INT,
so cast appropriately.
2013-05-08 15:42:01 +01:00
Tim-Philipp Müller
99c1dce8db smoothstreaming: fix WMV caps
Makes this show at least a picture:
http://playready.directtaps.net/smoothstreaming/TTLSS720VC1/To_The_Limit_720.ism/Manifest
2013-05-08 10:55:16 +01:00
Thiago Santos
4711da22e9 mssdemux: fixing compiler warnings about print formats 2013-05-07 21:09:49 -03:00
Thiago Santos
4545f4bf4e smoothstreaming: port to 1.0 2013-05-07 21:09:49 -03:00
Thiago Santos
001da5a239 mssdemux: remove already fixed TODO comment 2013-05-07 21:09:49 -03:00
Thiago Santos
210f6c510c mssdemux: replace gst_value_deserialize with simpler function
The deserialization was only used to convert hex strings into
GstBuffers. Replace gst_value_deserialize with a simpler, direct
function.
2013-05-07 21:09:49 -03:00
Thiago Santos
1458500850 mssdemux: fix newsegment event leak 2013-05-07 21:09:48 -03:00
Thiago Santos
e541ec7e63 mssdemux: replace unused parameter
The buffer parameter wasn't being used, it was only to signal if
a buffer was downloaded and advance to the next fragment in the
manifest.

Replace the buffer with a boolean that has the same effect and is
safer
2013-05-07 21:09:48 -03:00
Wim Taymans
6d56eba653 mss: avoid GValue leak 2013-05-07 21:09:48 -03:00
Louis-Francis Ratté-Boulianne
f0b6b79461 mssdemux: fix a small memory leak 2013-05-07 21:09:48 -03:00
Louis-Francis Ratté-Boulianne
00400a838b mssdemux: avoid streaming to fail when download is cancelled
When download was failing repeatedly, it was causing streaming to fail even though it was cancelled on purpose (stopping tasks).
2013-05-07 21:09:48 -03:00
Thiago Santos
b579cb1ddc mssdemux: removing unused functions 2013-05-07 21:09:48 -03:00
Thiago Santos
1d28c574cf mssdemux: switch bitrates without switching pads 2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
c8367a346c mssdemux: Check if pads are valid before removing. 2013-05-07 21:09:48 -03:00
Thiago Santos
bf0ea5d561 mssdemux: add a maximum error count for downloads
mssdemux will tolerate a few download errors before emitting an
error message to the bus
2013-05-07 21:09:48 -03:00
Thiago Santos
255eb4b161 mssdemux: use streams bitrate individually
connection setup times seem to matter when measuring the download
rate of different streams. Streams with longer fragments have a
*relatively* lower connection setup time and achieve higher bitrates.

Using the average seems unfair here, so use each stream's measured bitrate
to select its best quality option.
2013-05-07 21:09:48 -03:00
Thiago Santos
52c97834df mssdemux: use downloadbitrate utility for measuring bitrate
downloadbitrate keeps a short history of bitrates and helps
tracking the current average download bitrate for mssdemux
2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
68308b3e54 mssdemux: Properly compute new bitrate and use bitrate_limit. 2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
706b127daa mssdemux: Avoid a possible division by zero 2013-05-07 21:09:48 -03:00
Andre Moreira Magalhaes (andrunko)
28beb2ebd7 mssdemux: Add missing object param to GST_DEBUG|INFO_OBJECT calls 2013-05-07 21:09:48 -03:00
Thiago Santos
2219a3a1cc mssdemux: add bitrate-limit property
It allows the plugin to use its own downloading bitrate measures
as a feedback to select the best streams bitrate for the current
network scenario
2013-05-07 21:09:48 -03:00
Thiago Santos
a0a05b2941 mssdemux: use the shared uridownloader lib instead of an internal copy 2013-05-07 21:09:47 -03:00
Andre Moreira Magalhaes (andrunko)
12e9432847 mssdemux: Do not block on reset.
We need to cancel the downloader for each stream before joining the main download task, otherwise
the download task will block until all the stream tasks finish.
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
8ab3d09f81 mssdemux: handle FLUSH events by resetting the demuxer state 2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
4a630f86f8 mssdemux: add conditions to prevent some crashes 2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
218f2dee0c mssdemux: use standard glib methods 2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
44d02efee0 mssdemux: fix some memory leaks and use right free function 2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
b064910895 mssdemux: don't stop a task from inside the loop
Only pause the task
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
0239d77999 mssdemux: log manifest content for debugging 2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
ea5f2718bf mssdemux: make codec private data from manifest attributes with AAC-LC
When the codec is AAC-LC, some server implementation (e.g. Microsoft IIS) doesn't add the CodecPrivateData attribute. The element needs to re-create the codec data from the Quality Level attributes (channels and sampling rate).
2013-05-07 21:09:47 -03:00
Louis-Francis Ratté-Boulianne
3ebb842388 mssdemux: only try to reload the manifest for live streams
There is no way to know if a live stream is really finished, so try to reload the manifest and check if there are more fragments to download. Else just let know it's the EOS.
2013-05-07 21:09:47 -03:00
Thiago Santos
7cb3a367f6 mssdemux: add some documentation
Adds a little bit of docs explaning the internals of mssdemux
2013-05-07 21:09:47 -03:00
Thiago Santos
46efc08809 mssdemux: add max-queue-size-buffers property
Indicates how much buffering should be done internally in
mssdemux
2013-05-07 21:09:47 -03:00
Thiago Santos
23ad760e3a mssdemux: stop tasks faster
Issue a cancel to the downloaders so they stop earlier
2013-05-07 21:09:47 -03:00
Thiago Santos
aa1713068a mssdemux: implement live streams handling
Live streams force the demuxer to keep reloading the Manifest from
time to time, as the new fragments are being added as they are recorded.
The demuxer should also try to keep up and detect when it had to skip
fragments, marking the discont flag when that happens.

Curiously, the spec doesn't seem to mention when/how a live stream is supposed
to end, so keep trying downloads until the demuxer errors out.
2013-05-07 21:05:12 -03:00
Thiago Santos
0704f15103 mssdemux: do not leak fragments 2013-05-07 21:05:12 -03:00
Thiago Santos
21872e78b8 mssdemux: fix issue on fragment timestamping parsing
Use guint64 as the fragments can start at very high numbers,
specially on live streams
2013-05-07 21:05:12 -03:00
Thiago Santos
0a4c077d2e mssdemux: error out when upstream doesn't implement URI query
Error out when upstream doesn't answer to URI query and mssdemux
doesn't know the URI to fetch the fragments from
2013-05-07 21:05:12 -03:00
Thiago Santos
1116eee681 mssdemux: push newsegments with same start time on bitrate switches
This keeps sinks working in sync after a bitrate switch
2013-05-07 21:05:12 -03:00
Thiago Santos
c2ae981e6d mssdemux: rewriting pad tasks so that buffers are pushed by ts order
Use pad tasks to download data and an extra task that gets the earlier
buffer (with the smallest timestamp) and pushes on the corresponding
pad.

This prevents that the audio stream rushes ahead on buffers as its
fragments should be smaller
2013-05-07 21:05:12 -03:00
Thiago Santos
fba63178fe mssdemux: some fixes to bitrate switching
Removes a possible deadlock from bitrate switching when the pad
that requested the switch blocks on its pad-push
2013-05-07 21:05:12 -03:00
Thiago Santos
6ca10e6c1b mssdemux: refactoring fragment download to its own function
Makes code clearer and helps changing the download part of the
code to its own thread
2013-05-07 21:05:11 -03:00
Thiago Santos
da4fad2f6f mssdemux: implement bitrate switching
When connection-speed changes, signal that we might need a bitrate
switch. During the switch, a new pad group is added and the old one
is drained and removed.

New pads also need to push newsegments before starting to stream
2013-05-07 21:05:11 -03:00
Thiago Santos
b9aec0ad0d mssdemux: add connection-speed property
This speed limits the maximum bitrate of streams. Currently it
is only read when starting the pipeline, but it should be used
for switching bitrates during playback to adapt to network
changes.
2013-05-07 21:05:11 -03:00
Thiago Santos
4b6900999a mssdemux: add an 'active' flag to manifest stream
mssdemux should set the streams it has exposed as active so that
the manifest won't use the non-active streams to compute total bitrates
or providing fragments
2013-05-07 21:05:11 -03:00
Thiago Santos
4726115e83 mssdemux: signal no-more-pads when finished exposing pads
This makes decodebin/playbin mechanism know it can start playing
when buffering is finished
2013-05-07 21:05:11 -03:00
Thiago Santos
eec8164d9c mssmanifest: Keep the stream qualities list sorted by bitrate
This will help making adaptive streaming chose the best rate
for a particular connection speed
2013-05-07 21:05:11 -03:00
Thiago Santos
013c11f7dd mssdemux: also consider fourcc AVC1 as H264
H264 can be represented by both fourccs H264 and AVC1, use both.
2013-05-07 21:05:11 -03:00
Thiago Santos
4293cfa763 mssmanifest: add support for VC-1 and WmaPro formats parsing
VC-1 should map to WMV3 and WmaPro to WMA2
2013-05-07 21:05:11 -03:00
Thiago Santos
3f2409f7e2 mssdemux: do not try to expose unknown streams
When the stream can't have its caps detected, better not to expose it.
If no streams are known, signal an error about no playable streams to
the application
2013-05-07 21:05:11 -03:00
Thiago Santos
b2ba96bb85 mssmanifest: do not set codec_data when it is empty
Some manifests contain empty codec datas, better not set them
2013-05-07 21:05:11 -03:00
Thiago Santos
9b3f67c5b0 mssdemux: set timestamp and duration to fragment buffers
We can get those from the manifest and helps downstream to know
the fragment start time after a seeking operation
2013-05-07 21:05:11 -03:00
Thiago Santos
ebd0862ac1 mssmanifest: fix typo
Fix typo that was making the advance fragment function return a wrong
flow return in case it was already EOS
2013-05-07 21:05:11 -03:00
Thiago Santos
cb7e3d1f3b mssdemux: initial implementation of seek event handling
Adds basic handling for seek in time events. Needs to cooperate
with the downstream qtdemux so that it forwards the seeks and
the corresponding newsegments
2013-05-07 21:05:11 -03:00
Thiago Santos
33d872916b mssdemux: handle src pad queries fir duration and latency
Add a src pad query handler to get the duration from the manifest
and report it upstream.

Also adds a simple handler for latency queries
2013-05-07 21:05:11 -03:00
Thiago Santos
0f1ef317f0 mssdemux: add some more error handling
Post error in some more scenarios:
* when the manifest has no streams
* when getting the fragment url fails
2013-05-07 21:05:11 -03:00
Thiago Santos
3f15c9b05a mssdemux: add timescale to the caps
This is important for downstream to properly timestamp the samples

The default value is 10000000, but this can be set in the stream
or at the top-level manifest entry
2013-05-07 21:05:10 -03:00
Thiago Santos
68d2719c9f mssdemux: parse the fps from h264 codec data if possible
Use h264 codec parsing lib to extract the fps from the manifest's
codec data as it doesn't seem to provide it anywhere else
2013-05-07 21:05:10 -03:00
Thiago Santos
af4c690995 mssdemux: correctly add h264 codec data to caps
Need to construct an avcc atom from the codecdata read from MSS
manifests to make h264 decoders/parsers accept it
2013-05-07 21:05:10 -03:00
Thiago Santos
edea61b758 mssdemux: add the correct caps to the outgoing stream
mssdemux outputs a quicktime variant, named mss-fragment
2013-05-07 21:05:10 -03:00
Thiago Santos
32d8a72bfc mssdemux: set caps to buffers before pushing
Also update to the latest gstfragment API that provides
the fragment as a whole buffer.
2013-05-07 21:05:10 -03:00
Thiago Santos
91dd173f3c mssdemux: improve state changing
Keep a ref on pad to prevent it being unreffed while the mssdemux
streams are still using it. Also reset the element when going to
ready instead of when going to null.
2013-05-07 21:05:10 -03:00
Thiago Santos
b4f994d47c mssdemux: adds mininum error handling
This should care for basic scenarios of errors and EOS to allow
the pipeline to stop correctly
2013-05-07 21:05:10 -03:00
Thiago Santos
96522f474c mssdemux: mssmanifest: prevent accessing null stream fragment
Move the access to the stream fragment data after the check
if the fragment exists to prevent a segfault
2013-05-07 21:05:10 -03:00
Thiago Santos
ca4e5c34cb smoothstreaming: refactor structure names and implement url fetching
Use shorter names for the MSS manifest helper structure and functions.

Also continues the implementation of the stream fetching and pushing loop.
Now it uses the base url correctly and already fetches and pushes the fragments
downstream
2013-05-07 21:05:10 -03:00
Thiago Santos
7ceb023682 mssdemux: initial implementation of the pad loop
The loop will fetch a new fragment and push on its srcpad. Each
stream has its own loop
2013-05-07 21:05:10 -03:00
Thiago Santos
6b63a7dc81 mssdemux: more manifest parsing and helper functions
Now the mss manifest is able to generate the files urls
2013-05-07 21:05:10 -03:00
Thiago Santos
5291985efe mssdemux: pad exposing initial implementation
Does some basic parsing of the stream caps and adds a pad for
each stream detected in the manifest
2013-05-07 21:05:10 -03:00
Thiago Santos
72b05c0051 mssdemux: add manifest parsing
Continued implementing:
1) parse the manifest with libxml2
2) detect stream types
2013-05-07 21:05:10 -03:00
Thiago Santos
95e87fbee9 smoothstreaming: stubs for mssdemux
Just the stubs for mssdemux element.
Also add some useful code from hlsdemux that we intend to reuse
2013-05-07 21:05:10 -03:00
Thiago Santos
ef25e05b7c smoothstreaming: build directory stubs for new plugin
Initial build structure for MS' Smooth Streaming plugin

Conflicts:
	ext/Makefile.am
2013-05-07 20:02:41 -03:00
Stefan Sauer
7aeed2d79d ladspa: sync controlled parames in filters and sinks 2013-05-03 21:46:53 +02:00
Sebastian Dröge
a845d6d0db ladspa: Add $(GMODULE_NO_EXPORT_LIBS) for gmodule 2013-05-03 16:55:00 +02:00
Juan Manuel Borges Caño
70e208d08e ladspa: improved port to gstreamer 1.0
Fixes: #698927
2013-05-03 12:36:44 +02:00
Tim-Philipp Müller
9056e775a9 kate: fix buffer leak in katetag
Makes unit test valgrind clean.

https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-27 12:28:58 +01:00
Tim-Philipp Müller
de3bd76051 kate: minor cleanup 2013-04-27 12:06:28 +01:00
Sebastian Dröge
9f25db0981 eglglessink: Use gst_egl_display_get() instead of passing a GstEGLDisplay to EGL functions 2013-04-24 09:40:24 +02:00
Tim-Philipp Müller
4b256e729e tests: fix remaining kate tests
https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-23 01:17:56 +01:00
Thiago Santos
b40c9ff39a eglglessink: eagl: fix eagl reuse by not releasing the context
It seems EAGL expects the application to simply ignore unused
EAGL contexts as the resources for it would be released when a new
context is set as the current one. Also move the egl extensions
querying to after a context is set to prevent crashes.

This makes the EAGL version of eglglessink reusable.
2013-04-19 08:45:02 +02:00
Sebastian Dröge
baa9754f6f eglglessink: Give only SECONDARY rank
If available we still prefer xvimagesink.
2013-04-18 15:27:11 +02:00
Josep Torra
87f2bae822 eglglessink: fixes 'makes integer from pointer without a cast' warning 2013-04-18 12:54:31 +02:00
Josep Torra
1190a79b19 eglglessink: silence warnings building for RPI related to 'vcos_*' 2013-04-18 12:53:28 +02:00
Josep Torra
9a88d737fc eglglessink: fix warnings building on the RPI 2013-04-18 12:35:55 +02:00
Sebastian Dröge
a8cca17027 eglglessink: Fix GstContext refcounting some more 2013-04-17 13:48:28 +02:00
Sebastian Dröge
f398742608 eglglessink: Fix GstContext refcounting 2013-04-17 13:16:27 +02:00
Sebastian Dröge
e8ad67f2b4 eglglessink: Update for GLTextureUploadMeta and EGL API changes 2013-04-17 10:51:18 +02:00
Sebastian Dröge
92e9988a40 eglglessink: Reorder surface queries
Otherwise wrong values can be returned.
2013-04-16 22:51:18 +02:00
Sebastian Dröge
118f8f33ef eglglessink: Properly set a debug category for the adaption layers 2013-04-16 22:25:19 +02:00
Sebastian Dröge
9fdec0f83b eglglessink: Get the EGL/GLES extensions at the right position 2013-04-16 22:25:02 +02:00
Sebastian Dröge
0fe6fbd677 eglglessink: Fix compiler warning
gstegladaptation_egl.c: In function 'gst_egl_adaptation_create_native_window':
gstegladaptation_egl.c:868:3: error: format '%p' expects argument of type 'void *', but argument 8 has type 'EGLNativeWindowType' [-Werror=format=]
   GST_DEBUG_OBJECT (ctx->element, "Using window handle %p", window);
   ^
2013-04-16 22:14:09 +02:00
Thiago Santos
149cb5a7cf eglglessink: refactor to allow eagl support
Put EGL specific code to a separate file and create the same functions
for EAGL, the Apple's specific EGL implementaton.

At this point, the EAGL version wasn't compiled or tested as there isn't
any simple documented way to build 1.0 for iOS. This code for the EAGL
version is still the 0.10 version, some updates should be made when 1.0
is buildable for iOS.
2013-04-16 16:04:35 -03:00
Thiago Santos
0fafdf8db1 eglglessink: refactor egl functions/data to a separate file
This is part of the changes required to make
eglglessink work with both EGL and Apple's EAGL
2013-04-16 15:58:12 -03:00
Sebastian Dröge
0f10fb622e eglglessink: Print EGL/GLES extensions after we are actually initialized enough 2013-04-16 16:30:08 +02:00
Sebastian Dröge
e51cd4fe2f gst: Add better support for static plugins 2013-04-15 15:59:22 +02:00
David Schleef
2b160f516a mpg123: Add conditional on API version for new enum 2013-04-15 00:25:16 -07:00
Sebastian Dröge
611ab7f744 eglglessink: Fix compiler warnings
gsteglglessink.c: In function 'gst_eglglessink_fill_texture':
gsteglglessink.c:1815:3: error: format '%d' expects argument of type 'int', but argument 11 has type 'gsize' [-Werror=format]
gsteglglessink.c: In function 'gst_eglglessink_configure_caps':
gsteglglessink.c:2850:3: error: format '%p' expects argument of type 'void *', but argument 8 has type 'EGLNativeWindowType' [-Werror=format]
2013-04-15 08:48:19 +02:00
Tim-Philipp Müller
1dd53d64e8 kate: only send decoder output caps once or when the format changes
and not for every single buffer. And  also send a caps
event for spu output.

https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-15 00:54:10 +01:00
Tim-Philipp Müller
a3ad6eaf2d kate: fix decoder output caps
It's either pango-markup or utf8, never both at the same time.

https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-15 00:54:00 +01:00
Tim-Philipp Müller
46f979a839 kate: mark header buffers as such 2013-04-15 00:54:00 +01:00
Tim-Philipp Müller
8da7230c88 kateenc: save current input format in setcaps 2013-04-15 00:54:00 +01:00
Tim-Philipp Müller
b8d4b6f3bd kate: fix printf format strings and disable tiger element 2013-04-15 00:54:00 +01:00
Brendan Long
b261bd516f kate: port Kate subtitles to 1.0
https://bugzilla.gnome.org/show_bug.cgi?id=697071
2013-04-15 00:53:48 +01:00
Olivier Crête
4a9c3d4f16 srtpdec: Don't stop on invalid buffer 2013-04-09 21:37:25 -04:00
Olivier Crête
3bf994eb3b srtpdec: Cleaner stream cleanup 2013-04-09 21:37:25 -04:00
Olivier Crête
4b89870a58 srtpdec: Don't crash on invalid cipher 2013-04-09 21:37:24 -04:00
Tim-Philipp Müller
5beefc66cd ext: printf format fixes in debug and error messages 2013-04-08 17:40:14 +01:00
Todd Agulnick
71743d13c4 handdetect: fix build on OS/X
gsthanddetect.h:84: error: expected specifier-qualifier-list before 'uint'

https://bugzilla.gnome.org/show_bug.cgi?id=697305
2013-04-05 09:41:26 +01:00
Edward Hervey
725f8dc1f7 rsvg: Bump minimum requirement to 2.36.0
And handle header changes in 2.36.2
2013-04-03 14:57:23 +02:00
David Schleef
94ed6caec4 rtmpsrc: Implement basesrc->unlock()
This fixes ->NULL transition problems if librtmp is stuck in a
recv or send call that never returns.
2013-04-01 19:53:01 -07:00
Sebastian Dröge
1acde42b6e eglglessink: Use the EGLImage and GstVideoGLTextureUploadMeta caps features 2013-04-01 10:22:07 +02:00
Edward Hervey
e6041b9974 rsvg: Don't include rsvg-cairo.h directly
Including it directly is now deprecated
2013-04-01 09:13:16 +02:00
Luciana Fujii Pontello
9097da30e8 rsvg: Port to 1.0
Also port the decoder to the GstVideoDecoder
2013-03-31 19:23:30 +02:00
Sebastian Dröge
95f819109f eglglessink: Use gst_element_get_context() wherever possible 2013-03-31 11:47:01 +02:00
Sebastian Dröge
ce9b6e5afb eglglessink: Implement GstContext handling 2013-03-29 16:38:34 +01:00
Sebastian Dröge
9e2af116f6 eglglessink: Use a separate texture for the custom textures 2013-03-29 16:11:56 +01:00
Sebastian Dröge
3233c6163a eglglessink: Add support for GstVideoGLTextureUploadMeta 2013-03-29 16:07:23 +01:00
Olivier Crête
c42ac5b450 srtp: Update example pipelines 2013-03-28 14:35:48 -04:00
Tim-Philipp Müller
a028a05054 sbc: port encoder to GstAudioEncoder
https://bugzilla.gnome.org/show_bug.cgi?id=690582
2013-03-27 22:40:56 +00:00
Tim-Philipp Müller
ca9daee444 sbc: port decoder to GstAudioDecoder
https://bugzilla.gnome.org/show_bug.cgi?id=690582
2013-03-27 22:40:56 +00:00
Tim-Philipp Müller
fecddde2c2 sbc: import sbc decoder/encoder from bluez and port to 1.0
https://bugzilla.gnome.org/show_bug.cgi?id=690582
2013-03-27 22:40:56 +00:00
Tim-Philipp Müller
89bbcdea39 Merge SBC decoder and encoder from bluez
https://bugzilla.gnome.org/show_bug.cgi?id=690582
2013-03-27 22:40:55 +00:00
Tim-Philipp Müller
50643d6192 sbc: remove parser in favour of new GstBaseParse-based sbcparse in -good 2013-03-27 22:21:30 +00:00
Wim Taymans
91f4b15490 sbc: sbcdec: make decoder more performant
Use an adapter to accumulate input buffers.
Decode all input in one output buffer when possible to reduce the amount of push
operations.
2013-03-27 22:21:17 +00:00
Wim Taymans
dcb57780ef sbc: sbcdec: skip the frame on decoding error 2013-03-27 22:21:17 +00:00
Wim Taymans
a559bb7060 sbc: sbcdec: set DISCONT on outgoing buffers. 2013-03-27 22:21:17 +00:00
Wim Taymans
beaeeafb4d sbc: sbcdec: handle DISCONT and timestamps
Reset state on discont.
Interpollate timestamps.
2013-03-27 22:21:17 +00:00
Arun Raghavan
32154c5ae6 sbc: audio: Make the sbcdec element copy buffer metadata
Makes sure we don't lose timestamps, etc.
2013-03-27 22:21:17 +00:00
Wim Taymans
7e65f96acb sbc: enc: sbc_get_frame_duration is in milliseconds 2013-03-27 22:21:17 +00:00
Wim Taymans
9581e704b6 sbc: dec: chain up to parent before downward state change 2013-03-27 22:21:17 +00:00
Arun Raghavan
c6f6cc736f sbc: audio: Fix a leak in sbcdec 2013-03-27 22:21:17 +00:00
Arun Raghavan
dace80cc41 sbc: audio: Initialise SBC data before use in sbcparse element 2013-03-27 22:21:17 +00:00
Anderson Lizardo
6979975963 sbc: Fix trivial coding style issues on pointer declarations and casting
Avoid using C++ style pointer declarations like "char* ptr", as most
BlueZ code uses "char *ptr".
2013-03-27 22:21:17 +00:00
Syam Sidhardhan
142a5fb637 sbc: audio: Fix newline before EOF 2013-03-27 22:21:17 +00:00
Lucas De Marchi
b31ee7bffc sbc: Fix common misspelled words
Accounting of misspelled words, as detected by codespell:

acording      2
ancilliary    1
appropiate    1
atribute      1
cant          1
comming       2
gracefull     1
lenght        1
mispelled     1
occured       1
occurences    1
ocurred       3
prefered      1
presense      1
reponse       1
seperate      1
succesful     1
successully   1
sucessfull    1
sucessfully   1
2013-03-27 22:21:17 +00:00
Marcel Holtmann
5514d457a1 sbc: audio: Remove workaround for compiler warnings 2013-03-27 22:21:17 +00:00
Marcel Holtmann
df140f7852 sbc: Add pragma based workaround for GStreamer warnings 2013-03-27 22:21:17 +00:00
Marcel Holtmann
1ddbdc3e7a sbc: Update copyright information 2013-03-27 22:21:16 +00:00
Luiz Augusto von Dentz
d4fd8f3ecd sbc: Remove unused variable. 2013-03-27 22:21:16 +00:00
Luiz Augusto von Dentz
c985a85cf2 sbc: Remove unused variable. 2013-03-27 22:21:16 +00:00
Marcel Holtmann
db16c0332c sbc: Fix signed/unsigned comparison issue within GStreamer plugin 2013-03-27 22:21:16 +00:00
Siarhei Siamashka
3f994a84bb sbc: Use native byte order for audio in GStreamer and ALSA plugins
This fixes endianness inconsistency between default SBC
configuration and GStreamer/ALSA.
2013-03-27 22:21:16 +00:00
Marcel Holtmann
a3bf74686a sbc: Update copyright information 2013-03-27 22:21:16 +00:00
Marcel Holtmann
54f6cd0218 sbc: First attempt in fixing compiler warnings (still needs cleanup) 2013-03-27 22:21:16 +00:00
Marcel Holtmann
57f6f2655d sbc: Assign variables after declarations 2013-03-27 22:21:16 +00:00
Johan Hedberg
7ae0c70682 sbc: More coding style fixes 2013-03-27 22:21:16 +00:00
Luiz Augusto von Dentz
266cfb11b4 sbc: Fix runtime warnings of gstreamer plugin. 2013-03-27 22:21:16 +00:00
Luiz Augusto von Dentz
834a9b193b sbc: Update gstreamer plugin to use new sbc API. 2013-03-27 22:21:16 +00:00
Luiz Augusto von Dentz
ccf5d9ea7e sbc: Make use of parameters selected in alsa plugin and fix auto selection. 2013-03-27 22:21:16 +00:00
Marcel Holtmann
5be53d24ab sbc: Update copyright information 2013-03-27 22:21:16 +00:00
Luiz Augusto von Dentz
937066575a sbc: Add bitpool property and others fixes for gstreamer plugin. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
10325f3604 sbc: Enable gstreamer plugin to use autoconnect flag. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
2a5e58f44f sbc: Fixes gstreamer caps and code cleanup. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
ad24bafb62 sbc: Fix gtreamer payloader sending fragmented frames. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
84dcb6bb34 sbc: Add mp3 support for gstreamer plugin. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
76c77b1c60 sbc: Make a2dpsink to act like a bin and split the payloader. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
6a34433dd8 sbc: Code cleanup. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
742f952688 sbc: Integrate new ipc API implementation. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
2a21d83ce0 sbc: Add sbc_reinit. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
946d564292 sbc: Fix bug in sbcenc when changing encoder parameters. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
97fcf537cd sbc: Make sbc codec to write directly in application buffers and so avoiding memcpys. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
6f87580cfa sbc: Fix sbc negotiation and improves buffer handling by using GstAdapter. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
5672836c61 sbc: Fix buffers timestamps in sbcenc. 2013-03-27 22:21:15 +00:00
Luiz Augusto von Dentz
a2152f6c12 sbc: Add bitpool capability. 2013-03-27 22:21:15 +00:00
Marcel Holtmann
f2441fe654 sbc: Some more coding style changes 2013-03-27 22:21:15 +00:00
Marcel Holtmann
d1062c97d1 sbc: Don't forget to include the config options 2013-03-27 22:21:15 +00:00
Marcel Holtmann
cd3e730aeb sbc: Fix coding style issues 2013-03-27 22:21:14 +00:00
Luiz Augusto von Dentz
8f8ccc0f12 sbc: Fix coding style issues. 2013-03-27 22:21:14 +00:00
Luiz Augusto von Dentz
01b0530663 sbc: Fixes sbcparser element. 2013-03-27 22:21:14 +00:00
Luiz Augusto von Dentz
f88c9d5555 sbc: Fixes for gstsbcenc. 2013-03-27 22:21:14 +00:00
Luiz Augusto von Dentz
c5668f1e45 sbc: Add gstsbcutil.c and gstsbcutil.h. 2013-03-27 22:21:14 +00:00
Marcel Holtmann
e590dc56dc sbc: Force LITTLE_ENDIAN instead of BYTE_ORDER for now 2013-03-27 22:21:14 +00:00
Marcel Holtmann
85874338ff sbc: Implement full parsing support 2013-03-27 22:21:14 +00:00
Marcel Holtmann
5488f2bf13 sbc: Add mode property to the encoder 2013-03-27 22:21:14 +00:00
Marcel Holtmann
fa031b3fe0 sbc: Implement full encoding support 2013-03-27 22:21:14 +00:00
Marcel Holtmann
1f88ce2dca sbc: Fix class variable naming 2013-03-27 22:21:14 +00:00
Marcel Holtmann
7a231ada07 sbc: Limit the supported output rates 2013-03-27 22:21:14 +00:00
Marcel Holtmann
36f952b627 sbc: Implement full decoding support 2013-03-27 22:21:14 +00:00
Marcel Holtmann
974757b2f7 sbc: Add SBC encoder and decoder skeletons for GStreamer 2013-03-27 22:21:14 +00:00
Olivier Crête
ed7f675966 srtp: Fix filter handling in caps negotiation to keep filter content 2013-03-25 13:48:56 -04:00
Wim Taymans
c2966fce30 fluidsynth: rename to fluiddec
Rename the fluidsynth plugin to fluidsynthmidi and the decoder
to fluiddec to avoid conflicts with buzztard.
2013-03-22 15:24:20 +01:00
Wim Taymans
2bd4712efd fluidsynth: fix debug of segment structure 2013-03-22 13:48:26 +01:00
Wim Taymans
f5230ab8ec fluidsynth: handle discont 2013-03-22 13:48:03 +01:00
Wim Taymans
87041064f8 fluidsynth: reset on flush and state change 2013-03-22 12:16:45 +01:00
Wim Taymans
d09a72029c fluidsynth: add properties
Add properties.
Try to find a good default soundfont when not specified.
2013-03-22 11:04:10 +01:00
Wim Taymans
30585c8f8e fluidsynth: log midi tick event 2013-03-22 08:54:54 +01:00
Wim Taymans
64498c576b fluidsynth: redirect logging to gst logging functions 2013-03-22 08:54:32 +01:00
Wim Taymans
a6e5a26be2 fluidsynth: improve debug 2013-03-21 18:17:40 +01:00
Wim Taymans
5256b6bf89 fluidsynth: produce more accurate timestamps 2013-03-21 17:05:36 +01:00
Wim Taymans
76080b78af fluidsynth: add more debug 2013-03-21 14:57:43 +01:00
Wim Taymans
73824e0ea7 fluidsynth: add fluidsynth midi renderer
Add a fluidsynth element that converts midi events into raw
float samples.
2013-03-21 07:21:41 +01:00
Tim-Philipp Müller
f479401fd3 Dist hls as well 2013-03-20 15:25:55 +00:00
Wim Taymans
66d0d86e78 wildmidi: fix event and query handler
Call the default implementation for unknown events and queries.
Fix event leak.
2013-03-19 13:54:00 +01:00
Alessandro Decina
d2d6798087 Make the hls plugin depend on gnutls and move to ext/hls/
gnutls is used to implement AES decryption
2013-03-19 10:54:18 +01:00
Wim Taymans
4a44dc5ecf port wildmidi
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=696041
2013-03-19 10:15:05 +01:00
Jose Antonio Santos Cadenas
ea2332c466 srtp: fix compilation warning returning NULL in case of error
https://bugzilla.gnome.org/show_bug.cgi?id=695897
2013-03-15 11:04:39 +00:00
Jose Antonio Santos Cadenas
2347c4e711 srtp: use constant AES_128_ICM instead of AES_ICM that is not found
https://bugzilla.gnome.org/show_bug.cgi?id=695897
2013-03-15 11:04:29 +00:00
Sebastian Dröge
86363b4f39 eglglessink: Add support for different EGLImage orientations 2013-03-13 13:02:07 +01:00
Sebastian Dröge
d5f15cf3a2 eglglessink: Add RGBA to the caps again 2013-03-13 11:10:02 +01:00
Olivier Crête
4eb960d6c3 srtp: Add SRTP plugin based on libsrtp
In large part the work of Gabriel Millaire
2013-03-12 20:01:50 -04:00
Sebastian Dröge
71768daceb eglglessink: Make sure the buffer is released to the pool if it's the last used one 2013-03-12 19:36:12 +01:00
Sebastian Dröge
bd8963f591 eglglessink: There are only two GLSL programs, not three 2013-03-07 11:58:25 +01:00
Sebastian Dröge
0931724767 eglglessink: gst_buffer_pool_config_get_allocator() does *not* return a new reference to the allocator
Different to gst_query_get_n_allocation_params() which does
2013-03-07 11:51:06 +01:00
Sebastian Dröge
c4fc3428eb eglglessink: Fix allocation of RGBA textures 2013-03-06 17:53:18 +01:00
Sebastian Dröge
a50700404a eglglessink: Make sure to set the NO_SHARE flag on the EGLImage memories
See https://bugzilla.gnome.org/show_bug.cgi?id=695203
2013-03-06 10:53:59 +01:00
Sebastian Dröge
ebe5849443 eglglessink: Always use an RGBA configuration 2013-03-05 12:47:07 +01:00
Sebastian Dröge
a2e89b0858 eglglessink: Properly negotiate an allocator 2013-03-03 12:31:05 +01:00
Sebastian Dröge
a47f52bb96 egl: Mark memory as not mappable if it isn't 2013-03-03 12:31:05 +01:00
Sebastian Dröge
106a0f09af eglglessink: Store a reference to the last_buffer if using EGLImages 2013-03-03 12:31:05 +01:00
Sebastian Dröge
196223b810 eglglessink: Fix compiler warning on RPi 2013-03-03 12:31:05 +01:00
Sebastian Dröge
e852f18e93 eglglessink: Port to new EGL library 2013-03-03 12:31:04 +01:00
Sebastian Dröge
f9eccfe015 egl: Move configure checks around and re-use for eglglessink plugin 2013-03-03 12:31:04 +01:00
Sebastian Dröge
ec19fa930c eglglessink: Fix GST_ERROR_OBJECT() parameters 2013-03-03 12:29:24 +01:00
Tim-Philipp Müller
dec865b2ff opencv: use pkgdatadir locally to construct path for custom haar cascades
https://bugzilla.gnome.org/show_bug.cgi?id=685655
2013-03-01 00:14:54 +00:00
Sreerenj Balachandran
757e7c25bf opencv: port handdetect element to 1.0 and add to build
https://bugzilla.gnome.org/show_bug.cgi?id=685655
2013-03-01 00:14:54 +00:00
Andol Li
7faa44057e opencv: add handdetect plugin, initial implementation
The handdetect plugin is for detecting hand gestures using
opencv.

It was created in the course of the Google Summer of Code.

https://bugzilla.gnome.org/show_bug.cgi?id=685655
2013-03-01 00:14:54 +00:00
Sebastian Dröge
4f638c720a eglglessink: gst_video_sink_center_rect() takes the structs itself instead of pointers as first parameters 2013-02-28 12:04:50 +01:00
Sebastian Dröge
31bed4c27d eglglessink: Fix aspect-ratio issues caused by scaling on RPi 2013-02-28 11:29:24 +01:00
Sebastian Dröge
d875858167 eglglessink: Close the dispman display on RPi after usage 2013-02-13 15:22:37 +01:00
Sebastian Dröge
3876a7f9e6 eglglessink: For RPi, initialize bcm_host in plugin_init() 2013-02-13 15:22:37 +01:00
Julian Scheel
f337777eb5 eglglessink: Add bcm/Raspberry Pi support.
This adds a video platform backend for the dispmanx display manager used by
broadcom and the Raspberry Pi.

Signed-off-by: Julian Scheel <julian@jusst.de>
2013-02-13 12:38:31 +01:00
Tim-Philipp Müller
fced457ad4 swfdec: remove
The swfdec project is dead, and this plugin was
never really useful because of the way swf works.
Remove it before someone accidentally ports it.
2013-02-11 23:29:59 +00:00
Tim-Philipp Müller
e3afe460a4 Add cog to cruft list and remove some more leftover files 2013-02-11 22:50:15 +00:00
David Schleef
3cddc007cb cog: remove cog plugin
Everything has been merged into other elements.
2013-02-11 12:30:29 -08:00
Wim Taymans
6c4029357c opusdec: clear the state of the decoder
Set the channels and rate back to their default values in _stop because they
are used to renegotiate when needed.

See https://bugzilla.gnome.org/show_bug.cgi?id=692950
2013-02-11 11:12:35 +01:00
Marc Leeman
b28870150b rsvgoverlay: deprecated GStaticMutex -> GMutex
Element needs porting though.

https://bugzilla.gnome.org/show_bug.cgi?id=693322
2013-02-09 19:41:29 +00:00
Wim Taymans
de648b8832 opuspay: fix timestamps
Copy timestamps to payloaded buffer.
Avoid input buffer memory leak.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692929
2013-01-31 12:33:23 +01:00
Tim-Philipp Müller
32893dd95e opusenc: fix crash when setting "cbr" property when encoder is not running yet
https://bugzilla.gnome.org/show_bug.cgi?id=692698
2013-01-28 14:12:56 +00:00
Patricia Muscalu
4202eeff7d curltlssink: set correct level of SSL for the transfer
https://bugzilla.gnome.org/show_bug.cgi?id=692010
2013-01-22 10:55:14 +00:00
Arnaud Vrac
8d837cbac4 assrender: reenable unit tests and up rank to primary again 2013-01-22 00:24:52 +00:00
Arnaud Vrac
143c0cbd45 assrender: use overlay composition to blit subtitles on video frames
Re-uses existing blitting code and also means we can support
a lot more video formats out of the box, hence avoid unnecessary
pixel format or colour space conversions.

https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:31 +00:00
Arnaud Vrac
5f91366553 assrender: render overlay composition if supported downstream
This allows rendering ASS subtitles on top of video when
using hardware-accelerated video decoders based on e.g.
VA-API or VDPAU.

https://bugzilla.gnome.org/show_bug.cgi?id=678389
https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:25 +00:00
Arnaud Vrac
30222d6080 assrender: add wait-text property
This is the same property as in the pango element, to allow waiting for
text on the text pad before rendering the video.

https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:20 +00:00
Arnaud Vrac
c78714ced3 assrender: fix some subtitles being ignored
https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:17 +00:00
Arnaud Vrac
c16d41d709 assrender: refactor code to avoid duplication
https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:13 +00:00
Arnaud Vrac
61976b7aa7 assrender: proxy allocations on video pad
Forward allocation queries on video sink pad instead
of discarding them.

This allows the upstream elements to use the allocation
parameters or pools from the downstream elements like
videosink.

https://bugzilla.gnome.org/show_bug.cgi?id=692012
2013-01-22 00:24:06 +00:00
Olivier Crête
81b452ba5d dtmf/spandsp: Move dtmfdetect to use libspandsp
Remove our copy of the tone_detect.c file and use the original
from libspandsp. Also move the element to the spandsp plugin.
2013-01-09 20:05:16 -05:00
Tim-Philipp Müller
4c76427ba7 resindvd: handle non-utf8 dvd disc titles better
Maybe something based on the code in bug #688367
and the language encodings would work even better
though (now it will try things based on the locale).

https://bugzilla.gnome.org/show_bug.cgi?id=690097
2013-01-07 10:37:53 +00:00
Tim-Philipp Müller
8436a7d8ae jasper: remove jasper jpeg2000 plugin, replaced by openjpeg plugin
libjasper isn't really maintained any longer, we probably
don't want to port this.
2013-01-07 10:36:45 +00:00
Sebastian Dröge
1b88d7cada eglglessink: Don't return EGLImages that we just rendered from the buffer pool
Mapping them will fail because they're still internally used.
2013-01-03 17:28:49 +01:00
Sebastian Dröge
2aefc09248 eglglessink: Handle copying of GstMemory properly
We have to use the default video meta mapping functions.
2013-01-03 15:22:38 +01:00
Sebastian Dröge
b244151f85 eglglessink: Make sure to always use the correct GstMemory for buffers from our pool 2013-01-03 12:08:39 +01:00
Sebastian Dröge
e8b4815783 eglglessink: Don't forget to call the platform specific EGLImage free function 2013-01-03 11:07:06 +01:00
Sebastian Dröge
c6d9191abe eglglessink: Make sure to wait for the right object to be dequeued 2013-01-03 10:43:43 +01:00
Sebastian Dröge
79144b7cea eglglessink: Remove packed YUV support
This will not allow zero-copy because the same
EGLImage would need to be used for two different
textures with a different format.
2013-01-02 16:10:20 +01:00
Sebastian Dröge
9e1faac4df eglglessink: Log in the performance category if we map/copy EGLImages to normal memory 2013-01-01 12:05:03 +01:00
Sebastian Dröge
1ad5e5b329 eglglessink: Catch errors from glEGLImageTargetTexture2DOES() 2013-01-01 10:48:53 +01:00
Sebastian Dröge
1fbea3e39d eglglessink: Upload textures in GstBaseSink::prepare() already
This gives more time for the texture to be uploaded as it happens
before syncing to the running time. When the running time is reached
only eglSwapBuffers() is necessary.
2013-01-01 10:48:53 +01:00
Sebastian Dröge
2cae6df5e5 eglglessink: Downgrade a GST_ERROR to a GST_DEBUG 2012-12-31 15:59:05 +01:00
Sebastian Dröge
9f14fd5cce eglglessink: Make last_flow handling more threadsafe 2012-12-31 15:59:05 +01:00
Sebastian Dröge
4df3e56c9a eglglessink: Add support for allocating EGLImages on Mali
This allows to decoders and other upstream elements to do
zero-copy to the sink.
2012-12-31 15:59:04 +01:00
Sebastian Dröge
6748198668 eglglessink: Fix indention 2012-12-30 11:32:29 +01:00
Sebastian Dröge
6140bc7f8c eglglessink: Return the last_flow immediately if it wasn't GST_FLOW_OK 2012-12-30 11:32:02 +01:00
Sebastian Dröge
fa6cddcf45 eglglessink: Fix copy&paste mistake 2012-12-30 11:29:49 +01:00
Sebastian Dröge
be5486231b eglglessink: Improve EGL/GL error handling a bit 2012-12-30 11:25:13 +01:00
Sebastian Dröge
d643ff961e eglglessink: Don't access the video frame data if not necessary 2012-12-30 11:25:13 +01:00
Sebastian Dröge
83612e7d19 eglglessink: Configure caps from the setcaps function already 2012-12-30 11:25:13 +01:00
Sebastian Dröge
e454e9a862 eglglessink: Bind the OpenGL ES API in the render thread too 2012-12-28 20:07:34 +01:00
Sebastian Dröge
46c7bbfeb5 eglglessink: Some refactoring as preparation for platform specific rendering 2012-12-28 20:07:34 +01:00
Sebastian Dröge
823f490fe8 eglglessink: Add some more comments 2012-12-28 20:07:34 +01:00
Sebastian Dröge
6b8188f9f6 eglglessink: Only use the GstVideoFrame if we have a buffer 2012-12-28 20:07:34 +01:00
Sebastian Dröge
31a3ef2f82 eglglessink: Add configure parameter to chose the EGL window system
Only needed for creating native windows.
2012-12-28 20:07:34 +01:00
Sebastian Dröge
0304518d1d eglglessink: Add support for Mali fbdev EGL driver 2012-12-28 20:07:30 +01:00
Sebastian Dröge
079f5e83ea eglglessink: Add support for video meta and arbitrary strides 2012-12-26 17:25:36 +01:00
Sebastian Dröge
7a08bb8429 eglglessink: Fix width/height swap in last commit 2012-12-26 15:58:55 +01:00
Sebastian Dröge
673d262fe7 eglglessink: Remove debug function call from previous commit 2012-12-26 15:46:40 +01:00
Sebastian Dröge
17bf9dfd70 eglglessink: Fix handling of GstVideoOverlay::set_render_rect() and crop metadata 2012-12-26 14:39:03 +01:00
Sebastian Dröge
b126c62e31 eglglessink: Add a cast from EGLNativeWindowType to Window to fix a compiler warning 2012-12-26 10:54:38 +01:00
Sebastian Dröge
4789db8930 eglglessink: Fix a crash on GstVideoOverlay::expose() 2012-12-26 10:39:52 +01:00
Sebastian Dröge
3c2574998b eglglessink: Fix crash when closing internal X11 window 2012-12-26 10:34:21 +01:00
Sebastian Dröge
7efa7b9698 eglglessink: Add proper check for X11 2012-12-26 10:21:34 +01:00
Joe Konno
8a63face0e waylandsink: do not default to a fullscreen canvas
Defer certain canvas particulars to the player (or the Wayland
compositor). Before this change, a fullscreen canvas was always
requested. This may not be desirable in all cases.

https://bugzilla.gnome.org/show_bug.cgi?id=690442
2012-12-23 15:58:05 +00:00
Sebastian Dröge
fe38fc2b5a openjpegdec: Only use 10 bit YUV formats for exactly 10 bit images, not <= 16 bit
And use the generic converter to AYUV64 for everything else.
2012-12-23 09:51:42 +01:00
Sebastian Rasmussen
3d1ca76725 openjpegenc/-dec: print openjpeg logs for debug tracing 2012-12-19 11:24:02 +01:00
Thijs Vermeir
05dfea2689 opus: use appropriate printf format for gsize 2012-12-18 16:56:28 +01:00
Sebastian Dröge
680c13f993 openjpegenc: Add some properties 2012-12-18 15:44:56 +01:00
Sebastian Dröge
da8f8270c3 openjpegdec: Don't crash if colorspace is not provided on the caps
g_str_equal() is *not* NULL-safe
2012-12-18 15:43:37 +01:00
Sebastian Dröge
d70e43a069 openjpegdec: Improve robustness against formats with different settings per component 2012-12-17 17:19:54 +01:00
Sebastian Dröge
8b33b17748 openjpegdec: Properties won't be needed in the decoder 2012-12-17 17:13:22 +01:00
Sebastian Dröge
ed33db79cd openjpegenc: Fix data pointer incrementing 2012-12-17 17:12:04 +01:00
Sebastian Dröge
2ea8ede145 openjpegenc: Optimize image filling functions a bit 2012-12-17 17:06:29 +01:00
Sebastian Dröge
43ff27ba34 openjpegdec: Add missing shifts 2012-12-17 17:02:47 +01:00
Sebastian Dröge
bff020e9e4 openjpegdec: Optimize frame filling functions a bit 2012-12-17 16:57:14 +01:00
Sebastian Dröge
7faf96eb14 openjpeg: Correct template caps a bit 2012-12-16 20:50:34 +01:00
Sebastian Dröge
cb5dcaba76 openjpeg: Handle the num-components field in the caps 2012-12-16 20:50:34 +01:00
Sebastian Dröge
8547618f96 openjpeg: Add support for the colorspace field in the caps 2012-12-16 20:50:34 +01:00
Sebastian Dröge
e9fc332e25 openjpeg: Add JPEG2000 encoder element 2012-12-16 20:50:34 +01:00
Sebastian Dröge
e1416c11a4 openjpeg: Add OpenJPEG based JPEG2000 decoder 2012-12-16 20:50:34 +01:00
Sebastian Dröge
0b3cce4890 mms: Fix format string for off_t/goffset
Fixes bug #690033.
2012-12-11 10:58:54 +00:00
Alessandro Decina
62879bdd38 rtmpsrc: disable seeking if the configured url specifies live=true
Disable seeking when live=true is set in the location URL (eg:
"rtmp://example.net/stream live=true")
2012-12-01 17:11:43 +01:00
Tim-Philipp Müller
caa9014bce resindvd, frei0r: link to libgmodule-2.0 in plugins that use g_module_* API
Probably needed for other plugins as well.
2012-11-30 20:01:16 +00:00
Sebastian Dröge
b80764e8b7 eglglessink: Use new GType for GThread instead of just G_TYPE_POINTER 2012-11-12 11:48:38 +01:00
Tim-Philipp Müller
9e1b75fda3 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Tim-Philipp Müller
fa20fba1a2 opencv: fix warnings and build against opencv 2.4.x
gstpyramidsegment.c: In function 'gst_pyramid_segment_chain':
gstpyramidsegment.c:307:3: error: implicit declaration of function
'cvPyrSegmentation' [-Werror=implicit-function-declaration]
gstpyramidsegment.c:307:3: error: nested extern declaration of
'cvPyrSegmentation' [-Werror=nested-externs]

https://bugzilla.gnome.org/show_bug.cgi?id=687237
2012-11-03 13:52:08 +00:00
Sebastian Dröge
c3f94f14f0 eglglessink: Use more constants instead of hardcoding values 2012-11-02 11:29:54 +01:00
Sebastian Dröge
b0bad3ca15 eglglessink: Post stream-status messages for our render thread 2012-11-01 13:51:09 +01:00
Sebastian Dröge
8786262fff eglglessink: If pushing an item on the queue fails, free it
Otherwise we're going to leak the item.
2012-10-31 13:55:47 +01:00
Carlos Rafael Giani
701fd9b336 mpg123: removed unnecessary finalize function
https://bugzilla.gnome.org/show_bug.cgi?id=687176
2012-10-30 10:15:14 +00:00
Jan Schmidt
41b08e2948 mpg123: Fix leaks from not chaining up in the finalize function 2012-10-30 10:20:09 +11:00
Sebastian Dröge
ac420ff0de eglglessink: Stop using deprecated GLib thread API 2012-10-25 14:28:49 +02:00
Sebastian Dröge
4dd39a3856 assrender: Handle GAP events 2012-10-25 14:05:49 +02:00
Sebastian Dröge
1e1d4da87c eglglessink: Add support for crop metadata 2012-10-25 14:05:48 +02:00
Sebastian Dröge
187350329a eglglessink: Port to 1.0 2012-10-25 14:05:48 +02:00
Carlos Rafael Giani
e6b05111d3 opusdec: fixed buffer unmapping bug
When the decoder received a NULL buffer, it tried to
unmap a not mapped buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=686829
2012-10-25 01:20:23 +01:00
Carlos Rafael Giani
a84677a7a0 mpg123: added gtkdoc section
https://bugzilla.gnome.org/show_bug.cgi?id=686595
2012-10-24 13:43:23 +01:00
Carlos Rafael Giani
8ba422839a mpg123: fixed bug with last frame, disabled internal resampler & chatter
* The last MP3 frame wasn't being pushed when base class was draining
* Made sure mpg123 cannot ever use its (crude) internal resampler
* Disabled mpg123 stderr output

https://bugzilla.gnome.org/show_bug.cgi?id=686595
2012-10-24 13:43:16 +01:00
Carlos Rafael Giani
2de930689c mpg123: cleaned up comments, formatting, and logging lines
also replaced mpg123decoder->handle != NULL checks with asserts

https://bugzilla.gnome.org/show_bug.cgi?id=686595
2012-10-24 11:59:19 +01:00
Sebastian Rasmussen
1c71fd351a curlsmtpsink: add comment describing function
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=686774
2012-10-24 11:29:47 +01:00
Tim-Philipp Müller
0a57441908 pitch: fix for start times > 0
Fixes buffering and playback of streams that start with
a non-0 timestamp in totem (which has a 'pitch' element
before pulsesink).

Example URI: http://lobostv.lobocast.org.es:8004/lobostv.ogg

Still breaks with chained oggs, on second chain.

https://bugzilla.gnome.org/show_bug.cgi?id=686391
2012-10-22 21:46:56 +01:00
Wim Taymans
50140388d2 opuspay: remove pointless caps serialization
Remove the caps serialization in the rtp caps. the spec nor the receiver
does anything with it.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=686547
2012-10-22 12:11:02 +02:00
Sreerenj Balachandran
54e05ee4aa wayland: update to wayland-protocol 0.99
https://bugzilla.gnome.org/show_bug.cgi?id=686520
2012-10-20 13:09:03 +01:00
Sebastian Dröge
888fe99fa4 eglglessink: Don't try to render expose() if no caps are known yet 2012-10-19 12:02:05 +02:00
Sebastian Dröge
4dc028a2a3 eglglessink: Fix expose 2012-10-19 10:38:06 +02:00
Sebastian Dröge
c9b17f28f6 eglglessink: Make compilable on desktop Linux with MESA too 2012-10-18 14:35:52 +02:00
Sebastian Dröge
6fb5a9b716 eglglessink: Integrate into the build system
Conflicts:
	ext/Makefile.am
2012-10-18 14:35:49 +02:00
Sebastian Dröge
ebb99f27ac eglglessink: Fix debug output 2012-10-18 14:35:20 +02:00
Sebastian Dröge
61db9ad941 eglglessink: Also clear the surface once when the buffer content is preserved 2012-10-18 14:35:20 +02:00
Sebastian Dröge
147edd1fc2 eglglessink: Only draw black borders if the default swap behaviour of the surface is to destroy the buffer 2012-10-18 14:35:20 +02:00
Sebastian Dröge
a025c80b4c eglglessink: Remove unused label 2012-10-18 14:35:20 +02:00
Reynaldo H. Verdejo Pinochet
5bdf1ec099 eglglessink: Factor display region reset to its own func 2012-10-18 14:35:20 +02:00
Reynaldo H. Verdejo Pinochet
c3a12d737e eglglessink: Always Reset display_region.* at EGL/GLES ctx wipe 2012-10-18 14:35:20 +02:00
Reynaldo H. Verdejo Pinochet
ac037ce319 eglglessink: Factor ELG/GLES context cleanup into its own func 2012-10-18 14:35:20 +02:00
Reynaldo H. Verdejo Pinochet
ab81bd8f1e eglglessink: Drop drafted fast rendering path logic 2012-10-18 14:35:20 +02:00
Sebastian Dröge
9e8ad1097b eglglessink: Also update header file 2012-10-18 14:35:20 +02:00
Sebastian Dröge
f5043f5d64 eglglessink: Provide the texture positions to the shader on every frame too 2012-10-18 14:35:20 +02:00
Sebastian Dröge
9941466ab4 eglglessink: Draw black borders and also use a single GL buffer for all vertices
Fixes weird artifacts outside the video frame on
Qualcomm Snapdragon chipsets and should be faster
than glClear() on the complete area all the time.
2012-10-18 14:35:20 +02:00
Sebastian Dröge
a65ed4d7c1 eglglessink: Fix memory leak 2012-10-18 14:35:20 +02:00
Sebastian Dröge
f7a0da4da9 eglglessink: Remove useless debug output added for debugging earlier 2012-10-18 14:35:20 +02:00
Sebastian Dröge
0ac17bcbc2 eglglessink: Make window setting/handling a bit more threadsafe 2012-10-18 14:35:19 +02:00
Sebastian Dröge
e766bd1e0a eglglessink: Print window handle after setting it 2012-10-18 14:35:19 +02:00
Reynaldo H. Verdejo Pinochet
32861ab0a7 eglglessink: Move DAR query & store to surface init
The DAR (display's pixel aspect ratio) should remain a
constant at runtime so there's no point on repeatedly
query and store this value. Doing it at surface setup
should be enough. As an added bonus this change should
make rendering a bit faster.
2012-10-18 14:35:19 +02:00
Sebastian Dröge
406630a294 eglglessink: Don't signal the GCond too often 2012-10-18 14:35:19 +02:00
Sebastian Dröge
82dc2a3544 eglglessink: Add myself as author 2012-10-18 14:35:19 +02:00
Sebastian Dröge
87a028a0a4 eglglessink: Make sure to always reset the display region in start() 2012-10-18 14:35:19 +02:00
Sebastian Dröge
28fe3f7888 eglglessink: Also commit missing changes to the header file 2012-10-18 14:35:19 +02:00
Sebastian Dröge
610e33b049 eglglessink: Also include $(GST_BASE_CFLAGS) 2012-10-18 14:35:19 +02:00
Sebastian Dröge
caf9d1febd eglglessink: Fix race condition 2012-10-18 14:35:19 +02:00
Sebastian Dröge
99f738bbc0 eglglessink: Refactor rendering and all context specific GL things into a separate thread
Also fixes some threading related problems.
2012-10-18 14:35:19 +02:00
Sebastian Dröge
11ec917ee0 eglglessink: Re-add accidentially reverted commit 2012-10-18 14:35:19 +02:00
Sebastian Dröge
ba3274c8f0 eglglessink: Remove unneeded flow_lock
Use the object lock in the few places necessary, everything
else is protected by other things already.

Also store the context directly inside the instance struct
instead of allocating some memory for it.
2012-10-18 14:35:19 +02:00
Sebastian Dröge
2b3279c9b5 eglglessink: Fix debug output and constant names 2012-10-18 14:35:19 +02:00
Sebastian Dröge
1f0bf75075 eglglessink: start()/stop() is called in READY<->NULL in basesink
But this should be called in PAUSED<->READY.
2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
d2dcecfc8a eglglessink: Fix for outbound DAR reported by EGL
Some EGL implementations don't honor the spec
requirement of returning DAR values as w/h *
EGL_DISPLAY_SCALING.

This changeset:

- Fixes rendering on the Samsung Galaxy III
- Fixes wrong check on required 1.2 EGL version
- Reorders the code a bit.
2012-10-18 14:35:18 +02:00
Sebastian Dröge
dde62cee8e eglglessink: Fix crashes if there are no EGL or GLES extensions 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
a317f6936c eglglessink: Fix crash at element instantiation 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
af009b7de7 eglglessink: GLSL: Save one extra texture lookup 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
0ed02803f7 eglglessink: GLSL: Minor named index access tweak xyz -> rgb 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
5c2b1dc631 eglglessink: GLSL: Assorted fixes to optimized code
- Don't copy over opos as it's already a vec2
- Fix index order access at frag_YUY2_YVYU_UYVY_prog
2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
73d865091c eglglessink: GLSL: Planar YUV converters optimization
- Use consts for the transform's offset and cofficients values
- Use dot product instead of mult and add
- Avoid unneeded texture lookups
2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
846e77871b Geglglessink: LSL: Optimize frag_YUY2_YVYU_UYVY_prog
- Avoid repeatedly performing the texture lookup
- Use consts for the transform's offset and cofficients values
- Use the dot product instead of the explicit mult and add
2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
eb8f7d63d5 eglglessink: GLSL: Drop unneded nxy vec2 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
bb0b872644 eglglessink: Fix missing double quotation mark in GLSL code 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
a95834a491 eglglessink: GLSL: Optimize frag_AYUV_prog
- Avoid repeatedly performing the texture lookup
- Use consts for the transform's offset and cofficients values
- Use the dot product instead of the explicit mult and add
2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
a7a2dcc433 eglglessink: Documentation: GstEglGlesSink struct 2012-10-18 14:35:18 +02:00
Reynaldo H. Verdejo Pinochet
38ca631a7a eglglessink: Documentation: GstEglGlesBuffer struct (DRAFT) 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
c27c11582e eglglessink: Documentation: GstEglGlesImageFmt struct 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
945b11fd02 eglglessink: Documentation: GstEglGlesRenderContext struct 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
d97b3dba60 eglglessink: Assorted doc and reordering fixes 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
031b6a57ac eglglessink: Documentation: Element properties
Brief explanatory comments plus some reordering
to group default setting of properties and runtime
flags values.
2012-10-18 14:35:17 +02:00
Sebastian Dröge
81463a1cb7 eglglessink: Add support for YVYU 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
95a223a030 eglglessink: Documentation: GLSL Shaders
Brief explanatory comments plus some rerdering
to group packed/planar converters.
2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
731be48dac eglglessink: Documentation: Element overview 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
1eef329725 eglglessink: Refactor REORDER shader.
Avoid unneededly calling texture2D() 3 consecutive times.
2012-10-18 14:35:17 +02:00
Sebastian Dröge
c91238a2af eglglessink: Fix handling of caps changes by only releasing what needs to be released
And not terminating the display connection
2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
310e5111b7 eglglessink: Move display_region reset to locked section 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
884e5fa173 eglglessink: Reset display_region dims at caps renego 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
f28f5df29e eglglessink: Cosmetics 2012-10-18 14:35:17 +02:00
Reynaldo H. Verdejo Pinochet
c255aa5dd4 eglglessink: Don't access local value from struct 2012-10-18 14:35:16 +02:00
Reynaldo H. Verdejo Pinochet
2ab9de8e4f eglglessink: Terminate display connection at caps renego 2012-10-18 14:35:16 +02:00
Reynaldo H. Verdejo Pinochet
734ac85bb4 eglglessink: Cosmetics 2012-10-18 14:35:16 +02:00
Sebastian Dröge
e022fc5389 eglglessink: Only attach the context once to the streaming thread 2012-10-18 14:35:16 +02:00
Sebastian Dröge
09b3518bae eglglessink: Make the context current for the thread and unbind it again around every use
This fixes some crashes and leaking of our context into other
OpenGL code on the same thread.
2012-10-18 14:35:16 +02:00
Sebastian Dröge
113253b292 eglglessink: Improve cleanup 2012-10-18 14:35:16 +02:00
Sebastian Dröge
70d077acd8 eglglessink: Remove unused label 2012-10-18 14:35:16 +02:00
Sebastian Dröge
f058b5d78b eglglessink: Allow setting a NULL handle 2012-10-18 14:35:16 +02:00
Sebastian Dröge
fc0dc0055a eglglessink: Revert "Do not update_surface_dims() once per frame"
This reverts commit 82103376ede2bc7c63dd699f5982168660f67852.

We have to update the surface dimensions on every frame to
make sure that we get notified about updates. This happens
for example if the Android window gets re-layouted because
a widget takes more space than before.
2012-10-18 14:35:16 +02:00
Reynaldo H. Verdejo Pinochet
a818d5c771 eglglessink: Do not update_surface_dims() once per frame
And.. Upgrade debug message to warging on weird DAR.
Correct fix to avoid spaming with this message
once per each frame is avoid calling update_surface_dims()
at render_and_display(). This is handled at egl surface
init.
2012-10-18 14:35:16 +02:00
Sebastian Dröge
162f63e064 eglglessink: And downgrade another warning too 2012-10-18 14:35:16 +02:00
Sebastian Dröge
7307ddd54b eglglessink: Downgrade GST_WARNING to GST_DEBUG 2012-10-18 14:35:16 +02:00
Sebastian Dröge
8dabfbfca8 eglglessink: Add some {} to if statements make them work as expected 2012-10-18 14:35:16 +02:00
Reynaldo H. Verdejo Pinochet
20a05726b3 eglglessink: Drop stale defines for max frame size 2012-10-18 14:35:16 +02:00
Reynaldo H. Verdejo Pinochet
a3530d9a3d eglglessink: Small commentary fixes here an there 2012-10-18 14:35:15 +02:00
Reynaldo H. Verdejo Pinochet
2b706d3fbe eglglessink: Avoid setting height or width twice 2012-10-18 14:35:15 +02:00
Reynaldo H. Verdejo Pinochet
eeb3b84d07 eglglessink: Use PAR/DAR to set viewport 2012-10-18 14:35:15 +02:00
Sebastian Dröge
c3fb44aef3 eglglessink: Correctly resize if the surface dimensions change 2012-10-18 14:35:15 +02:00
Sebastian Dröge
3fcea0dc5e eglglessink: Update surface dimensions on every buffer 2012-10-18 14:35:15 +02:00
Sebastian Dröge
2b2ae0fd6f eglglessink: More consistent naming of shader related variables 2012-10-18 14:35:15 +02:00
Sebastian Dröge
1ad253b9b7 eglglessink: Some variable name cleanup 2012-10-18 14:35:15 +02:00
Sebastian Dröge
e8f4829c13 eglglessink: Remove default-width/height properties
These are completely unneeded
2012-10-18 14:35:15 +02:00
Sebastian Dröge
985a185ffc eglglessink: Fix double free() 2012-10-18 14:35:15 +02:00
Sebastian Dröge
b5b98fc874 eglglessink: Don't leak EGL/ES render context 2012-10-18 14:35:15 +02:00
Reynaldo H. Verdejo Pinochet
bab81de275 eglglessink: Put EGL/GLES context vars on their own struct 2012-10-18 14:35:15 +02:00
Reynaldo H. Verdejo Pinochet
5526737ec8 eglglessink: Small TODO reformatting 2012-10-18 14:35:15 +02:00
Reynaldo H. Verdejo Pinochet
e8ed9e1097 eglglessink: Add TODO file 2012-10-18 14:35:15 +02:00
Sebastian Dröge
2323c40f1b eglglessink: Correctly implement ::expose()
We don't need the past buffer for this, the old one is still available
as texture and we just need to draw our rectangle again.
2012-10-18 14:35:15 +02:00
Sebastian Dröge
18e473307f eglglessink: Allow setting another window for the next time we reconfigure everything 2012-10-18 14:35:14 +02:00
Sebastian Dröge
aa463f0274 eglglessink: Also unref current caps after usage 2012-10-18 14:35:14 +02:00
Sebastian Dröge
c2de59b19c eglglessink: Implement support for caps changes 2012-10-18 14:35:14 +02:00
Sebastian Dröge
d91621d2ce eglglessink: More cleanup and making the element reusable 2012-10-18 14:35:14 +02:00
Sebastian Dröge
56b711bd29 eglglessink: Properly init/release resources when going from NULL->READY and the other way around 2012-10-18 14:35:14 +02:00
Sebastian Dröge
15c93da54e eglglessink: Generate the sink caps exactly once 2012-10-18 14:35:14 +02:00
Sebastian Dröge
ad6e314a6e eglglessink: Fix code style a bit to stop confusing indent 2012-10-18 14:35:14 +02:00
Sebastian Dröge
4e637ddb7b eglglessink: Fix support for YUY2 and UYVY 2012-10-18 14:35:14 +02:00
Sebastian Dröge
9e094541b0 eglglessink: Some property cleanup 2012-10-18 14:35:14 +02:00
Sebastian Dröge
25eb488f30 eglglessink: Add support for the remaining RGB formats 2012-10-18 14:35:14 +02:00
Sebastian Dröge
11368b49b2 eglglessink: Add support for Y444, Y42B and Y41B, just because it's so easy 2012-10-18 14:35:14 +02:00
Sebastian Dröge
d98d5c657e eglglessink: Add some simple TODOs 2012-10-18 14:35:14 +02:00
Reynaldo H. Verdejo Pinochet
98b9862167 eglglessink: Lock while altering display region coords 2012-10-18 14:35:14 +02:00
Reynaldo H. Verdejo Pinochet
a2fce44139 eglglessink: Fix _get_compat_format_from_caps() logic
It's a getter so it shouldn't messing with the sink context.
Adding insult to injury it was setting selected_fmt without
locking.
The associated changes to the buffer functions are merely
make-it build fixes. Those functions are barely drafted
and in WIP state.
2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
47d0505f40 eglglessink: Drop unneded initial set to NULL 2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
0c681dc2a6 eglglessink: Minor formatting and comment fixes 2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
63d8cd88c7 eglglessink: Clean-up gl/egl allocations at _stop()
Also, conditionaly destroy window if the sink created its own.
2012-10-18 14:35:13 +02:00
Sebastian Dröge
99765c3333 eglglessink: Add support for NV12 and NV21
Also YUY2 and UYVY but this is disabled for now as it
doesn't work completely yet. Something is wrong with
the chroma.
2012-10-18 14:35:13 +02:00
Sebastian Dröge
72d05a681f eglglessink: Add support for I420 and YV12 color formats 2012-10-18 14:35:13 +02:00
Sebastian Dröge
d3995c1a7b eglglessink: Preparations for supporting multiple textures for more YUV formats 2012-10-18 14:35:13 +02:00
Sebastian Dröge
3f734aafc7 eglglessink: Use the attrib locations as really used inside the shader 2012-10-18 14:35:13 +02:00
Sebastian Dröge
24261a4fe7 eglglessink: Really decouple vertex and texture positions in the shader 2012-10-18 14:35:13 +02:00
Sebastian Dröge
dafcdb0da3 eglglessink: Decouple texture and vertex positions 2012-10-18 14:35:13 +02:00
Sebastian Dröge
cb034b2ecd eglglessink: Reorder vertex value order to make a bit more sense 2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
8018681187 eglglessink: Handle frame scaling to fill surface 2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
90d5b76dc5 eglglessink: Draft set_render_rectangle() from the xOverlay interface 2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
f8b69a7c7f eglglessink: Remove stale comment 2012-10-18 14:35:13 +02:00
Reynaldo H. Verdejo Pinochet
1c008e95b3 eglglessink: Move VBO setup to setcaps 2012-10-18 14:35:12 +02:00
Reynaldo H. Verdejo Pinochet
d56d126031 eglglessink: Don't do context ops at render
We don't need to repeatedly call
eglMakeCurrent() while using the
same context anyway.
2012-10-18 14:35:12 +02:00
Reynaldo H. Verdejo Pinochet
ca74f676fd eglglessink: Don't clear surface color at render 2012-10-18 14:35:12 +02:00
Sebastian Dröge
9e23d0fc87 eglglessink: Rename shader variables to make more sense 2012-10-18 14:35:12 +02:00
Sebastian Dröge
d42d5e1139 eglglessink: Add support for AYUV 2012-10-18 14:35:12 +02:00
Sebastian Dröge
c4643491c4 eglglessink: Reorder caps a bit to make more sense 2012-10-18 14:35:12 +02:00
Sebastian Dröge
6adf608c99 eglglessink: Set rank to PRIMARY 2012-10-18 14:35:12 +02:00
Sebastian Dröge
1c58d921ff eglglessink: Add support for RGBA 2012-10-18 14:35:12 +02:00
Sebastian Dröge
930b4c179e eglglessink: Correctly generated caps for the supported formats 2012-10-18 14:35:12 +02:00
Sebastian Dröge
f9a5fc255d eglglessink: Add ::get_caps() vfunc that returns the actually supported caps 2012-10-18 14:35:12 +02:00
Sebastian Dröge
86ebf86433 eglglessink: Also require a configuration with EGL_SURFACE_TYPE containing EGL_WINDOW_BIT 2012-10-18 14:35:12 +02:00
Sebastian Dröge
7e8cc569dd eglglessink: Fix compiler warnings 2012-10-18 14:35:12 +02:00
Reynaldo H. Verdejo Pinochet
19c3b4d892 eglglessink: Clear surface to black by default 2012-10-18 14:35:12 +02:00
Reynaldo H. Verdejo Pinochet
19739bfb74 eglglessink: Make sure we get a config we can use with GLES2 2012-10-18 14:35:12 +02:00
Reynaldo H. Verdejo Pinochet
24b926a6cc eglglessink: set_window_handle() has been tested to work now 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
7ac284b1a1 eglglessink: Avoid autoscaling by default 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
a81b036355 eglglessink: Avoid repeatedly setting 2D resizing params
Moved to initial texture setup so it hapens
just once while on the same context.
2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
a96fa541ee eglglessink: Avoid initializing EGL at _set_window_handle()
_start() should take care of that.
This change asumes _setcaps() will
happen always after _start() is
done.
2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
ead20f4f0b eglglessink: Don't ask for a window if we already have one 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
22eb374b57 eglglessink: Fix EGL attribs var naming 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
c2cf1fa639 eglglessink: Fix slow path rendering on Android
Specify missing and mandatory params for npot
Before calling glTexImage2D.

In particular, _WRAP_T and _WRAP_S need to be
set to GL_CLAMP_TO_EDGE to avoid all-black
rendering with npot sized frames.
2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
f33167f95b eglglessink: Add test on usable eglconfigs returned 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
303a346fc2 eglglessink: Drop stale error_locked label 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
5763c8d308 eglglessink: Cleanup stale code comments 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
391137a20e eglglessink: GlViewPort() should use actual surface size 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
f707961183 eglglessink: Avoid reiniting EGL after the first time 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
75fe18200a eglglessink: Use correct template caps 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
e439c01382 eglglessink: Fix missing texture setup bits 2012-10-18 14:35:11 +02:00
Reynaldo H. Verdejo Pinochet
68eac71910 eglglessink: Add error checking on eglSwapBuffers 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
f8dcc8aaa5 eglglessink: Fix stale&wrong 0.5 alpha blend 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
12d66a7d54 eglglessink: Add float precision specifier to fragment shader
This is required by GLES and fixes compilation of fragment
shader prog.
2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
28aadcad4e eglglessink: Add log reporting at shader compilation failure 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
b4887425cc eglglessink: Add some missing checks on shader ops
- Check whether there is shader compiler support
  and bail out otherwise.
- Add checks on compile and linking ops
2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
2a84a72fe7 eglglessink: Fix setup chain logic
Mostly a procedural reordering. Idea is to avoid
trying to setup a surface without a display.This
change relies on the asumption that:

1.- set_window_handle() can happen at any time
2.- setcaps will never get called before _start()
    is done.

If both conditions are meet the new procedure
should work as expected.
2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
40d6cc2099 eglglessink: WIP: Reorder locking 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
289f388085 eglglessink: Fix xOverlay logic
Several fixes dealing with correct window
creation and set_handle() ops. Tested on
X11/mesa with internal window creation.
2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
9e18b29be2 eglglessink: Actually test EGL configs before claiming support 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
59b1870ac1 eglglessink: Caps nego EGL fixes
- Fix alloc lol on format list: Asked for 2 slices and used 3.
- Reordered display & context init logic to prepare for actual
  config checking before claiming support for a given format.
  Change deals basically with setting up EGL display at start()
  and choose an EGL config only at setcaps time.
2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
a8f60690aa eglglessink: Caps nego. Start extending RGB support to a set. 2012-10-18 14:35:10 +02:00
Sebastian Dröge
bd28c42fae eglglessink: Fix build of static plugin 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
a83dae1b54 eglglessink: Drop wrong format test on _setcaps (draft leftover) 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
75d4bf420a eglglessink: Support RGB24 by default 2012-10-18 14:35:10 +02:00
Reynaldo H. Verdejo Pinochet
1d77bf6c0f eglglessink: Instrument EGL error reporting 2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
b8c83f98b7 eglglessink: Correctly return GstFlowReturn from render_and_display() 2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
cca08a02a1 eglglessink: Move VBO setup to it's own function 2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
3fce24549f eglglessink: Fix render_and_display logic
Switch procedure according to enabled rendering path
2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
ada5a83eb4 eglglessink: Fix sample launch line with disabled window creation 2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
086563195c eglglessink: Rename stale android leftover 2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
ea03067f3f eglglessink: Move eglgles Sink to ext/ #2 2012-10-18 14:35:09 +02:00
Reynaldo H. Verdejo Pinochet
85250eb9e2 eglglessink: Move eglgles Sink to ext/ 2012-10-18 14:35:09 +02:00
Tim-Philipp Müller
32ba17cd0f Use gst_element_class_set_static_metadata()
where possible. Avoids some string copies. Also re-indent
some stuff. Also some indent fixes here and there.
2012-10-17 17:46:34 +01:00
Sergey N. Gorshkov
6d0d209a28 rtmpsink: handle RTMP_Write() return value correctly
Error might also be negative (-1). Unclear if 0 should
be fatal as well though.

https://bugzilla.gnome.org/show_bug.cgi?id=681111
https://bugzilla.gnome.org/show_bug.cgi?id=686009
2012-10-12 23:29:53 +01:00
David Régade
65add5533a rtmpsink: fix memory leak from URI verification via RTMP_ParseURL()
In gst_rtmp_sink_uri_set_uri(), a test is performed in order
to be sure uri is correct for librtmp. This test calls
RTMP_ParseURL with 3 AVal pointers as parameters: host,
playpath and app.

AVal is a struct with a char* + int. After RTMP_ParseURL call,
host.av_val and app.av_val both refer a substring of "uri". But
playpath.av_val may be the result of a malloc so it needs to
be freed.

https://bugzilla.gnome.org/show_bug.cgi?id=681459
2012-10-12 23:09:06 +01:00
Mark Nauwelaerts
304cf8e1c5 dtsdec: fix buffer parsing
... to avoid feeding empty buffers to decoder.
2012-10-12 16:48:54 +02:00
Wim Taymans
380b23af90 replace some playbin2 -> playbin 2012-10-10 14:14:43 +02:00
Michael Smith
0c2159a220 meta info: register thread-safely. 2012-10-03 11:05:06 -07:00
Jan Schmidt
6e4a9e2e24 resindvd: Remove caps lock from parsetter element.
All the members it used to protect in 0.10 are protected by
the stream lock now.
2012-10-02 22:20:20 +10:00
Jan Schmidt
6122e07795 resindvd: Update overridden caps when the DAR changes
Send a new caps event downstream when we receive new orders
from the VM, if there are existing caps.
2012-10-01 23:43:47 +10:00
Jan Schmidt
3054545dad resindvd: Port parsetter element
Port the DVD element which overrides the MPEG encoded pixel-aspect-ratio
to match that requested by the DVD VM.
2012-10-01 23:28:07 +10:00
Christophe Fergeau
5e544c1556 chromaprint: Missing unmap buffer in transform_ip
When no samples have to be processed, transform_ip exits early, but
the buffer it uses was not properly unmapped.

https://bugzilla.gnome.org/show_bug.cgi?id=685159
2012-09-30 20:16:54 +01:00
Jan Schmidt
3c1a1dfec5 resindvd: Fiddle with segment handling for DVD.
Clarify some of the terms used, and make sure to extend the
stop time when the position moves past the end of the current
segment (as for still frames, for example).

Also, make sure to reset the position value of the segment the
demuxer outputs when collecting a seamless segment.
2012-09-30 04:08:50 +10:00
Tim-Philipp Müller
4712247e4f Remove some liboil references
https://bugzilla.gnome.org/show_bug.cgi?id=673285
2012-09-29 12:36:08 +01:00
Tim-Philipp Müller
346de28846 cog: remove some old elements so they don't get ported accidentally
They are replaced by videoconvert and gdkpixbufoverlay
2012-09-29 12:30:20 +01:00
Руслан Ижбулатов
2c2d6b0753 curl: fix compiler warning with setsockopt() on windows
The optval argument is of type const char * on windows.

https://bugzilla.gnome.org/show_bug.cgi?id=685065
2012-09-29 11:41:56 +01:00
Руслан Ижбулатов
75dba03688 curl: fix build on win32
https://bugzilla.gnome.org/show_bug.cgi?id=684847
2012-09-28 09:57:53 +01:00
Jan Schmidt
7b0e5f4598 soundtouch: Transform timestamps properly after a seek.
The segment is transformed to match the pitch conversion
being applied, so make sure the timestamps being output
match the configured downstream segment accordingly, and
adjust the downstream segment position to match the stream time
ratio also.
2012-09-26 14:57:54 +10:00
Jan Schmidt
34510b71ca resindvd: Don't send spurious 'close segment' events. Make a single segment
With the new 1.0 segment semantics, there's no need to close the
previous segment before sending out a new one, so don't do it.

Also, adjust the outgoing segment to just be one contiguous
timeline, with a base of 0. Fixes some repeating timestamps when
segments change.
2012-09-26 14:57:54 +10:00
Yaakov Selkowitz
33a012219d chromaprint: link against libgstbase
Calls to gst_base_transform_get_type and gst_base_transform_set_passthrough
require linking with libgstbase.

https://bugzilla.gnome.org/show_bug.cgi?id=684740
2012-09-24 23:23:25 +01:00
Tim-Philipp Müller
cc8bd6af0b assrender: disable for autoplugging until it works
https://bugzilla.gnome.org/show_bug.cgi?id=683192
https://bugzilla.gnome.org/show_bug.cgi?id=684683
2012-09-23 21:08:30 +01:00
Olivier Crête
58b4ed1949 opusenc: Rank as Primary 2012-09-22 14:58:52 -04:00
Olivier Crête
df0525de11 rtpopuspay: Allocate the rtp buffer correctly
Use the right functions to allocate the rtp buffer
2012-09-22 14:58:52 -04:00
Jan Schmidt
c90cdadbe4 resindvd: Fix segment handling in the demuxer.
Transfer the incoming segment base time to the src
segment the demuxer sends downstream. Add some
(disabled) debug to the bin for tracking outgoing
timestamps.
2012-09-18 00:27:22 +10:00
Sebastian Dröge
1419862c50 vp8: Remove plugin, moved to gst-plugins-good 2012-09-16 15:48:02 +02:00
Sebastian Dröge
12b5ef6573 vp8dec: Unref input/output states when stopping the decoder 2012-09-16 15:25:08 +02:00
Sebastian Dröge
50ad4b5bbe vp8enc: Update realtime profile to the new properties 2012-09-16 15:21:33 +02:00
Sebastian Dröge
a2503e91bf vp8: Require latest libvpx release (1.1.0 from May 2012)
Fixes bug #684116 and simplifies configure checks.
2012-09-16 10:58:29 +02:00
Sebastian Dröge
829c1dcdaf vp8enc: Use a string field for the profile in the caps
Just for consistency with all the other codecs.
2012-09-15 20:24:00 +02:00
Mark Nauwelaerts
5fad6e86d7 use gst_element_factory_get_metadata to replace obsolete API 2012-09-15 19:13:47 +02:00
Sebastian Dröge
8da71fea1f vp8enc: Correctly set profile in caps 2012-09-15 00:04:07 +02:00
Sebastian Dröge
f7e0bc0c6a vp8: Update copyright and authors 2012-09-14 23:41:48 +02:00
Sebastian Dröge
c371606bc1 vp8enc: Rework encoder properties to be more in line with the libvpx tools and API
Also add all available properties.
2012-09-14 23:37:39 +02:00
Mark Nauwelaerts
578861abea replace gst_element_class_set_details_simple with gst_element_class_set_metadata 2012-09-14 17:27:49 +02:00
Wim Taymans
b8f913555d ffmpegcolorspace is no more 2012-09-14 16:45:34 +02:00
Wim Taymans
0d8f8a5134 rename some caps and elements in examples 2012-09-14 16:29:23 +02:00