Commit graph

3804 commits

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