Alaris VideoGramPiX: Difference between revisions
Jump to navigation
Jump to search
(add description) |
(→Codebooks: typos) |
||
(One intermediate revision by the same user not shown) | |||
Line 14: | Line 14: | ||
* 7 - set pixel to an average of bottom and right pixels | * 7 - set pixel to an average of bottom and right pixels | ||
* 8 - set pixel to an average of bottom and left pixels | * 8 - set pixel to an average of bottom and left pixels | ||
* 9 - read | * 9 - read three codes for pixel difference (different codebook for the second and the third component) | ||
* 10 - skip a number of pixels the number of times defined in | * 10 - skip a number of pixels the number of times defined in byte 32 of extradata (default = 4) | ||
* 11 - repeat left pixel value the number of times defined in | * 11 - repeat left pixel value the number of times defined in byte 33 of extradata (default = 4) | ||
Something similar can be found in an alternative frame coding method for VT codec of [[VGM Video]] family. | Something similar can be found in an alternative frame coding method for VT codec of [[VGM Video]] family. | ||
===Frame format=== | |||
First byte if frame flags: | |||
* <code>0x02</code> - this is skip frame | |||
* <code>0x05</code> - if either of the bits is set select an alternative codebook set | |||
* <code>0x08</code> - intra frame (unless alternative codebook is selected) | |||
* <code>0x10</code> - interlaced content? | |||
* <code>0x20</code> - upside-down flipped frame? | |||
Bytes 1-3 are probably components order. | |||
The rest of frame is packed codes. | |||
===Codebooks=== | |||
Default intra op codebook: | |||
0 - 1 | |||
011 - 2 | |||
111 - 5 | |||
01 - 9 | |||
Default inter op codebook: | |||
11 - 0 | |||
00 - 1 | |||
110 - 2 | |||
11001 - 3 | |||
01001 - 4 | |||
0001 - 5 | |||
00101 - 6 | |||
10101 - 7 | |||
1101 - 8 | |||
010 - 9 | |||
Intra op codebook when global skip length is non-zero: | |||
00 - 1 | |||
01 - 2 | |||
011 - 5 | |||
10 - 9 | |||
111 - 11 | |||
Inter op codebook when global skip length is non-zero: | |||
11 - 0 | |||
00 - 1 | |||
110 - 2 | |||
11001 - 3 | |||
01001 - 4 | |||
0001 - 5 | |||
000101 - 6 | |||
010101 - 7 | |||
1101 - 8 | |||
010 - 9 | |||
100101 - 10 | |||
110101 - 11 | |||
First component difference code: | |||
010100 - 128 | |||
000 - 120 | |||
001 - 112 | |||
1010 - 104 | |||
00100 - 96 | |||
00101 - 88 | |||
000010 - 80 | |||
110101 - 72 | |||
1010101 - 64 | |||
00010101 - 56 | |||
110010101 - 48 | |||
10001110100 - 40 | |||
01001110100 - 32 | |||
010101110100 - 24 | |||
110101110100 - 16 | |||
01101110100 - 8 | |||
00101110100 - 248 | |||
011001110100 - 240 | |||
111001110100 - 232 | |||
011101110100 - 224 | |||
111101110100 - 216 | |||
00001110100 - 208 | |||
010010101 - 200 | |||
11110100 - 192 | |||
0110100 - 184 | |||
100010 - 176 | |||
10010 - 168 | |||
1101 - 160 | |||
1100 - 152 | |||
110 - 144 | |||
11 - 136 | |||
Second and third component difference codes: | |||
0 - 128 | |||
001 - 120 | |||
1101 - 112 | |||
110101 - 104 | |||
11010101 - 96 | |||
01101010101 - 88 | |||
110101010101 - 80 | |||
011101010101 - 72 | |||
111101010101 - 248 | |||
010101010101 - 240 | |||
00101010101 - 232 | |||
001010101 - 224 | |||
0010101 - 216 | |||
00101 - 208 | |||
11 - 200 | |||
[[Category:Video Codecs]] | [[Category:Video Codecs]] | ||
Latest revision as of 10:41, 27 February 2021
- FourCCs: VGPX
- Company: Alaris
Sample Java player available here: http://www.ila-ila.com/xvd-hist/sites/vgram/index.htm
The codec works by reading a code for an operation using a codebook and performs some action on pixels (RGB triplets in this case) depending on it (usually copy, skip or average):
- 0 - skip current pixel
- 1 - copy left pixel value
- 2 - copy top pixel value
- 3 - copy right pixel value
- 4 - copy bottom pixel value
- 5 - set pixel to an average of top and left pixels
- 6 - set pixel to an average of top and right pixels
- 7 - set pixel to an average of bottom and right pixels
- 8 - set pixel to an average of bottom and left pixels
- 9 - read three codes for pixel difference (different codebook for the second and the third component)
- 10 - skip a number of pixels the number of times defined in byte 32 of extradata (default = 4)
- 11 - repeat left pixel value the number of times defined in byte 33 of extradata (default = 4)
Something similar can be found in an alternative frame coding method for VT codec of VGM Video family.
Frame format
First byte if frame flags:
0x02
- this is skip frame0x05
- if either of the bits is set select an alternative codebook set0x08
- intra frame (unless alternative codebook is selected)0x10
- interlaced content?0x20
- upside-down flipped frame?
Bytes 1-3 are probably components order.
The rest of frame is packed codes.
Codebooks
Default intra op codebook:
0 - 1 011 - 2 111 - 5 01 - 9
Default inter op codebook:
11 - 0 00 - 1 110 - 2 11001 - 3 01001 - 4 0001 - 5 00101 - 6 10101 - 7 1101 - 8 010 - 9
Intra op codebook when global skip length is non-zero:
00 - 1 01 - 2 011 - 5 10 - 9 111 - 11
Inter op codebook when global skip length is non-zero:
11 - 0 00 - 1 110 - 2 11001 - 3 01001 - 4 0001 - 5 000101 - 6 010101 - 7 1101 - 8 010 - 9 100101 - 10 110101 - 11
First component difference code:
010100 - 128 000 - 120 001 - 112 1010 - 104 00100 - 96 00101 - 88 000010 - 80 110101 - 72 1010101 - 64 00010101 - 56 110010101 - 48 10001110100 - 40 01001110100 - 32 010101110100 - 24 110101110100 - 16 01101110100 - 8 00101110100 - 248 011001110100 - 240 111001110100 - 232 011101110100 - 224 111101110100 - 216 00001110100 - 208 010010101 - 200 11110100 - 192 0110100 - 184 100010 - 176 10010 - 168 1101 - 160 1100 - 152 110 - 144 11 - 136
Second and third component difference codes:
0 - 128 001 - 120 1101 - 112 110101 - 104 11010101 - 96 01101010101 - 88 110101010101 - 80 011101010101 - 72 111101010101 - 248 010101010101 - 240 00101010101 - 232 001010101 - 224 0010101 - 216 00101 - 208 11 - 200