+ while (true) {
+ optional<DCPTime> t = _butler->get_audio (reinterpret_cast<float*> (out_p), frames);
+ if (!t || DCPTime(uncorrected_time() - *t) < one_video_frame()) {
+ /* There was an underrun or this audio is on time; carry on */
+ break;
+ }
+ /* The audio we just got was (very) late; drop it and get some more. */
+ }