)]}'
{
  "commit": "e44ee38aef85e48601e54a13939f2a299bb583e0",
  "tree": "9a4b27e1b2a663fb4c852f4768c6fef91d785018",
  "parents": [
    "0e734a63e87c9f87a5ed3dc8c2c698f0cdb1dad7"
  ],
  "author": {
    "name": "Hui Su",
    "email": "huisu@google.com",
    "time": "Wed Jun 13 19:03:31 2012 -0700"
  },
  "committer": {
    "name": "Hui Su",
    "email": "huisu@google.com",
    "time": "Thu Jun 28 17:09:47 2012 -0700"
  },
  "message": "Add lossless compression mode.\n\nThis commit adds lossless compression capability to the experimental\nbranch. The lossless experiment can be enabled using --enable-lossless\nin configure. When the experiment is enabled, the encoder will use\nlossless compression mode by command line option --lossless, and the\ndecoder automatically recognizes a losslessly encoded clip and decodes\naccordingly.\n\nTo achieve the lossless coding, this commit has changed the following:\n    1. To encode at lossless mode, encoder forces the use of unit\nquantizer, i.e, Q 0, where effective quantization is 1. Encoder also\ndisables the usage of 8x8 transform and allows only 4x4 transform;\n    2. At Q 0, the first order 4x4  DCT/IDCT have been switched over\nto a pair of forward and inverse Walsh-Hadamard Transform\n(http://goo.gl/EIsfy),  with proper scaling applied to match the range\nof the original 4x4 DCT/IDCT pair;\n    3. At Q 0, the second order remains to use the previous\nwalsh-hadamard transform pair. However, to maintain the reversibility\nin second order transform at Q 0, scaling down is applied to first\norder DC coefficients prior to forward transform, and scaling up is\napplied to the second order output prior to quantization. Symmetric\nupscaling and downscaling are added around inverse second order\ntransform;\n    4. At lossless mode, encoder also disables a number of minor\nfeatures to ensure no loss is introduced, these features includes:\n        a. Trellis quantization optimization\n        b. Loop filtering\n        c. Aggressive zero-binning, rounding and zero-bin boosting\n        d. Mode based zero-bin boosting\n\nLossless coding test was performed on all clips within the derf set,\nto verify that the commit has achieved lossless compression for all\nclips. The average compression ratio is around 2.57 to 1.\n(http://goo.gl/dEShs)\n\nChange-Id: Ia3aba7dd09df40dd590f93b9aba134defbc64e34\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b1a3f66515225eef8c4614f849cc2be03261d168",
      "old_mode": 33261,
      "old_path": "configure",
      "new_id": "5f39413f2f975dce6c158ffa30e1d08cb3030109",
      "new_mode": 33261,
      "new_path": "configure"
    },
    {
      "type": "modify",
      "old_id": "e8ca23d66446736ad16c66a5e89dc10e4eb1623a",
      "old_mode": 33188,
      "old_path": "vp8/common/idct.h",
      "new_id": "bafa662e66347f1eae6777aa590c0266202f136c",
      "new_mode": 33188,
      "new_path": "vp8/common/idct.h"
    },
    {
      "type": "modify",
      "old_id": "75ce8d44d0db10d3922cfa0ed0b8fc755d068edd",
      "old_mode": 33188,
      "old_path": "vp8/common/idctllm.c",
      "new_id": "acb856d53c5b0642ab89a2ba72ad97679fdbcb95",
      "new_mode": 33188,
      "new_path": "vp8/common/idctllm.c"
    },
    {
      "type": "modify",
      "old_id": "574c8bfb53f55af75dbc531e798198a8ac2c2e59",
      "old_mode": 33188,
      "old_path": "vp8/common/onyx.h",
      "new_id": "8d4cb3e9781838876838848c214bb8a45866ff61",
      "new_mode": 33188,
      "new_path": "vp8/common/onyx.h"
    },
    {
      "type": "modify",
      "old_id": "cb1f6d14e28ed65322feb750981b1b7d44c4e128",
      "old_mode": 33188,
      "old_path": "vp8/decoder/decodframe.c",
      "new_id": "4d6ebbe339d83a190a85ab7f9bbf7727b7aab5ed",
      "new_mode": 33188,
      "new_path": "vp8/decoder/decodframe.c"
    },
    {
      "type": "modify",
      "old_id": "f8303276628e93947d9ed1b4a87dd61cec35e42d",
      "old_mode": 33188,
      "old_path": "vp8/decoder/dequantize.c",
      "new_id": "a6247b2ee4adbcf8200d818fbe14b92311377000",
      "new_mode": 33188,
      "new_path": "vp8/decoder/dequantize.c"
    },
    {
      "type": "modify",
      "old_id": "d0f162b48259123938488c2936e6596ebe5fde83",
      "old_mode": 33188,
      "old_path": "vp8/decoder/dequantize.h",
      "new_id": "af84603bb81b23f43352b9a091b488450486a878",
      "new_mode": 33188,
      "new_path": "vp8/decoder/dequantize.h"
    },
    {
      "type": "modify",
      "old_id": "16ac46c481d864f8bcca6e9b5ce5a064e36f4658",
      "old_mode": 33188,
      "old_path": "vp8/decoder/idct_blk.c",
      "new_id": "ee23130de84971c93ee94a45349339d23336b7ea",
      "new_mode": 33188,
      "new_path": "vp8/decoder/idct_blk.c"
    },
    {
      "type": "modify",
      "old_id": "6f9c68ef756175c85254bb09217e92254744fd3a",
      "old_mode": 33188,
      "old_path": "vp8/encoder/dct.c",
      "new_id": "568d0e0877b3fa3e3321277c6d0c5b0630e61ca6",
      "new_mode": 33188,
      "new_path": "vp8/encoder/dct.c"
    },
    {
      "type": "modify",
      "old_id": "7ab525c0bfdbd5abbb360e70df03c3c4cc520ec9",
      "old_mode": 33188,
      "old_path": "vp8/encoder/dct.h",
      "new_id": "2a059a0b1a2fa2614324251c0e7c97c3d1f6a5ac",
      "new_mode": 33188,
      "new_path": "vp8/encoder/dct.h"
    },
    {
      "type": "modify",
      "old_id": "ccb2cb7d45802170161051fea776511d745c6afc",
      "old_mode": 33188,
      "old_path": "vp8/encoder/onyx_if.c",
      "new_id": "bfcaf746d861e1fcc71456835ea9fa98fbcda9a2",
      "new_mode": 33188,
      "new_path": "vp8/encoder/onyx_if.c"
    },
    {
      "type": "modify",
      "old_id": "c0b1be3241edd8e8e11c37548bbb3fdb5e634b3e",
      "old_mode": 33188,
      "old_path": "vp8/encoder/quantize.c",
      "new_id": "dace31cba8fc43a2e70bd4246608c8dad3a29c50",
      "new_mode": 33188,
      "new_path": "vp8/encoder/quantize.c"
    },
    {
      "type": "modify",
      "old_id": "5ea74456affcd442628ad7ae0f0794062c8a7765",
      "old_mode": 33188,
      "old_path": "vp8/encoder/ratectrl.c",
      "new_id": "52424aa7acfe8b28b0838168a7bbe12eabef6141",
      "new_mode": 33188,
      "new_path": "vp8/encoder/ratectrl.c"
    },
    {
      "type": "modify",
      "old_id": "96dcedca9061a9057741d57527d7f39a517d884c",
      "old_mode": 33188,
      "old_path": "vp8/vp8_cx_iface.c",
      "new_id": "be32c3719ff30df922b27757b16db2eb08e866f4",
      "new_mode": 33188,
      "new_path": "vp8/vp8_cx_iface.c"
    },
    {
      "type": "modify",
      "old_id": "4863dcd17ff213e91a74e23b44fbf1a9686dd54e",
      "old_mode": 33188,
      "old_path": "vpx/vpx_encoder.h",
      "new_id": "971a4368d0e2bf0ff0e4076d783ce3b4c5a6f22e",
      "new_mode": 33188,
      "new_path": "vpx/vpx_encoder.h"
    },
    {
      "type": "modify",
      "old_id": "94235f48a8ba008fbe529f162c1f6868eba7a356",
      "old_mode": 33188,
      "old_path": "vpxenc.c",
      "new_id": "e4b4422d6a220f839c2bdfcfbbb118b85fbcd12d",
      "new_mode": 33188,
      "new_path": "vpxenc.c"
    }
  ]
}
