VQF: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
m (layout)
(fix overal file layout; rename chunks to subchunks)
Line 6: Line 6:
__TOC__
__TOC__


==General Information==
==General Layout==


All fields are stored in big-endian order.
typedef struct vqf_file_s {
  char magic[4];                      /* "TWIN" */
  char version[8];                    /* e.g. "97012000" */
  int32 subchunks_size;
  int8 subchunks[subchunks_size];
  char datamarker[4];                  /* "DATA" */
  int8 data[data_size];                /* from DSIZ subchunk */
}


A file consists of a magic marker (TWIN) and several chunks.
* All (u)intxx fields are stored in big-endian order.
Chunks are stored as chunk_size (uint32) and chunk_id (char[4]).
* Sub-chunks are stored as subchunk_size (uint32) and subchunk_id (char[4]).
The chunk size includes the ID and the size field itself.
* subchunk_size includes the ID and the size field itself.
After various standard and extension chunks, there's a DATA chunk that contains the compressed audio data.


==Standard Chunks==
==Standard Sub-chunks==


{| border="1" cellpadding="8" style="font-family: fixed; font-size: 10pt;"
{| border="1" cellpadding="8" style="font-family: fixed; font-size: 10pt;"
Line 45: Line 51:
|}
|}


==Extension Chunks==
==Extension Sub-chunks==





Revision as of 05:35, 8 November 2007

  • Extensions: .vqf
  • Company: Nippon TT

VQF files are used to store a stream of TwinVQ encoded audio data.

General Layout

typedef struct vqf_file_s {
 char magic[4];                       /* "TWIN" */
 char version[8];                     /* e.g. "97012000" */
 int32 subchunks_size;
 int8 subchunks[subchunks_size];
 char datamarker[4];                  /* "DATA" */
 int8 data[data_size];                /* from DSIZ subchunk */
}
  • All (u)intxx fields are stored in big-endian order.
  • Sub-chunks are stored as subchunk_size (uint32) and subchunk_id (char[4]).
  • subchunk_size includes the ID and the size field itself.

Standard Sub-chunks

Chunk ID Contents Field Description
COMM Mandatory information int32 channel_mode 0: mono, 1: stereo
int32 bitrate kbit/s
int32 samplerate 44: 44100 Hz, 22: 22050 Hz, 11: 11025 Hz
int32 security_level always 0
NAME Song title char name[]
COMT Comment char comment[]
AUTH Author char author[]
(c)<space> Copyright char copyright[]
FILE Filename char filename[]
DSIZ Data size uint32 data_size size of compressed audio data

Extension Sub-chunks

Chunk ID Contents Field Description
ALBM Album title char album_title[]
YEAR Recording date int16 year 0 means unspecified
char month idem
ENCD Compression date int16 year 0 means unspecified
char month idem
char day idem
char hour idem
char minute idem
char timeZone idem
TRAC Track number int16 track_number
LYRC Lyrics char lyrics[]
GUID Globally Unique Identifier uchar guid[16]
ISRC International Standard Record Code char isrc[] Identifier of CD
WORD Words char words[]
MUSC Composer char composer[]
ARNG Arranger char arranger[]
PROD Producer char producer[]
REMX Remixer char remixer[]
CDCT Conductor char conductor[]
SING Singer char singer[]
BAND Band name char band_name[]
PRSN Personnel char personnel[]
LABL Record label char record_label[]
NOTE Liner notes char liner_notes[]
SCND Auxiliary information char aux_info[]
EXTR reserved
_ID3 Reserved for ID3v2 tags char id3v2_data[] Not sure if such files exist;
priority for tags conflicting with
previous chunks is undefined
_YMH Reserved chunk
_NTT Reserved chunk