File:  [DVB] / dsmcc-mhp-tools / README.oc
Revision 1.8: download - view: text, annotated - select for diffs
Mon Jul 26 17:35:27 2004 UTC (19 years, 9 months ago) by mass
Branches: MAIN
CVS tags: HEAD


- dump additional DataCarousels too
- updates, cleanups and renaming

# README.oc file for dsmcc-mhp-tools/src/dsmcc-oc

dsmcc-oc: create an ObjectCarousel.

If you want to include stream- or stream-event objects in the stream,
then you have to mark them accordingly. Stream-objects are recognized
by the execute-bit which has to be set in the bitmask of the executing
user, while stream-events are recognized by the write+execute bits,
which both have to be set.

First, Stream- and Stream-Event objects include a description which
can be provided by the broadcaster, e.g. a short textual description
about e.g. what the object is for.
After that, some information about the referenced streams follow, i.e.
a component-tag identifying the elementary stream associated with
an MPEG-Program, then a component-tag associated with the elementary
stream where NPT-descriptors are broadcasted followed by the NPT-timabase
(which is interpreted for Stream-Event objects only), and finally a
component-tag associated with a stream containing Stream-Events (all
associations hexadecimal); after the associations the stream-duration
in seconds and milliseconds (decimal) is read and finally the data-types
included with the referenced stream, i.e. a boolean-triple which stands
for (audio,video,data).
Stream-Event objects also include their event-names and event-ids;
there have to be the same number of names as ids - the list of events
starts with an event-name followed by its associated event-id.

Format for Stream:
{
<DSMCC-MHP-TOOLS-FORMAT-OBJECT-STREAM-DESCRIPTION>
  + Description string max. 255 characters (can include linebreaks)
<DSMCC-MHP-TOOLS-FORMAT-OBJECT-STREAM-INFORMATION>
  + Prog-CTag NPT-CTag NPT-Base STE-CTag DurSec DurMilliSec AUDIO VIDEO DATA
}

Format for StreamEvent:
{
<DSMCC-MHP-TOOLS-FORMAT-OBJECT-STREAM-EVENT-DESCRIPTION>
  + Description string max. 255 characters (can include linebreaks)
<DSMCC-MHP-TOOLS-FORMAT-OBJECT-STREAM-INFORMATION>
  + Prog-CTag NPT-CTag NPT-Base STE-CTag DurSec DurMilliSec AUDIO VIDEO DATA
<DSMCC-MHP-TOOLS-FORMAT-OBJECT-STREAM-EVENT-NAMES-IDS>
  + EventName (+linebreak) followed by
  + the associated EventID in hex. format
}

For an example how stream- and stream-event objects are formatted
look e.g. at example/teststream resp. example/teststreamevent.

Additionally, if you want to include dummy stream-event-descriptors
in the stream, e.g. for really basic testing, pass the '-ste' option
to the encoder (this puts in descriptors referring to all event-ids
described by all stream-event-objects included within the object-
carousel twice in the stream: once at the beginning and second at the
end of the stream, whereby the descriptor-version gets incremented.
Otherwise, you can use the other tools to create single descriptors
and put them in real-time into the stream, by your streaming-server.

You can also include references to object in other carousels, i.e.
these references include a lite options profile instead of a biop
profile in their IOR. Such links to external objects are represented
by soft-links. The name of the link itself stands for the object-name
in the current ObjectCarousel, where the destination-path follows a
fixed format:
The relative path to the referenced object in the external carousel
followed by a colon-separeted list including the object-type (which
can be "dir", "fil", "str" or "ste") and the carousel-location of the
external ObjectCarousel, i.e. carousel-id, original network-id,
transport-stream-id and finally the service-id (all in hex. format).

External reference (LiteOptionsProfile) softlink format:
{
  RelPathToObjInOtherCarousel:RefObjType:CarouselID:ONID:TSID:ServiceID
}

For an example how links to external objects are formatted look
e.g. at example/pictures.

You also have the possibility to distribute an ObjectCarousel over
multiple PIDs. For each directory path inside the ObjectCarousel's
root a DataCarousel is created which is put into a separate MPEG2
elemenraty stream file.

Note: all DataCarousels's data must be disjunct, i.e. if the directory
      '/foo' was already defined as a separate DataCarousel, then the
      encoding of '/foo/bar' into another one will be not allowed.

And of course, all files to encode should be readable.

Check 'dsmcc-oc --help'.

LinuxTV legacy CVS <linuxtv.org/cvs>