nsresult OmxPromiseLayer::Shutdown() { LOG(""); MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn()); MOZ_ASSERT(!GetBufferHolders(OMX_DirInput)->Length()); MOZ_ASSERT(!GetBufferHolders(OMX_DirOutput)->Length()); return mPlatformLayer->Shutdown(); }
already_AddRefed<BufferData> OmxPromiseLayer::FindBufferById(OMX_DIRTYPE aType, BufferData::BufferID aId) { MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn()); RefPtr<BufferData> holder; BUFFERLIST* holders = GetBufferHolders(aType); for (uint32_t i = 0; i < holders->Length(); i++) { if (holders->ElementAt(i)->ID() == aId) { holder = holders->ElementAt(i); return holder.forget(); } } return nullptr; }
RefPtr<OmxPromiseLayer::OmxBufferPromise> OmxPromiseLayer::FillBuffer(BufferData* aData) { MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn()); LOG("buffer %p", aData->mBuffer); RefPtr<OmxBufferPromise> p = aData->mPromise.Ensure(__func__); OMX_ERRORTYPE err = mPlatformLayer->FillThisBuffer(aData); if (err != OMX_ErrorNone) { OmxBufferFailureHolder failure(err, aData); aData->mPromise.Reject(Move(failure), __func__); } else { aData->mStatus = BufferData::BufferStatus::OMX_COMPONENT; GetBufferHolders(OMX_DirOutput)->AppendElement(aData); } return p; }
RefPtr<OmxPromiseLayer::OmxBufferPromise> OmxPromiseLayer::EmptyBuffer(BufferData* aData) { MOZ_ASSERT(mTaskQueue->IsCurrentThreadIn()); LOG("EmptyBuffer: buffer %p, size %d", aData->mBuffer, aData->mBuffer->nFilledLen); RefPtr<OmxBufferPromise> p = aData->mPromise.Ensure(__func__); OMX_ERRORTYPE err = mPlatformLayer->EmptyThisBuffer(aData); if (err != OMX_ErrorNone) { OmxBufferFailureHolder failure(err, aData); aData->mPromise.Reject(Move(failure), __func__); } else { if (aData->mRawData) { mRawDatas.AppendElement(Move(aData->mRawData)); } aData->mStatus = BufferData::BufferStatus::OMX_COMPONENT; GetBufferHolders(OMX_DirInput)->AppendElement(aData); } return p; }