# Changelog
## v1.0.5
### Breaking Changes
- Prepended `esp_player_frame_t::track_type` for fill/block AV routing;
Omitting it (or `{0}`) yields `NONE` and still works for single-track `av_mask`;
for `MASK_AV`, set AUDIO or VIDEO on every frame
- Changed `esp_player_track_type_t` values to `NONE=0`, `AUDIO=1`, `VIDEO=2`, `MAX=3`
### Features
- Unified `data_queue` as the decoder front-end input buffer
- Added `esp_player_submit_frame()` support for `ESP_PLAYER_MASK_AV` to push audio and video streams
- Allowed `esp_player_seek()` in `IDLE` after a source is set to bookmark the next-run start position
### Bug Fixes
- Fixed `esp_player_run_to_end()` returning before the player entered the `FINISHED` state
- Fixed `esp_player_run_to_end()` blocking when playback failed after it had already started
## v1.0.4~1
### Changes
- Changed dependency version constraints from `^` (automatic minor updates) to `~` (automatic patch updates) to improve compatibility
## v1.0.4
### Features
- Added `esp_player_get_state()` and public `esp_player_state_t` for authoritative playback state queries
### Bug Fixes
- Fixed crash and seek stall from incorrect extractor frame release
- Fixed video decoder reopen with wrong decoded pixel format
- Fixed `player_cmd` task abort on deinit
- Fixed stale input IO after stop/finish when the same URI is replayed
- Fixed brief leftover audio from the previous track after pause, stop, and play a new URI
## v1.0.3
### Changes
- Moved default player task stacks to external memory
- Updated audio and video performance data
### Bug Fixes
- Fixed playback time after seeking when no frame is output
- Fixed fill-mode frame submission timeout handling
- Fixed extractor busy loops while waiting for output
## v1.0.2
### Features
- Added `esp_player_enable_id3_parse()` to make ID3 parsing optional
- Added `esp_player_get_id3_info()` for bare MP3 sources
- Added tests for config/sync/ID3 APIs, seek and event paths, error recovery, and concurrency
### Bug Fixes
- Fixed `esp_player_frame_t.pts` unit documentation to milliseconds
- Fixed redundant `esp_codec_dev` codec chip options restriction from audio/video player example `sdkconfig.defaults`
## v1.0.1~1
### Docs
- Updated example README files to use the latest ESP Board Manager board selection commands and board names
## v1.0.1
### Changes
- Updated GMF component dependencies from `^0.8` to `^1.0` for the ESP-GMF 1.0 release
### Bug Fixes
- Removed extra done_write in audio decoder stop
- Added input state enum to avoid io retry open when failed
- Fixed video decoder pause timeout on seek
## v1.0.0
### Features
- Initial version of `esp_player`