)]}'
{
  "commit": "3a7e6b27ebb2f9fae32538904d5dda32b32e6ca8",
  "tree": "1b2ea96fcd8eee4263289365891155d96078cf1e",
  "parents": [
    "4078717fdea29d41b388fa6f3af04074dcbc6ce4"
  ],
  "author": {
    "name": "Sergey Silkin",
    "email": "ssilkin@webrtc.org",
    "time": "Thu Jun 25 13:38:19 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Jun 26 12:10:41 2026"
  },
  "message": "Generate keyframes only for requested SSRCs\n\nAdd WebRTC-Video-PerSsrcKeyframes field trial that enables the existing\nfunctionality (guarded by x-google-per-layer-pli FMTP parameter) to\ngenerate keyframes per SSRC.\n\nThere is a small difference to x-google-per-layer-pli implementation:\nunlike in x-google-per-layer-pli, SEA doesn\u0027t force separate encoders\nwhen the functionality enabled by the field trial. It would be better to\nlet multistream/SVC encoders decide how to handle per-stream keyframe\nrequests.\n\nAlso fixed an issue in VideoStreamEncoder::SendKeyFrame where a new\nkeyframe request always overrode the previous non-executed one.\n\nBug: webrtc:527515375, b/527798266\nChange-Id: I05b1cedf09adcbec3471b255b1676a114ea037fd\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/485561\nCommit-Queue: Sergey Silkin \u003cssilkin@webrtc.org\u003e\nReviewed-by: Erik Språng \u003csprang@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48094}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0bb8368a86fb6bfb463b8806c938efa09496082b",
      "old_mode": 33261,
      "old_path": "experiments/field_trials.py",
      "new_id": "9707bf2fc3864e44de9dc00234e3cdc12798b8aa",
      "new_mode": 33261,
      "new_path": "experiments/field_trials.py"
    },
    {
      "type": "modify",
      "old_id": "ea001c00b676bb5b6ade02235e6786113feb242e",
      "old_mode": 33188,
      "old_path": "media/engine/simulcast_encoder_adapter.cc",
      "new_id": "3d098a93f19dc868d7951c3965239c2b7bc11125",
      "new_mode": 33188,
      "new_path": "media/engine/simulcast_encoder_adapter.cc"
    },
    {
      "type": "modify",
      "old_id": "31132f22a4e196a7650c625f6f3895e1882aa11f",
      "old_mode": 33188,
      "old_path": "media/engine/simulcast_encoder_adapter_unittest.cc",
      "new_id": "859aa57c2386ce48478bda4037cc284fb1837e49",
      "new_mode": 33188,
      "new_path": "media/engine/simulcast_encoder_adapter_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "09f0ecc0088bedfe5ac4f178bcaf843a087d361f",
      "old_mode": 33188,
      "old_path": "video/BUILD.gn",
      "new_id": "6012f821548533603520b9a3ed1bf7523703292d",
      "new_mode": 33188,
      "new_path": "video/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "827da4d30d4f500ca731ddd289124304c4542c45",
      "old_mode": 33188,
      "old_path": "video/video_send_stream_impl.cc",
      "new_id": "c44026051f52ece8dff47023f901da7282da012a",
      "new_mode": 33188,
      "new_path": "video/video_send_stream_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "a3046f68f8d494722fa1098e5c57929d3be6d7a2",
      "old_mode": 33188,
      "old_path": "video/video_send_stream_impl_unittest.cc",
      "new_id": "118ef17861ffc6500ce51ec4c212811f8727533d",
      "new_mode": 33188,
      "new_path": "video/video_send_stream_impl_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "363c3564197e5569177a35e8626fc7c1b7c06ebb",
      "old_mode": 33188,
      "old_path": "video/video_stream_encoder.cc",
      "new_id": "aa9085c6f23a3d065dd882d9777def4e7a7fc988",
      "new_mode": 33188,
      "new_path": "video/video_stream_encoder.cc"
    },
    {
      "type": "modify",
      "old_id": "f81dc3fae63bd7d8012bee9b743888297e8a3bbd",
      "old_mode": 33188,
      "old_path": "video/video_stream_encoder_unittest.cc",
      "new_id": "6bfcefbbc713d9ad4771eb0e675bfd12d03e9569",
      "new_mode": 33188,
      "new_path": "video/video_stream_encoder_unittest.cc"
    }
  ]
}
