VQF
Jump to navigation
Jump to search
- Extensions: .vqf, .vql, .vqe
- Company: Nippon TT
- Samples: http://samples.mplayerhq.hu/vqf/
- Samples: dexvert samples — audio/vqf
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 |