No specification of the VEG format has been published, and public reverse engineering has so far established only its outer structure. This page follows the veg research notes and parser and the msvpvf version changer, both by the same author. The contents of the individual chunks are not publicly known.
Chunks
A VEG file uses the chunk structure of Sony’s Wave64 audio format: a chunk is named by a 16-byte GUID instead of a four-character code, and its size is 64 bits. Sonic Foundry created both formats.
| Offset | Size | Type | Name | Meaning |
|---|---|---|---|---|
| 0x00 | 16 | GUID | Chunk ID | What the chunk is. |
| 0x10 | 8 | u64 LE | Size | Size of the whole chunk including this 24-byte header. |
| 0x18 | size − 24 | bytes | Data | The chunk’s contents. |
Each chunk is followed by padding up to the next multiple of 8 bytes. The
riff and list chunks are containers: their data starts with a
16-byte type GUID, followed by sub-chunks.
GUIDs are stored in Microsoft’s mixed-endian layout: the first three groups
little-endian, the last two as written. So the bytes
72 69 66 66 2E 91 CF 11 A5 D6 28 DB 04 C1 00 00 are the GUID
{66666972-912E-11CF-A5D6-28DB04C10000}, whose first four bytes spell
riff.
File layout
The whole file is one riff chunk.
| Offset | Size | Contents |
|---|---|---|
| 0x00 | 16 | The riff GUID. |
| 0x10 | 8 | File size, little-endian. |
| 0x18 | 16 | Project type GUID: VEGAS Pro or Movie Studio (below). |
| 0x28 | 24 | Header of the first sub-chunk, the project header chunk. |
| 0x40 | varies | The project header’s data: general settings such as resampling, and the full path of the project file. The byte at 0x46 is the version. |
| … | varies | Further sub-chunks, all list chunks. |
Strings are UTF-16LE throughout.
Known GUIDs
| Bytes in the file | GUID | Use |
|---|---|---|
72 69 66 66 2E 91 CF 11 A5 D6 28 DB 04 C1 00 00 | 66666972-912E-11CF-A5D6-28DB04C10000 | riff: the outer chunk, as in Wave64. |
6C 69 73 74 2F 91 CF 11 A5 D6 28 DB 04 C1 00 00 | 7473696C-912F-11CF-A5D6-28DB04C10000 | list: a container chunk, as in Wave64. |
5A 2D 8F B2 0F 23 D2 11 86 AF 00 C0 4F 8E DB 8A | B28F2D5A-230F-11D2-86AF-00C04F8EDB8A | The project header chunk, always first. |
5B 2D 8F B2 0F 23 D2 11 86 AF 00 C0 4F 8E DB 8A | B28F2D5B-230F-11D2-86AF-00C04F8EDB8A | List type of the list of media sources; also seen as a chunk ID inside it. |
D8 B9 CC 2C DD DE AC 46 85 3D 19 16 A9 9A 9A 02 | 2CCCB9D8-DEDD-46AC-853D-1916A99A9A02 | A list type of unknown purpose. |
39 8C 8A 5E 6B DA 99 44 B0 B2 36 63 70 9E 1C E4 | 5E8A8C39-DA6B-4499-B0B2-3663709E1CE4 | A chunk inside that list, of unknown purpose. |
Apart from riff and list, the GUIDs look random, and the
meaning of most of them is not known.
Project type
The type GUID at 0x18 tells a VEGAS Pro project from one saved by VEGAS Movie Studio
(.vf), which has the same structure.
| Bytes at 0x18 | GUID | Project |
|---|---|---|
EF 29 C4 46 4A 90 D2 11 87 22 00 C0 4F 8E DB 8A | 46C429EF-904A-11D2-8722-00C04F8EDB8A | VEGAS Pro (.veg) |
F6 1B 3C 53 35 D6 F3 43 8A 90 64 B8 87 23 1F 7F | 533C1BF6-D635-43F3-8A90-64B887231F7F | Movie Studio (.vf) |
Versions
The byte at 0x46 is the major version number of the program that saved the project. msvpvf lets an older release open a newer project by rewriting only this byte and the type GUID. Its author groups the versions into three generations of the layout, and the change only works within one:
| Generation | Versions |
|---|---|
| 1 | 8.0 to 11.0 |
| 2 | 12.0 to 14.0 |
| 3 | 15.0 onwards |
How the generations differ is not publicly documented, and nothing is recorded about projects from versions before 8.
Example
00000000 72 69 66 66 2E 91 CF 11 A5 D6 28 DB 04 C1 00 00 riff GUID
00000010 size, 8 bytes LE whole file
00000018 EF 29 C4 46 4A 90 D2 11 87 22 00 C0 4F 8E DB 8A VEGAS Pro project
00000028 5A 2D 8F B2 0F 23 D2 11 86 AF 00 C0 4F 8E DB 8A project header chunk
00000038 size, 8 bytes LE
00000040 header data; version byte at 0x46