Re: [linux-audio-user] SAOL/MP4 question

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-user] SAOL/MP4 question
From: John Lazzaro (lazzaro_AT_CS.Berkeley.EDU)
Date: Thu Jul 04 2002 - 23:51:36 EEST


> Steve Harris writes
>
> My major concern would be having to encode all the stuff ardour keeps in
> XML - sepcially thing like comments. Is it possbile to store the source
> XML in addition to the mp4sa instructions in the .mp4 file? That way
> ardour could get it native data back and other apps can still get the
> translated, normative saol+sasl code, and would ignore the XML.

The MPEG 4 File Format (and its parent, MPEG 4 Systems) is a
complicated thing to understand and implement, and it may be patent
encumbered (it's based on Quicktime technology), although I hasten to
add that I haven't kept up on the current legal and licensing status,
and I am not a lawyer ...

Sfront and the currently-distributed saolc don't use this format --
that's why I keep calling sfront files "pseudo mp4's". The SA standard
itself (ISO/IEC 14496-3 sec 5, in Section 5.5):

http://sound.media.mit.edu/mpeg4/SA-FDIS.pdf

augmented by a few relevent Corrigenda summarized at:

http://www.cs.berkeley.edu/~lazzaro/sa/book/append/index.html

merely define leaf elements that an MPEG 4 File could use. The
"pseudo-mp4" file saolc and sfront uses just dump these leaf elements
into a flat file. Here's what the leaf elements look like: a big
block at the beginning, which is sufficient for non-streaming uses:

class StructuredAudioSpecificConfig { // the bitstream header
  bit more_data = 1;
  while (more_data) { // shall have at least one chunk
    bit(3) chunk_type;
    switch (chunk_type) {
    case 0b000 : orc_file orc; break;
    case 0b001 : score_file score; break;
    case 0b010 : midi_file SMF; break;
    case 0b011 : sample samp; break;
    case 0b100 : sbf sample_bank; break;
    case 0b101 : symtable sym; break;
    }
    bit(1) more_data;
  }
}

and optional timestampped Access Units for streaming applications:

class SA_access_unit { // the streaming data
 bit(1) more_data = 1;
 while (more_data) {
   bit(2) event_type;
   switch (event_type) {
     case 0b00 : score_line score_ev; break;
     case 0b01 : midi_event midi_ev; break;
     case 0b10 : sample samp; break;
     }
   bit(1) more_data;
   }
}

In this saol-devs email:

http://sound.media.mit.edu/mpeg4/saol-dev/1999/0362.html

Eric Scheirer gives an overview of how you can just use these
"leaf-node" chunks of SA as the basis for your system, or you can go
up the MPEG tree and grab more functionality. As an example of the
former approach, the MWPP standard we're doing in the IETF:

http://www.ietf.org/internet-drafts/draft-ietf-avt-mwpp-midi-rtp-04.txt

for streaming MIDI over RTP, if the RTP receiver uses SA, we send
along the StructuredAudioSpecificConfig as part of session
configuration, perhaps with added lossless compression to the chunks,
and send along resiliently encoded representations of the midi_event's
in SA_access_units.

So, to answer your actual question, you could consider taking the
route we did in MWPP: using re-packetized versions of chunks in SA as
the leaf nodes in your XML file format, customized to your needs. As
long as the leafs themselves stay true to ISO/IEC 14496-3 sec 5, your
XML file should be machine translatable into other file and streaming
formats that use the same chunks for different applications ...

-------------------------------------------------------------------------
John Lazzaro -- Research Specialist -- CS Division -- EECS -- UC Berkeley
lazzaro [at] cs [dot] berkeley [dot] edu www.cs.berkeley.edu/~lazzaro
-------------------------------------------------------------------------


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Thu Jul 04 2002 - 23:52:03 EEST