зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1397141 - part4 : change mLastError type to MediaResult r=jya
Change mLastError type to MediaResult and send it as parameter to PDM::CreateVideoDecoder in order to get detailed error description. MozReview-Commit-ID: 4sIRXTHsrzr --HG-- extra : rebase_source : 23d72cc72f5683305745024de913f44298d717d5
This commit is contained in:
Родитель
b89748ad91
Коммит
1df67c03cc
|
@ -291,13 +291,16 @@ PDMFactory::CreateDecoderWithPDM(PlatformDecoderModule* aPDM,
|
|||
|
||||
if (MP4Decoder::IsH264(config.mMimeType) && !aParams.mUseNullDecoder) {
|
||||
RefPtr<H264Converter> h = new H264Converter(aPDM, aParams);
|
||||
const nsresult rv = h->GetLastError();
|
||||
if (NS_SUCCEEDED(rv) || rv == NS_ERROR_NOT_INITIALIZED) {
|
||||
const MediaResult result = h->GetLastError();
|
||||
if (NS_SUCCEEDED(result) || result == NS_ERROR_NOT_INITIALIZED) {
|
||||
// The H264Converter either successfully created the wrapped decoder,
|
||||
// or there wasn't enough AVCC data to do so. Otherwise, there was some
|
||||
// problem, for example WMF DLLs were missing.
|
||||
m = h.forget();
|
||||
}
|
||||
if (NS_FAILED(result) && aParams.mError) {
|
||||
*aParams.mError = result;
|
||||
}
|
||||
} else {
|
||||
m = aPDM->CreateVideoDecoder(aParams);
|
||||
}
|
||||
|
|
|
@ -259,15 +259,16 @@ H264Converter::CreateDecoder(const VideoInfo& aConfig,
|
|||
// WMF H.264 Video Decoder and Apple ATDecoder do not support YUV444 format.
|
||||
if (spsdata.profile_idc == 244 /* Hi444PP */ ||
|
||||
spsdata.chroma_format_idc == PDMFactory::kYUV444) {
|
||||
mLastError = NS_ERROR_FAILURE;
|
||||
mLastError = MediaResult(NS_ERROR_FAILURE,
|
||||
RESULT_DETAIL("Not support for YUV444 format."));
|
||||
if (aDiagnostics) {
|
||||
aDiagnostics->SetVideoNotSupported();
|
||||
}
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
} else {
|
||||
// SPS was invalid.
|
||||
mLastError = NS_ERROR_FAILURE;
|
||||
mLastError = MediaResult(NS_ERROR_FAILURE,
|
||||
RESULT_DETAIL("Invalid SPS NAL."));
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
@ -280,11 +281,15 @@ H264Converter::CreateDecoder(const VideoInfo& aConfig,
|
|||
mGMPCrashHelper,
|
||||
mType,
|
||||
mOnWaitingForKeyEvent,
|
||||
mDecoderOptions
|
||||
mDecoderOptions,
|
||||
&mLastError
|
||||
});
|
||||
|
||||
if (!mDecoder) {
|
||||
mLastError = NS_ERROR_FAILURE;
|
||||
MOZ_ASSERT(NS_FAILED(mLastError));
|
||||
mLastError = MediaResult(mLastError.Code(),
|
||||
RESULT_DETAIL("Unable to create H264 decoder, reason = %s.",
|
||||
mLastError.Description().get()));
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ public:
|
|||
// Default so no conversion is performed.
|
||||
return ConversionRequired::kNeedAVCC;
|
||||
}
|
||||
nsresult GetLastError() const { return mLastError; }
|
||||
MediaResult GetLastError() const { return mLastError; }
|
||||
|
||||
private:
|
||||
// Will create the required MediaDataDecoder if need AVCC and we have a SPS NAL.
|
||||
|
@ -99,7 +99,7 @@ private:
|
|||
|
||||
RefPtr<GMPCrashHelper> mGMPCrashHelper;
|
||||
Maybe<bool> mNeedAVCC;
|
||||
nsresult mLastError;
|
||||
MediaResult mLastError;
|
||||
bool mNeedKeyframe = true;
|
||||
const TrackInfo::TrackType mType;
|
||||
MediaEventProducer<TrackInfo::TrackType>* const mOnWaitingForKeyEvent;
|
||||
|
|
Загрузка…
Ссылка в новой задаче