PlayerThread: check if total_time is valid before using it
PlayerControl: use std::chrono::duration for Seek()