)]}'
{
  "commit": "92d011ec2e8fbf27348ca078057f2e75cf77514c",
  "tree": "b18b2cf599a9670297dae97f0d349cc25c545e0f",
  "parents": [
    "52022620d7f1f97eed6bcfbfcb2744fb26acc86f"
  ],
  "author": {
    "name": "Tommi",
    "email": "tommi@webrtc.org",
    "time": "Thu Oct 08 08:30:03 2026"
  },
  "committer": {
    "name": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Oct 08 10:54:41 2026"
  },
  "message": "Keep muted audio frames muted when resampling\n\nResamplerHelper resampled muted frames as well and wrote the output\nthrough mutable_data(), which clears the muted flag. When resampling,\nChannelReceive therefore returned muted NetEq output as kNormal, so the\nmixer mixed silence instead of skipping the source, and the frames\nweren\u0027t counted in decoded_muted_output.\n\n- ResamplerHelper keeps a muted frame that follows a muted frame muted\n  and doesn\u0027t resample it. The first muted frame after audio is still\n  resampled and comes out unmuted, since it holds the resampler\u0027s tail\n  of that audio. After muted frames, the resampler is primed with\n  silence.\n- ChannelReceive counts decoded_muted_output from NetEq\u0027s muted state\n  before resampling.\n\nBug: none\nChange-Id: I8bb8c5572911c172239005038554feacbb8f87cb\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/506980\nReviewed-by: Jakob Ivarsson‎ \u003cjakobi@webrtc.org\u003e\nCommit-Queue: Tomas Gunnarsson \u003ctommi@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#48827}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9599b91b9bf2766e2ff7660d96ea30963c4d976",
      "old_mode": 33188,
      "old_path": "audio/channel_receive.cc",
      "new_id": "10fe97be35bd1b9c3e61f20f6b5fe136e33a7d3a",
      "new_mode": 33188,
      "new_path": "audio/channel_receive.cc"
    },
    {
      "type": "modify",
      "old_id": "b2022cd88bbfe71281c77048d93f416c12afd02f",
      "old_mode": 33188,
      "old_path": "audio/channel_receive_unittest.cc",
      "new_id": "ac3d0be8323cfa1c994a4f642ec1edc8b5ef9956",
      "new_mode": 33188,
      "new_path": "audio/channel_receive_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "ddefdbe8f14df3279294f8303c145a8558866e03",
      "old_mode": 33188,
      "old_path": "modules/audio_coding/acm2/acm_resampler.cc",
      "new_id": "48115d6fda2bdc05333496de37695340b3b22edb",
      "new_mode": 33188,
      "new_path": "modules/audio_coding/acm2/acm_resampler.cc"
    },
    {
      "type": "modify",
      "old_id": "8b6cee04ce25e783230237c0c865624d7a23d43b",
      "old_mode": 33188,
      "old_path": "modules/audio_coding/acm2/acm_resampler.h",
      "new_id": "e9dd83959c815a9323148723c29afd5f11d0a002",
      "new_mode": 33188,
      "new_path": "modules/audio_coding/acm2/acm_resampler.h"
    },
    {
      "type": "modify",
      "old_id": "49713a97d48e7187b46e598e7e45daef5f9055dc",
      "old_mode": 33188,
      "old_path": "modules/audio_coding/acm2/acm_resampler_unittest.cc",
      "new_id": "1a9e28c8485552064fa062e30a74aba5ebaea236",
      "new_mode": 33188,
      "new_path": "modules/audio_coding/acm2/acm_resampler_unittest.cc"
    }
  ]
}
