)]}'
{
  "commit": "132ef2491b45eb8d2da92bd2a1b12ad9ecbfa295",
  "tree": "de52d070468430af847a52a7f4d410929b1c7d71",
  "parents": [
    "9398b6cb1399bda484c2d6dd2144f9d11a1646bf"
  ],
  "author": {
    "name": "Lester Lu",
    "email": "kslu@google.com",
    "time": "Wed Dec 20 22:39:12 2023 +0000"
  },
  "committer": {
    "name": "Urvang Joshi",
    "email": "urvang@google.com",
    "time": "Wed Dec 20 22:39:12 2023 +0000"
  },
  "message": "Fix Overflow Issue in Optical Flow MV Refinement\n\nThis change resolves an overflow problem identified in the optical\nflow MV refinement process. The issue originates from the insufficient\nprecision used in the accumulation of values during the refinement.\nSpecifically, in the function av1_opfl_mv_refinement_nxn_interp_grad,\nthe variables `u`, `v`, and `w` are initially set to use 16-bit signed\nprecision. This precision level is inadequate when dealing with the\naccumulated variables `su2`, `sv2`, `suv`, `suw`, and `svw`, as these\ncan result in values exceeding the limits of a 32-bit signed integer.\n\nIn the existing implementation, these variables are declared as\n`int64_t` in the C code. However, the SSE4_1 intrinsic, which is\nused for processing, maintains the accumulated values in a 32-bit\nsigned format. This discrepancy between the C code and the intrinsic\nfunction\u0027s handling of data types leads to the overflow issue #272 .\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8e0907554715f39e2edcb1b3d5ed07416a86fa22",
      "old_mode": 33188,
      "old_path": "av1/common/x86/optflow_refine_sse4.c",
      "new_id": "71cac3b26757cacf3fdb825f37665a7e7bfcf448",
      "new_mode": 33188,
      "new_path": "av1/common/x86/optflow_refine_sse4.c"
    },
    {
      "type": "modify",
      "old_id": "70950d8a758366763679e4e97d6be945591823fd",
      "old_mode": 33188,
      "old_path": "test/opt_flow_test.cc",
      "new_id": "9060908841bab9148b534a6ae7d9377cb1b09583",
      "new_mode": 33188,
      "new_path": "test/opt_flow_test.cc"
    }
  ]
}
