承接昨天写的《JPEG软解码实现介绍》,今天介绍其使用方法和一些细节说明。

1.仓库下已经包含了几个jpeg文件,以方便直接校验。

2.使用命令分为两种模式。

    一种是直接解码为yuv文件,另外一种是解码的同时还dump所指定mcu位置的各阶段值。

3.需要特别交代一点的是,不需指定输出文件。

    内部默认设置为输入文件名后再跟stride_w/h和yuv格式信息,如输入文件为animal_park.jpg,输出文件内部自动设置为animal_park_992_720_yuv420.yuv。

    另外补充一点,输出文件名的992_720并不一定是真的宽高,是经过对齐后的值(stride)。

    提供给播放器crop信息,可以根据实际的宽高进行部分显示,否则图像的底部和右侧会出现多余的图像。

    文件名后补充该值的目的是为了方便yuvplayer工具显示,因为必须要指定宽和高的信息。

4.向什么值对齐要视采样因子而定。

    A.如果是yuv444(y分量水平和垂直采样因子都是1),那么宽高都是8对齐;

    B.如果是yuv420的(y分量水平和垂直采样因子都为2),那么宽和高都是16对齐;

    C.如果是矩形的mcu采样,像8x16(y的h_factor/v_factor分别为1和2)的,宽向8对齐,高向16对齐,另外一种是16x8的,分别向16和8对齐。

5.使用示范。

模式1下,实例命令为:./JpegDecoder animal_park.jpg

其结果信息显示为:

$ ./JpegDecoder animal_park.jpg
MiniJpegDecoder begin to decode file[animal_park.jpg]...
[animal_park.jpg] input_file size = 38689 Bytes
jpeg file begin!
(parseApp0 : 109), App0 offset:0x4
(parseDQT : 118), DQT offset:0x16
        Quantization table for color_id(0):
        10  11  12  14  12  10  16  14
        13  14  18  17  16  19  24  40
        26  24  22  22  24  49  35  37
        29  40  58  51  61  60  57  51
        56  55  64  72  92  78  64  68
        87  69  55  56  80  109  81  87
        95  98  103  104  103  62  77  113
        121  112  100  120  92  101  103  99
        ---------------------------------------------------------------------------------------------
(parseDQT : 118), DQT offset:0x5b
        Quantization table for color_id(1):
        10  18  18  24  21  24  47  26
        26  47  99  66  56  66  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        ---------------------------------------------------------------------------------------------
(parseSOF : 247), SOF offset:0xa0
        pic resolution => (992 x 720)
        sampling_factor=> comp_id:[1], qt_id:[0], factor:(2 x 2)
        sampling_factor=> comp_id:[2], qt_id:[1], factor:(1 x 1)
        sampling_factor=> comp_id:[3], qt_id:[1], factor:(1 x 1)
(parseDHT : 148), DHT offset:0xb3
        table id: [0][0]--[DC0], dump more detail info...
        CodeCntOfNBits:  0   2   3   1   1   1   0   0   0   0   0   0   0   0   0   0
        total code cnt: 8
        ValidCodeWidth:  2   2   3   3   3   4   5   6
        -----------------huffman table: [0][0]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        2,      0) ->     0x1
        [          1] (        2,    0x1) ->       0
        [          2] (        3,    0x4) ->     0x2
        [          3] (        3,    0x5) ->     0x4
        [          4] (        3,    0x6) ->     0x3
        [          5] (        4,    0xe) ->     0x5
        [          6] (        5,   0x1e) ->     0x6
        [          7] (        6,   0x3e) ->     0x7
        ---------------------------------------------------------------------------------------------
(parseDHT : 148), DHT offset:0xd0
        table id: [1][0]--[AC0], dump more detail info...
        CodeCntOfNBits:  0   2   1   3   3   2   5   2   4   4   4   5   5   1   1   0
        total code cnt: 42
        ValidCodeWidth:  2   2   3   4   4   4   5   5   5   6   6   7   7   7   7   7   8   8   9   9   9   9  10  10  10  10  11  11  11  11  12  12  12  12  12  13  13  13  13  13  14  15
        -----------------huffman table: [1][0]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        2,      0) ->     0x1
        [          1] (        2,    0x1) ->       0
        [          2] (        3,    0x4) ->     0x2
        [          3] (        4,    0xa) ->    0x11
        [          4] (        4,    0xb) ->     0x3
        [          5] (        4,    0xc) ->    0x21
        [          6] (        5,   0x1a) ->     0x4
        [          7] (        5,   0x1b) ->    0x31
        [          8] (        5,   0x1c) ->    0x41
        [          9] (        6,   0x3a) ->    0x12
        [         10] (        6,   0x3b) ->    0x51
        [         11] (        7,   0x78) ->     0x5
        [         12] (        7,   0x79) ->    0x61
        [         13] (        7,   0x7a) ->    0x71
        [         14] (        7,   0x7b) ->    0x22
        [         15] (        7,   0x7c) ->    0x13
        [         16] (        8,   0xfa) ->    0x32
        [         17] (        8,   0xfb) ->    0x81
        [         18] (        9,  0x1f8) ->    0x23
        [         19] (        9,  0x1f9) ->    0x14
        [         20] (        9,  0x1fa) ->    0x52
        [         21] (        9,  0x1fb) ->    0x42
        [         22] (       10,  0x3f8) ->    0x72
        [         23] (       10,  0x3f9) ->    0x33
        [         24] (       10,  0x3fa) ->    0x34
        [         25] (       10,  0x3fb) ->    0x91
        [         26] (       11,  0x7f8) ->    0x15
        [         27] (       11,  0x7f9) ->    0x24
        [         28] (       11,  0x7fa) ->    0xa1
        [         29] (       11,  0x7fb) ->    0x62
        [         30] (       12,  0xff8) ->    0xb1
        [         31] (       12,  0xff9) ->    0x35
        [         32] (       12,  0xffa) ->    0x82
        [         33] (       12,  0xffb) ->    0x43
        [         34] (       12,  0xffc) ->     0x6
        [         35] (       13, 0x1ffa) ->    0x53
        [         36] (       13, 0x1ffb) ->    0x25
        [         37] (       13, 0x1ffc) ->    0xd1
        [         38] (       13, 0x1ffd) ->    0xc1
        [         39] (       13, 0x1ffe) ->    0x92
        [         40] (       14, 0x3ffe) ->    0xa2
        [         41] (       15, 0x7ffe) ->    0x54
        ---------------------------------------------------------------------------------------------
(parseDHT : 148), DHT offset:0x10f
        table id: [0][1]--[DC1], dump more detail info...
        CodeCntOfNBits:  1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0
        total code cnt: 5
        ValidCodeWidth:  1   2   3   4   5
        -----------------huffman table: [0][1]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        1,      0) ->       0
        [          1] (        2,    0x2) ->     0x1
        [          2] (        3,    0x6) ->     0x2
        [          3] (        4,    0xe) ->     0x3
        [          4] (        5,   0x1e) ->     0x4
        ---------------------------------------------------------------------------------------------
(parseDHT : 148), DHT offset:0x129
        table id: [1][1]--[AC1], dump more detail info...
        CodeCntOfNBits:  1   1   1   0   3   1   1   1   0   0   0   0   0   0   0   0
        total code cnt: 9
        ValidCodeWidth:  1   2   3   5   5   5   6   7   8
        -----------------huffman table: [1][1]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        1,      0) ->       0
        [          1] (        2,    0x2) ->     0x1
        [          2] (        3,    0x6) ->    0x11
        [          3] (        5,   0x1c) ->    0x31
        [          4] (        5,   0x1d) ->     0x2
        [          5] (        5,   0x1e) ->    0x21
        [          6] (        6,   0x3e) ->    0x12
        [          7] (        7,   0x7e) ->    0x41
        [          8] (        8,   0xfe) ->    0x51
        ---------------------------------------------------------------------------------------------
(parseSOS : 293), SOS offset:0x147
        color_id[1] use DC_table[0], AC_table[0]
        color_id[2] use DC_table[1], AC_table[1]
        color_id[3] use DC_table[1], AC_table[1]
        only support baseline profile! should pass for most cases!
entropy begin! offset[0x153]
mcu_row_cnt:45, mcu_col_cnt:62
row/col_stride:(992 x 720), w/h:(992 x 720)
entropy end! offset[0x95cb], left_bits[2], cur_data[0x2b], last_two_bytes:[0xff 0xd9] should be EOI:[0xFF 0xD9]
jpeg entropy time duration: [95335] us
output_file:[animal_park_992_720_yuv420.yuv]
MiniJpegDecoder finish decoding file[animal_park.jpg]!

模式2下,实例命令为:./JpegDecoder animal_park.jpg mcu 6 6

$ ./JpegDecoder animal_park.jpg mcu 6 6
MiniJpegDecoder begin to decode file[animal_park.jpg] and dump mcu(6,6)...
[animal_park.jpg] input_file size = 38689 Bytes
jpeg file begin!
(parseApp0 : 109), App0 offset:0x4
(parseDQT : 118), DQT offset:0x16
        Quantization table for color_id(0):
        10  11  12  14  12  10  16  14
        13  14  18  17  16  19  24  40
        26  24  22  22  24  49  35  37
        29  40  58  51  61  60  57  51
        56  55  64  72  92  78  64  68
        87  69  55  56  80  109  81  87
        95  98  103  104  103  62  77  113
        121  112  100  120  92  101  103  99
        ---------------------------------------------------------------------------------------------
(parseDQT : 118), DQT offset:0x5b
        Quantization table for color_id(1):
        10  18  18  24  21  24  47  26
        26  47  99  66  56  66  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        99  99  99  99  99  99  99  99
        ---------------------------------------------------------------------------------------------
(parseSOF : 247), SOF offset:0xa0
        pic resolution => (992 x 720)
        sampling_factor=> comp_id:[1], qt_id:[0], factor:(2 x 2)
        sampling_factor=> comp_id:[2], qt_id:[1], factor:(1 x 1)
        sampling_factor=> comp_id:[3], qt_id:[1], factor:(1 x 1)
(parseDHT : 148), DHT offset:0xb3
        table id: [0][0]--[DC0], dump more detail info...
        CodeCntOfNBits:  0   2   3   1   1   1   0   0   0   0   0   0   0   0   0   0
        total code cnt: 8
        ValidCodeWidth:  2   2   3   3   3   4   5   6
        -----------------huffman table: [0][0]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        2,      0) ->     0x1
        [          1] (        2,    0x1) ->       0
        [          2] (        3,    0x4) ->     0x2
        [          3] (        3,    0x5) ->     0x4
        [          4] (        3,    0x6) ->     0x3
        [          5] (        4,    0xe) ->     0x5
        [          6] (        5,   0x1e) ->     0x6
        [          7] (        6,   0x3e) ->     0x7
        ---------------------------------------------------------------------------------------------
(parseDHT : 148), DHT offset:0xd0
        table id: [1][0]--[AC0], dump more detail info...
        CodeCntOfNBits:  0   2   1   3   3   2   5   2   4   4   4   5   5   1   1   0
        total code cnt: 42
        ValidCodeWidth:  2   2   3   4   4   4   5   5   5   6   6   7   7   7   7   7   8   8   9   9   9   9  10  10  10  10  11  11  11  11  12  12  12  12  12  13  13  13  13  13  14  15
        -----------------huffman table: [1][0]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        2,      0) ->     0x1
        [          1] (        2,    0x1) ->       0
        [          2] (        3,    0x4) ->     0x2
        [          3] (        4,    0xa) ->    0x11
        [          4] (        4,    0xb) ->     0x3
        [          5] (        4,    0xc) ->    0x21
        [          6] (        5,   0x1a) ->     0x4
        [          7] (        5,   0x1b) ->    0x31
        [          8] (        5,   0x1c) ->    0x41
        [          9] (        6,   0x3a) ->    0x12
        [         10] (        6,   0x3b) ->    0x51
        [         11] (        7,   0x78) ->     0x5
        [         12] (        7,   0x79) ->    0x61
        [         13] (        7,   0x7a) ->    0x71
        [         14] (        7,   0x7b) ->    0x22
        [         15] (        7,   0x7c) ->    0x13
        [         16] (        8,   0xfa) ->    0x32
        [         17] (        8,   0xfb) ->    0x81
        [         18] (        9,  0x1f8) ->    0x23
        [         19] (        9,  0x1f9) ->    0x14
        [         20] (        9,  0x1fa) ->    0x52
        [         21] (        9,  0x1fb) ->    0x42
        [         22] (       10,  0x3f8) ->    0x72
        [         23] (       10,  0x3f9) ->    0x33
        [         24] (       10,  0x3fa) ->    0x34
        [         25] (       10,  0x3fb) ->    0x91
        [         26] (       11,  0x7f8) ->    0x15
        [         27] (       11,  0x7f9) ->    0x24
        [         28] (       11,  0x7fa) ->    0xa1
        [         29] (       11,  0x7fb) ->    0x62
        [         30] (       12,  0xff8) ->    0xb1
        [         31] (       12,  0xff9) ->    0x35
        [         32] (       12,  0xffa) ->    0x82
        [         33] (       12,  0xffb) ->    0x43
        [         34] (       12,  0xffc) ->     0x6
        [         35] (       13, 0x1ffa) ->    0x53
        [         36] (       13, 0x1ffb) ->    0x25
        [         37] (       13, 0x1ffc) ->    0xd1
        [         38] (       13, 0x1ffd) ->    0xc1
        [         39] (       13, 0x1ffe) ->    0x92
        [         40] (       14, 0x3ffe) ->    0xa2
        [         41] (       15, 0x7ffe) ->    0x54
        ---------------------------------------------------------------------------------------------
(parseDHT : 148), DHT offset:0x10f
        table id: [0][1]--[DC1], dump more detail info...
        CodeCntOfNBits:  1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0
        total code cnt: 5
        ValidCodeWidth:  1   2   3   4   5
        -----------------huffman table: [0][1]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        1,      0) ->       0
        [          1] (        2,    0x2) ->     0x1
        [          2] (        3,    0x6) ->     0x2
        [          3] (        4,    0xe) ->     0x3
        [          4] (        5,   0x1e) ->     0x4
        ---------------------------------------------------------------------------------------------
(parseDHT : 148), DHT offset:0x129
        table id: [1][1]--[AC1], dump more detail info...
        CodeCntOfNBits:  1   1   1   0   3   1   1   1   0   0   0   0   0   0   0   0
        total code cnt: 9
        ValidCodeWidth:  1   2   3   5   5   5   6   7   8
        -----------------huffman table: [1][1]---------------------
        [SequenceNum] (CodeWidth,   Code) -> CodeVal
        [          0] (        1,      0) ->       0
        [          1] (        2,    0x2) ->     0x1
        [          2] (        3,    0x6) ->    0x11
        [          3] (        5,   0x1c) ->    0x31
        [          4] (        5,   0x1d) ->     0x2
        [          5] (        5,   0x1e) ->    0x21
        [          6] (        6,   0x3e) ->    0x12
        [          7] (        7,   0x7e) ->    0x41
        [          8] (        8,   0xfe) ->    0x51
        ---------------------------------------------------------------------------------------------
(parseSOS : 293), SOS offset:0x147
        color_id[1] use DC_table[0], AC_table[0]
        color_id[2] use DC_table[1], AC_table[1]
        color_id[3] use DC_table[1], AC_table[1]
        only support baseline profile! should pass for most cases!
entropy begin! offset[0x153]
mcu_row_cnt:45, mcu_col_cnt:62
row/col_stride:(992 x 720), w/h:(992 x 720)
------------------block(6,6)----------------------
--------Y[0]--------
----after huffman decode, color[0]----
 -75     1     0     0     0     1     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after dequantization----
-750    11     0     0     0    10     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after rezigzag----
-750    11    10     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after idct2----
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489
-90.2340  -91.4814  -93.3706  -95.0288  -95.7872  -95.5317  -94.7152  -94.0489

----after ileveloffset----
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511
37.7660  36.5186  34.6294  32.9712  32.2128  32.4683  33.2848  33.9511

--------Y[1]--------
----after huffman decode, color[0]----
 -76    -1     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after dequantization----
-760   -11     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after rezigzag----
-760   -11     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after idct2----
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176
-96.9325  -96.6420  -96.1056  -95.4043  -94.6458  -93.9445  -93.4081  -93.1176

----after ileveloffset----
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824
31.0675  31.3580  31.8944  32.5957  33.3542  34.0555  34.5919  34.8824

--------Y[2]--------
----after huffman decode, color[0]----
 -77     0     0     0     0     1     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after dequantization----
-770     0     0     0     0    10     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after rezigzag----
-770     0    10     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after idct2----
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421
-94.6421  -95.5989  -96.9518  -97.9087  -97.9087  -96.9518  -95.5989  -94.6421

----after ileveloffset----
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579
33.3579  32.4011  31.0482  30.0913  30.0913  31.0482  32.4011  33.3579

--------Y[3]--------
----after huffman decode, color[0]----
 -73    -1    -1     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after dequantization----
-730   -11   -12     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after rezigzag----
-730   -11     0     0     0     0     0     0
 -12     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after idct2----
-95.2624  -94.9718  -94.4354  -93.7342  -92.9757  -92.2744  -91.7380  -91.4475
-94.9454  -94.6549  -94.1185  -93.4172  -92.6587  -91.9574  -91.4211  -91.1305
-94.3603  -94.0697  -93.5333  -92.8320  -92.0736  -91.3723  -90.8359  -90.5453
-93.5952  -93.3047  -92.7683  -92.0670  -91.3085  -90.6072  -90.0709  -89.7803
-92.7678  -92.4772  -91.9409  -91.2396  -90.4811  -89.7798  -89.2434  -88.9529
-92.0028  -91.7122  -91.1758  -90.4745  -89.7161  -89.0148  -88.4784  -88.1878
-91.4176  -91.1271  -90.5907  -89.8894  -89.1309  -88.4296  -87.8932  -87.6027
-91.1007  -90.8101  -90.2737  -89.5724  -88.8140  -88.1127  -87.5763  -87.2857

----after ileveloffset----
32.7376  33.0282  33.5646  34.2658  35.0243  35.7256  36.2620  36.5525
33.0546  33.3451  33.8815  34.5828  35.3413  36.0426  36.5789  36.8695
33.6397  33.9303  34.4667  35.1680  35.9264  36.6277  37.1641  37.4547
34.4048  34.6953  35.2317  35.9330  36.6915  37.3928  37.9291  38.2197
35.2322  35.5228  36.0591  36.7604  37.5189  38.2202  38.7566  39.0471
35.9972  36.2878  36.8242  37.5255  38.2839  38.9852  39.5216  39.8122
36.5824  36.8729  37.4093  38.1106  38.8691  39.5704  40.1068  40.3973
36.8993  37.1899  37.7263  38.4276  39.1860  39.8873  40.4237  40.7143

--------Cb--------
----after huffman decode, color[1]----
   2     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after dequantization----
  20     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after rezigzag----
  20     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after idct2----
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007
2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007  2.5007

----after ileveloffset----
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007
130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007  130.5007

--------Cr--------
----after huffman decode, color[1]----
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after dequantization----
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after rezigzag----
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0
   0     0     0     0     0     0     0     0

----after idct2----
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000
0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000  0.0000

----after ileveloffset----
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000
128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000  128.0000

entropy end! offset[0x95cb], left_bits[2], cur_data[0x2b], last_two_bytes:[0xff 0xd9] should be EOI:[0xFF 0xD9]
jpeg entropy time duration: [104847] us
output_file:[animal_park_992_720_yuv420.yuv]
MiniJpegDecoder finish decoding file[animal_park.jpg]!