status_t BMediaFormats::RewindFormats() { if (!sLock.IsLocked() || sLock.LockingThread() != find_thread(NULL)) { // TODO: Shouldn't we simply drop into the debugger in this case? return B_NOT_ALLOWED; } fIteratorIndex = 0; return B_OK; }
status_t BMediaFormats::GetNextFormat(media_format* _format, media_format_description* _description) { if (!sLock.IsLocked() || sLock.LockingThread() != find_thread(NULL)) { // TODO: Shouldn't we simply drop into the debugger in this case? return B_NOT_ALLOWED; } if (fIteratorIndex == 0) { // This is the first call, so let's make sure we have current data to // operate on. status_t status = update_media_formats(); if (status < B_OK) return status; } meta_format* format = sFormats.ItemAt(fIteratorIndex++); if (format == NULL) return B_BAD_INDEX; return B_OK; }