)]}'
{
  "commit": "db36884e76b8802055cb875bbd8f7413a186b475",
  "tree": "cadde7bae951f055d061dec37147b7d5156cc200",
  "parents": [
    "eea84d49537887980dc9c899e8232cf1f959c052"
  ],
  "author": {
    "name": "Sergey Silkin",
    "email": "ssilkin@webrtc.org",
    "time": "Tue Apr 02 11:25:56 2024"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Apr 02 18:59:58 2024"
  },
  "message": "Reland \"Mark frames with inter_layer_predicted\u003dtrue as delta frames\"\n\nThis is a reland of commit 7ae48c452abf8694a1b0a7a9a2aef13a9d10298a with  updated RtpVp9RefFinder\n\nRtpVp9RefFinder relied on the fact that frames with (inter_pic_predicted\u003dtrue \u0026\u0026 inter_layer_predicted\u003dtrue) were marked as keyframes. Since this is not the case anymore, the related code paths in RtpVp9RefFinder have been deleted.\n\nCalculation of gof_info_[] index for non-keyframes has been updated to account for that fact it is now possible to received multiple T0 frames belonging to the same temporal unit (we don\u0027t need to do \"unwrapped_tl0 - 1\" in this case).\n\nOriginal change\u0027s description:\n\u003e Mark frames with inter_layer_predicted\u003dtrue as delta frames\n\u003e\n\u003e As it is currently implemented, the VP9 depacketizer decides packet\u0027s frame type based on p_bit (\"Inter-picture predicted layer frame\"). p_bit is set to 0 for upper spatial layer frames of keyframe since they do not have temporal refs. This results in marking packets of upper spatial layer frames, and, eventually these frames, of SVC keyframes as \"keyframe\" while they are in fact delta frames.\n\u003e\n\u003e Normally spatial layer frames are merged into a superframe and the superframe is passed to decoder. But passing individual layers to a single decoder instance is a valid scenario too and is used in downstream projects. In this case, an upper layer frame marked as keyframe may cause decoder reset [2] and break decoding.\n\u003e\n\u003e This CL changes frame type decision logic in the VP9 depacketizer such that only packets with both P and D (inter-layer predicted) bits unset are considered as keyframe packets.\n\u003e\n\u003e When spatial layer frames are merged into a superframe in CombineAndDeleteFrames [1], frame type of the superframe is inferred from the lowest spatial layer frame.\n\u003e\n\u003e [1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/modules/video_coding/frame_helpers.cc;l\u003d53\n\u003e\n\u003e [2] https://source.corp.google.com/piper///depot/google3/third_party/webrtc/files/stable/webrtc/modules/video_coding/codecs/vp9/libvpx_vp9_decoder.cc;l\u003d209\n\u003e\n\u003e Bug: webrtc:15827\n\u003e Change-Id: Idc3445636f0eae0192dac998876fedec48628560\n\u003e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/343342\n\u003e Reviewed-by: Danil Chapovalov \u003cdanilchap@webrtc.org\u003e\n\u003e Commit-Queue: Sergey Silkin \u003cssilkin@webrtc.org\u003e\n\u003e Cr-Commit-Position: refs/heads/main@{#41939}\n\nBug: webrtc:15827\nChange-Id: Ic69b94989919cf6d353bceea85d0eba63bc500ee\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/344144\nReviewed-by: Philip Eliasson \u003cphilipel@webrtc.org\u003e\nCommit-Queue: Sergey Silkin \u003cssilkin@webrtc.org\u003e\nReviewed-by: Danil Chapovalov \u003cdanilchap@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#41985}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "41f363d2213abbe29f8288b52ff0feeddeab3930",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/video_rtp_depacketizer_vp9.cc",
      "new_id": "a8b04db78d5e6be180cc083e239718211a049bcd",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/video_rtp_depacketizer_vp9.cc"
    },
    {
      "type": "modify",
      "old_id": "36af59a7796ed69aa3ac3649928e65d26d3f553c",
      "old_mode": 33188,
      "old_path": "modules/rtp_rtcp/source/video_rtp_depacketizer_vp9_unittest.cc",
      "new_id": "7f898121331281b5f3e2ac357cc81cc42baf2abb",
      "new_mode": 33188,
      "new_path": "modules/rtp_rtcp/source/video_rtp_depacketizer_vp9_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "175ed3464b6cdfd0615b2d134cc3f99dee41827a",
      "old_mode": 33188,
      "old_path": "modules/video_coding/rtp_vp9_ref_finder.cc",
      "new_id": "f0d51adad8f11bd5b42e79e30d0f008f08f27521",
      "new_mode": 33188,
      "new_path": "modules/video_coding/rtp_vp9_ref_finder.cc"
    },
    {
      "type": "modify",
      "old_id": "a3cb31ade5fe8d33e2d02ac322d6ca3b4ea42269",
      "old_mode": 33188,
      "old_path": "modules/video_coding/rtp_vp9_ref_finder_unittest.cc",
      "new_id": "23b6cfca9a318e3f32b71623a654030ba9496df2",
      "new_mode": 33188,
      "new_path": "modules/video_coding/rtp_vp9_ref_finder_unittest.cc"
    }
  ]
}
