void SourceBuffer::Detach() { MOZ_ASSERT(NS_IsMainThread()); MSE_DEBUG("Detach"); AbortBufferAppend(); if (mTrackBuffer) { mTrackBuffer->Detach(); } mTrackBuffer = nullptr; mMediaSource = nullptr; }
void SourceBuffer::Abort(ErrorResult& aRv) { MOZ_ASSERT(NS_IsMainThread()); MSE_API("Abort()"); if (!IsAttached()) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); return; } if (mMediaSource->ReadyState() != MediaSourceReadyState::Open) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); return; } AbortBufferAppend(); ResetParserState(); mCurrentAttributes.SetAppendWindowStart(0); mCurrentAttributes.SetAppendWindowEnd(PositiveInfinity<double>()); }
void SourceBuffer::Detach() { MOZ_ASSERT(NS_IsMainThread()); MSE_DEBUG("Detach"); if (!mMediaSource) { MSE_DEBUG("Already detached"); return; } AbortBufferAppend(); if (mTrackBuffersManager) { mTrackBuffersManager->Detach(); mMediaSource->GetDecoder()->GetDemuxer()->DetachSourceBuffer( mTrackBuffersManager.get()); } mTrackBuffersManager = nullptr; mMediaSource = nullptr; }
void SourceBuffer::Detach() { MOZ_ASSERT(NS_IsMainThread()); MSE_DEBUG("Detach"); if (!mMediaSource) { MSE_DEBUG("Already detached"); return; } AbortBufferAppend(); if (mContentManager) { mContentManager->Detach(); if (mIsUsingFormatReader) { mMediaSource->GetDecoder()->GetDemuxer()->DetachSourceBuffer( static_cast<mozilla::TrackBuffersManager*>(mContentManager.get())); } } mContentManager = nullptr; mMediaSource = nullptr; }
void SourceBuffer::Abort(ErrorResult& aRv) { MOZ_ASSERT(NS_IsMainThread()); MSE_API("Abort()"); if (!IsAttached()) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); return; } if (mMediaSource->ReadyState() != MediaSourceReadyState::Open) { aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); return; } AbortBufferAppend(); mTrackBuffer->ResetParserState(); mAppendWindowStart = 0; mAppendWindowEnd = PositiveInfinity<double>(); // Discard the current decoder so no new data will be added to it. MSE_DEBUG("Discarding decoder"); mTrackBuffer->DiscardCurrentDecoder(); }