SDL, похоже, не обеспечивает легкий крюк для того, что вы хотите. После того, как вы запустите Mix_PlayMusic, у вас есть крючок, который будет уведомлен, когда музыка будет исполнена с Mix_HookMusicFinished, но это все.
Вы можете использовать совершенно независимый механизм часов для видео и надеяться, что время будет «просто выстраиваться в линию» (например, если это 4-минутная песня, это будет выполнено ровно через 4 минуты после вызова игры). Но поскольку я сомневаюсь, что вы разрабатываете для Real-Time OS, результаты не будут идеальными.
Возможно, вы сможете установить крюк через Mix_SetPostMix. «Эффект», который вы установили, на самом деле не предназначен для изменения аудиопотока, а просто будет следить за количеством воспроизводимых образцов и соответствующим образом корректировать видео. (Просто задумываясь здесь.)