)]}'
{
  "commit": "328472488bfec54ef6659de3c5e61ed7144908d4",
  "tree": "720fb46991ac4430c27947df8619232afb6c7160",
  "parents": [
    "69c7a43f172a969cf189bbd97b1f19956230d994"
  ],
  "author": {
    "name": "Lun Dong",
    "email": "lundong@google.com",
    "time": "Thu Feb 10 19:08:52 2022 +0000"
  },
  "committer": {
    "name": "Lun Dong",
    "email": "lundong@google.com",
    "time": "Tue Mar 01 01:50:06 2022 +0000"
  },
  "message": "Rewrite RISP4ML in plain-C for Shodan\n\nThis CL is Part 1 of the comprehensive 3-part changes of integrating RISP4ML into Shodan ML toolchain. This change focuses on re-writing RISP4ML in plain-C.\n\nPart 2 and 3 will be submitted after this CL is merged (codes can be\nseen at Patch Set #13).\n\nDetails of the 3-part changes:\n\n(Part 1) Completely re-wrote RISP4ML in plain C.\n- The original RISP4ML on google3 was written in C++. The memory usage with C++ RISP4ML was significantly larger. Thus, I have completely re-written RISP4ML in plain C. The memory increase with the plain-C RISP4ML is much smaller.\n- Made the input/output shape to be configurable arguments instead of constants.\n- Made low-level optimizations and simplifications.\n\n(Part 2) Integrated plain-C RISP4ML into Shodan ML toolchain\n- Use fssd_25_8bit_v2 as an example to load the binary (raw bayer) file and go through RISP4ML toolchain, and feed the RISP4ML output into IREE flow.\n- The fssd_25_8bit_v2 example is up and running, and the correctness of output has been verified (compare output@plain-C risp4ml against output@google3).\n\n(Part 3) Added unit tests for plain-C RISP4ML\n- Added unit tests based on pw_unit_test\n- Build unit tests in iree_cc_binary\n- Run and check unit tests via lit_test\n\nChange-Id: Id17dd01fd3848d9705b8b39ea2866bde3334613c\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0e9c88bf96c6ce02974018392bcc1b575e932b57",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49346c1d39896e3503cb36c05dd7a9c2437095b5",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5d3e6589e7366fb6f395aa0926575d67c7ad7572",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/constants.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5c774450edd7e8de2c1d222f377caefcce64c8bd",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/image.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "12c1fb4e4d478b37e428c599e488692fe558ba78",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/image.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "616b3dac0024d4df25b9f140b68d9e175032debd",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/test_utils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "83386b1cfb12fe4445f48f45895eba8461c9c896",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/utils.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc29ea587eb4e85460aae02a0091728611489aba",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/common/utils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "54022b755982d5dd28394c5c0459228b19038804",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "26e36b5dbf29037092ee3c7c8f480b7574072388",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/blc.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4ad1466c57d8002ecea160ec42544a67f451d3f1",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/blc.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "55a784b69bb20579f85e469bb6ad296f8193871b",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/demosaic.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d32ae986da0a3e7838b323314f66de518e88c0d9",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/demosaic.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73f7f4638da6cdc478a09711c6cb8d5647942440",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/dg.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1a0bc1b2588c96e7a12c2debfd59db180dfabba7",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/dg.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ac8e6f58714753a46928bb7fcb4aa6c5f3329785",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/downscale.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c28f6975d4e3b929789177b5fce4a75623340220",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/downscale.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f0e9f5104137a01d93c3ffc829ef998d85c97857",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/gamma.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ad6d61e09544c62c2a30d3f90770ec92aa6d91f1",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/gamma.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3e84fb2306fcccdb2158b6a4126ce66e0b5240a1",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/wbg.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2af1b84c4f440e0f2983b60d87d8abf972185514",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/isp_stages/wbg.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e6447c6ab33f8c3fe88aebf701e376adf9ccdeec",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/pipeline/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ec561b2759c0f72f1ed6efb1b309d210d6e16568",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/pipeline/pipeline.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "244a41b1b52822d1619001b3159a49d5d413eda9",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/pipeline/pipeline.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "37720007a04434789c98ba691249e453a70c996d",
      "new_mode": 33188,
      "new_path": "samples/risp4ml/test_data/faces_480x640_uint8_numpy_bayer.bin"
    }
  ]
}
