)]}'
{
  "commit": "1019e87d33f5875f00a520afdaab6a52e0fdddc1",
  "tree": "4d72ba7a2c6db90f39282016e5353c6855d60c95",
  "parents": [
    "cce2f149ea7dd912ea0e81eae2973aea8c89cdb9"
  ],
  "author": {
    "name": "Tommi",
    "email": "tommi@webrtc.org",
    "time": "Wed Sep 30 09:54:14 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Oct 01 14:59:37 2026"
  },
  "message": "Wait for frame delivery to stop in Android codec release\n\nrelease() of AndroidVideoDecoder and HardwareVideoEncoder now returns\nonly after the output thread has stopped delivering frames. Only the\nrelease of the MediaCodec itself remains subject to a timeout. Each\noutput thread now releases the codec instance it was created for.\n\nThe callbacks that the native video decoder and encoder wrappers pass to\nthe Java codecs are now invalidated on release, reconfiguration and\ndestruction. Frames delivered after invalidation are dropped.\n\nBug: chromium:558966896\nChange-Id: I300664aad56bbc9e98bdbde72a54c7a641a51ccd\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/506620\nReviewed-by: Zoé Lepaul \u003czlep@webrtc.org\u003e\nCommit-Queue: Tomas Gunnarsson \u003ctommi@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48770}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e8d59ffa1ad44423b14b6aff078f87205a8dcf01",
      "old_mode": 33188,
      "old_path": "sdk/android/BUILD.gn",
      "new_id": "d184998e715bfd4aef7472c8cafe15086e6f1228",
      "new_mode": 33188,
      "new_path": "sdk/android/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "efd11db6276fc0bde66a75e9bdbd464e5280c06b",
      "old_mode": 33188,
      "old_path": "sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java",
      "new_id": "3dc3fef5f1a4af58eff0dae8d766913904b1319a",
      "new_mode": 33188,
      "new_path": "sdk/android/src/java/org/webrtc/AndroidVideoDecoder.java"
    },
    {
      "type": "modify",
      "old_id": "7c6b1a7a90191a80799d09c2a9761a1e3e55da49",
      "old_mode": 33188,
      "old_path": "sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java",
      "new_id": "9664020288dad51d7a8e11c29d7e625b558930fb",
      "new_mode": 33188,
      "new_path": "sdk/android/src/java/org/webrtc/HardwareVideoEncoder.java"
    },
    {
      "type": "modify",
      "old_id": "d7b40445225fe4b47d78bca9128c3f672519375b",
      "old_mode": 33188,
      "old_path": "sdk/android/src/java/org/webrtc/VideoDecoderWrapper.java",
      "new_id": "edaa2ffaa7cba8ecf34daa18765bb659b8f3d0c0",
      "new_mode": 33188,
      "new_path": "sdk/android/src/java/org/webrtc/VideoDecoderWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "beadd8cc6350e312faf334775d35b79cd95b742c",
      "old_mode": 33188,
      "old_path": "sdk/android/src/java/org/webrtc/VideoEncoderWrapper.java",
      "new_id": "5e7c66c18b263cadf0dda8f3ddbd41a1e5c49438",
      "new_mode": 33188,
      "new_path": "sdk/android/src/java/org/webrtc/VideoEncoderWrapper.java"
    },
    {
      "type": "modify",
      "old_id": "30ed742f035d1f2ef615ecb76c572e45b7bebf0b",
      "old_mode": 33188,
      "old_path": "sdk/android/src/jni/video_decoder_wrapper.cc",
      "new_id": "1a16d715e6a8af3e84bc5e177ce8d5dd1395ff57",
      "new_mode": 33188,
      "new_path": "sdk/android/src/jni/video_decoder_wrapper.cc"
    },
    {
      "type": "modify",
      "old_id": "e1a4fa7afded5cfb5cbe3061bfe1d212f1745faf",
      "old_mode": 33188,
      "old_path": "sdk/android/src/jni/video_decoder_wrapper.h",
      "new_id": "54678b4c47dd90d5107973dfb2f1dc093cf8fded",
      "new_mode": 33188,
      "new_path": "sdk/android/src/jni/video_decoder_wrapper.h"
    },
    {
      "type": "modify",
      "old_id": "d36a769a8bf5c904628a3fc0a666ad9afeeb60bf",
      "old_mode": 33188,
      "old_path": "sdk/android/src/jni/video_encoder_wrapper.cc",
      "new_id": "5c0778a3b667dff123f862065ec74eb6395335eb",
      "new_mode": 33188,
      "new_path": "sdk/android/src/jni/video_encoder_wrapper.cc"
    },
    {
      "type": "modify",
      "old_id": "91c9715132149058c139fcf23ae063cb82988301",
      "old_mode": 33188,
      "old_path": "sdk/android/src/jni/video_encoder_wrapper.h",
      "new_id": "960ff3fba114d1550eef876619213c1356156f65",
      "new_mode": 33188,
      "new_path": "sdk/android/src/jni/video_encoder_wrapper.h"
    },
    {
      "type": "modify",
      "old_id": "ea9ec6258ebb52305b71d27206491c0888b7b002",
      "old_mode": 33188,
      "old_path": "sdk/android/tests/src/org/webrtc/AndroidVideoDecoderTest.java",
      "new_id": "5d6bc66bbce584ac1f4f172b13a80146e34c70bc",
      "new_mode": 33188,
      "new_path": "sdk/android/tests/src/org/webrtc/AndroidVideoDecoderTest.java"
    },
    {
      "type": "modify",
      "old_id": "e080dee3d2a4d70a14bd01e7869954c43451b223",
      "old_mode": 33188,
      "old_path": "sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java",
      "new_id": "026f9537cd975fa4e2b99ef4d1706ade8eb52cd3",
      "new_mode": 33188,
      "new_path": "sdk/android/tests/src/org/webrtc/HardwareVideoEncoderTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c416efe93911e5a6de080f5c03564a7ae9d88e4f",
      "new_mode": 33188,
      "new_path": "sdk/android/tests/src/org/webrtc/VideoDecoderWrapperTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d0288d2d7ac57b6786f5a7474ef0dd079c121991",
      "new_mode": 33188,
      "new_path": "sdk/android/tests/src/org/webrtc/VideoEncoderWrapperTest.java"
    }
  ]
}
