2022-12-26  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.13

  * Move pyaudio.Stream to pyaudio.PyAudio.Stream.
    The pyaudio.Stream class is now pyaudio.PyAudio.Stream, nested under the
    existing pyaudio.PyAudio class. This should not affect existing code, as
    directly accessing the module-level pyaudio.Stream class has always been
    unsupported (use PyAudio.open instead). Accessing pyaudio.Stream
    directly is deprecated and will raise a DeprecationWarning.

  * Deprecate PaMacCoreStreamInfo's get_channel_map() and get_flags() methods.
    Use the channel_map and flags properties, respectively, instead. Also
    deprecates internal method _get_host_api_stream_object. Calling
    deprecated methods will raise a DeprecationWarning.

  * Package PyAudio as an actual package (directory).
    Previously, the library deployed a single pyaudio.py file and a C
    extension module to the root of site-packages. Now, the library deploys
    a Python package.

  * Add default shared library path for Homebrew installations on Apple Silicon.

  * Refactor and cleanup.
    - Refactor C extension for better maintainability.
    - Add more unit tests.
    - Update and modernize examples directory.
    - Improve C and python style conformance, plus many cosmetic updates.

2022-07-18  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.12

  - Modernize build process for Microsoft Windows, using the native toolchain.

    Setuptool setup.py and INSTALL instructions are more streamlined.
    Building from Cygwin/MinGW is no longer supported nor tested.

    Thanks to Sean Zimmermann for the patches and general help!

  - Change default frames per buffer size to paFramesPerBufferUnspecified.

    Previously, pyaudio.py set a default frames per buffer size of 1024,
    which can lead to dropped frames on some systems.  Now, by default,
    PortAudio selects the buffer size based on host and latency
    requirements.

    Thanks to Jason Hihn for the suggestion!

  - Minor fixes and refactoring for compatibility with Python 3.7+.

    Updates include:
    * Remove call to deprecated PyEval_InitThreads() for Python 3.7+
    * Use Py_ssize_t types in appropriate places (for Python 3.10+).
    * Remove the min macro to ease compilation for Windows.

  - Use the locale's preferred encoding to decode device names.

    Thanks to Eiichi Takamori for the patch!

  - Unit tests: add skipIf decorators to skip tests that require hardware.

    Set the PYAUDIO_SKIP_HW_TESTS environment variable to disable tests that
    require sound hardware, useful for (automated) test environments without
    access to audio devices.

    Thanks to Matěj Cepl for the suggestion and patch!

  - Documentation, examples, and unit tests: various fixes.

    * Add more unit tests and repair a few that test the GIL on macOS.
    * Remove examples/error.py, which is redundant with tests/error_tests.py.
    * Fix type documentation of return value types in docstrings.

    Thanks to Vasily Zakharov for pointing out the return-value type errors!

  - Modernize packaging: add LICENSE.txt, pyproject.toml, and classifiers.

2017-03-18  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.11

  - Fix use-after-free memory issue in callback handler.

    Thanks to both Blaise Potard and Matthias Schaff for their patches!

  - Fix docstring for get_output_latency().

    Thanks to Timothy Port for finding the issue!

2017-01-10  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.10

  - Release the GIL during PortAudio I/O calls to avoid potential deadlock.

    Thanks to Michael Graczyk for submitting a patch!

  - Add a few automated unit tests.

2015-10-18  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.9

  - Fix overflow error handling logic for pa_read_stream.

    Stream.read takes an additional parameter that specifies whether
    an exception is raised on audio buffer overflow, for parity with
    Stream.write.  Includes relevant bug fixes in the C module logic.

    Thanks to Tony Jacobson for submitting a patch!

  - Fix IOError arguments.

    IOError exceptions previously had values in the strerror and errno fields
    swapped, which is now corrected.

    Thanks to Sami Liedes for the report!

  - Miscellaneous updates.

    Python library surfaces issues with importing low-level C module.
    Code formatting update.
    Updates to examples for Python 3 compatibility.

2014-02-16  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.8

  - Device names: support non-UTF8 encoded device names.

    get_device_info_by_index() now attempts to decode the device name
    using a few known encodings (defaults to UTF-8 and CP1252).  If
    those fail, PyAudio passes the raw bytes for the device name.
    Previously, PyAudio assumed a UTF-8 encoding, which is not always
    true.

  - Callback-mode: fix deadlock on some platforms when calling
    pa.stop_stream.

    Thanks to Jason Roehm for this patch!

2012-10-20  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.7

  - Callback-mode: support callables.

    Thanks to John Luebs and Bastian Bechtold for this patch.

  - Update documentation to use Sphinx.

    Thanks again to Bastian Bechtold for his incredible contribution!


2012-09-01  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.6

  - Added support for Python 3.  As of this update, PyAudio is
    compatible with Python 2.6, Python 2.7, and Python 3.2.

    Many thanks to Bastian Bechtold and Bob Jamison for their patches!

  - Fixed a bug in which a list could be modified during iteration.

    Many thanks to Danilo J. S. Bellini for reporting this error!

  - Fixed a memory bug involving Mac OS X channel maps.


2012-09-01  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.5

  - Added support for callback (non-blocking) operation.

    Many thanks to Bastian Bechtold for his initial contribution and
    his generous help towards releasing this feature.  Callback mode
    would not have happened without Bastian's help!


2010-08-12  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.4

  - Maintenance release: updated directory structure and packaging.


2008-10-29  Hubert Pham  <hubert@mit.edu>

  PyAudio 0.2.3

  - Release the GIL during blocking PortAudio I/O calls.

  - Fixed Python argument parsing to use a long for PaSampleFormat
    (rather than int).

    Thanks to many who have pointed out these two issues and sent
    patches.

  - pyaudio.PyAudio.is_format_supported() now throws a ValueError
    exception if the specified format is not supported for any reason
    (or returns True if the format is supported).

    Prior, the method would return False if and only if the specified
    sample rate was unsupported. is_format_supported() now will always
    return True or throw an exception.


2008-03-06  Hubert Pham <hubert@mit.edu>

  PyAudio 0.2.0

  - Added PaMacCoreStreamInfo for Mac OS X Host API Specific Stream Info
    (e.g., for channel maps).

  - Added packaging files for building binaries.


2008-02-12  Justin Mazzola Paluska  <jmp@mit.edu>

  - Initial version of debian packaging.
