From 92338f8f19dd760b566feb17422a4a4736f171b4 Mon Sep 17 00:00:00 2001 From: Yusuke Kadowaki <60080334+yusuke-kadowaki@users.noreply.github.com> Date: Wed, 14 Sep 2022 22:34:40 +0900 Subject: [PATCH] gh-77171 Support WAVE_FORMAT_EXTENSIBLE in the wave module (GH-96777) The test file, a modified version of Lib/test/audiodata/pluck-pcm24.wav, was provided by Andrea Celletti on the bug tracker. Co-authored-by: Zackery Spytz --- Lib/test/audiodata/pluck-pcm24-ext.wav | Bin 0 -> 19922 bytes Lib/test/test_wave.py | 30 +++++++++++++++++- Lib/wave.py | 22 +++++++++---- .../2018-09-23-07-47-29.bpo-32990.2FVVTU.rst | 2 ++ 4 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 Lib/test/audiodata/pluck-pcm24-ext.wav create mode 100644 Misc/NEWS.d/next/Library/2018-09-23-07-47-29.bpo-32990.2FVVTU.rst diff --git a/Lib/test/audiodata/pluck-pcm24-ext.wav b/Lib/test/audiodata/pluck-pcm24-ext.wav new file mode 100644 index 0000000000000000000000000000000000000000..e4c2d133597d85079671147e52bacffef232995d GIT binary patch literal 19922 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