When `m_started` is true, we're waiting less time than we are feeding data (900 * frames / m_format.m_sampleRate = 0.9*data_in_seconds).  This has the potential of timing out even though we could afford to wait a bit longer (it's unlikely, but could happen?)  Unless we know that this branch is causing problems, I'd tend to not return an error in that case - we're waiting only 10-11ms in this branch normally.  Thus, I'd either increase the time we wait or drop the error if m_started is true.