承接昨天写的《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]!