[Vorbis] Multi-Track-Single-Logical-Stream Ogg-Vorbis (mogg) vs Multi-Track-Multi-Logical-Stream Ogg-Vorbis

Bob Ingraham bobi at ingrahams.us
Fri May 17 09:52:52 PDT 2013


Hi All,

I am in the midst of developing a library for easily recording multi-track
audio for a court recording system. Well, it can be used for anything, but
this is its first intended use.

The idea is to simultaneously capture/compress/archive 8 to 16 mono
sources (microphones) in an Ogg container using Vorbis. Then later, be
able to play back only selected logical streams, or
multiple-logical-streams via down-mixing.

Now, the way I've written the encoding logic (with liboggz and fishsound,)
is to compress each mono source (microphone) with Vorbis and store it in
Ogg as its own logical stream.

This works is currently working as I had hoped, because I end-up with an
Ogg file with 8 logical streams, one
Vorbis-encoded-logical-stream-per-microphone.


THE ISSUE:

So, I've now seen "mogg" files and have examined one and found out that
they do NOT have multiple logical streams but INSTEAD have multiple
channels in a single logical stream.


So I am confused: I thought that Vorbis only could encode up to 2 channels
max (stereo), but I've found, for example, a 12-channel Vorbis-encoded
song in a single-logical-stream Ogg container.

The whole purpose of me going to the pain of separately encoding each of
my mono channels and then stuffing each in its own logical stream was to
preserve channel separation for later editing and/or selective
down-mixing.

THE QUESTIONS:

1. So, did I NOT need to compress each mono channel separately with its
own Vorbis instance and use separate logical streams in Ogg?

2. For preserving individual track integrity (and editability and
down-mixing,) which approach is better? (mogg vs multi-logical-stream)?


3. How does Vorbis handle multiple mono tracks (say 8+)? Does it encode
each channel separately and independently?


I guess I'm asking, given what I'm trying to achieve, if I chose the
correct approach (encode each track independently and stored in its own
logical stream,) or if I just made extra work for no reason?

Thanks for any insight from the experts!

Cheers,
Bob Ingraham



More information about the Vorbis mailing list