mlv_play_start_fps_timer looks for an exact match for the FPS, to three decimal places. This is a problem when FPS override is not optimized for "Exact FPS", and even the 50D non-overridden frame rate is not exactly 30 (or 29.97) fps. This is annoying because it means it is not possible to use "exact" playback mode to drop frames, even if the actual FPS is very close to one of the ideal ones.
But there's more. If it does not find a match, it not only cancels "exact" playback mode if it is on, but it also skips the code for prepping the queue and counters. That means if someone switches to "exact" playback mode during an active playback,
mlv_play actually gets stuck in a while loop and the playback hangs.