)]}'
{
  "commit": "6ff7713a706e65ff2dfe2b1fe2fbb82558db9cc3",
  "tree": "3e20c6ca093681064d2d20bc4245f6c4984244a4",
  "parents": [
    "bf216a7d3e54bc61921ac39fb8a19d65b21c7515"
  ],
  "author": {
    "name": "Salman",
    "email": "salmanmalik@chromium.org",
    "time": "Fri Jan 27 22:58:35 2023"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Sat Jan 28 03:37:46 2023"
  },
  "message": "base_capturer_pipewire: Send frames via callback\n\nEarlier, we were relying on CRD to periodically do frame captures.\nThis is however not needed since Wayland captures are event based\nand once the compositor has send the event/frame to us, we can just\nhandover the frame to a registered callback. This ensures that we\nhave a single frame clock that (i.e. one present in the compositor).\n\nWithout this change, there is a chance that CRD capture clock is run\nout of sync with the compositor\u0027s clock and cause unnecessary frame\ndelays.\n\nSee the following ideal scenario, for example, where \u0027+\u0027 indicates\nwhen a frame is sent by the compositor and when CRD tries to capture\nit. This assumes that the same clock cycle for both CRD and the\ncompositor, each cycle length is enclosed within | .... |).\n\nCompositor Frame Ready | +... | | +... |\n     CRD Frame Capture | .+.. | | .+.. |\n\nIn this case, when both the clocks are in sync, CRD is able to\ncapture frame right after it is generated by the compositor. But if\nthey are completely out of sync, then CRD can always see a stale\nframe (delayed by one cycle and it can cause users to feel stutter).\n\nCompositor Frame Ready | .+.. | | .+.. |\n     CRD Frame Capture | +... | | +... |\n\nThis stutter can become worse if the compositor is delayed in\ngenerating the frames for some reason (e.g. load on the system).\n\nBug: chromium:1291247\nChange-Id: I7c10c724fbbd87dc523d474e7ece8e8aa146fd7b\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/291080\nReviewed-by: Alexander Cooper \u003calcooper@chromium.org\u003e\nCommit-Queue: Salman Malik \u003csalmanmalik@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#39218}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3bdc1ee00819baeb9ba98b899f3dd92960b66240",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/desktop_and_cursor_composer.cc",
      "new_id": "988d1740d3edc8a4c1df452e95e80f7e218ea712",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/desktop_and_cursor_composer.cc"
    },
    {
      "type": "modify",
      "old_id": "d9208b04a771292c2c58718ab5e03c5c17b6ff4d",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/desktop_and_cursor_composer.h",
      "new_id": "28ea25c8c9c3bbd2e1bd236ccfd33a5a93de2024",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/desktop_and_cursor_composer.h"
    },
    {
      "type": "modify",
      "old_id": "9a054b6f13a817d948d688b6a4d65c3b897f3c53",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/desktop_capturer.h",
      "new_id": "04991f20ea639304df39e05ff0a2fff47326feba",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/desktop_capturer.h"
    },
    {
      "type": "modify",
      "old_id": "66d0c30f22c9ff5c4ac8d4a52e87ab2c4e4d174e",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc",
      "new_id": "4ef00e68ab58333648b8acaf4256f4b57a42734d",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc"
    },
    {
      "type": "modify",
      "old_id": "3b708078ad9fb427cea047fe9651fbf5ee7863e6",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/linux/wayland/base_capturer_pipewire.h",
      "new_id": "083d373c178c2ef14d3f67bc57022b4c08c786e1",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/linux/wayland/base_capturer_pipewire.h"
    },
    {
      "type": "modify",
      "old_id": "7c4a78de649f3500c3a03e82abe2b9e9070d1d3e",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/linux/wayland/shared_screencast_stream.cc",
      "new_id": "c9b1f8dee59f7d955e34cafbcc07c5d76da3e0fe",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/linux/wayland/shared_screencast_stream.cc"
    },
    {
      "type": "modify",
      "old_id": "a130e53bbebd2548e8623a46c3cb6e7f42de17ef",
      "old_mode": 33188,
      "old_path": "modules/desktop_capture/linux/wayland/shared_screencast_stream.h",
      "new_id": "f57e22cb69b10a4a15e0f1355b420cccbdcb4bbe",
      "new_mode": 33188,
      "new_path": "modules/desktop_capture/linux/wayland/shared_screencast_stream.h"
    }
  ]
}
