MiniJpegDecoder使用介绍 JPEG软解码实现介绍

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

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


一年前写了一个demo,用于生成几种标准的波形,如正弦波、方波、三角波。之前写的只有这几个功能:波形/通道/时长/频率的控制选择,这几天抽了些时间又加了增益控制功能。为了避免东西丢失或意外删除,特上传
wav文件格式作为一种常用的多媒体音频文件格式,其由MS在1991年8月在Windows 3.1上推出,文件扩展名为WAV,是WaveFom的简写。通常存储未压缩的pcm数据,也可存储压缩的pcm数据
mpeg2ts文件格式中有pcr和pts的概念,其代码含义如下: PCR(Program Clock Reference)——指示系统时钟本身的瞬时值的时间标签称为节目参考时钟标签(PCR)。 PTS
我的月经贴博客该更新了!!!已经有许多博文需要补了! 去年开始的jpeg解码项目,中间停止更新了大半年时间,上个月想起这事还没完工,就又做了更多兼容性和性能上的改进,目前终于接近尾声了。有需要参考的可
花了两天时间做了个h264裸流nal类型和frame类型检测的工具,已上传至github,有需要的自行下载(其中包含构建出来的可执行文件exe)。 1.NAL类型检测 nal类型检测非常容易,对照下表
随着工作业务的开展,对视频编解码的理解更加深入了一些,记录一些心得体会,以便后面回味。 某天突然有个好的想法略过心头,可以形象的向别人介绍视频编码和解码。 1.编解码像一场考试,编码就像做主观题,解码
承接昨天写的《JPEG软解码实现介绍》,今天介绍其使用方法和一些细节说明。 1.仓库下已经包含了几个jpeg文件,以方便直接校验。 2.使用命令分为两种模式。 一种是直接解码为yuv文件,另外一种是解
x264编码器,提供了两个demo来验证编码功能:一个是大而全的x264.c,另外一个是简洁版的example.c。 其中,前者demo,可以配置很多编码参数,但太冗长繁杂,对初学者不太友好。 后者d
本博文为概览性介绍。后面有空了再分几篇博文分别介绍所用到的技术细节。 1.编解码目标 编码和解码是个逆过程。jpeg编码的目的在于图形去冗余,进行数据压缩,解码的目的在于还原图像,使能够进行预览。 2
今天使用公司开发手机,调研一下当下很火的抖音客户端,其使用的视频编码类型。 在调研前,有个初步判断: 1.从抖音服务器推送到客户端的视频流要么是avc码流,要么是hevc码流(具体要视平台解码硬件支持
最近对抖音有点上瘾,经常看到这样的视频列表: 由于抖音平台的限制,用户最多只能上传60s的视频,因此分段为3个视频。而在视频列表的缩略图模式下,三个视频的封面恰好组合成一张图像。这种方式比较符合审美标
自己在学习h264的路上,欢迎讨论交流。 前段时间研究JM出品的h264编码器,代码实在看不下去,因此换了个角度来研究诸多算法——逆向方式(解码),本系列文章记录一些遇到的东西和思考。 1. JM介绍
h264裸码流,根据nalu_header可以知道类型,例如该帧是I帧,P帧/B帧。 例如,常见的0x65代表I帧,0x41代表非关键帧,即P帧或B帧,但是只根据nalu_header是无法区分P帧和