servicemp3: different handling of subtitles from gstreamer.
authorErik Slagter <erik@slagter.name>
Wed, 15 May 2013 17:23:09 +0000 (19:23 +0200)
committerErik Slagter <erik@slagter.name>
Wed, 15 May 2013 17:44:48 +0000 (19:44 +0200)
commitee614c707ffa0ddd6abcb8bc8c04bf37edf3c4b0
tree9855847851fb34b0067b2539410c45e83f192a53
parentcd64e9661ab364804b4344051bcf0716cc8b1992
servicemp3: different handling of subtitles from gstreamer.

- cache all (future and past) subtitles received from gstreamer,
not only "current" ones, this works better, because gstreamer
does not always send subtitles in time for enigma;
- use map instead of list for cache for better efficiency;
- use locking on the subtitles cache data;
- don't throw away subtitle cache when seeking;
- store only necessary information (start, end, text) in cache,
instead of complete PangeSubtitle structure per subtitle;
- use ns/ms/pts units more consistently;
- use subtitle end time instead of start time to decide whether
subtitle is current and take already passed time since begin of
subtitle into account, this enables displaying subtitles that
are "skipped into half way" when step-skipping.

Thanks to pieterg and sjaaky for their input.
lib/service/servicemp3.cpp
lib/service/servicemp3.h