bool MediaDecodeTask::CreateReader() { MOZ_ASSERT(NS_IsMainThread()); nsRefPtr<BufferMediaResource> resource = new BufferMediaResource(static_cast<uint8_t*> (mBuffer), mLength, mPrincipal, mContentType); MOZ_ASSERT(!mBufferDecoder); mBufferDecoder = new BufferDecoder(resource); // If you change this list to add support for new decoders, please consider // updating HTMLMediaElement::CreateDecoder as well. mDecoderReader = DecoderTraits::CreateReader(mContentType, mBufferDecoder); if (!mDecoderReader) { return false; } nsresult rv = mDecoderReader->Init(nullptr); if (NS_FAILED(rv)) { return false; } if (!mDecoderReader->EnsureTaskQueue()) { return false; } return true; }
explicit TestBinding(const char* aFileName = "gizmo.mp4") : decoder(new MP4Decoder()) , resource(new MockMediaResource(aFileName)) , reader(new MP4Reader(decoder)) { EXPECT_EQ(NS_OK, Preferences::SetBool( "media.fragmented-mp4.use-blank-decoder", true)); EXPECT_EQ(NS_OK, resource->Open(nullptr)); decoder->SetResource(resource); reader->Init(nullptr); reader->EnsureTaskQueue(); { // This needs to be done before invoking GetBuffered. This is normally // done by MediaDecoderStateMachine. ReentrantMonitorAutoEnter mon(decoder->GetReentrantMonitor()); reader->SetStartTime(0); } }
bool MediaDecodeTask::CreateReader() { MOZ_ASSERT(NS_IsMainThread()); nsCOMPtr<nsIPrincipal> principal; nsCOMPtr<nsIScriptObjectPrincipal> sop = do_QueryInterface(mDecodeJob.mContext->GetParentObject()); if (sop) { principal = sop->GetPrincipal(); } nsRefPtr<BufferMediaResource> resource = new BufferMediaResource(static_cast<uint8_t*> (mBuffer), mLength, principal, mContentType); MOZ_ASSERT(!mBufferDecoder); mBufferDecoder = new BufferDecoder(resource); // If you change this list to add support for new decoders, please consider // updating HTMLMediaElement::CreateDecoder as well. mDecoderReader = DecoderTraits::CreateReader(mContentType, mBufferDecoder); if (!mDecoderReader) { return false; } nsresult rv = mDecoderReader->Init(nullptr); if (NS_FAILED(rv)) { return false; } if (!mDecoderReader->EnsureTaskQueue()) { return false; } return true; }