VGM: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
No edit summary
 
m (Muzip1 -> Muzip)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<!-- MW1.7+
{{DISPLAYTITLE:eXtended-play Video Disc}}
-->
* 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 technology included format, audio codec and video codec.
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: http://www.ila-ila.com/xvd-hist/timeline.htm
There are some historical variants:
*Image/Video codecs
**WCTc: http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/l3.wvl
***decoder(java): http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/jwvl.zip
**VT 1.26: http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/missa_vt.exe
**Domen: http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/missa_d.exe
*Speech/Audio codecs
**Telp1600: http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/ct.csf
***decoder(java): http://www.ila-ila.com/xvd-hist/sites/lab1454/eng/products/telp1600.jar
**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
**[[Muzip]]
 
Timeline:
* http://www.ila-ila.com/xvd-hist/timeline.htm
* 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:Video Codecs]]
[[Category:Audio Codecs]]
[[Category:Undiscovered Video Codecs]]
[[Category:Undiscovered Audio Codecs]]
[[Category:Formats missing in FFmpeg]]
[[Category:Formats missing in FFmpeg]]

Latest revision as of 08:27, 17 February 2021

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:

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-3
  • 0x010001 - VT
  • 0x010002 - Domen
  • 0x010006 - V2K
  • 0x010007 - V2K-II
  • 0x010027 - probably XVD 1.x
  • 0x110027 - XVD 2.4
  • 0x210027 - 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