)]}'
{
  "commit": "1a96c3f5295f9cceeee86f05f5e27d86a43dbf03",
  "tree": "c8d22a464c71aa4f354124408502f212a557f537",
  "parents": [
    "a29cef91bd92d26cd4ca1cff33cbdd63454d1382"
  ],
  "author": {
    "name": "Rupert Swarbrick",
    "email": "rupert.swarbrick@argondesign.com",
    "time": "Tue Oct 24 11:55:00 2017 +0100"
  },
  "committer": {
    "name": "Rupert Swarbrick",
    "email": "rupert.swarbrick@argondesign.com",
    "time": "Wed Oct 25 16:28:31 2017 +0000"
  },
  "message": "Simplify the search in pickrst.c\n\nThe end results should be essentially the same, except hopefully a\nlittle better because the previous code got the costing slightly\nwrong if there were multiple tiles.\n\nThe code was doing something quite complicated to search for the best\nrestoration types; this patch makes it much simpler. Basically,\nav1_pick_filter_restoration loops over the planes in the image. For\neach plane, it loops over the possible restoration types, calling\nsearch_rest_type for each one.\n\nsearch_rest_type iterates over the restoration units in the image,\nresetting the current context on tile boundaries and calling\nsearch_\u003crest_type\u003e for each restoration unit.\n\nThe search_norestore function just computes the SSE error with no\nrestoration. The search_wiener and search_sgrproj functions compute\nthe best set of coefficients and then the resulting SSE error with\nthose coefficients (ignoring the bit cost, so the result can be\nre-used for switchable restoration).\n\nIn all cases but search_norestore, the search function has to decide\nwhat restoration type is best for each restoration unit. For example,\nsearch_wiener could choose to enable or disable Wiener filtering on\nthis unit.\n\nEventually, search_rest_type calculates the RDCOST after summing bit\nrates and SSE errors over the restoration units. This cost gets\nreturned to av1_pick_filter_restoration which can then choose the best\nframe-level restoration type.\n\nChange-Id: I9bc17eb47cc46413adae749a43a440825c41bba6\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "105eb9250515e0452d7ef9dba812db1d66589a89",
      "old_mode": 33188,
      "old_path": "av1/encoder/encoder.c",
      "new_id": "1a9ee176c1527ba029d93612df715b20fa6db442",
      "new_mode": 33188,
      "new_path": "av1/encoder/encoder.c"
    },
    {
      "type": "modify",
      "old_id": "b326d5c4409f762a791216a7a6864bd78232748a",
      "old_mode": 33188,
      "old_path": "av1/encoder/encoder.h",
      "new_id": "d01a31aa4b1b0a29e05912fa1aff9309deb58922",
      "new_mode": 33188,
      "new_path": "av1/encoder/encoder.h"
    },
    {
      "type": "modify",
      "old_id": "1299982720d7f086c3f901e4d1b0a81e0fed2f8f",
      "old_mode": 33188,
      "old_path": "av1/encoder/pickrst.c",
      "new_id": "646c08c7e25480c4472d43cea06f209078f99d0f",
      "new_mode": 33188,
      "new_path": "av1/encoder/pickrst.c"
    }
  ]
}
