)]}'
{
  "commit": "a60dc9d6c92368665adc24a521d736c63be392c8",
  "tree": "8615b8609952827016ba2e2837f95277933998f7",
  "parents": [
    "7380b25e4946e270eb08ba5fe69183de5ac2ea6d"
  ],
  "author": {
    "name": "David Barker",
    "email": "david.barker@argondesign.com",
    "time": "Tue Aug 15 16:54:18 2017 +0100"
  },
  "committer": {
    "name": "Sarah Parker",
    "email": "sarahparker@google.com",
    "time": "Wed Sep 06 16:07:59 2017 +0000"
  },
  "message": "Adjust chroma position in warp filter\n\nWhen using chroma subsampling, the warp filter currently behaves\nstrangely when projecting chroma pixels, especially when the\nsubsamplings are not equal along the x and y axes.\n\nFor example, when subsampling_x \u003d 1 and subsampling_y \u003d 0, we\ncalculate the destination coordinates (dx, dy) from the source\ncoordinates (sx, sy) as:\ndx \u003d project(2*sx+0.5, 2*sy+0.5)/2 - 0.5\ndy \u003d project(sx, sy)\nwhere project() applies the affine warp model.\n\nThis patch changes to a simpler and more consistent model,\nwhere we:\n* Project the chroma sample into luma coordinates, taking\n  the chroma sample to be co-located with the top-left luma\n  sample in its (2x2, or 2x1, or 1x2) subsampling block\n  (this is done for simplicity; we don\u0027t expect the exact\n   position to make much difference to the output quality)\n* Apply the transformation in luma coordinates\n* Project the resulting luma sample back into chroma coordinates\n\nChange to software speed is in the noise, but this approach\nshould be simpler in hardware, and should slightly improve\nquality for 4:2:2 and 4:4:0 videos.\n\nChange-Id: Idd455fdd3897594ca7d4edff5b85b78961d1638d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4b93a60fcd9644e6a74c39f093c9036e78390879",
      "old_mode": 33188,
      "old_path": "av1/common/warped_motion.c",
      "new_id": "4d345bb29d1a1a3a7c426b2804d018a670a192bb",
      "new_mode": 33188,
      "new_path": "av1/common/warped_motion.c"
    },
    {
      "type": "modify",
      "old_id": "ca3b635d2a1ca87835b36691b8caa71347287d6c",
      "old_mode": 33188,
      "old_path": "av1/common/x86/highbd_warp_plane_ssse3.c",
      "new_id": "71b0ec7a3bdbed811cf2375524d807f87cc6f143",
      "new_mode": 33188,
      "new_path": "av1/common/x86/highbd_warp_plane_ssse3.c"
    },
    {
      "type": "modify",
      "old_id": "a19cb6ea29aa0ca3499e1769ff2030a4fd8023a9",
      "old_mode": 33188,
      "old_path": "av1/common/x86/warp_plane_sse2.c",
      "new_id": "d30466ae6a6d1e43edd3710248c3ae36c9d11f0e",
      "new_mode": 33188,
      "new_path": "av1/common/x86/warp_plane_sse2.c"
    },
    {
      "type": "modify",
      "old_id": "475ed4878bb70bfb5d33d03369ce4bf6ec0fb6f0",
      "old_mode": 33188,
      "old_path": "av1/common/x86/warp_plane_ssse3.c",
      "new_id": "3986ad38905ffd7e99b9697ea46965dcbe88baa3",
      "new_mode": 33188,
      "new_path": "av1/common/x86/warp_plane_ssse3.c"
    }
  ]
}
