OggPCM Draft3
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