)]}'
{
  "commit": "4ea80f35f1b6a74fcba182a1d769abe94b8513ca",
  "tree": "7a9d7700cae55dae75e3dc5a1345d642ce28307b",
  "parents": [
    "33e75bb874cca556c657be70a7ed9892295d66a0"
  ],
  "author": {
    "name": "Henrik Boström",
    "email": "hbos@webrtc.org",
    "time": "Wed Jun 09 08:29:50 2021"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jun 09 09:25:59 2021"
  },
  "message": "Disable PT based demuxing if MID header extension is present.\n\nWe want to turn off PT based demux because SSRC-based endpoints that\nsend media prematurely (which is a popular non-standard behavior still\nheavily in use) can otherwise get incorrect mappings and unsignalled\nssrc issues because of the PT demux path.\n\nThis CL disables PT based demuxing when the MID header extension is\npresent on all m\u003d sections in the SDP for that kind (audio/video), not\ncaring if it was in the offer or answer. However if PT demuxing has been\nused in the past then it is always allowed. This ensures PT is off by\ndefault but that either offer or answer can enable PT and once it has\nbeen on it is also possible to get early media with PT.\n\n- Want PT-based demux? The MID header extension has to be removed in\n  either the offer or the answer. Follow-up O/As allow PT demuxing if\n  possible.\n- Want to use MID or SSRC demuxing? Great, you don\u0027t need PT-based demux\n  and won\u0027t mind that we turned it off for you.\n\nThe reason for disabling PT demux at offer time (if MID is present)\ninstead of waiting for the SDP answer is because by the time the SDP\nanswer arrives, early media could have triggered PT demux and caused\nincorrect mappings. The safe thing is to assume a spec-compliant\nendpoint until proven otherwise.\n\nHowever if PT demux is ever enabled, then from that point on we always\nallow PT-based demux in follow-up O/A exchanges. This ensures we don\u0027t\ndrop packets in follow-up exchanges. The fact that PT-based demux is\ndisabled during the initial offer should not matter because before the\ninitial O/A exchange we don\u0027t have fingerprints.\n\nThis change only affects Unified Plan and bundled groups. Existing test\ncoverage ensuring we do not break legacy endpoints:\n[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/pc/peer_connection_integrationtest.cc;l\u003d1156\n[2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/webrtc/protocol/rtp-demuxing.html;l\u003d59\n\nUnsignaledStreamTest is also updated to test the interesting setups.\nA kill-switch is added in case we want to disable this change.\n\nBug: webrtc:12814\nChange-Id: I807a82a543325753633aaef698e06cb4c9dfebaa\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/221101\nCommit-Queue: Henrik Boström \u003chbos@webrtc.org\u003e\nReviewed-by: Taylor Brandstetter \u003cdeadbeef@webrtc.org\u003e\nReviewed-by: Harald Alvestrand \u003chta@webrtc.org\u003e\nCr-Commit-Position: refs/heads/master@{#34251}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8aa194781ef57929b05cabab824c0e194bc676b3",
      "old_mode": 33188,
      "old_path": "pc/sdp_offer_answer.cc",
      "new_id": "2bfb61a15f9ba5292c6767068a9c7f1b143d75a1",
      "new_mode": 33188,
      "new_path": "pc/sdp_offer_answer.cc"
    },
    {
      "type": "modify",
      "old_id": "1ef124baec8d7975af8e8b6e09cb71395a5efe91",
      "old_mode": 33188,
      "old_path": "pc/sdp_offer_answer.h",
      "new_id": "e5b39b83e7677883452f92b4fb4dd23b8bcd59cc",
      "new_mode": 33188,
      "new_path": "pc/sdp_offer_answer.h"
    },
    {
      "type": "modify",
      "old_id": "95510a24bdf37b38b5caf2ce81c3bbe2b645882e",
      "old_mode": 33188,
      "old_path": "test/peer_scenario/tests/unsignaled_stream_test.cc",
      "new_id": "edcfb36ea35291a4c519ae1630fa514566449a0a",
      "new_mode": 33188,
      "new_path": "test/peer_scenario/tests/unsignaled_stream_test.cc"
    }
  ]
}
