)]}'
{
  "commit": "5cc71c7f89ec9b85a50fec006885a23027f9d95d",
  "tree": "5fe13cc84e517940534f55ae53e27d767c503984",
  "parents": [
    "71ccfafa26cd4f69aed50aecb8d7ddcdaec22a4a"
  ],
  "author": {
    "name": "Ihor Buhaiov",
    "email": "freedbrt@gmail.com",
    "time": "Thu Oct 15 19:37:24 2026 +0200"
  },
  "committer": {
    "name": "Ihor Buhaiov",
    "email": "freedbrt@gmail.com",
    "time": "Thu Oct 15 19:37:24 2026 +0200"
  },
  "message": "Add a Neon version of the k-means centroid step\n\nThe centroid step of av1_k_means() was a static C function. Its loop\nupdates one counter and one sum per pixel, and when neighboring pixels\npick the same color each update waits on the store of the one before.\n\nMove it into RTCD as av1_calc_centroids_dim1() and dim2(), the same\nway as av1_calc_indices, and add a Neon version for dim1 that counts\nand sums two centroids per pass, 16 pixels per step. The empty cluster\nfallback and the rounding are the same as in C, so the output does not\nchange. Add a test that checks the Neon version against C.\n\nOn real palette inputs the Neon version is 3.9 to 4.8 times faster. On\n2560x1440 screen recordings the encoder uses up to 5.5% fewer cycles.\n\nChange-Id: I3b5e8e2c2a4e9358875377ab3297aa2f5a6c63fa\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "560d33c08d9b4dc26b92033bb126e759f87a6549",
      "old_mode": 33188,
      "old_path": "av1/common/av1_rtcd_defs.pl",
      "new_id": "459ccb13e70e4c745955661ce3844960e19f84cd",
      "new_mode": 33188,
      "new_path": "av1/common/av1_rtcd_defs.pl"
    },
    {
      "type": "modify",
      "old_id": "eab9587b4d73c001311e734d6bce40ace6566bf1",
      "old_mode": 33188,
      "old_path": "av1/encoder/arm/av1_k_means_neon.c",
      "new_id": "21bc878e4e0389be57f0673dfe71dcf1fd03e5a4",
      "new_mode": 33188,
      "new_path": "av1/encoder/arm/av1_k_means_neon.c"
    },
    {
      "type": "modify",
      "old_id": "4199159c89feb1b27aaf0ea0749a39c9f0d3e4dc",
      "old_mode": 33188,
      "old_path": "av1/encoder/k_means_template.h",
      "new_id": "ce74f93a4cdf53109f40237642b002f44ae2029b",
      "new_mode": 33188,
      "new_path": "av1/encoder/k_means_template.h"
    },
    {
      "type": "modify",
      "old_id": "58dcb016e3559df75b62568ffe91ca2d8918ac92",
      "old_mode": 33188,
      "old_path": "test/av1_k_means_test.cc",
      "new_id": "1903588fdc78d04f73d2e7b98449d6929353dc0e",
      "new_mode": 33188,
      "new_path": "test/av1_k_means_test.cc"
    }
  ]
}
