VQF: Difference between revisions
Jump to navigation
Jump to search
(Standard Chunks) |
m (samples link) |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
* Extensions: .vqf | * Extensions: .vqf, .vql, .vqe | ||
* Company: Nippon TT | * Company: Nippon TT | ||
* Samples: http://samples.mplayerhq.hu/vqf/ | |||
VQF files are used to store a stream of [[TwinVQ]] encoded audio data. | VQF files are used to store a stream of [[TwinVQ]] encoded audio data. | ||
__TOC__ | |||
== | ==General Layout== | ||
{| border="1" cellpadding="8" style="font-family: fixed;" | * 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. | |||
{| border="1" cellpadding="8" style="font-family: fixed; font-size: 10pt;" | |||
|- bgcolor="#e0e0ff" | |||
! Chunk ID | ! Chunk ID | ||
! Contents | ! Contents | ||
Line 36: | Line 58: | ||
|} | |} | ||
==Extension | ==Extension Sub-chunks== | ||
{| border="1" cellpadding=" | {| border="1" cellpadding="8" style="font-family: fixed; font-size: 10pt;" | ||
|- | |- bgcolor="#e0e0ff" | ||
! Chunk ID | ! Chunk ID | ||
! Contents | ! Contents | ||
Line 47: | Line 69: | ||
|- | |- | ||
| ALBM || Album title || char album_title[] || | | 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 || || | |||
|- valign="top" | |||
| _ID3 || Reserved for ID3v2 tags || char id3v2_data[] || Not sure if such files exist; <br/> priority for tags conflicting with <br/> previous chunks is undefined | |||
|- | |||
| _YMH || Reserved chunk || || | |||
|- | |||
| _NTT || Reserved chunk || || | |||
|} | |} | ||
==Supported formats== | |||
The official encoder supports the following output formats: | |||
{| border="1" cellpadding="8" style="font-family: fixed; font-size: 10pt;" | |||
|- | |||
| colspan="3" align="center" bgcolor="#c0c0ff"| 1 channel (mono), 16 bits per sample | |||
|- bgcolor="#e0e0ff" | |||
! 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 | |||
|} | |||
{| border="1" cellpadding="8" style="font-family: fixed; font-size: 10pt;" | |||
|- | |||
| colspan="3" align="center" bgcolor="#c0c0ff" | 2 channels (stereo), 16 bits per sample | |||
|- bgcolor="#e0e0ff" | |||
! 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 | |||
|} | |||
[[Category: Container Formats]] | [[Category: Container Formats]] |
Latest revision as of 12:53, 8 March 2009
- Extensions: .vqf, .vql, .vqe
- Company: Nippon TT
- Samples: http://samples.mplayerhq.hu/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 |