fi.helsinki.cs.ohtu.mpeg2.video
Class ZigZagScanner
java.lang.Object
fi.helsinki.cs.ohtu.mpeg2.video.ZigZagScanner
public class ZigZagScanner
- extends java.lang.Object
The zig-zag scanning pattern for run-length coding of the quantized DCT
coefficients. The same pattern is used for luminance and for chrominance.
There are two scanning patterns available in MPEG-2. Zigzag-pattern and alternative pattern.
Patterns are stored in scantables: zigzag_scantable and alternate_scantable.
zigzag:
0 1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63
alternate:
0 4 6 20 22 36 38 52
1 5 7 21 23 37 39 53
2 8 19 24 34 40 50 54
3 9 18 25 35 41 51 55
10 17 26 30 42 46 56 60
11 16 27 31 43 47 57 61
12 15 28 32 44 48 58 62
13 14 29 33 45 49 59 63
Alternate pattern is more suitable for coding of some interlaced picture
blocks.
A bit in the picture layer header, if set, selects the alternate scan.
Method Summary |
private int[] |
alternateScan(int[] DCTcoefficients)
|
private int[] |
alternateScan(int[][] DCTcoefficients)
|
private int[] |
defaultScan(int[] DCTcoefficients)
|
private int[] |
defaultScan(int[][] DCTcoefficients)
|
int[] |
scan(int[] DCTcoefficients)
Does zigzag/alternate scan for a 1d array. |
int[] |
scan(int[][] DCTcoefficients)
Does zigzag/alternate scan for a 2d array. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
alternate_scan
private boolean alternate_scan
alternate_scantable
private final int[][] alternate_scantable
zigzag_scantable
private final int[][] zigzag_scantable
ZigZagScanner
public ZigZagScanner(boolean alternate_scan)
- Parameters:
alternate_scan
- Determines which scanning pattern is used. 0 is default zigzag
and 1 is alternate.
scan
public int[] scan(int[][] DCTcoefficients)
- Does zigzag/alternate scan for a 2d array.
Private boolean variable alternate_scan determines which scanning pattern
will be used.
- Parameters:
DCTcoefficients
- 2d array containing DCT coefficients to be scanned.
- Returns:
- Result of zigzag/alternate scanning in 1d array of length of 64.
scan
public int[] scan(int[] DCTcoefficients)
- Does zigzag/alternate scan for a 1d array.
Private boolean variable alternate_scan determines which scanning pattern
will be used.
- Parameters:
DCTcoefficients
- 1d array containing DCT coefficients to be scanned.
- Returns:
- Result of zigzag/alternate scanning in 1d array of length of 64.
defaultScan
private int[] defaultScan(int[][] DCTcoefficients)
defaultScan
private int[] defaultScan(int[] DCTcoefficients)
alternateScan
private int[] alternateScan(int[][] DCTcoefficients)
alternateScan
private int[] alternateScan(int[] DCTcoefficients)