All pastes #1886988 Raw Edit

Idea for new JPC-RR dumpformat

public text v1 · immutable
#1886988 ·published 2010-06-20 12:04 UTC
rendered paste body
Idea for new JPC-RR dumpformat:

All numbers are big-endian.

BYTE is 1 byte, WORD is 2, DWORD is 4, QWORD is 8.

VARIABLE has bit 7 set for all but the last byte, and only 7 low bits in each
byte contribute.

Main file structure:
* Magic: FFFFh JPCRRMULTIDUMP
* Number of channels (WORD). Must be nonzero.
* Channels table (consists of channel elements)
* Data table (consists of data elements and special elements)

Channel element structure:
* Channel number (WORD, FFFFh is reserved an MUST NOT be used) All channel
  numbers must be unique within segment, but there are no uniqueness requirements
  between segments.
* Channel type (WORD):
** 0000h		Video output channel
** 0001h		PCM audio output channel
** 0002h		FM audio output channel
** 0003h		Dummy channel.
** All other values are reserved.
* Channel name length. WORD, 0 if channel has no name.
* Channel name (UTF-8, channel name length bytes).

Special element (time skip):
* Magic: FFFFFFFFFFFFh

Signals that no events occur in 2^32-1 ns. Last known timestamp is updated.

Special element (segment restart):
* Magic: FFFFh JPCRRMULTIDUMP

Signals that new segment begins from here. Channel tables are reset. Stream
base time will be time of last event in current segment.

Data element structure:
* Channel number. WORD, FFFFh MUST NOT be used.
* Time in nanoseconds (DWORD) relative to last known timestamp (will be
  updated)
* Event subtype (BYTE)
* Event data size (VARIABLE, not including headers).
* Event data (format channel/subtype dependent)

Channel type 0 subtypes 0-2 (Frame)

* Frame width (WORD)
* Frame height (WORD)
* Frame data. What's exactly here depends on subtype:
** subtype 0: Raw RGBx video data.
** subtype 1: RGBx video data with zlib compression
** subtype 2: RGBx video data minus last frame data with zlib compression.
   Note: Substraction is pixel by pixel, component by component. Pixels
   outside image are treated as black.

Channel type 1 subtype 0 (PCM sample)

* Left sample (signed WORD)
* Right sample (signed WORD)

Channel type 2 subtype 0 (FM low write)

* Register to write (BYTE)
* Value to write (BYTE)

Channel type 2 subtype 1 (FM high write)

* Register to write minus 256 (BYTE).
* Value to write (BYTE).

Channel type 1 subtype 1 or channel type 2 subtype 2 (set volume)

* Left volume numerator (DWORD).
* Left volume denumerator (DWORD).
* Right volume numerator (DWORD).
* Right volume denumerator (DWORD).

Channel type 3 subtypes 0-255:

* Ignored

Channel type 0 subtype 3-255, channel type 1 subtype 2-255 and channel type
2 subtype 3-255 (reserved)

These are reserved.