[Bug 692397] New: New plugin for MPEG TS time shifting
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Wed Jan 23 08:09:59 PST 2013
https://bugzilla.gnome.org/show_bug.cgi?id=692397
GStreamer | gst-plugins-bad | git
Summary: New plugin for MPEG TS time shifting
Classification: Platform
Product: GStreamer
Version: git
OS/Version: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: gst-plugins-bad
AssignedTo: gstreamer-bugs at lists.freedesktop.org
ReportedBy: krzysztof.konopko at youview.com
QAContact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Created an attachment (id=234220)
View: https://bugzilla.gnome.org/attachment.cgi?id=234220
Review: https://bugzilla.gnome.org/review?bug=692397&attachment=234220
Proposed implementation
tstimeshift: New plugin for MPEG TS time shifting
This is an initial proposal. I'd like to ask for any help, views, suggestions
and directions.
The plugin is base on Fluendo timeshift element [1] although quite
substantially changed. The proposed code is maintained on GitHub [2]. The
gsttstimeshift comprises several elements that can be used for MPEG TS time
shifting:
tsshifter : Time Shift for MPEG TS streams
tsshifterbin : Time Shift + TS parser for MPEG TS streams
tsseeker : Time Shift seeker
tsindexer : Indexer for MPEG-TS streams
A typical pipeline that makes use of them would look like:
<some MPEG TS src> ! tsshifterbin ! <some MPEG TS sink>
The tsshifterbin element will instantiate elements as follows:
tsparse ! tsindexer ! tsshifter ! tsseeker
and prepare tsindexer ("tune" it to look for the right PID containing PCRs).
Potentially tsshifter can be replaced with queue2 (see the problems below) and
this is actually one of the goals.
Problems still to be considered/solved/improved:
---------------------------------------
- naming
Both tsindexer and tsseeker are supposed to be MPEG TS agnostic but ATM they
are TS specific, hence their names.
Also the tsshifter is actually a ring buffer.
- tsindexer
* uses overengineered for this use case and abandoned GstIndex API (local
copy)
* can't remove index entries
* can't write the index to the disk
* duplicates parsing TS packets logic from tsparse
tsparse would have to be improved to send some additional timestamp
information (e. g. as tags or as buffer timestamps) so that the indexer could
pick them up. The indexer itself could be a generic component (no knowledge
about TS packets), hard to come up with the right format though.
- tsindexer and tsseeker share an index object while it should be shared
through some index database
- tsshifter
* it's actually a ring buffer, not a shifter (see naming notes above)
* ideally it should be replaced with queue2
* as a first attempt, replacement could be optional (both tsshifter and
queue2 co-exist)
There are still some issues when using queue2 instead of tsshifter that
have to be solved.
* as a goal tsshifter could be completely replaced with queue2 which might
require some changes/improvements of the latter:
* custom allocator can be used (see FileMemAllocator:
https://bugzilla.gnome.org/show_bug.cgi?id=691299)
- tests still to be written
- documentation
[1] https://github.com/kkonopko/gst-fluendo-timeshift
[2] https://github.com/kkonopko/gst-plugins-bad/tree/ts-timeshifter-element
--
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list