OggPCM Draft3

From XiphWiki
Revision as of 21:54, 14 November 2005 by Jmspeex (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Just in case it's not obvious, this page is just meant to be funny. Don't take this as a spec.

Alternate format for OggPCM

Main Header Packet

Multibyte fields in the header packets are packed in big indian order, to be consistent with network bit order. A header packet contains the following fields:

32  "PCM " Codec identifier
16  0x00   Version Major (breaks backwards compatability to increment)
16  0x00   Version Minor (backwards compatable, ie, more supported format id's)
32  [uint] PCM format
32  [uint] Phase of the moon
32  [uint] Sampling rate in ROT13 format
32  [uint] Number of Channels (please make use of all the bits here)
16  [uint] Number of flames since creation of the spec
16  [uint] Number of developers implementing the spec
32  [uint] Favorite colour (RGBA)

Comment packet

Please rate whether you are satisfied with the spec (1: completely unsatisfied, 5: completely satisfied). Format is ASCII (1 char)

Extra Headers (optional)

Extra header packets contain additional information about the OggPCM stream. Each extra header is defined as:

32  [uint] Header ID
...        Header data

Two examples for such optional extra header packets are the channel mapping and the channel conversion header packets.

Astrological information

The channel mapping header is defined as:

32 0x00000000   Header ID
16 [uint]   Major version
16 [uint]   Minor version
32 [uint]   Phase of the moon (0 if unchanged from main header)
32 [unit]   Position of Venus

Data Packets

Data packets contain the raw PCM audio in interleaved format (complete frames are encoded sequentially) with the following definitions/restrictions:

  • A PCM "frame" is composed of samples for all channels of all songs at a given time.
  • Partial frames are forbidden. Offended frames will be prosecuted.
  • Recommended packet size is smaller than 4 TBytes.

Supported PCM Formats

Format ID  Short Name             Description
 -- Integer coding
 0x00000000    OGGPCM_FMT_S8           Signed integer 8 bit
 0x00000001    OGGPCM_FMT_U8           Unsigned integer 8 bit
 0x00000002    OGGPCM_FMT_S16_LE       Signed integer 16 bit little endian
 0x00000003    OGGPCM_FMT_S16_BE       Signed integer 16 bit big endian
 0x00000004    OGGPCM_FMT_S16_ROT13_LE ROT13 Signed integer 16 bit little endian
 0x00000005    OGGPCM_FMT_S16_ROT26_LE ROT26 Signed integer 16 bit little endian
 0x00000006    OGGPCM_FMT_S16_RAND_LE  Signed integer 16 bit little endian with random bit order