edde746
422db75b5b
feat(music): mpv audio playback engine with gapless queue service
...
Audio-only mpv core on every platform (dedicated
com.plezy/mpv_audio_player channels): parameterized android/windows/
linux mpv plugins and a new apple MpvAudioPlayerCore, all skipping
video/window paths (vid=no, audio-display=no, gapless-audio=weak).
MusicPlaybackService drives an in-memory queue with shuffle/repeat,
file-loaded-event gapless arming (property edges coalesce and the
android bridge drops them), per-track progress reporting, OS media
controls, audio focus, sleep timer, and error auto-skip.
PlaybackCoordinator enforces one live native player: starting video
disposes the audio core first.
2026-07-05 19:26:28 +02:00
edde746
90c4fe5458
feat(audio): add Kodi-style stereo downmix with center channel boost
2026-07-05 14:29:57 +02:00
edde746
be072365fc
fix(player): scope event-channel cancel to the owning instance
...
Player backends share static per-backend EventChannel names, so two
overlapping instances (episode handoff, quick exit/reopen) collide:
the newer instance's listen displaces the older sink, the older
instance's late cancel then tears down the newer stream — silently
freezing its events — and the final cancel earns the engine's
"No active stream to cancel" reply, which the framework can only
report as an uncatchable fatal FlutterError (363 events).
Track the owning instance per channel: only the current owner sends
the native cancel; a displaced instance drops its dead subscription.
Residual benign teardown races are dropped in beforeSend.
2026-07-05 14:16:04 +02:00
edde746
6d95e35448
feat(tvos): AVPlayer Atmos sink wiring + Atmos output diagnostics
...
Re-enables Audio Passthrough on Apple TV against the MPVKit EAC3-JOC
AVPlayer sink (pin bump to v1.0.8 follows), adds an AVPlayer test
harness + diagnostics screen for #1300 , and makes loudnorm yield while
passthrough is active (fixes a latent spdif conflict on desktop too).
2026-07-02 15:52:10 +02:00
edde746
21c4ab430e
feat(android): tune frame rate and subtitle rendering
2026-06-24 01:34:03 +02:00
edde746
618251b8eb
fix(player): attach external subtitles during open
2026-06-15 17:21:08 +02:00
edde746
8198ea9522
fix(android): wire ExoPlayer passthrough control
2026-06-15 13:31:42 +02:00
edde746
27723e6f29
fix(video): sync first-frame background state
2026-06-15 12:05:29 +02:00
edde746
6292685b5d
fix(player): fetch Android mpv stats off main thread
2026-06-15 12:04:58 +02:00
edde746
7195702242
fix(player): repair Plex transcode seeking
...
close #1341
2026-06-14 23:39:05 +02:00
edde746
f3cb508649
fix(player): wait for mpv subtitles after load
...
close #1331
2026-06-13 23:52:19 +02:00
edde746
75ba6b0627
fix(player): isolate dispose teardown races
2026-06-13 13:23:29 +02:00
edde746
bd0a0c5d6b
feat(android): loudness normalization for exoplayer via audiofx
...
close #1289
2026-06-12 12:38:57 +02:00
edde746
e54bbd11f1
feat(player): passthrough state tracking + sync-layer position/passthrough getters
...
Includes the mpv passthrough rate-suspend wiring (passthrough cannot
scaletempo; suspended while rate != 1.0) that the new getters report.
2026-06-11 09:16:01 +02:00
edde746
cd9498abb8
refactor(player): centralize playback opening
...
close #1280
2026-06-10 02:26:26 +02:00
edde746
985c279b1f
fix(exoplayer): correct transcode seek position double-count
2026-06-02 06:23:08 +02:00
edde746
6438b444bf
fix(player): clarify Dolby Vision playback logging
2026-05-31 06:56:18 +02:00
edde746
1685ecc991
fix(playback): prevent native subtitle autoselect
2026-05-30 00:05:29 +02:00
edde746
2b7ea5fe02
feat(video): add custom zoom controls
...
close #1159
2026-05-29 00:06:47 +02:00
edde746
ba62129414
fix(playback): support Apple DV conversion
2026-05-28 00:33:20 +02:00
edde746
c93a266722
fix(plex): support no-burn transcode subtitles
2026-05-20 17:21:31 +02:00
edde746
f4f2571168
fix(android): apply dv conversion mode during init
2026-05-18 20:32:34 +02:00
edde746
a679bae354
fix(android): expose DV conversion setting
2026-05-18 16:30:14 +02:00
edde746
12b006ee0c
fix(tvos): prime display criteria from metadata
2026-05-14 19:51:33 +02:00
edde746
12073ea134
fix(player): clear stale tracks before opening media
...
close #1028
2026-05-13 09:22:17 +02:00
edde746
d0bd919ff4
refactor: migrate models to freezed + json_serializable
2026-05-11 12:54:26 +02:00
edde746
9b248a7a5b
fix(macos): restore video layer on focus
2026-05-11 10:13:05 +02:00
edde746
bb66ab6526
fix(player): sync restored volume state
2026-05-09 11:10:49 +02:00
edde746
5d2302b322
fix(player): stabilize Apple timeline progress
2026-05-08 12:34:07 +02:00
edde746
e10cc7d273
fix(player): accumulate repeated seeks
2026-05-08 06:57:41 +02:00
edde746
94dbae0af9
fix(playback): prevent spurious seek jumps
...
close #946
2026-05-05 09:52:19 +02:00
edde746
955bc9548c
refactor: adopt shared mixins, helpers, and sliver widgets
2026-05-05 03:06:56 +02:00
edde746
ed4be7b96d
refactor: strip obvious comments
2026-05-04 22:40:18 +02:00
edde746
aa3c83bad1
fix(jellyfin): handle external transcode subtitles
2026-05-03 10:12:11 +02:00
edde746
036d99f11f
perf(android): optimize DV conversion hot path
...
Remove avoidable per-RPU allocations and copies during DV fallback conversion, and add debug controls to force conversion modes while profiling playback.
2026-05-01 17:50:59 +02:00
edde746
9bd5732f2b
chore: clean up redundant comments
2026-05-01 05:02:26 +02:00
edde746
c5867861eb
fix(playback): coalesce concurrent player init to fix MPV hang
2026-04-28 04:16:02 +02:00
edde746
52b70a0080
perf(mediaquery): use scoped accessors (sizeOf, paddingOf, etc.)
2026-04-25 12:30:53 +02:00
edde746
feba5b6f74
lint: enforce unawaited_futures, prefer_final_locals, etc.
2026-04-25 12:27:28 +02:00
edde746
d0a93d57dd
refactor: codebase review cleanup
2026-04-25 03:16:11 +02:00
edde746
3a69e49ab8
perf: parallelize playback startup
2026-04-24 23:20:31 +02:00
edde746
839465b7f2
feat(exoplayer): box-fit modes (letterbox/cover/stretch)
2026-04-21 18:17:25 +02:00
edde746
ee020d81bd
refactor: trakt/download hardening and cleanup sweep
2026-04-21 13:57:03 +02:00
edde746
5937e5c721
refactor: extract shared mixins and helpers to dedupe
2026-04-20 21:25:50 +02:00
edde746
1fd415ae31
feat(android): display switch delay
...
close #894
2026-04-20 17:34:54 +02:00
edde746
3da51f9d64
chore: pre-commit ci hook, dart format
2026-04-18 12:40:35 +02:00
edde746
91057c12a4
feat: bold/italic subtitle toggles
...
close #883
2026-04-17 15:03:23 +02:00
edde746
1e62c6c756
feat: bandwidth limit modal on stream 500
2026-04-17 13:12:07 +02:00
edde746
8b40e0993f
fix: normalize EOF playback state
...
close #828
2026-04-09 05:55:03 +02:00
edde746
ad8faab9ea
fix: android video surface lifecycle management
...
close #771
2026-03-29 18:07:50 +02:00