Andre Moreira Magalhaes (andrunko) [Mon, 4 Feb 2013 04:20:51 +0000 (02:20 -0200)]
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.
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:44:04 +0000 (17:44 -0500)]
mssdemux: handle FLUSH events by resetting the demuxer state
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:43:46 +0000 (17:43 -0500)]
mssdemux: add conditions to prevent some crashes
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:29:58 +0000 (17:29 -0500)]
mssdemux: use standard glib methods
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:27:19 +0000 (17:27 -0500)]
mssdemux: fix some memory leaks and use right free function
Louis-Francis Ratté-Boulianne [Fri, 1 Feb 2013 22:12:41 +0000 (17:12 -0500)]
mssdemux: don't stop a task from inside the loop
Only pause the task
Louis-Francis Ratté-Boulianne [Thu, 31 Jan 2013 21:14:37 +0000 (16:14 -0500)]
mssdemux: log manifest content for debugging
Louis-Francis Ratté-Boulianne [Wed, 30 Jan 2013 05:22:50 +0000 (00:22 -0500)]
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).
Louis-Francis Ratté-Boulianne [Wed, 30 Jan 2013 03:57:36 +0000 (22:57 -0500)]
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.
Thiago Santos [Sat, 26 Jan 2013 00:24:56 +0000 (21:24 -0300)]
mssdemux: add some documentation
Adds a little bit of docs explaning the internals of mssdemux
Thiago Santos [Tue, 22 Jan 2013 20:33:41 +0000 (17:33 -0300)]
mssdemux: add max-queue-size-buffers property
Indicates how much buffering should be done internally in
mssdemux
Thiago Santos [Mon, 21 Jan 2013 21:05:59 +0000 (18:05 -0300)]
mssdemux: stop tasks faster
Issue a cancel to the downloaders so they stop earlier
Thiago Santos [Thu, 17 Jan 2013 19:20:10 +0000 (16:20 -0300)]
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.
Thiago Santos [Thu, 17 Jan 2013 19:19:54 +0000 (16:19 -0300)]
mssdemux: do not leak fragments
Thiago Santos [Thu, 17 Jan 2013 16:48:13 +0000 (13:48 -0300)]
mssdemux: fix issue on fragment timestamping parsing
Use guint64 as the fragments can start at very high numbers,
specially on live streams
Thiago Santos [Wed, 16 Jan 2013 18:28:19 +0000 (15:28 -0300)]
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
Thiago Santos [Tue, 15 Jan 2013 20:31:25 +0000 (17:31 -0300)]
mssdemux: push newsegments with same start time on bitrate switches
This keeps sinks working in sync after a bitrate switch
Thiago Santos [Mon, 14 Jan 2013 16:21:10 +0000 (13:21 -0300)]
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
Thiago Santos [Fri, 11 Jan 2013 18:01:33 +0000 (15:01 -0300)]
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
Thiago Santos [Thu, 10 Jan 2013 19:26:48 +0000 (16:26 -0300)]
mssdemux: refactoring fragment download to its own function
Makes code clearer and helps changing the download part of the
code to its own thread
Thiago Santos [Thu, 10 Jan 2013 18:16:36 +0000 (15:16 -0300)]
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
Thiago Santos [Tue, 8 Jan 2013 21:01:17 +0000 (18:01 -0300)]
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.
Thiago Santos [Tue, 8 Jan 2013 20:55:49 +0000 (17:55 -0300)]
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
Thiago Santos [Tue, 8 Jan 2013 20:54:57 +0000 (17:54 -0300)]
mssdemux: signal no-more-pads when finished exposing pads
This makes decodebin/playbin mechanism know it can start playing
when buffering is finished
Thiago Santos [Tue, 8 Jan 2013 14:08:39 +0000 (11:08 -0300)]
mssmanifest: Keep the stream qualities list sorted by bitrate
This will help making adaptive streaming chose the best rate
for a particular connection speed
Thiago Santos [Tue, 8 Jan 2013 13:16:23 +0000 (10:16 -0300)]
mssdemux: also consider fourcc AVC1 as H264
H264 can be represented by both fourccs H264 and AVC1, use both.
Thiago Santos [Fri, 4 Jan 2013 20:01:34 +0000 (17:01 -0300)]
mssmanifest: add support for VC-1 and WmaPro formats parsing
VC-1 should map to WMV3 and WmaPro to WMA2
Thiago Santos [Fri, 4 Jan 2013 20:00:34 +0000 (17:00 -0300)]
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
Thiago Santos [Fri, 4 Jan 2013 18:49:43 +0000 (15:49 -0300)]
mssmanifest: do not set codec_data when it is empty
Some manifests contain empty codec datas, better not set them
Thiago Santos [Fri, 4 Jan 2013 18:49:02 +0000 (15:49 -0300)]
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
Thiago Santos [Fri, 28 Dec 2012 03:49:24 +0000 (00:49 -0300)]
mssmanifest: fix typo
Fix typo that was making the advance fragment function return a wrong
flow return in case it was already EOS
Thiago Santos [Fri, 28 Dec 2012 03:48:33 +0000 (00:48 -0300)]
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
Thiago Santos [Wed, 26 Dec 2012 19:19:14 +0000 (16:19 -0300)]
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
Thiago Santos [Fri, 21 Dec 2012 19:42:11 +0000 (16:42 -0300)]
mssdemux: add some more error handling
Post error in some more scenarios:
* when the manifest has no streams
* when getting the fragment url fails
Thiago Santos [Fri, 21 Dec 2012 18:37:45 +0000 (15:37 -0300)]
codecparsers: ensure the debug category is properly initialized
The user of the library might not need to create a NalParser, so
the debug category needs to be initialized from other functions
as well if required.
Thiago Santos [Thu, 20 Dec 2012 18:30:06 +0000 (15:30 -0300)]
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
Thiago Santos [Thu, 20 Dec 2012 17:27:58 +0000 (14:27 -0300)]
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
Thiago Santos [Thu, 20 Dec 2012 04:09:05 +0000 (01:09 -0300)]
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
Thiago Santos [Thu, 20 Dec 2012 04:07:18 +0000 (01:07 -0300)]
mssdemux: add the correct caps to the outgoing stream
mssdemux outputs a quicktime variant, named mss-fragment
Thiago Santos [Sun, 25 Nov 2012 04:57:36 +0000 (01:57 -0300)]
mssdemux: set caps to buffers before pushing
Also update to the latest gstfragment API that provides
the fragment as a whole buffer.
Thiago Santos [Thu, 22 Nov 2012 16:01:09 +0000 (13:01 -0300)]
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.
Thiago Santos [Thu, 22 Nov 2012 15:28:56 +0000 (12:28 -0300)]
mssdemux: adds mininum error handling
This should care for basic scenarios of errors and EOS to allow
the pipeline to stop correctly
Thiago Santos [Thu, 22 Nov 2012 15:28:20 +0000 (12:28 -0300)]
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
Thiago Santos [Mon, 19 Nov 2012 20:53:16 +0000 (17:53 -0300)]
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
Thiago Santos [Fri, 16 Nov 2012 20:30:12 +0000 (17:30 -0300)]
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
Thiago Santos [Fri, 16 Nov 2012 20:29:38 +0000 (17:29 -0300)]
mssdemux: more manifest parsing and helper functions
Now the mss manifest is able to generate the files urls
Thiago Santos [Wed, 14 Nov 2012 20:19:35 +0000 (17:19 -0300)]
mssdemux: pad exposing initial implementation
Does some basic parsing of the stream caps and adds a pad for
each stream detected in the manifest
Thiago Santos [Fri, 9 Nov 2012 19:47:54 +0000 (16:47 -0300)]
mssdemux: add manifest parsing
Continued implementing:
1) parse the manifest with libxml2
2) detect stream types
Thiago Santos [Thu, 8 Nov 2012 19:06:44 +0000 (16:06 -0300)]
smoothstreaming: stubs for mssdemux
Just the stubs for mssdemux element.
Also add some useful code from hlsdemux that we intend to reuse
Thiago Santos [Thu, 8 Nov 2012 18:42:39 +0000 (15:42 -0300)]
smoothstreaming: build directory stubs for new plugin
Initial build structure for MS' Smooth Streaming plugin
Conflicts:
ext/Makefile.am
Louis-Francis Ratté-Boulianne [Tue, 19 Feb 2013 18:01:37 +0000 (13:01 -0500)]
uridownloader: unlock mutex when switching urisrc state to NULL to avoid deadlock
When chain method was called after gst_uri_downloader_stop and before state has been changed to NULL, execution was blocking on g_mutex_lock.
Conflicts:
gst-libs/gst/uridownloader/gsturidownloader.c
Thiago Santos [Thu, 7 Feb 2013 03:28:15 +0000 (00:28 -0300)]
uridownloader: properly unref the urisrc between downloads
This prevents leaking the element. Also sets the bus to flushing
to completely reset the downloader state
Andre Moreira Magalhaes (andrunko) [Tue, 16 Apr 2013 20:23:02 +0000 (17:23 -0300)]
uridownloader: make cancelled state 'permanent' until a reset
When downloading and cancelling quickly the uridownloader object and the
element using it could miss the cancelled window and the uridownloader
would fetch the wrong URI and block on subsequent fetches.
This was also problematic when stopping elements, while one task would
call the cancel, another element thread could issue a new fetch_uri. As
the cancel state isn't 'permanent' this fetch_uri would block and
prevent the whole element from stopping and going to NULL.
This patch makes the 'cancelled' state permanent until a
gst_uri_downloader_reset is called. This way the element knows the
window where the uridownloader isn't active and only reactivate it when
ready.
Thiago Santos [Tue, 16 Apr 2013 22:47:02 +0000 (19:47 -0300)]
uridownloader: refactor gsturidownloader to its own lib
gsturidownloader can be reused by other plugins, better have it
into its own lib
Greg Rutz [Tue, 7 May 2013 14:26:03 +0000 (08:26 -0600)]
mpegtsmux: Fix memory leak when using prepare_func
prepare_func will allocate a new buffer to replace the original
one. Instead of using gst_buffer_replace (which causes an extra
refcount increment on the new buffer), we just unref the original
buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=699786
Sreerenj Balachandran [Tue, 7 May 2013 11:22:10 +0000 (14:22 +0300)]
mpegvideometa: Fix typo in comment
https://bugzilla.gnome.org/show_bug.cgi?id=699827
Stefan Sauer [Fri, 3 May 2013 19:46:08 +0000 (21:46 +0200)]
ladspa: sync controlled parames in filters and sinks
Sebastian Dröge [Fri, 3 May 2013 14:55:00 +0000 (16:55 +0200)]
ladspa: Add $(GMODULE_NO_EXPORT_LIBS) for gmodule
Matej Knopp [Wed, 1 May 2013 15:19:07 +0000 (17:19 +0200)]
mpegvideoparse: don't compare buffer size when checking whether to update caps
https://bugzilla.gnome.org/show_bug.cgi?id=699398
Juan Manuel Borges Caño [Fri, 3 May 2013 09:34:34 +0000 (11:34 +0200)]
ladspa: improved port to gstreamer 1.0
Fixes: #698927
Tim-Philipp Müller [Wed, 1 May 2013 16:36:47 +0000 (17:36 +0100)]
mpegvideoparse: don't announce incomplete source caps
Don't send any source caps yet if we're still in
drop-buffers-until-we-get-a-sequence-header mode.
Fixes transmuxing of many MPEG-TS/PS streams into
formats which require things like width, height or
codec_data on the input caps.
Also fixes issues when using playbin with decoder
sinks that want width/height etc.
https://bugzilla.gnome.org/show_bug.cgi?id=695879
Tim-Philipp Müller [Sat, 27 Apr 2013 11:28:42 +0000 (12:28 +0100)]
kate: fix buffer leak in katetag
Makes unit test valgrind clean.
https://bugzilla.gnome.org/show_bug.cgi?id=697071
Tim-Philipp Müller [Sat, 27 Apr 2013 11:06:53 +0000 (12:06 +0100)]
tests: fix some leaks in kate unit test
Tim-Philipp Müller [Sat, 27 Apr 2013 11:06:28 +0000 (12:06 +0100)]
kate: minor cleanup
Olivier Crête [Fri, 26 Apr 2013 19:33:18 +0000 (15:33 -0400)]
liveadder: Document that the latency is in milliseconds
Bug #698896
Edward Hervey [Fri, 26 Apr 2013 13:39:30 +0000 (15:39 +0200)]
tsdemux: convert packet PTS/DTS as soon as possible
We let the mpegtspacketizer deal with pcr wraparound/resets.
https://bugzilla.gnome.org/show_bug.cgi?id=674536
Edward Hervey [Fri, 26 Apr 2013 10:18:20 +0000 (12:18 +0200)]
mpegtsdemux: header cleanups/updates
Rico Tzschichholz [Fri, 26 Apr 2013 12:32:14 +0000 (14:32 +0200)]
docs: Drop obsolete references to videosignal headers
In addition to
8552396c362c20adb6aa9129a453ff81ecdcf656
Josep Torra [Fri, 26 Apr 2013 08:38:36 +0000 (10:38 +0200)]
h264parse: Update src pad caps when it was explicitly signaled
Fixes src pad caps aren't updated when converting from AVC to bytestream
and new caps had been received in the sink pad.
https://bugzilla.gnome.org/show_bug.cgi?id=698679
Thiago Santos [Tue, 23 Apr 2013 18:19:14 +0000 (15:19 -0300)]
tsdemux: Fix caps string leak
Sebastian Dröge [Wed, 24 Apr 2013 07:40:24 +0000 (09:40 +0200)]
eglglessink: Use gst_egl_display_get() instead of passing a GstEGLDisplay to EGL functions
Sebastian Dröge [Thu, 28 Mar 2013 15:52:26 +0000 (16:52 +0100)]
wasapisrc: Port to GstAudioSrc
Sebastian Dröge [Wed, 27 Mar 2013 09:10:21 +0000 (10:10 +0100)]
wasapi: Port wasapisink to GstAudioSink
Tim-Philipp Müller [Tue, 23 Apr 2013 00:17:56 +0000 (01:17 +0100)]
tests: fix remaining kate tests
https://bugzilla.gnome.org/show_bug.cgi?id=697071
Brendan Long [Mon, 15 Apr 2013 23:06:57 +0000 (17:06 -0600)]
tests: port Kate tests to 1.0
https://bugzilla.gnome.org/show_bug.cgi?id=697071
Tim-Philipp Müller [Mon, 22 Apr 2013 22:52:20 +0000 (23:52 +0100)]
Automatic update of common submodule
From
3cb3d3c to
5edcd85
Tim-Philipp Müller [Sun, 21 Apr 2013 17:28:52 +0000 (18:28 +0100)]
dvbbasebin: better error reporting
https://bugzilla.gnome.org/show_bug.cgi?id=678892
Tim-Philipp Müller [Sun, 21 Apr 2013 13:13:45 +0000 (14:13 +0100)]
dvbbasebin: log channel parsing into dvbbasebin debug category as well
Tim-Philipp Müller [Sun, 21 Apr 2013 13:04:11 +0000 (14:04 +0100)]
dvbbasebin: fix path where to look for the dvb-channels.conf
Construct path based on the API version, not $major.$minor version.
Thiago Santos [Thu, 18 Apr 2013 20:26:15 +0000 (20:26 +0000)]
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.
Wim Taymans [Thu, 18 Apr 2013 15:18:12 +0000 (17:18 +0200)]
aiff: port to 1.0
Sebastian Dröge [Thu, 18 Apr 2013 14:11:26 +0000 (16:11 +0200)]
egl: Use gst_context_writable_structure()
Sebastian Dröge [Thu, 18 Apr 2013 13:26:31 +0000 (15:26 +0200)]
eglglessink: Give only SECONDARY rank
If available we still prefer xvimagesink.
Josep Torra [Thu, 18 Apr 2013 10:54:31 +0000 (12:54 +0200)]
eglglessink: fixes 'makes integer from pointer without a cast' warning
Josep Torra [Thu, 18 Apr 2013 10:24:18 +0000 (12:24 +0200)]
eglglessink: silence warnings building for RPI related to 'vcos_*'
Josep Torra [Thu, 18 Apr 2013 10:27:28 +0000 (12:27 +0200)]
eglglessink: fix warnings building on the RPI
Josep Torra [Thu, 18 Apr 2013 10:16:17 +0000 (12:16 +0200)]
egl: silence warnings building for RPI related to 'vcos_*'
Greg Rutz [Wed, 17 Apr 2013 20:45:19 +0000 (14:45 -0600)]
tsdemux: Add support for Motorola DigiCipher II MPEG2 video
Since there is a conflict between the DCII stream type and BluRay
stream types, moved the processing of BluRay-specific stream types
to the beginning of the function. Only if a BluRay stream type
IS NOT found do we proceed to check the rest of the stream type
identifiers
Previous code was also "sort-of" handling a similar conflict between
BluRay AC3 audio and standard AC3 audio. Moved the special case BluRay
AC3 handling in the main switch statement to the new BluRay-specific
switch.
https://bugzilla.gnome.org/show_bug.cgi?id=697892
Sebastian Dröge [Thu, 18 Apr 2013 07:07:29 +0000 (09:07 +0200)]
configure: The quicktime wrapper plugin is not ported yet either
Sebastian Dröge [Thu, 18 Apr 2013 06:56:36 +0000 (08:56 +0200)]
configure: The osxvideosrc plugin is called osx_video
Sebastian Dröge [Thu, 18 Apr 2013 05:54:38 +0000 (07:54 +0200)]
osxvideosrc: It's not ported to 1.0 yet
Sebastian Dröge [Wed, 17 Apr 2013 11:48:28 +0000 (13:48 +0200)]
eglglessink: Fix GstContext refcounting some more
Sebastian Dröge [Wed, 17 Apr 2013 11:16:27 +0000 (13:16 +0200)]
eglglessink: Fix GstContext refcounting
Sebastian Dröge [Wed, 17 Apr 2013 08:48:31 +0000 (10:48 +0200)]
eglglessink: Update for GLTextureUploadMeta and EGL API changes
Sebastian Dröge [Wed, 17 Apr 2013 08:40:48 +0000 (10:40 +0200)]
egl: Use new types from libgstvideo instead of defining our own
Youness Alaoui [Mon, 25 Mar 2013 22:30:18 +0000 (18:30 -0400)]
h264parse: Do not check for VUI parameters if they were not present in the SPS
Sebastian Dröge [Tue, 16 Apr 2013 20:51:02 +0000 (22:51 +0200)]
eglglessink: Reorder surface queries
Otherwise wrong values can be returned.
Sebastian Dröge [Tue, 16 Apr 2013 20:25:19 +0000 (22:25 +0200)]
eglglessink: Properly set a debug category for the adaption layers
Sebastian Dröge [Tue, 16 Apr 2013 20:25:02 +0000 (22:25 +0200)]
eglglessink: Get the EGL/GLES extensions at the right position
Sebastian Dröge [Tue, 16 Apr 2013 20:14:09 +0000 (22:14 +0200)]
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);
^