)]}'
{
  "commit": "ff450fca8dd551abbccaa6aa091dc38731343dd9",
  "tree": "2ea5a5fa0073581bc490033f18616524895e411d",
  "parents": [
    "e4bbcc141051f5b3db91e5542ec192501fad63ec"
  ],
  "author": {
    "name": "kwasniow",
    "email": "kwasniow@cisco.com",
    "time": "Wed Apr 22 14:26:29 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Apr 23 09:36:48 2026"
  },
  "message": "Wire Sframe enable callback through sender and receiver constructors.\n\nThis CL implements the C++ plumbing for the SFrame enable signal\ndescribed in the WebRTC Encoded Transform spec\n(https://w3c.github.io/webrtc-encoded-transform/#attribute, Section\n2.2).\n\nPer the spec, when an SFrame transform is set on an RTCRtpSender or\nRTCRtpReceiver, the setter must propagate [[useSFrame]] \u003d true to the\nowning RTCRtpTransceiver and trigger SDP renegotiation. If the\ntransceiver\u0027s [[useSFrame]] has already been negotiated to false, it\nmust throw InvalidModificationError.\n\nThis is modeled by wiring an on_sframe_enable_requested callback from\neach sender/receiver to RtpTransceiver::TryToEnableSframe(). When the\napplication calls CreateSframeEncrypterOrError() (sender) or\nCreateSframeDecrypterOrError() (receiver), the callback fires, which\nsets sframe_enabled_ \u003d true on the transceiver and triggers\non_negotiation_needed_(). After negotiation completes,\nApplySframeEnabled() locks the state — matching the spec\u0027s behavior\nwhere [[useSFrame]] becomes immutable once associated with a media\ndescription.\n\nBug: webrtc:479862368\nChange-Id: Ie5edd365aa4896bfda44cf34a2ab52dfe32bb441\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/459460\nReviewed-by: Philip Eliasson \u003cphilipel@webrtc.org\u003e\nReviewed-by: Harald Alvestrand \u003chta@webrtc.org\u003e\nCommit-Queue: Philip Eliasson \u003cphilipel@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#47536}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1b7768f575d4fef0c91ad82a9cc7776b91353465",
      "old_mode": 33188,
      "old_path": "pc/BUILD.gn",
      "new_id": "6514d2f0a9fc195d795cd787e6bdd98e17b84188",
      "new_mode": 33188,
      "new_path": "pc/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "ab3fbada46822ffc9255d00de0380a4c2677b690",
      "old_mode": 33188,
      "old_path": "pc/audio_rtp_receiver.cc",
      "new_id": "585719c6a5b7dfbfd22a500d8a939df5fd5982ce",
      "new_mode": 33188,
      "new_path": "pc/audio_rtp_receiver.cc"
    },
    {
      "type": "modify",
      "old_id": "f89ab65976405b79c2a569b397b7f34664c79f26",
      "old_mode": 33188,
      "old_path": "pc/audio_rtp_receiver.h",
      "new_id": "984a80ce0a2801ab144a92ad06d008d717237c84",
      "new_mode": 33188,
      "new_path": "pc/audio_rtp_receiver.h"
    },
    {
      "type": "modify",
      "old_id": "6a69cd66deb61109aca37a72f77d4a35cc367ef6",
      "old_mode": 33188,
      "old_path": "pc/audio_rtp_receiver_unittest.cc",
      "new_id": "b296dd54245644311e417284f0aa8a53d411f63a",
      "new_mode": 33188,
      "new_path": "pc/audio_rtp_receiver_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "9a3e98ae9a4d7da1d80184cd054458804225ed64",
      "old_mode": 33188,
      "old_path": "pc/peer_connection.cc",
      "new_id": "1b4e0c23a1b68c3779cdc2a8500fb6f235916d47",
      "new_mode": 33188,
      "new_path": "pc/peer_connection.cc"
    },
    {
      "type": "modify",
      "old_id": "ef924823136b8646195b67d91db83902c04e0869",
      "old_mode": 33188,
      "old_path": "pc/rtc_stats_collector_unittest.cc",
      "new_id": "57f7e847271079fa1f4d06f3a9138be5172f6f7a",
      "new_mode": 33188,
      "new_path": "pc/rtc_stats_collector_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "33dddb872dd3afa00e2d80f15779d6c5b2d0f6a1",
      "old_mode": 33188,
      "old_path": "pc/rtp_receiver.cc",
      "new_id": "015162270e8005802a651e4f135b092077e565cc",
      "new_mode": 33188,
      "new_path": "pc/rtp_receiver.cc"
    },
    {
      "type": "modify",
      "old_id": "6a2b21dc3321b18a730c3f7994d58d0f5f90c07a",
      "old_mode": 33188,
      "old_path": "pc/rtp_receiver.h",
      "new_id": "8f8616cba46d14df9593b58f822da26ee40e7d48",
      "new_mode": 33188,
      "new_path": "pc/rtp_receiver.h"
    },
    {
      "type": "modify",
      "old_id": "5fbb37f4b35911ca48e6c9b8c1ecf4346fc8ae70",
      "old_mode": 33188,
      "old_path": "pc/rtp_sender.cc",
      "new_id": "49cdc86fe2987e4df8faa5aacac38ecccac69957",
      "new_mode": 33188,
      "new_path": "pc/rtp_sender.cc"
    },
    {
      "type": "modify",
      "old_id": "d0b6f80c8ff38164348dabf3e38f66ea86b585af",
      "old_mode": 33188,
      "old_path": "pc/rtp_sender.h",
      "new_id": "f39ac690dd1e1074a0ae327c99786f9885b537ae",
      "new_mode": 33188,
      "new_path": "pc/rtp_sender.h"
    },
    {
      "type": "modify",
      "old_id": "ee1364711e688c42d836d517f6800ca8933d61a9",
      "old_mode": 33188,
      "old_path": "pc/rtp_sender_receiver_unittest.cc",
      "new_id": "95f419a108576bd2de37e70ec18f5f57c74acc0a",
      "new_mode": 33188,
      "new_path": "pc/rtp_sender_receiver_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "12db4ac4a27acc139bf0f58ac58d9fd35bb9ae12",
      "old_mode": 33188,
      "old_path": "pc/rtp_transceiver.cc",
      "new_id": "bc2a937dca713ee1266b9ff4a01c66344ae857f0",
      "new_mode": 33188,
      "new_path": "pc/rtp_transceiver.cc"
    },
    {
      "type": "modify",
      "old_id": "e0ecad9aaf136019bad1358ebcae9aad74ee86f4",
      "old_mode": 33188,
      "old_path": "pc/rtp_transmission_manager.cc",
      "new_id": "a40d2877c6261a006140478ae6d0c46be58e1bba",
      "new_mode": 33188,
      "new_path": "pc/rtp_transmission_manager.cc"
    },
    {
      "type": "modify",
      "old_id": "250caa90d71b0d9c851fa2a104b432cdc92701ab",
      "old_mode": 33188,
      "old_path": "pc/video_rtp_receiver.cc",
      "new_id": "5d3bf2b89c6d664920a3b269a999a9523e636cf7",
      "new_mode": 33188,
      "new_path": "pc/video_rtp_receiver.cc"
    },
    {
      "type": "modify",
      "old_id": "552539ded806de700e60f1c43d0da510754f66d2",
      "old_mode": 33188,
      "old_path": "pc/video_rtp_receiver.h",
      "new_id": "67cafd1282ec9efe267b0398c5691ece0a5f3388",
      "new_mode": 33188,
      "new_path": "pc/video_rtp_receiver.h"
    },
    {
      "type": "modify",
      "old_id": "ed73fac8008da6d5d0dff891eed0fe3b6d792e89",
      "old_mode": 33188,
      "old_path": "pc/video_rtp_receiver_unittest.cc",
      "new_id": "cda586994326cdf624dee207d3dd53d305bc9a4b",
      "new_mode": 33188,
      "new_path": "pc/video_rtp_receiver_unittest.cc"
    }
  ]
}
