An early seek right after set_state(PLAYING) raced the pipeline's preroll and GStreamer silently dropped it, so a configured custom rate only took effect after the first EOS loop-restart. Instead, flag the pending seek and fire it from the first ASYNC_DONE bus message, once the pipeline is actually ready to seek. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>