)]}'
{
  "commit": "77bba8d30a15178932bda014569f9b2970bf139b",
  "tree": "5b272fadee58bec94ff96bea64b2e08ce92ba761",
  "parents": [
    "ec994d8bbd222683ddf84cd6f26face22cc24a95"
  ],
  "author": {
    "name": "Yushin Cho",
    "email": "ycho@mozilla.com",
    "time": "Fri Nov 04 16:36:56 2016 -0700"
  },
  "committer": {
    "name": "Yaowu Xu",
    "email": "yaowu@google.com",
    "time": "Sun Nov 06 22:18:01 2016 -0800"
  },
  "message": "New experiment: Perceptual Vector Quantization from Daala\n\nPVQ replaces the scalar quantizer and coefficient coding with a new\ndesign originally developed in Daala. It currently depends on the\nDaala entropy coder although it could be adapted to work with another\nentropy coder if needed:\n./configure --enable-experimental --enable-daala_ec --enable-pvq\n\nThe version of PVQ in this commit is adapted from the following\nrevision of Daala:\nhttps://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8\n\nMore information about PVQ:\n- https://people.xiph.org/~jm/daala/pvq_demo/\n- https://jmvalin.ca/papers/spie_pvq.pdf\n\nThe following files are copied as-is from Daala with minimal\nadaptations, therefore we disable clang-format on those files\nto make it easier to synchronize the AV1 and Daala codebases in the future:\n av1/common/generic_code.c\n av1/common/generic_code.h\n av1/common/laplace_tables.c\n av1/common/partition.c\n av1/common/partition.h\n av1/common/pvq.c\n av1/common/pvq.h\n av1/common/state.c\n av1/common/state.h\n av1/common/zigzag.h\n av1/common/zigzag16.c\n av1/common/zigzag32.c\n av1/common/zigzag4.c\n av1/common/zigzag64.c\n av1/common/zigzag8.c\n av1/decoder/decint.h\n av1/decoder/generic_decoder.c\n av1/decoder/laplace_decoder.c\n av1/decoder/pvq_decoder.c\n av1/decoder/pvq_decoder.h\n av1/encoder/daala_compat_enc.c\n av1/encoder/encint.h\n av1/encoder/generic_encoder.c\n av1/encoder/laplace_encoder.c\n av1/encoder/pvq_encoder.c\n av1/encoder/pvq_encoder.h\n\nKnown issues:\n- Lossless mode is not supported, \u0027--lossless\u003d1\u0027 will give the same result as\n\u0027--end-usage\u003dq --cq-level\u003d1\u0027.\n- High bit depth is not supported by PVQ.\n\nChange-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "eebdc0cb4bc2f290776eef2ae48795757be2bcd7",
      "old_mode": 33188,
      "old_path": "aom_dsp/aom_dsp.mk",
      "new_id": "07fbe02277c368e0bde810b4b2fb0da97b15d5d9",
      "new_mode": 33188,
      "new_path": "aom_dsp/aom_dsp.mk"
    },
    {
      "type": "modify",
      "old_id": "b073b1bd61d45e79a11ba65629f7997262d4782d",
      "old_mode": 33188,
      "old_path": "aom_dsp/aom_dsp_rtcd_defs.pl",
      "new_id": "94e25870e3670212ab5acc31fae4cc659573d6dd",
      "new_mode": 33188,
      "new_path": "aom_dsp/aom_dsp_rtcd_defs.pl"
    },
    {
      "type": "modify",
      "old_id": "9d6cebdbe0ec87bf7df8b871ef9de6acf218de09",
      "old_mode": 33188,
      "old_path": "aom_dsp/daalaboolreader.h",
      "new_id": "8977995a865f2af972f832d9ccf22a19187beb68",
      "new_mode": 33188,
      "new_path": "aom_dsp/daalaboolreader.h"
    },
    {
      "type": "modify",
      "old_id": "49284b0d2e45b88c442c7d7aa4f61661844c763a",
      "old_mode": 33188,
      "old_path": "aom_dsp/entcode.c",
      "new_id": "ff8e8e2cff15cf59f8988e9617ac2ab1824e186b",
      "new_mode": 33188,
      "new_path": "aom_dsp/entcode.c"
    },
    {
      "type": "modify",
      "old_id": "77ed1717642b6fc1405c70adcdaa9c129071a6d4",
      "old_mode": 33188,
      "old_path": "aom_dsp/entcode.h",
      "new_id": "91fcb679595b74acf6f0d686cdc938ace374872c",
      "new_mode": 33188,
      "new_path": "aom_dsp/entcode.h"
    },
    {
      "type": "modify",
      "old_id": "18563b2e33a6fa092b47f4b12ef56ba0c9aeb8e7",
      "old_mode": 33188,
      "old_path": "aom_dsp/entdec.c",
      "new_id": "b015956fa03d93e0e4de21293cd667a2a08fb02d",
      "new_mode": 33188,
      "new_path": "aom_dsp/entdec.c"
    },
    {
      "type": "modify",
      "old_id": "80363b590271fcce087d5bc4d674c723734f9a39",
      "old_mode": 33188,
      "old_path": "aom_dsp/entdec.h",
      "new_id": "6d6e2b51ea40dd974c4b197968eb79f4bddab702",
      "new_mode": 33188,
      "new_path": "aom_dsp/entdec.h"
    },
    {
      "type": "modify",
      "old_id": "3e9cb62c533f609149988b327304c881624be1c2",
      "old_mode": 33188,
      "old_path": "aom_dsp/entenc.c",
      "new_id": "390f61b9ba905d2c15d4ac0fb108caa6848d4d1a",
      "new_mode": 33188,
      "new_path": "aom_dsp/entenc.c"
    },
    {
      "type": "modify",
      "old_id": "32163f794af1012bd044a340a7d2ce2289e8d530",
      "old_mode": 33188,
      "old_path": "aom_dsp/entenc.h",
      "new_id": "5e121b63332611f6ff47edbd8613aa147e869b2d",
      "new_mode": 33188,
      "new_path": "aom_dsp/entenc.h"
    },
    {
      "type": "modify",
      "old_id": "0fe4a89f514778b8404d8235bdcfa06fe0224996",
      "old_mode": 33188,
      "old_path": "av1/av1_common.mk",
      "new_id": "3571323322a80e2fe298f279d8f441fec33834b2",
      "new_mode": 33188,
      "new_path": "av1/av1_common.mk"
    },
    {
      "type": "modify",
      "old_id": "3f85a5fa2ff4433ed247ce62ce9cd04976b80e79",
      "old_mode": 33188,
      "old_path": "av1/av1_cx.mk",
      "new_id": "35a04479d7b30096de11946d16bbd57cd8dc85b9",
      "new_mode": 33188,
      "new_path": "av1/av1_cx.mk"
    },
    {
      "type": "modify",
      "old_id": "36eec30448a0887b9fe65c5f16e65d11c4c40034",
      "old_mode": 33188,
      "old_path": "av1/av1_dx.mk",
      "new_id": "81f526c8f2e182e466a47ee1a45de911bfee6f40",
      "new_mode": 33188,
      "new_path": "av1/av1_dx.mk"
    },
    {
      "type": "modify",
      "old_id": "ee46820fee1029135c88faa06e385a9be74a2f25",
      "old_mode": 33188,
      "old_path": "av1/common/av1_rtcd_defs.pl",
      "new_id": "f96dcf2602912fae5f3c16a99286e5818e2f0a1d",
      "new_mode": 33188,
      "new_path": "av1/common/av1_rtcd_defs.pl"
    },
    {
      "type": "modify",
      "old_id": "27c874a6a01db5988c3c093fd8a3ee881739f053",
      "old_mode": 33188,
      "old_path": "av1/common/blockd.c",
      "new_id": "8cfd22340fd2c95bd56cab729e7f96af6948012d",
      "new_mode": 33188,
      "new_path": "av1/common/blockd.c"
    },
    {
      "type": "modify",
      "old_id": "1d08cfab439edd7ff376cf969e3fb20ced2f8ff3",
      "old_mode": 33188,
      "old_path": "av1/common/blockd.h",
      "new_id": "1af376075f2f24ec1c3809497019b5e350fcf49a",
      "new_mode": 33188,
      "new_path": "av1/common/blockd.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4022cf15f77cb30d9d7488d0eaea3547d01dbfa3",
      "new_mode": 33188,
      "new_path": "av1/common/generic_code.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6059190e3feadb02e9590867b5c2c5b110793e05",
      "new_mode": 33188,
      "new_path": "av1/common/generic_code.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f1c3f9afe39331eb5ae4f934afe526286b6b9655",
      "new_mode": 33188,
      "new_path": "av1/common/laplace_tables.c"
    },
    {
      "type": "modify",
      "old_id": "bb36104d0511d87efc35d98af504800fba4606d9",
      "old_mode": 33188,
      "old_path": "av1/common/odintrin.c",
      "new_id": "868efacc99c9cd44896058a1fcf998fa5782bf47",
      "new_mode": 33188,
      "new_path": "av1/common/odintrin.c"
    },
    {
      "type": "modify",
      "old_id": "417b714fb3db7b8edb03c8a52c1b4f95aef4ec41",
      "old_mode": 33188,
      "old_path": "av1/common/odintrin.h",
      "new_id": "6700383ea8a45d2b6255ab7a27d986efb29bdaa3",
      "new_mode": 33188,
      "new_path": "av1/common/odintrin.h"
    },
    {
      "type": "modify",
      "old_id": "464314eb4c6fb52990bf2c5351950e81a32ddb50",
      "old_mode": 33188,
      "old_path": "av1/common/onyxc_int.h",
      "new_id": "1291b65f9ea9e33854c5ee5cc77a7eb4b7fde298",
      "new_mode": 33188,
      "new_path": "av1/common/onyxc_int.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "63d9d6921ec4bddfc150e09791bcaa7792393717",
      "new_mode": 33188,
      "new_path": "av1/common/partition.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c86cb81f320c278b468089b55ea08313b1af2bae",
      "new_mode": 33188,
      "new_path": "av1/common/partition.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "62f3632da0e6e32339d92f9c76413abf1663eca6",
      "new_mode": 33188,
      "new_path": "av1/common/pvq.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a5051b40abf818439755e6e8c4efb114f83dacc7",
      "new_mode": 33188,
      "new_path": "av1/common/pvq.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "45d51843fc81f48f67629489e5cb225e365c4bcb",
      "new_mode": 33188,
      "new_path": "av1/common/pvq_state.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6cf56fea7ac674870e61db7f870f06d80237fe68",
      "new_mode": 33188,
      "new_path": "av1/common/pvq_state.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "295ed233ed3426607ba7b31a2cfebde9dd30a4f5",
      "new_mode": 33188,
      "new_path": "av1/common/zigzag.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "94c34870a6d47ee8b9b857840b201ee8b7a15a96",
      "new_mode": 33188,
      "new_path": "av1/common/zigzag16.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb3b9bc632242f05e4da05c29941ed26da8256f9",
      "new_mode": 33188,
      "new_path": "av1/common/zigzag32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7ccc16001f748a1e1ebcec8ca9b7b79301fc10ab",
      "new_mode": 33188,
      "new_path": "av1/common/zigzag4.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ba39ac0684f26435e58594457aeb0ef6bdbd4243",
      "new_mode": 33188,
      "new_path": "av1/common/zigzag8.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "99dbc434ace1584cfca44a06abdafca21e288c58",
      "new_mode": 33188,
      "new_path": "av1/decoder/decint.h"
    },
    {
      "type": "modify",
      "old_id": "026dcbcece73305aa7351f04dd246034d03fe90d",
      "old_mode": 33188,
      "old_path": "av1/decoder/decodeframe.c",
      "new_id": "ee067f7cd305a549d2421743e52eb8bedae7bdf0",
      "new_mode": 33188,
      "new_path": "av1/decoder/decodeframe.c"
    },
    {
      "type": "modify",
      "old_id": "c3099ba123326ec569d3f6e3e280be834c5a17a5",
      "old_mode": 33188,
      "old_path": "av1/decoder/decoder.c",
      "new_id": "7547656c82d7d1066e4b160285d329ff522ba866",
      "new_mode": 33188,
      "new_path": "av1/decoder/decoder.c"
    },
    {
      "type": "modify",
      "old_id": "262995a825dc1d946a5d84cbf27791d9f8c50a4f",
      "old_mode": 33188,
      "old_path": "av1/decoder/decoder.h",
      "new_id": "0ee922f35ffbc43b8528ae2121632eb5afab0e28",
      "new_mode": 33188,
      "new_path": "av1/decoder/decoder.h"
    },
    {
      "type": "modify",
      "old_id": "795b1b0ac2f74eb58a1b52efd2b7d138abff47cf",
      "old_mode": 33188,
      "old_path": "av1/decoder/detokenize.c",
      "new_id": "0f183f27fc4c07c3fee52b59192f83fa171790d1",
      "new_mode": 33188,
      "new_path": "av1/decoder/detokenize.c"
    },
    {
      "type": "modify",
      "old_id": "1eb1e6c1a3148f5166aa2bc637a95f7c3c11e6dc",
      "old_mode": 33188,
      "old_path": "av1/decoder/detokenize.h",
      "new_id": "ec68665f0ad51166620aa0e40d5b7ac8717b95e4",
      "new_mode": 33188,
      "new_path": "av1/decoder/detokenize.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "86187fa9d3baeae5f41bf66f72823093e4793a72",
      "new_mode": 33188,
      "new_path": "av1/decoder/generic_decoder.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c3def5fdd4c0ac53f60f57ee76e3aa8cd39f900",
      "new_mode": 33188,
      "new_path": "av1/decoder/laplace_decoder.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2340605ee8dc40e6730c30336afd4d3c04873f5b",
      "new_mode": 33188,
      "new_path": "av1/decoder/pvq_decoder.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d749040a6090ab5606403c68b0c9518b3d7dda65",
      "new_mode": 33188,
      "new_path": "av1/decoder/pvq_decoder.h"
    },
    {
      "type": "modify",
      "old_id": "7c78edaf19f483e3bff508c0d3fd3ae89d9168df",
      "old_mode": 33188,
      "old_path": "av1/encoder/bitstream.c",
      "new_id": "75dc124562b71eff4379d36eb908406b32a30b4d",
      "new_mode": 33188,
      "new_path": "av1/encoder/bitstream.c"
    },
    {
      "type": "modify",
      "old_id": "5c8a2f6b4d21c3cd6f42d38f1f1fa3bf4f85eca1",
      "old_mode": 33188,
      "old_path": "av1/encoder/block.h",
      "new_id": "aa04389f4f95ec48ecce1bbf9f221e3d637d727b",
      "new_mode": 33188,
      "new_path": "av1/encoder/block.h"
    },
    {
      "type": "modify",
      "old_id": "6d1cb39b550748b93d3f5db0ccf5a0cc5028d44e",
      "old_mode": 33188,
      "old_path": "av1/encoder/context_tree.c",
      "new_id": "239c365fa2a9e896c494cab199d40e2893eb00f5",
      "new_mode": 33188,
      "new_path": "av1/encoder/context_tree.c"
    },
    {
      "type": "modify",
      "old_id": "9aff773bada361ce2eb6622bc2fe908619aaedf8",
      "old_mode": 33188,
      "old_path": "av1/encoder/context_tree.h",
      "new_id": "7453a666936fcaf451cfad5b072339578a3ae0a7",
      "new_mode": 33188,
      "new_path": "av1/encoder/context_tree.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c23b26d21de4b753291c79fc7e1cc3379abc317b",
      "new_mode": 33188,
      "new_path": "av1/encoder/daala_compat_enc.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1e3516cc2f3fd2f000f838034902ecb31fc8c5cf",
      "new_mode": 33188,
      "new_path": "av1/encoder/encint.h"
    },
    {
      "type": "modify",
      "old_id": "6f82e83e3e7770de2ec439e25a2caccda4f12989",
      "old_mode": 33188,
      "old_path": "av1/encoder/encodeframe.c",
      "new_id": "9adc8e07830419fbe51b358352ce834f18043fb9",
      "new_mode": 33188,
      "new_path": "av1/encoder/encodeframe.c"
    },
    {
      "type": "modify",
      "old_id": "f7f902174214eaebde823e8fa7516e4d8c94c4e9",
      "old_mode": 33188,
      "old_path": "av1/encoder/encodemb.c",
      "new_id": "83d463b7bc71a56b54ad65cb4d8f1dcce6dc5829",
      "new_mode": 33188,
      "new_path": "av1/encoder/encodemb.c"
    },
    {
      "type": "modify",
      "old_id": "e9b6bc8d7a0787dc72e02c7f3d39f5b926fc4edd",
      "old_mode": 33188,
      "old_path": "av1/encoder/encodemb.h",
      "new_id": "3c496d908bbd6c718b5fed0154c34aad624c66d8",
      "new_mode": 33188,
      "new_path": "av1/encoder/encodemb.h"
    },
    {
      "type": "modify",
      "old_id": "52408b9193e4f8ab94795da3158a2681fe51c21f",
      "old_mode": 33188,
      "old_path": "av1/encoder/encoder.c",
      "new_id": "2bd2001671f780bac10e6272d67c074f8426ae49",
      "new_mode": 33188,
      "new_path": "av1/encoder/encoder.c"
    },
    {
      "type": "modify",
      "old_id": "00abc71a3068dd2b18492c7e1ecaac10aaee9711",
      "old_mode": 33188,
      "old_path": "av1/encoder/encoder.h",
      "new_id": "ae484749d28789703a0aa70e7b2865d0f595cddb",
      "new_mode": 33188,
      "new_path": "av1/encoder/encoder.h"
    },
    {
      "type": "modify",
      "old_id": "0f7fccadad8956c89c48daeb5c2caa2eac458fed",
      "old_mode": 33188,
      "old_path": "av1/encoder/firstpass.c",
      "new_id": "2f6731eba87b2472316efb69344ff3d9d361f16a",
      "new_mode": 33188,
      "new_path": "av1/encoder/firstpass.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "466ede3f1e4033c311c804f33df23707ff004463",
      "new_mode": 33188,
      "new_path": "av1/encoder/generic_encoder.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "07dcacad7c0de2b15f8b3689800c15d67dfcca39",
      "new_mode": 33188,
      "new_path": "av1/encoder/laplace_encoder.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b0ee102a639b1549b8c3f56011c0d21173a135f0",
      "new_mode": 33188,
      "new_path": "av1/encoder/pvq_encoder.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6cf1c3bb2821552b17f1a13a5cd1ea5b85528eb1",
      "new_mode": 33188,
      "new_path": "av1/encoder/pvq_encoder.h"
    },
    {
      "type": "modify",
      "old_id": "947fefdbbe2cadb61b4594b19ee33e0f44f884f5",
      "old_mode": 33188,
      "old_path": "av1/encoder/rdopt.c",
      "new_id": "dfd7163feb64ad68bf8f0f50da720660c627a8d2",
      "new_mode": 33188,
      "new_path": "av1/encoder/rdopt.c"
    },
    {
      "type": "modify",
      "old_id": "212f5d7f407f762c880049b796b0fa588b534b86",
      "old_mode": 33188,
      "old_path": "av1/encoder/tokenize.c",
      "new_id": "50735adc99a8f280f48650cbedfe1edfadf2671a",
      "new_mode": 33188,
      "new_path": "av1/encoder/tokenize.c"
    },
    {
      "type": "modify",
      "old_id": "9505b05ea8832b59a61166d0105b1ac9394bc610",
      "old_mode": 33261,
      "old_path": "configure",
      "new_id": "c331b26e7fe113a10593898580c6496446c36b33",
      "new_mode": 33261,
      "new_path": "configure"
    },
    {
      "type": "modify",
      "old_id": "ea6da474697c33666db27e72b092d46ca7625e36",
      "old_mode": 33188,
      "old_path": "test/divu_small_test.cc",
      "new_id": "d3a134a2bff36d2af285a15f734f67207e9de907",
      "new_mode": 33188,
      "new_path": "test/divu_small_test.cc"
    }
  ]
}
