VGM: Difference between revisions
No edit summary |
m (Muzip1 -> Muzip) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
* Company: XVD Corporation (DigitalStream-USA) | * Company: XVD Corporation (DigitalStream-USA) | ||
* Website: http://www.xvdcorp.com/ | * Website: http://www.xvdcorp.com/ | ||
* Extension: vg2 | * Extension: vgm, vg2 | ||
* Samples: http://xvd.bha.co.jp/download/sample.html | * Samples: http://xvd.bha.co.jp/download/sample.html | ||
XVD (eXtended-play Video Disc) is | VGM (presumably from VideoGraM since originally this format was used for sending short video messages from one user to another) aka XVD (eXtended-play Video Disc) is a format that includes [[VGM Audio]] codec and [[VGM Video]] codec. | ||
There are some historical variants: | There are some historical variants: | ||
Line 21: | Line 17: | ||
**TELPV: http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/cynd30.vgm | **TELPV: http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/cynd30.vgm | ||
***decoder(java): http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/jpl_dv.zip | ***decoder(java): http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/jpl_dv.zip | ||
**[[ | **[[Muzip]] | ||
Timeline: | Timeline: | ||
Line 27: | Line 23: | ||
* http://smw.internet.com/video/docs/vidgram/ | * http://smw.internet.com/video/docs/vidgram/ | ||
== VGM1 Format == | |||
This format uses big-endian data in its structure and intended to be used with Muzip 1-4, TELP, VT and Domen codecs. | |||
Container format: | |||
4 bytes - file size (may be zero) | |||
4 bytes - duration in milliseconds | |||
4 bytes - "head" marker | |||
4 bytes - header size | |||
1 byte - number of streams | |||
(header_size - 1) bytes - stream headers | |||
4 bytes - "data" marker | |||
data packets | |||
Stream header format: | |||
1 byte - codec name length | |||
N bytes - codec name | |||
1 byte - stream ID | |||
4 bytes - codec ID | |||
4 bytes - codec priority | |||
4 bytes - codec extradata | |||
Packet header: | |||
1 byte - stream ID | |||
4 bytes - timestamp in milliseconds | |||
4 bytes - data size | |||
== VGM2 Format == | |||
This format uses little-endian integers | |||
4 bytes - "VGM2" | |||
4 bytes - file size (may be zero) | |||
4 bytes - duration in milliseconds | |||
1 byte - number of streams | |||
1 byte - file comment length | |||
N bytes - file comment (usually "Created by BHA dumper") | |||
1 bytes - string terminator? | |||
stream headers | |||
data packets | |||
Stream header: | |||
1 byte - stream type | |||
4 bytes - codec ID | |||
4 bytes - stream header extradata size | |||
extradata | |||
Stream types: | |||
1 - audio stream | |||
2 - video stream | |||
5 - stream with end-of-stream marker (single packet almost at the end of file), maybe other system messages | |||
6 - stream with seek table (?), also single packet at the end of file | |||
>128 - just some padding that occurs time from time | |||
Packet header: | |||
1 byte - stream number (in the order they appear in the header) | |||
1 byte - flags | |||
2/4 bytes - timestamp in milliseconds (4 bytes if bit 2 in flags is set, 2 bytes otherwise) | |||
2/4 bytes - packet size including the header (4 bytes if bit 1 in flags is set, 2 bytes otherwise) | |||
2/4 bytes - some size for video streams only, maybe second field or for P+B frame combination (4 bytes if bit 1 in flags is set, 2 bytes otherwise). Usually it is zero. | |||
== Known codec IDs and their headers == | |||
* 3 - Muzip first version | |||
* 4 - TELP | |||
* 5..9 - Muzip | |||
* <code>0xAC3</code> - AC-3 | |||
* <code>0x010001</code> - VT | |||
* <code>0x010002</code> - Domen | |||
* <code>0x010006</code> - V2K | |||
* <code>0x010007</code> - V2K-II | |||
* <code>0x010027</code> - probably XVD 1.x | |||
* <code>0x110027</code> - XVD 2.4 | |||
* <code>0x210027</code> - XVD 2.5 | |||
Audio and video header have the same format in VGM 1 and 2 except that in version 2 there are two additional 4-byte fields in the beginning that can be ignored. All data is in little-endian format. | |||
Audio header: | |||
2 bytes - should be 0x300 | |||
2 bytes - number of channels | |||
4 bytes - sampling rate | |||
For Muzip starting at byte 18 there is also codec sub-flavour, known flavours are <code>CTP03</code>-<code>CTP07</code> and <code>MZIP13R</code> (for the latest known version). | |||
Video header: | |||
2 bytes - width | |||
2 bytes - height | |||
4 bytes - unknown | |||
(the rest is for newer versions only) | |||
4 bytes - width | |||
4 bytes - height | |||
4 bytes - bitrate | |||
4 bytes - frames per second | |||
[[Category:Container Formats]] | [[Category:Container Formats]] | ||
[[Category:Formats missing in FFmpeg]] | [[Category:Formats missing in FFmpeg]] |
Latest revision as of 07:27, 17 February 2021
- Company: XVD Corporation (DigitalStream-USA)
- Website: http://www.xvdcorp.com/
- Extension: vgm, vg2
- Samples: http://xvd.bha.co.jp/download/sample.html
VGM (presumably from VideoGraM since originally this format was used for sending short video messages from one user to another) aka XVD (eXtended-play Video Disc) is a format that includes VGM Audio codec and VGM Video codec.
There are some historical variants:
- Image/Video codecs
- Speech/Audio codecs
Timeline:
VGM1 Format
This format uses big-endian data in its structure and intended to be used with Muzip 1-4, TELP, VT and Domen codecs.
Container format:
4 bytes - file size (may be zero) 4 bytes - duration in milliseconds 4 bytes - "head" marker 4 bytes - header size 1 byte - number of streams (header_size - 1) bytes - stream headers 4 bytes - "data" marker data packets
Stream header format:
1 byte - codec name length N bytes - codec name 1 byte - stream ID 4 bytes - codec ID 4 bytes - codec priority 4 bytes - codec extradata
Packet header:
1 byte - stream ID 4 bytes - timestamp in milliseconds 4 bytes - data size
VGM2 Format
This format uses little-endian integers
4 bytes - "VGM2" 4 bytes - file size (may be zero) 4 bytes - duration in milliseconds 1 byte - number of streams 1 byte - file comment length N bytes - file comment (usually "Created by BHA dumper") 1 bytes - string terminator? stream headers data packets
Stream header:
1 byte - stream type 4 bytes - codec ID 4 bytes - stream header extradata size extradata
Stream types:
1 - audio stream 2 - video stream 5 - stream with end-of-stream marker (single packet almost at the end of file), maybe other system messages 6 - stream with seek table (?), also single packet at the end of file >128 - just some padding that occurs time from time
Packet header:
1 byte - stream number (in the order they appear in the header) 1 byte - flags 2/4 bytes - timestamp in milliseconds (4 bytes if bit 2 in flags is set, 2 bytes otherwise) 2/4 bytes - packet size including the header (4 bytes if bit 1 in flags is set, 2 bytes otherwise) 2/4 bytes - some size for video streams only, maybe second field or for P+B frame combination (4 bytes if bit 1 in flags is set, 2 bytes otherwise). Usually it is zero.
Known codec IDs and their headers
- 3 - Muzip first version
- 4 - TELP
- 5..9 - Muzip
0xAC3
- AC-30x010001
- VT0x010002
- Domen0x010006
- V2K0x010007
- V2K-II0x010027
- probably XVD 1.x0x110027
- XVD 2.40x210027
- XVD 2.5
Audio and video header have the same format in VGM 1 and 2 except that in version 2 there are two additional 4-byte fields in the beginning that can be ignored. All data is in little-endian format.
Audio header:
2 bytes - should be 0x300 2 bytes - number of channels 4 bytes - sampling rate
For Muzip starting at byte 18 there is also codec sub-flavour, known flavours are CTP03
-CTP07
and MZIP13R
(for the latest known version).
Video header:
2 bytes - width 2 bytes - height 4 bytes - unknown (the rest is for newer versions only) 4 bytes - width 4 bytes - height 4 bytes - bitrate 4 bytes - frames per second