[vlc-devel] [RFC PATCHv2 00/18] ES track id rework
Romain Vimont
rom1v at videolabs.io
Tue Feb 18 17:55:56 CET 2020
On 2/18/20 5:11 PM, Thomas Guillem wrote:
> Hello,
>
> this patch set supersede my previous set: "[RFC PATCH 0/9] Fixing ES id and
> group collision"
>
> Change since my last set:
>
> - Reworked the "input: pass a specific es_out for each slaves" commit: added
> more comments and moved the new code to a new function for code readability.
> Added a quite dumb approach to fix source_id collision. I'm open to any
> suggestions.
>
> - Reworked the "es_out: add vlc_es_id_GetStrId()" commit: added
> vlc_es_id_IsStrIdStable(), that will tell if the track id is stable (ie.
> possible to save it in a db). Note: A ES string id is expected to be unique
> for one playback instance, a stable ES string id is expected to be the same
> accross several playback instances.
>
> - Modified a lot of demuxers to send stables IDs.
>
> - Removed the commit that ensure that a demuxer is always sending automatic or
> specific ids. Indeed, some demuxers will now send specific and auto ids, cf.
> "demux: avi: use stable ids". There won't be any id collision since "auto/"
> will be added to the ES string identifier.
>
> - The ES string id is now used by "video-track", "audio-track" and "sub-track"
> variable.
>
> - Removed the "video-track-id, "audio-track-id" and "sub-track-id" handling
>
> Here are some example of possible tracks ids:
>
> mkv with external srt:
> video/1
> audio/2
> audio/3
> sub/4
> sub/5
> my_video.srt/sub/0
Since the slave may have an arbitrary name, using a different separator
could avoid unexpected collisions (for example, if I use a srt named
"video" or "video/0" or something else that I don't think of).
For example: "my_video.srt:sub/0"
("my:file:with:a:weird:name.srt:sub/0" could be split on the last ':')
> demuxer using auto ids with external srt:
> video/auto/0
> audio/auto/1
> audio/auto/2
> sub/auto/3
> sub/auto/4
> my_video.srt/sub/0
>
> decoders using close captions:
> video/0
> audio/1
> video/0/sub/0
>
> Thomas Guillem (18):
> es_out: add es_out_ctx_t
> es_out: also pass ctx from controls
> input: change InputDemuxNew arguments
> input: pass a specific es_out for each slaves
> es_out: fix group_id and i_id collision
> es_out: add vlc_es_id_GetStrId()
> es_out: replace the meta_id by the str_id
> es_out: add sticky programs handling
> input: remove noslave_exts hack
> demux: use a stable id for one-track modules
> demux: mkv: use stable ids
> demux: mp4: use stable ids
> demux: vobsub: use stable id
> demux: avi: use stable ids
> demux: avformat: use stable ids
> demux: ogg: use stable ids
> es_out: use string id for "cat-track" options
> es_out: deprecate "cat-track-id" options
>
> include/vlc_es.h | 29 ++
> include/vlc_es_out.h | 10 +-
> modules/access/bluray.c | 6 +-
> modules/demux/adaptive/plumbing/FakeESOut.cpp | 8 +-
> modules/demux/aiff.c | 1 +
> modules/demux/au.c | 1 +
> modules/demux/avformat/demux.c | 1 +
> modules/demux/avi/avi.c | 1 +
> modules/demux/caf.c | 1 +
> modules/demux/cdg.c | 1 +
> modules/demux/flac.c | 1 +
> modules/demux/mjpeg.c | 1 +
> modules/demux/mkv/matroska_segment.cpp | 1 +
> modules/demux/mp4/mp4.c | 2 +
> modules/demux/mpc.c | 1 +
> modules/demux/mpeg/es.c | 1 +
> modules/demux/mpeg/h26x.c | 1 +
> modules/demux/nuv.c | 3 +
> modules/demux/ogg.c | 15 +-
> modules/demux/rawaud.c | 1 +
> modules/demux/smf.c | 1 +
> modules/demux/stl.c | 1 +
> modules/demux/subtitle.c | 1 +
> modules/demux/timestamps_filter.h | 3 +-
> modules/demux/ttml.c | 1 +
> modules/demux/vc1.c | 1 +
> modules/demux/vobsub.c | 1 +
> modules/demux/wav.c | 1 +
> modules/demux/webvtt.c | 1 +
> src/Makefile.am | 1 +
> src/input/es_out.c | 346 +++++++++++++-----
> src/input/es_out.h | 11 +
> src/input/es_out_ctx.c | 160 ++++++++
> src/input/es_out_timeshift.c | 185 ++++++----
> src/input/input.c | 73 +++-
> src/input/input_internal.h | 2 +
> src/input/subtitles.c | 16 -
> src/input/var.c | 13 +-
> src/libvlc-module.c | 40 +-
> src/libvlccore.sym | 1 +
> 40 files changed, 703 insertions(+), 242 deletions(-)
> create mode 100644 src/input/es_out_ctx.c
>
More information about the vlc-devel
mailing list