зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1266304. Part 2 - remove unnecessary template parameters. r=kaku.
MozReview-Commit-ID: E2TnNbMvJaR
This commit is contained in:
Родитель
69b738fc15
Коммит
67a95734d1
|
@ -19,6 +19,7 @@ extern LazyLogModule gMediaDecoderLog;
|
|||
// until it gets a sample from both channels, such that we can be guaranteed
|
||||
// to know the start time by the time On{Audio,Video}Decoded is called on MDSM.
|
||||
class StartTimeRendezvous {
|
||||
typedef MediaDecoderReader::MediaDataPromise MediaDataPromise;
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(StartTimeRendezvous);
|
||||
|
||||
public:
|
||||
|
@ -56,23 +57,17 @@ public:
|
|||
return mHaveStartTimePromise.Ensure(__func__);
|
||||
}
|
||||
|
||||
template<typename PromiseType>
|
||||
struct PromiseSampleType {
|
||||
typedef typename PromiseType::ResolveValueType::element_type Type;
|
||||
};
|
||||
|
||||
template<typename PromiseType, MediaData::Type SampleType>
|
||||
RefPtr<PromiseType>
|
||||
ProcessFirstSample(typename PromiseSampleType<PromiseType>::Type* aData)
|
||||
template<MediaData::Type SampleType>
|
||||
RefPtr<MediaDataPromise>
|
||||
ProcessFirstSample(MediaData* aData)
|
||||
{
|
||||
typedef typename PromiseSampleType<PromiseType>::Type DataType;
|
||||
typedef typename PromiseType::Private PromisePrivate;
|
||||
typedef typename MediaDataPromise::Private PromisePrivate;
|
||||
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
|
||||
|
||||
MaybeSetChannelStartTime<SampleType>(aData->mTime);
|
||||
|
||||
RefPtr<PromisePrivate> p = new PromisePrivate(__func__);
|
||||
RefPtr<DataType> data = aData;
|
||||
RefPtr<MediaData> data = aData;
|
||||
RefPtr<StartTimeRendezvous> self = this;
|
||||
AwaitStartTime()->Then(
|
||||
mOwnerThread, __func__,
|
||||
|
@ -194,7 +189,7 @@ MediaDecoderReaderWrapper::RequestAudioData()
|
|||
|
||||
if (!mStartTimeRendezvous->HaveStartTime()) {
|
||||
p = p->Then(mOwnerThread, __func__, mStartTimeRendezvous.get(),
|
||||
&StartTimeRendezvous::ProcessFirstSample<MediaDataPromise, MediaData::AUDIO_DATA>,
|
||||
&StartTimeRendezvous::ProcessFirstSample<MediaData::AUDIO_DATA>,
|
||||
&StartTimeRendezvous::FirstSampleRejected<MediaData::AUDIO_DATA>)
|
||||
->CompletionPromise();
|
||||
}
|
||||
|
@ -223,7 +218,7 @@ MediaDecoderReaderWrapper::RequestVideoData(bool aSkipToNextKeyframe,
|
|||
|
||||
if (!mStartTimeRendezvous->HaveStartTime()) {
|
||||
p = p->Then(mOwnerThread, __func__, mStartTimeRendezvous.get(),
|
||||
&StartTimeRendezvous::ProcessFirstSample<MediaDataPromise, MediaData::VIDEO_DATA>,
|
||||
&StartTimeRendezvous::ProcessFirstSample<MediaData::VIDEO_DATA>,
|
||||
&StartTimeRendezvous::FirstSampleRejected<MediaData::VIDEO_DATA>)
|
||||
->CompletionPromise();
|
||||
}
|
||||
|
|
|
@ -366,7 +366,6 @@ private:
|
|||
RefPtr<SharedTrackInfo> mInfo;
|
||||
};
|
||||
|
||||
template<typename PromiseType>
|
||||
struct DecoderDataWithPromise : public DecoderData {
|
||||
DecoderDataWithPromise(MediaFormatReader* aOwner,
|
||||
MediaData::Type aType,
|
||||
|
@ -374,7 +373,7 @@ private:
|
|||
DecoderData(aOwner, aType, aDecodeAhead)
|
||||
{}
|
||||
|
||||
MozPromiseHolder<PromiseType> mPromise;
|
||||
MozPromiseHolder<MediaDataPromise> mPromise;
|
||||
|
||||
bool HasPromise() override
|
||||
{
|
||||
|
@ -391,8 +390,8 @@ private:
|
|||
}
|
||||
};
|
||||
|
||||
DecoderDataWithPromise<MediaDataPromise> mAudio;
|
||||
DecoderDataWithPromise<MediaDataPromise> mVideo;
|
||||
DecoderDataWithPromise mAudio;
|
||||
DecoderDataWithPromise mVideo;
|
||||
|
||||
// Returns true when the decoder for this track needs input.
|
||||
bool NeedInput(DecoderData& aDecoder);
|
||||
|
|
Загрузка…
Ссылка в новой задаче