Bug 1378304. P1 - pass a MediaResource* to DecoderTraits::CreateReader() to reduce the use of AbstractMediaDecoder::GetResource(). r=jya

MozReview-Commit-ID: CKFiqaBznVe

--HG--
extra : rebase_source : 2c78850a82ee610e794488bc90e895b8986737da
extra : source : a0a827722cc16c7a5070e37497cba6e4d414aba2
This commit is contained in:
JW Wang 2017-07-05 14:07:54 +08:00
Родитель ac1c695e0d
Коммит d0a1126090
3 изменённых файлов: 14 добавлений и 11 удалений

Просмотреть файл

@ -339,7 +339,8 @@ DecoderTraits::CreateDecoder(MediaDecoderInit& aInit,
/* static */
MediaDecoderReader*
DecoderTraits::CreateReader(const MediaContainerType& aType,
AbstractMediaDecoder* aDecoder)
AbstractMediaDecoder* aDecoder,
MediaResource* aResource)
{
MOZ_ASSERT(NS_IsMainThread());
MediaDecoderReader* decoderReader = nullptr;
@ -351,23 +352,23 @@ DecoderTraits::CreateReader(const MediaContainerType& aType,
#ifdef MOZ_FMP4
if (MP4Decoder::IsSupportedType(aType,
/* DecoderDoctorDiagnostics* */ nullptr)) {
decoderReader = new MediaFormatReader(aDecoder, new MP4Demuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new MP4Demuxer(aResource));
} else
#endif
if (MP3Decoder::IsSupportedType(aType)) {
decoderReader = new MediaFormatReader(aDecoder, new MP3Demuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new MP3Demuxer(aResource));
} else
if (ADTSDecoder::IsSupportedType(aType)) {
decoderReader = new MediaFormatReader(aDecoder, new ADTSDemuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new ADTSDemuxer(aResource));
} else
if (WaveDecoder::IsSupportedType(aType)) {
decoderReader = new MediaFormatReader(aDecoder, new WAVDemuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new WAVDemuxer(aResource));
} else
if (FlacDecoder::IsSupportedType(aType)) {
decoderReader = new MediaFormatReader(aDecoder, new FlacDemuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new FlacDemuxer(aResource));
} else
if (OggDecoder::IsSupportedType(aType)) {
decoderReader = new MediaFormatReader(aDecoder, new OggDemuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new OggDemuxer(aResource));
} else
#ifdef MOZ_ANDROID_OMX
if (MediaDecoder::IsAndroidMediaPluginEnabled() &&
@ -376,8 +377,7 @@ DecoderTraits::CreateReader(const MediaContainerType& aType,
} else
#endif
if (WebMDecoder::IsSupportedType(aType)) {
decoderReader =
new MediaFormatReader(aDecoder, new WebMDemuxer(aDecoder->GetResource()));
decoderReader = new MediaFormatReader(aDecoder, new WebMDemuxer(aResource));
}
return decoderReader;

Просмотреть файл

@ -21,6 +21,7 @@ class MediaContainerType;
struct MediaDecoderInit;
class MediaDecoderOwner;
class MediaDecoderReader;
class MediaResource;
enum CanPlayStatus {
CANPLAY_NO,
@ -50,7 +51,8 @@ public:
// Create a reader for thew given MIME type aType. Returns null
// if we were unable to create the reader.
static MediaDecoderReader* CreateReader(const MediaContainerType& aType,
AbstractMediaDecoder* aDecoder);
AbstractMediaDecoder* aDecoder,
MediaResource* aResource);
// Returns true if MIME type aType is supported in video documents,
// or false otherwise. Not all platforms support all MIME types, and

Просмотреть файл

@ -193,7 +193,8 @@ MediaDecodeTask::CreateReader()
// If you change this list to add support for new decoders, please consider
// updating HTMLMediaElement::CreateDecoder as well.
mDecoderReader = DecoderTraits::CreateReader(mContainerType, mBufferDecoder);
mDecoderReader =
DecoderTraits::CreateReader(mContainerType, mBufferDecoder, resource);
if (!mDecoderReader) {
return false;