during the Cupertino meeting I was asked to maintain the DSM-CC/MHEG-5
paper, which I recently produced under some time pressure with help from
Guido Francescini@cselt and others. It is partly based on some DAVIC
document. There was a small non-public discussion on that paper (see
below). The paper was written to be an annex of DSM-CC. I am not sure if
it really made it as part of the DSMCC IS.
Anyway, SC29WG12 thinks that the paper should not be lost somewhere.
Therefore, I would like to restart the discussion on that issue again. I
am willing to compile the discussion at the end (if you help me :-).
The paper is in Word6 (yes) format gnu-zipped in the archives section of
the mug www site. Find below an extract of notes send from Robert
Lukassen and CGL experts (relayed by Wataru) as a first input on the
discussion without comment from my side (to say the truth: I do not have
real deep DSM-CC knowledge). Please, contribute more views. Thanks for
this input.
BTW: Since I am out of office in the next week (until 1st Feb) I can not
participate the discussion nor update the mailarchive. Additionally, I
have installed a counter on the sitemap of the archive. Lets see how it
evolves!
The initial document:
http://www.fokus.gmd.de/ovma/mug/archives/documents/dsmcc-mheg.doc.gz
Robert wrote:
Well, I can agree with most of the contents of the document. But, I
don't agree on the mapping of Run and Stop to Video and Audio, and
basically everything that has to do with the mapping of Stream
related stuff to DSMCC. In the following, I will assume that the main
mode of operation is BROADCAST.
The StreamEvent mechanism in DSMCC is just an informative annex; this
has to be promoted to normative in DAVIC.
Elementary Substream selection using the ComponentTag as defined in
MHEG-5 is *not* possible with the DSMCC-UU API. It cannot be done.
This goes beyond simple MHEG-5 - DSMCC interfacing issue, really,
because it is actually an end-to-end problem. Somehow, the
ComponentTag has to be known to the author of the MHEG-5 application.
The ComponentTag should also map to some identification of the
elementary stream. That identification should therefore be
invulnerable to remultiplexing which happens frequently in the
end-to-end chain.
There are two types of stream object in DSMCC. One is the program
stream object, which corresponds in reality with a reference to a
PMT, containing information about a complete service. This includes
Video e.s., Audio e.s., and data services such as Subtitling e.s.
and MHEG-5 services.
The other stream object actually corresponds more to the Stream idea
of MHEG-5. It is simply a list of Association Taps which in turn
refer to elementary streams (the identification from Tap to tuning
and filtering parameters is done using PSI/SI information).
The PMT of a program stream object may be reshuffled and changed
during the transport of the data through the broadcast network.
Actually, the only stable (w.r.t. remultiplexing) information is the
number and order of Association Taps in the normal stream object.
Although the Association Taps themselves may change, the list remains
the same. A solution to the substream selection problem may be to
interpret ComponentTags as indices in the list of Association Taps.
This solution enables the use of 'normal' stream objects (i.e. not
program stream objects) but required an extension to the DSMCC-UU API
to enable/disable substreams of a normal stream object.
GCL folks contributed:
1. Object Reference, 3rd bullet
- To avoid the confusion against "Content Data",
"content data objects" -> Ingredient
2. Object Reference, 4th bullet
- This 4th bullet should be the 3rd sub-bullet of the 3rd bullet?
3. Example of DSM-CC file structure for an application
- The TN should be compliant to IS.
4. Example of Mapping High-level API Actions on DSM-CC Primitives
- Launch/Spawn
* DirectoryOpen(app.fileid)
-> DSM::Directory::resolve(app.fileid)
* FileRead(FileObRef)
-> DSM::File::read(FileObRef)
- Prepare
* DirectoryOpen(scene.fileid)
-> DSM::Directory::resolve(scene.fileid)
* FileRead(FileObRef)
-> DSM::File::read(FileObRef)
- Run
* DirectoryOpen(stream.file)
-> DSM::Directory::resolve(stream.file)
* StreamResume(StreamObRef, starttime, 1/1)
-> DSM::Stream::resume(StreamObRef, starttime, 1/1)
- SetSpeed(0)
* StreamPause(StreamObRef, x80000000, x00000000)
-> DSM::Stream::pause(StreamObRef, x80000000, x00000000)
- Stop
* StreamPause(StreamObRef, x80000000, x00000000)
-> DSM::Stream::pause(StreamObRef, x80000000, x00000000)
- StreamMarker
* StreamSubscribe(StreamObRef, marker)
-> DSM::Event::subscribe(StreamObRef, marker)
* StreamNotify(StreamObRef, marker, call back function)
-> DSM::Event::notify(StreamObRef, marker, call back function)
* StreamUnSubscribe(StreamObRef, marker)
-> DSM::Event::unsubscribe(StreamObRef, marker)
- StreamTimer
* StreamStatus
-> DSM::Stream:status()
- OpenConnection
* Attach(ID)
-> DSM::Session::attach(ID)
bye,
- Klaus