-------
Improvements
~~~~~~~~~~~~~
- Optimized PyAV music sources stream.
- Optimized pydub equalizer.
Fix bugs
~~~~~~~~~
- Fixed All of miniaudio music sources malfunctioning when decoding, for more information about what sources are affected see below:
- :meth:`MP3toPCMAudio.from_file()`
- :meth:`MP3toPCMAudio.from_data()`
- :meth:`FLACtoPCMAudio.from_file()`
- :meth:`FLACtoPCMAudio.from_data()`
- :meth:`VorbistoPCMAudio.from_file()`
- :meth:`VorbistoPCMAudio.from_data()`
- :meth:`WAVtoPCMAudio.from_file()`
- :meth:`WAVtoPCMAudio.from_data()`
- Fixed :meth:`LibAVOpusAudio.seek()` error caused by unconverted floating numbers.
- Fixed a deadlock when stopping audio caused by :meth:`MusicClient.stop()` is waiting audio player thread to exit.
- Fixed after function is called in audio player when :meth:`MusicClient.stop()` is called.
- Fixed WAVAudio malfunctioning if given stream is valid wav.
- Fixed after function called when voice is disconnected
New features
~~~~~~~~~~~~~
- Added new opus encoder using PyAV_ library.
- Added equalizer support for PyAV-based music source for :class:`LibAVPCMAudio`
- Added :meth:`Playlist.get_pos_from_track()` to retrieve track position from given track
- Added :attr:`MusicSource.volume` property to return current volume.
- Added :attr:`MusicSource.equalizer` property to return current equalizer.
- Added :attr:`MusicClient.playlist` property to retrieve current playlist in `MusicClient`
- Added :meth:`MusicClient.set_playlist()` to set new playlist.
- Added :attr:`MusicClient.volume` property to return current volume from music client.
- Added :meth:`MusicClient.set_volume()` to set volume music source in music client.
- Added :attr:`MusicClient.equalizer` property to return current equalizer from music client.
- Added :meth:`MusicClient.set_equalizer()` to set equalizer in music client.
- Added hook :meth:`MusicClient.on_disconnect()` on MusicClient.
- Added hook :meth:`MusicClient.on_player_error()` on MusicClient.
.. _PyAV: https://github.com/PyAV-Org/PyAV
Breaking changes
~~~~~~~~~~~~~~~~~
- Replaced ``Equalizer`` and ``SubwooferEqualizer`` with :class:`pydubEqualizer` and :class:`pydubSubwooferEqualizer`.
- Removed module ``discord.ext.music.voice_source.av.encoder`` as it unused because new opus encoder.
- Removed ``LibAVAudio`` as it unused.
- Replaced ``LibAVError`` with :class:`StreamHTTPError`
- Removed ``MusicClient.register_after_callback()``, replaced with:
- :meth:`MusicClient.before_play_next()`
- :meth:`MusicClient.after_play_next()`
- Removed ``Track.stream_url`` attribute and ``stream_url`` parameter
- Player error handling now are called from :meth:`MusicClient.on_player_error()`