)]}'
{
  "commit": "ddd3e1dc172f322356ca91cb764d57c7b81ed282",
  "tree": "141c78a5de459d82b87b8095a0b1d90c41d9f973",
  "parents": [
    "6f79786c977363aafe706c20c25b2037b28ab9ee"
  ],
  "author": {
    "name": "Tommi",
    "email": "tommi@webrtc.org",
    "time": "Fri Oct 09 10:16:07 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Oct 09 12:06:44 2026"
  },
  "message": "Configure RTX at construction of the RTP module\n\nThe RTX mode and payload types were being set right after the RTP module\nhad been created. That kept RTPSender\u0027s RTX state mutable, which\nrequires a lock for every read of the RTX mode.\n\n* Add rtx mode and payload types to RtpRtcpInterface::Configuration\n* Apply them when constructing RTPSender.\n* RtpVideoSender now passes the RTX configuration at creation.\n* Remove SetRtxSendStatus() and SetRtxSendPayloadType() from\n  RtpRtcpInterface and ModuleRtpRtcpImpl2.\n* Deprecate RTPSender::SetRtxStatus() and SetRtxPayloadType(). Once\n  direct users of RTPSender have migrated, they can be removed and the\n  RTX state made const.\n\nInvalid configurations still log an error and leave RTX off. Since all\nRTX payload types are now applied at once, a single invalid one drops\nthe whole mapping. This keeps RTX off for a simulcast layer whose codec\nhas no RTX payload type, as before. Keeping just the RED mapping would\nenable RTX without a way to retransmit media packets.\n\nBug: webrtc:42223727\nChange-Id: I34be4f765293599fc2358c4ab52cebe1fcdb98d0\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/507340\nReviewed-by: Danil Chapovalov \u003cdanilchap@webrtc.org\u003e\nCommit-Queue: Tomas Gunnarsson \u003ctommi@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48836}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "06d59d93101798f2a2042dd2fc01696558aba7f7",
      "old_mode": 33188,
      "old_path": "call/rtp_video_sender.cc",
      "new_id": "52af358b3c83e724ba0253ed87212eaf6e5b0756",
      "new_mode": 33188,
      "new_path": "call/rtp_video_sender.cc"
    },
    {
      "type": "modify",
      "old_id": "7e21ac48032ad781311b31a2ebbef6f161b53edd",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h",
      "new_id": "68317264a64be2a756a6cd6ac1ada51d2683020c",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
    },
    {
      "type": "modify",
      "old_id": "1a71d862b58afe9e328dc2c8c03e0a538a8ac0c8",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/nack_rtx_unittest.cc",
      "new_id": "412cfc8841631a604880705a9cb099e14944dfe6",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/nack_rtx_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "ea2361344a3c3b3fd25a9b6be3280b4c8d8882f8",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_rtcp_impl2.cc",
      "new_id": "cf06878b356f02269c58a1ba944cde2f86864caa",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_rtcp_impl2.cc"
    },
    {
      "type": "modify",
      "old_id": "e55f35ca365130221c1b95fc3fd0d57f493d6f6a",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_rtcp_impl2.h",
      "new_id": "0026580b2b2398a14974801416d7c02be4edb974",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_rtcp_impl2.h"
    },
    {
      "type": "modify",
      "old_id": "3474312e4587fad5f894fe17b5ff7e0a11a7ad6a",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc",
      "new_id": "dcae2a9b11ed93a8c02248a5d94627a177f52ec3",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "70be76086a8c81271694d46e16bc108ad2cf2823",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_rtcp_interface.h",
      "new_id": "7935f36a6d9e7f56d89b3b4b520b9e6edb657a56",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_rtcp_interface.h"
    },
    {
      "type": "modify",
      "old_id": "d5d94fe9718b1c2b1b2bcf5b1e28aad6def84f9f",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_sender.cc",
      "new_id": "d93d273abafc75dedccbb90397b7220a85792f7c",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_sender.cc"
    },
    {
      "type": "modify",
      "old_id": "82409fee5d4cc022af93b1e6f28b1ea179b366e6",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_sender.h",
      "new_id": "e5b839576a08bdfcaa5810b22dae4bc539d1b4b7",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_sender.h"
    },
    {
      "type": "modify",
      "old_id": "6618144ca40b8ebbd377a400058df916221bf96b",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_sender_unittest.cc",
      "new_id": "b0ea2b32caf1bfe88ab6ec4789ea75087c9b9450",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_sender_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "2ad27705f8c6e838138a97fa9844200d65178258",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/rtp_sender_video_unittest.cc",
      "new_id": "02c2377270e8cdff9b658b92ff2812fb69560a2d",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/rtp_sender_video_unittest.cc"
    }
  ]
}
