part-toc: add format specific information

This commit is contained in:
Stefan Sauer 2014-01-29 20:20:56 +01:00
parent 5ad01ab77d
commit bdb1f268a6

View file

@ -133,3 +133,92 @@ specified TOC UID (you can use gst_toc_find_entry() to find entry in TOC by UID)
To create TOC select event use gst_event_new_toc_select(). The common action on To create TOC select event use gst_event_new_toc_select(). The common action on
such event is to seek to specified UID within your element. such event is to seek to specified UID within your element.
5. Implementation coverage, Specifications, ...
AIFC: -/-
http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/Docs/AIFF-1.3.pdf
o 'MARK'
o 'INST'
The 'MARK' chunk defines a list of (cue-id, position_in_samples, label).
The 'INST' chunk contains a sustainLoop and releaseLoop, each consisting of
(loop-type, cue-begin, cue-end)
FLAC: read/write
http://xiph.org/flac/format.html#metadata_block_cuesheet
* METADATA_BLOCK_CUESHEET
* CUESHEET_TRACK
o CUESHEET_TRACK_INDEX
Both CUESHEET_TRACK and CUESHEET_TRACK_INDEX have a (relative) offset in
samples. CUESHEET_TRACK has ISRC metadata.
MKV: read/write
http://matroska.org/technical/specs/chapters/index.html
* Chapters and Editions each having a uid
* Chapter have start/end time and metadata:
ChapString, ChapLanguage, ChapCountry
MP4:
* elst
The 'elst' atom contains a list of edits. Each edit consists of (length, start,
play-back speed).
OGG: -/-
https://wiki.xiph.org/Chapter_Extension
o VorbisComment fields called CHAPTERxxx and CHAPTERxxxNAME with xxx being a
number between 000 and 999.
WAV: read/write
http://www.sonicspot.com/guide/wavefiles.html
* 'cue '
o 'plst'
* 'adtl'
* 'labl'
* 'note'
o 'ltxt'
o 'smpl'
The 'cue ' chunk defines a list of markers in the stream with 'cue-id's. The
'smpl' chunk defines a list of regions in the stream with 'cue-id's in the same
namespace (?).
The various 'adtl' chunks: 'labl', 'note' and 'ltxt' refer to the 'cue-id's.
A 'plst' chunk defines a sequence of segments (cue-id, length_samples, repeats).
The 'smpl' chunk defines a list of loops (cue-id, beg, end, loop-type, repeats).
Conclusion/Ideas
All formats have table of [cue-id, cue-start, (cue-end), (extra tags)]
- cue-id is commonly represented as and unsigned int 32bit
- cue-end is optional
- extra tags could be represented as a structure/taglist
Many formats have metadata that references the cue-table.
- loops in instruments in wav, aifc
- edit lists in wav, mp4
For mp4.edtl, wav.plst we could expose two editions.
1) the edit list is flattened: default, for playback
2) the stream has the raw data and the edit list is there as chapter markers:
useful for editing software
We might want to introduce a new GST_TOC_ENTRY_TYPE_MARKER or _CUE. This would
be a sequence entry-type and it would not be used for navigational purposes, but
to attach data to a point in time (envelopes, loops, ...).
API wise there is some overlap between:
- exposing multiple audio/video tracks as pads or as ToC editions. For ToC
editions, we have the TocSelect event.
- exposing subtitles as a sparse stream or as as ToC sequence of markers with
labels