)]}'
{
  "commit": "2e38b6834d4118fd327565cf9b22c8ce902672fe",
  "tree": "b4bbb36d9b694e714e327ff406ba67a0317482c3",
  "parents": [
    "8627513862e9f69ae8e21a75065b0adb8cbcbe46"
  ],
  "author": {
    "name": "Erik Språng",
    "email": "sprang@webrtc.org",
    "time": "Fri Jul 10 12:23:23 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Jul 10 13:51:12 2026"
  },
  "message": "Refactor FrameInstrumentationGenerator to handle missing VideoFrames.\n\nIf a raw `VideoFrame` is not available to when trying to generate frame\ninstrumentation data, still update the state with a sync messages.\n\nThis is especially important on keyframe where we\u0027ve state that frame\ninstrumentation data must be available. Otherwise we may end up in a\nstate where we\u0027re unable to produce instrumentation at all for a layer.\n\nBug: webrtc:358039777\nChange-Id: Id64e139ddcfa2bf4211aa624ec701fe6dcdcda7f\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/488400\nCommit-Queue: Erik Språng \u003csprang@webrtc.org\u003e\nReviewed-by: Sergey Silkin \u003cssilkin@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48180}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "40bbfcac242f9ff0b47d77765d18ca1f6fcc2990",
      "old_mode": 33188,
      "old_path": "video/corruption_detection/frame_instrumentation_generator_impl.cc",
      "new_id": "420bcfa66b3613bf093e9cce0db8b6b0066fa103",
      "new_mode": 33188,
      "new_path": "video/corruption_detection/frame_instrumentation_generator_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "d60176fc2d96381eb8c5888fe0e54a2ed248590f",
      "old_mode": 33188,
      "old_path": "video/corruption_detection/frame_instrumentation_generator_unittest.cc",
      "new_id": "1cf722805d2d960f0274c5667c6f83fd1b76d12f",
      "new_mode": 33188,
      "new_path": "video/corruption_detection/frame_instrumentation_generator_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "eceab9dae1b0ac2c8d8725468bbfefda95d4316d",
      "old_mode": 33188,
      "old_path": "video/corruption_detection/frame_selector.cc",
      "new_id": "e7ea425af505b2009f768dbfeaaefcc587fbd2a1",
      "new_mode": 33188,
      "new_path": "video/corruption_detection/frame_selector.cc"
    },
    {
      "type": "modify",
      "old_id": "92107d2e1dbbdc8be2e8908220f7ba712ec9aa46",
      "old_mode": 33188,
      "old_path": "video/corruption_detection/frame_selector.h",
      "new_id": "43218580e042c76c89fbd1d3cd2d166e6ee5258c",
      "new_mode": 33188,
      "new_path": "video/corruption_detection/frame_selector.h"
    },
    {
      "type": "modify",
      "old_id": "4efadcf15cf8789b2ba078664ac4a48395d15610",
      "old_mode": 33188,
      "old_path": "video/corruption_detection/halton_frame_sampler.cc",
      "new_id": "413525d48774f0a563374e1d2f601565f2af8e82",
      "new_mode": 33188,
      "new_path": "video/corruption_detection/halton_frame_sampler.cc"
    },
    {
      "type": "modify",
      "old_id": "0026ee73366dbda36b8490cdf52988862b9dcaab",
      "old_mode": 33188,
      "old_path": "video/corruption_detection/halton_frame_sampler.h",
      "new_id": "d3f2963be5b1e66256cc018f29c11a9388e6012c",
      "new_mode": 33188,
      "new_path": "video/corruption_detection/halton_frame_sampler.h"
    },
    {
      "type": "modify",
      "old_id": "d7f50ecba2211f2fcb7ca5679cff6ed25ce65565",
      "old_mode": 33188,
      "old_path": "video/rtp_video_stream_receiver2_unittest.cc",
      "new_id": "f72371902f36cd36881a5def81335a087041264d",
      "new_mode": 33188,
      "new_path": "video/rtp_video_stream_receiver2_unittest.cc"
    }
  ]
}
