Commit graph

3167 commits

Author SHA1 Message Date
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