Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
Toc
functions are used to create/free Toc
and TocEntry
structures.
Also they are used to convert Toc
into Structure
and vice versa.
Toc
lets you to inform other elements in pipeline or application that playing
source has some kind of table of contents (TOC). These may be chapters, editions,
angles or other types. For example: DVD chapters, Matroska chapters or cue sheet
TOC. Such TOC will be useful for applications to display instead of just a
playlist.
Using TOC is very easy. Firstly, create Toc
structure which represents root
contents of the source. You can also attach TOC-specific tags to it. Then fill
it with TocEntry
entries by appending them to the Toc
using
tocAppendEntry
, and appending subentries to a TocEntry
using
tocEntryAppendSubEntry
.
Note that root level of the TOC can contain only either editions or chapters. You should not mix them together at the same level. Otherwise you will get serialization /deserialization errors. Make sure that no one of the entries has negative start and stop values.
Use eventNewToc
to create a new TOC Event
, and eventParseToc
to
parse received TOC event. Use eventNewTocSelect
to create a new TOC select Event
,
and eventParseTocSelect
to parse received TOC select event. The same rule for
the Message
: messageNewToc
to create new TOC Message
, and
messageParseToc
to parse received TOC message.
TOCs can have global scope or current scope. Global scope TOCs contain all entries that can possibly be selected using a toc select event, and are what an application is usually interested in. TOCs with current scope only contain the parts of the TOC relevant to the currently selected/playing stream; the current scope TOC is used by downstream elements such as muxers to write correct TOC entries when transcoding files, for example. When playing a DVD, the global TOC would contain a hierarchy of all titles, chapters and angles, for example, while the current TOC would only contain the chapters for the currently playing title if playback of a specific title was requested.
Applications and plugins should not rely on TOCs having a certain kind of structure, but should allow for different alternatives. For example, a simple CUE sheet embedded in a file may be presented as a flat list of track entries, or could have a top-level edition node (or some other alternative type entry) with track entries underneath that node; or even multiple top-level edition nodes (or some other alternative type entries) each with track entries underneath, in case the source file has extracted a track listing from different sources).
- newtype Toc = Toc (ManagedPtr Toc)
- noToc :: Maybe Toc
- data TocAppendEntryMethodInfo
- tocAppendEntry :: (HasCallStack, MonadIO m) => Toc -> TocEntry -> m ()
- data TocDumpMethodInfo
- tocDump :: (HasCallStack, MonadIO m) => Toc -> m ()
- data TocFindEntryMethodInfo
- tocFindEntry :: (HasCallStack, MonadIO m) => Toc -> Text -> m (Maybe TocEntry)
- data TocGetEntriesMethodInfo
- tocGetEntries :: (HasCallStack, MonadIO m) => Toc -> m [TocEntry]
- data TocGetScopeMethodInfo
- tocGetScope :: (HasCallStack, MonadIO m) => Toc -> m TocScope
- data TocGetTagsMethodInfo
- tocGetTags :: (HasCallStack, MonadIO m) => Toc -> m TagList
- data TocMergeTagsMethodInfo
- tocMergeTags :: (HasCallStack, MonadIO m) => Toc -> Maybe TagList -> TagMergeMode -> m ()
- tocNew :: (HasCallStack, MonadIO m) => TocScope -> m Toc
- data TocSetTagsMethodInfo
- tocSetTags :: (HasCallStack, MonadIO m) => Toc -> Maybe TagList -> m ()
Exported types
Toc (ManagedPtr Toc) |
Methods
appendEntry
data TocAppendEntryMethodInfo Source #
((~) * signature (TocEntry -> m ()), MonadIO m) => MethodInfo * TocAppendEntryMethodInfo Toc signature Source # | |
Appends the TocEntry
entry
to toc
.
dump
data TocDumpMethodInfo Source #
((~) * signature (m ()), MonadIO m) => MethodInfo * TocDumpMethodInfo Toc signature Source # | |
tocDump :: (HasCallStack, MonadIO m) => Toc -> m () Source #
No description available in the introspection data.
findEntry
:: (HasCallStack, MonadIO m) | |
=> Toc |
|
-> Text |
|
-> m (Maybe TocEntry) | Returns: |
Find TocEntry
with given uid
in the toc
.
getEntries
data TocGetEntriesMethodInfo Source #
((~) * signature (m [TocEntry]), MonadIO m) => MethodInfo * TocGetEntriesMethodInfo Toc signature Source # | |
:: (HasCallStack, MonadIO m) | |
=> Toc |
|
-> m [TocEntry] |
Gets the list of TocEntry
of toc
.
getScope
data TocGetScopeMethodInfo Source #
((~) * signature (m TocScope), MonadIO m) => MethodInfo * TocGetScopeMethodInfo Toc signature Source # | |
:: (HasCallStack, MonadIO m) | |
=> Toc |
|
-> m TocScope | Returns: scope of |
No description available in the introspection data.
getTags
data TocGetTagsMethodInfo Source #
((~) * signature (m TagList), MonadIO m) => MethodInfo * TocGetTagsMethodInfo Toc signature Source # | |
Gets the tags for toc
.
mergeTags
data TocMergeTagsMethodInfo Source #
((~) * signature (Maybe TagList -> TagMergeMode -> m ()), MonadIO m) => MethodInfo * TocMergeTagsMethodInfo Toc signature Source # | |
:: (HasCallStack, MonadIO m) | |
=> Toc |
|
-> Maybe TagList | |
-> TagMergeMode |
|
-> m () |
Merge tags
into the existing tags of toc
using mode
.
new
:: (HasCallStack, MonadIO m) | |
=> TocScope |
|
-> m Toc | Returns: newly allocated |
Create a new Toc
structure.
setTags
data TocSetTagsMethodInfo Source #
((~) * signature (Maybe TagList -> m ()), MonadIO m) => MethodInfo * TocSetTagsMethodInfo Toc signature Source # | |