VQF

From MultimediaWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

General Layout

  • All (u)intxx fields are stored in big-endian order.
typedef struct vqf_file {
 char magic[4];                       /* "TWIN" */
 char version[8];                     /* e.g. "97012000" */
 uint32 subchunks_size;
 uint8 subchunks[subchunks_size];
 char datamarker[4];                  /* "DATA" */
 uint8 data[data_size];               /* data_size from DSIZ subchunk */
} vqf_file;
typedef struct subchunk {
 char subchunk_id[4];
 uint32 subchunk_size;
 uint8 data[subchunk_size-8];
} subchunk;

Standard Sub-chunks

  • Strings are not zero-terminated. The length is defined by the subchunk_size field.
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


Supported formats

The official encoder supports the following output formats:

1 channel (mono), 16 bits per sample
samplerate (Hz) bitrate (kbit/s) bits/frame
11025 8 371
11025 10 464
22050 20 928
22050 24 1114
22050 32 743
44100 40 1857
44100 48 2229
2 channels (stereo), 16 bits per sample
samplerate (Hz) bitrate (kbit/s) bits/frame
11025 16 743
11025 20 928
22050 40 1857
22050 48 2229
22050 64 1486
44100 80 3715
44100 96 4458