fi.helsinki.cs.ohtu.mpeg2.video
Class ZigZagScanner

java.lang.Object
  extended by 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.


Field Summary
private  boolean alternate_scan
           
private  int[][] alternate_scantable
           
private  int[][] zigzag_scantable
           
 
Constructor Summary
ZigZagScanner(boolean 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
 

Field Detail

alternate_scan

private boolean alternate_scan

alternate_scantable

private final int[][] alternate_scantable

zigzag_scantable

private final int[][] zigzag_scantable
Constructor Detail

ZigZagScanner

public ZigZagScanner(boolean alternate_scan)
Parameters:
alternate_scan - Determines which scanning pattern is used. 0 is default zigzag and 1 is alternate.
Method Detail

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)