Preserve playback position on quality switch
When SetMaxAudioQuality triggers a stream restart, resume from the current player position instead of restarting at the beginning to avoid audible jumps and keep UX consistent.
This commit is contained in:
@@ -1332,9 +1332,10 @@ async fn run_connection(
|
||||
|
||||
// If currently playing, restart at new quality
|
||||
if current_playing_state == 2 && current_track_id != 0 {
|
||||
let restart_pos = player.status().position_ms;
|
||||
info!("Restarting track {} at new quality format_id={}", current_track_id, format_id);
|
||||
current_buffer_state = 1; // BUFFERING
|
||||
current_position_ms = 0;
|
||||
current_position_ms = restart_pos;
|
||||
send_state!(ws_tx, msg_id);
|
||||
|
||||
let track_id_str = current_track_id.to_string();
|
||||
@@ -1384,7 +1385,7 @@ async fn run_connection(
|
||||
track_id: current_track_id,
|
||||
queue_item_id: current_queue_item_id,
|
||||
duration_ms,
|
||||
start_position_ms: 0,
|
||||
start_position_ms: restart_pos,
|
||||
});
|
||||
let (fallback_sr, fallback_bits, fallback_ch) =
|
||||
quality_fallback_audio_params(*quality);
|
||||
|
||||
Reference in New Issue
Block a user