зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1299072: P18. Use MediaResult with InitPromise. r=gerald
MozReview-Commit-ID: JiLgiyxvfNC --HG-- extra : rebase_source : 4cc453a5fe7b1e4f4b865c31a24a5feed64df7e4
This commit is contained in:
Родитель
ad3b418b6d
Коммит
70ed5282de
|
@ -218,7 +218,7 @@ BenchmarkPlayback::InitDecoder(TrackInfo&& aInfo)
|
|||
[this, ref](TrackInfo::TrackType aTrackType) {
|
||||
InputExhausted();
|
||||
},
|
||||
[this, ref](MediaDataDecoder::DecoderFailureReason aReason) {
|
||||
[this, ref](MediaResult aError) {
|
||||
MainThreadShutdown();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -479,11 +479,11 @@ MediaFormatReader::EnsureDecoderInitialized(TrackType aTrack)
|
|||
self->SetVideoDecodeThreshold();
|
||||
self->ScheduleUpdate(aTrack);
|
||||
},
|
||||
[self, aTrack] (MediaDataDecoder::DecoderFailureReason aResult) {
|
||||
[self, aTrack] (MediaResult aError) {
|
||||
auto& decoder = self->GetDecoderData(aTrack);
|
||||
decoder.mInitPromise.Complete();
|
||||
decoder.ShutdownDecoder();
|
||||
self->NotifyError(aTrack);
|
||||
self->NotifyError(aTrack, aError);
|
||||
}));
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -279,7 +279,7 @@ MP4Decoder::IsVideoAccelerated(layers::LayersBackend aBackend, nsIGlobalObject*
|
|||
taskQueue->AwaitShutdownAndIdle();
|
||||
promise->MaybeResolve(result);
|
||||
},
|
||||
[promise, decoder, taskQueue] (MediaDataDecoder::DecoderFailureReason aResult) {
|
||||
[promise, decoder, taskQueue] (MediaResult aError) {
|
||||
decoder->Shutdown();
|
||||
taskQueue->BeginShutdown();
|
||||
taskQueue->AwaitShutdownAndIdle();
|
||||
|
|
|
@ -215,13 +215,8 @@ protected:
|
|||
virtual ~MediaDataDecoder() {};
|
||||
|
||||
public:
|
||||
enum class DecoderFailureReason : uint8_t {
|
||||
INIT_ERROR,
|
||||
CANCELED
|
||||
};
|
||||
|
||||
typedef TrackInfo::TrackType TrackType;
|
||||
typedef MozPromise<TrackType, DecoderFailureReason, /* IsExclusive = */ true> InitPromise;
|
||||
typedef MozPromise<TrackType, MediaResult, /* IsExclusive = */ true> InitPromise;
|
||||
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaDataDecoder)
|
||||
|
||||
|
|
|
@ -61,14 +61,14 @@ OpusDataDecoder::Init()
|
|||
uint8_t *p = mInfo.mCodecSpecificConfig->Elements();
|
||||
if (length < sizeof(uint64_t)) {
|
||||
OPUS_DEBUG("CodecSpecificConfig too short to read codecDelay!");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
int64_t codecDelay = BigEndian::readUint64(p);
|
||||
length -= sizeof(uint64_t);
|
||||
p += sizeof(uint64_t);
|
||||
if (NS_FAILED(DecodeHeader(p, length))) {
|
||||
OPUS_DEBUG("Error decoding header!");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
int r;
|
||||
|
@ -84,7 +84,7 @@ OpusDataDecoder::Init()
|
|||
if (codecDelay != FramesToUsecs(mOpusParser->mPreSkip,
|
||||
mOpusParser->mRate).value()) {
|
||||
NS_WARNING("Invalid Opus header: CodecDelay and pre-skip do not match!");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
if (mInfo.mRate != (uint32_t)mOpusParser->mRate) {
|
||||
|
@ -95,7 +95,7 @@ OpusDataDecoder::Init()
|
|||
}
|
||||
|
||||
return r == OPUS_OK ? InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__)
|
||||
: InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
: InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
|
|
@ -78,22 +78,22 @@ TheoraDecoder::Init()
|
|||
if (!XiphExtradataToHeaders(headers, headerLens,
|
||||
mInfo.mCodecSpecificConfig->Elements(),
|
||||
mInfo.mCodecSpecificConfig->Length())) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
for (size_t i = 0; i < headers.Length(); i++) {
|
||||
if (NS_FAILED(DoDecodeHeader(headers[i], headerLens[i]))) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
}
|
||||
if (mPacketCount != 3) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
mTheoraDecoderContext = th_decode_alloc(&mTheoraInfo, mTheoraSetupInfo);
|
||||
if (mTheoraDecoderContext) {
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
|
||||
} else {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ VPXDecoder::Init()
|
|||
config.w = config.h = 0; // set after decode
|
||||
|
||||
if (!dx || vpx_codec_dec_init(&mVPX, dx, &config, 0)) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
|
||||
}
|
||||
|
|
|
@ -72,11 +72,11 @@ VorbisDataDecoder::Init()
|
|||
if (!XiphExtradataToHeaders(headers, headerLens,
|
||||
mInfo.mCodecSpecificConfig->Elements(),
|
||||
mInfo.mCodecSpecificConfig->Length())) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
for (size_t i = 0; i < headers.Length(); i++) {
|
||||
if (NS_FAILED(DecodeHeader(headers[i], headerLens[i]))) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,12 +84,12 @@ VorbisDataDecoder::Init()
|
|||
|
||||
int r = vorbis_synthesis_init(&mVorbisDsp, &mVorbisInfo);
|
||||
if (r) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
r = vorbis_block_init(&mVorbisDsp, &mVorbisBlock);
|
||||
if (r) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
if (mInfo.mRate != (uint32_t)mVorbisDsp.vi->rate) {
|
||||
|
@ -103,7 +103,7 @@ VorbisDataDecoder::Init()
|
|||
|
||||
AudioConfig::ChannelLayout layout(mVorbisDsp.vi->channels);
|
||||
if (!layout.IsValid()) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__);
|
||||
|
|
|
@ -196,7 +196,7 @@ GMPAudioDecoder::GMPInitDone(GMPAudioDecoderProxy* aGMP)
|
|||
MOZ_ASSERT(IsOnGMPThread());
|
||||
|
||||
if (!aGMP) {
|
||||
mInitPromise.RejectIfExists(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
return;
|
||||
}
|
||||
if (mInitPromise.IsEmpty()) {
|
||||
|
@ -217,7 +217,7 @@ GMPAudioDecoder::GMPInitDone(GMPAudioDecoderProxy* aGMP)
|
|||
mAdapter);
|
||||
if (NS_FAILED(rv)) {
|
||||
aGMP->Close();
|
||||
mInitPromise.Reject(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.Reject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -239,7 +239,7 @@ GMPAudioDecoder::Init()
|
|||
InitTags(tags);
|
||||
UniquePtr<GetGMPAudioDecoderCallback> callback(new GMPInitDoneCallback(this));
|
||||
if (NS_FAILED(mMPS->GetGMPAudioDecoder(mCrashHelper, &tags, GetNodeId(), Move(callback)))) {
|
||||
mInitPromise.Reject(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.Reject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return promise;
|
||||
|
@ -291,7 +291,7 @@ GMPAudioDecoder::Drain()
|
|||
void
|
||||
GMPAudioDecoder::Shutdown()
|
||||
{
|
||||
mInitPromise.RejectIfExists(MediaDataDecoder::DecoderFailureReason::CANCELED, __func__);
|
||||
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
|
||||
if (!mGMP) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -233,7 +233,7 @@ GMPVideoDecoder::GMPInitDone(GMPVideoDecoderProxy* aGMP, GMPVideoHost* aHost)
|
|||
MOZ_ASSERT(IsOnGMPThread());
|
||||
|
||||
if (!aGMP) {
|
||||
mInitPromise.RejectIfExists(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
return;
|
||||
}
|
||||
MOZ_ASSERT(aHost);
|
||||
|
@ -262,7 +262,7 @@ GMPVideoDecoder::GMPInitDone(GMPVideoDecoderProxy* aGMP, GMPVideoHost* aHost)
|
|||
} else {
|
||||
// Unrecognized mime type
|
||||
aGMP->Close();
|
||||
mInitPromise.Reject(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.Reject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
return;
|
||||
}
|
||||
codec.mWidth = mConfig.mImage.width;
|
||||
|
@ -274,7 +274,7 @@ GMPVideoDecoder::GMPInitDone(GMPVideoDecoderProxy* aGMP, GMPVideoHost* aHost)
|
|||
PR_GetNumberOfProcessors());
|
||||
if (NS_FAILED(rv)) {
|
||||
aGMP->Close();
|
||||
mInitPromise.Reject(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.Reject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -308,7 +308,7 @@ GMPVideoDecoder::Init()
|
|||
InitTags(tags);
|
||||
UniquePtr<GetGMPVideoDecoderCallback> callback(new GMPInitDoneCallback(this));
|
||||
if (NS_FAILED(mMPS->GetGMPVideoDecoder(mCrashHelper, &tags, GetNodeId(), Move(callback)))) {
|
||||
mInitPromise.Reject(MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.Reject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return promise;
|
||||
|
@ -364,7 +364,7 @@ GMPVideoDecoder::Drain()
|
|||
void
|
||||
GMPVideoDecoder::Shutdown()
|
||||
{
|
||||
mInitPromise.RejectIfExists(MediaDataDecoder::DecoderFailureReason::CANCELED, __func__);
|
||||
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
|
||||
// Note that this *may* be called from the proxy thread also.
|
||||
if (!mGMP) {
|
||||
return;
|
||||
|
|
|
@ -75,11 +75,11 @@ public:
|
|||
mSurfaceTexture = AndroidSurfaceTexture::Create();
|
||||
if (!mSurfaceTexture) {
|
||||
NS_WARNING("Failed to create SurfaceTexture for video decode\n");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
if (NS_FAILED(InitDecoder(mSurfaceTexture->JavaSurface()))) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
|
||||
|
@ -260,7 +260,7 @@ MediaCodecDataDecoder::Init()
|
|||
return NS_SUCCEEDED(rv) ?
|
||||
InitPromise::CreateAndResolve(type, __func__) :
|
||||
InitPromise::CreateAndReject(
|
||||
MediaDataDecoder::DecoderFailureReason::INIT_ERROR, __func__);
|
||||
NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
|
|
@ -196,7 +196,7 @@ public:
|
|||
mSurfaceTexture = AndroidSurfaceTexture::Create();
|
||||
if (!mSurfaceTexture) {
|
||||
NS_WARNING("Failed to create SurfaceTexture for video decode\n");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
// Register native methods.
|
||||
|
@ -208,7 +208,7 @@ public:
|
|||
|
||||
mJavaDecoder = CodecProxy::Create(mFormat, mSurfaceTexture->JavaSurface(), mJavaCallbacks);
|
||||
if (mJavaDecoder == nullptr) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
mInputDurations.Clear();
|
||||
|
@ -306,7 +306,7 @@ public:
|
|||
|
||||
mJavaDecoder = CodecProxy::Create(mFormat, nullptr, mJavaCallbacks);
|
||||
if (mJavaDecoder == nullptr) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__);
|
||||
|
|
|
@ -57,7 +57,7 @@ AppleATDecoder::Init()
|
|||
{
|
||||
if (!mFormatID) {
|
||||
NS_ERROR("Non recognised format");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return InitPromise::CreateAndResolve(TrackType::kAudioTrack, __func__);
|
||||
|
|
|
@ -71,7 +71,7 @@ AppleVTDecoder::Init()
|
|||
return InitPromise::CreateAndResolve(TrackType::kVideoTrack, __func__);
|
||||
}
|
||||
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -33,7 +33,7 @@ FFmpegAudioDecoder<LIBAV_VER>::Init()
|
|||
nsresult rv = InitDecoder();
|
||||
|
||||
return rv == NS_OK ? InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__)
|
||||
: InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
: InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -121,7 +121,7 @@ RefPtr<MediaDataDecoder::InitPromise>
|
|||
FFmpegVideoDecoder<LIBAV_VER>::Init()
|
||||
{
|
||||
if (NS_FAILED(InitDecoder())) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
|
||||
|
|
|
@ -57,7 +57,7 @@ GonkAudioDecoderManager::Init()
|
|||
if (InitMediaCodecProxy()) {
|
||||
return InitPromise::CreateAndResolve(TrackType::kAudioTrack, __func__);
|
||||
} else {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -141,7 +141,7 @@ GonkDecoderManager::Shutdown()
|
|||
mDecoder = nullptr;
|
||||
}
|
||||
|
||||
mInitPromise.RejectIfExists(DecoderFailureReason::CANCELED, __func__);
|
||||
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ class GonkDecoderManager : public android::AHandler {
|
|||
public:
|
||||
typedef TrackInfo::TrackType TrackType;
|
||||
typedef MediaDataDecoder::InitPromise InitPromise;
|
||||
typedef MediaDataDecoder::DecoderFailureReason DecoderFailureReason;
|
||||
|
||||
virtual ~GonkDecoderManager() {}
|
||||
|
||||
|
|
|
@ -130,25 +130,25 @@ GonkVideoDecoderManager::Init()
|
|||
|
||||
if (uint32_t(mConfig.mImage.width * mConfig.mImage.height) > maxWidth * maxHeight) {
|
||||
GVDM_LOG("Video resolution exceeds hw codec capability");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
// Validate the container-reported frame and pictureRect sizes. This ensures
|
||||
// that our video frame creation code doesn't overflow.
|
||||
if (!IsValidVideoRegion(mConfig.mImage, mConfig.ImageRect(), mConfig.mDisplay)) {
|
||||
GVDM_LOG("It is not a valid region");
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
mReaderTaskQueue = AbstractThread::GetCurrent()->AsTaskQueue();
|
||||
MOZ_ASSERT(mReaderTaskQueue);
|
||||
|
||||
if (mDecodeLooper.get() != nullptr) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
if (!InitLoopers(MediaData::VIDEO_DATA)) {
|
||||
return InitPromise::CreateAndReject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
}
|
||||
|
||||
RefPtr<InitPromise> p = mInitPromise.Ensure(__func__);
|
||||
|
@ -672,7 +672,7 @@ GonkVideoDecoderManager::codecReserved()
|
|||
|
||||
if (rv != OK) {
|
||||
GVDM_LOG("Failed to configure codec!!!!");
|
||||
mInitPromise.Reject(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
mInitPromise.Reject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -683,7 +683,7 @@ void
|
|||
GonkVideoDecoderManager::codecCanceled()
|
||||
{
|
||||
GVDM_LOG("codecCanceled");
|
||||
mInitPromise.RejectIfExists(DecoderFailureReason::CANCELED, __func__);
|
||||
mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__);
|
||||
}
|
||||
|
||||
// Called on GonkDecoderManager::mTaskLooper thread.
|
||||
|
|
|
@ -169,7 +169,7 @@ OmxDataDecoder::Init()
|
|||
MOZ_ASSERT(self->mOmxState != OMX_StateIdle);
|
||||
},
|
||||
[self] () {
|
||||
self->RejectInitPromise(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
self->RejectInitPromise(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
});
|
||||
|
||||
return p;
|
||||
|
@ -551,13 +551,13 @@ OmxDataDecoder::ResolveInitPromise(const char* aMethodName)
|
|||
}
|
||||
|
||||
void
|
||||
OmxDataDecoder::RejectInitPromise(DecoderFailureReason aReason, const char* aMethodName)
|
||||
OmxDataDecoder::RejectInitPromise(MediaResult aError, const char* aMethodName)
|
||||
{
|
||||
RefPtr<OmxDataDecoder> self = this;
|
||||
nsCOMPtr<nsIRunnable> r =
|
||||
NS_NewRunnableFunction([self, aReason, aMethodName] () {
|
||||
NS_NewRunnableFunction([self, aError, aMethodName] () {
|
||||
MOZ_ASSERT(self->mReaderTaskQueue->IsCurrentThreadIn());
|
||||
self->mInitPromise.RejectIfExists(aReason, aMethodName);
|
||||
self->mInitPromise.RejectIfExists(aError, aMethodName);
|
||||
});
|
||||
mReaderTaskQueue->Dispatch(r.forget());
|
||||
}
|
||||
|
@ -583,7 +583,7 @@ OmxDataDecoder::OmxStateRunner()
|
|||
MOZ_ASSERT(self->mOmxState == OMX_StateIdle);
|
||||
},
|
||||
[self] () {
|
||||
self->RejectInitPromise(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
self->RejectInitPromise(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
});
|
||||
|
||||
// Allocate input and output buffers.
|
||||
|
@ -591,7 +591,7 @@ OmxDataDecoder::OmxStateRunner()
|
|||
for(const auto id : types) {
|
||||
if (NS_FAILED(AllocateBuffers(id))) {
|
||||
LOG("Failed to allocate buffer on port %d", id);
|
||||
RejectInitPromise(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
RejectInitPromise(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -606,7 +606,7 @@ OmxDataDecoder::OmxStateRunner()
|
|||
self->ResolveInitPromise(__func__);
|
||||
},
|
||||
[self] () {
|
||||
self->RejectInitPromise(DecoderFailureReason::INIT_ERROR, __func__);
|
||||
self->RejectInitPromise(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
|
||||
});
|
||||
} else if (mOmxState == OMX_StateExecuting) {
|
||||
// Configure codec once it gets OMX_StateExecuting state.
|
||||
|
|
|
@ -87,7 +87,7 @@ protected:
|
|||
|
||||
void ResolveInitPromise(const char* aMethodName);
|
||||
|
||||
void RejectInitPromise(DecoderFailureReason aReason, const char* aMethodName);
|
||||
void RejectInitPromise(MediaResult aError, const char* aMethodName);
|
||||
|
||||
void OmxStateRunner();
|
||||
|
||||
|
|
|
@ -249,7 +249,7 @@ H264Converter::OnDecoderInitDone(const TrackType aTrackType)
|
|||
}
|
||||
|
||||
void
|
||||
H264Converter::OnDecoderInitFailed(MediaDataDecoder::DecoderFailureReason aReason)
|
||||
H264Converter::OnDecoderInitFailed(MediaResult aError)
|
||||
{
|
||||
mInitPromiseRequest.Complete();
|
||||
mCallback->Error(MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR,
|
||||
|
|
|
@ -51,7 +51,7 @@ private:
|
|||
void UpdateConfigFromExtraData(MediaByteBuffer* aExtraData);
|
||||
|
||||
void OnDecoderInitDone(const TrackType aTrackType);
|
||||
void OnDecoderInitFailed(MediaDataDecoder::DecoderFailureReason aReason);
|
||||
void OnDecoderInitFailed(MediaResult aError);
|
||||
|
||||
RefPtr<PlatformDecoderModule> mPDM;
|
||||
VideoInfo mOriginalConfig;
|
||||
|
|
Загрузка…
Ссылка в новой задаче