Bug 654787 - part3: Use OnAudioDataRequest{Completed, Failed} in ReaderProxy; r=jwwang
MozReview-Commit-ID: A4vUGJ64QrB
--- a/dom/media/ReaderProxy.cpp
+++ b/dom/media/ReaderProxy.cpp
@@ -28,17 +28,16 @@ ReaderProxy::ReaderProxy(AbstractThread*
ReaderProxy::~ReaderProxy()
{}
media::TimeUnit
ReaderProxy::StartTime() const
{
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
- MOZ_ASSERT(!mShutdown);
return mStartTime.ref();
}
RefPtr<ReaderProxy::MetadataPromise>
ReaderProxy::ReadMetadata()
{
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
MOZ_ASSERT(!mShutdown);
@@ -49,35 +48,48 @@ ReaderProxy::ReadMetadata()
->Then(mOwnerThread,
__func__,
this,
&ReaderProxy::OnMetadataRead,
&ReaderProxy::OnMetadataNotRead);
}
RefPtr<ReaderProxy::AudioDataPromise>
+ReaderProxy::OnAudioDataRequestCompleted(RefPtr<AudioData> aAudio)
+{
+ MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
+
+ int64_t startTime = StartTime().ToMicroseconds();
+ aAudio->AdjustForStartTime(startTime);
+ return AudioDataPromise::CreateAndResolve(aAudio.forget(), __func__);
+}
+
+RefPtr<ReaderProxy::AudioDataPromise>
+ReaderProxy::OnAudioDataRequestFailed(const MediaResult& aError)
+{
+ MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
+
+ return AudioDataPromise::CreateAndReject(aError, __func__);
+}
+
+RefPtr<ReaderProxy::AudioDataPromise>
ReaderProxy::RequestAudioData()
{
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
MOZ_ASSERT(!mShutdown);
- int64_t startTime = StartTime().ToMicroseconds();
return InvokeAsync(mReader->OwnerThread(),
mReader.get(),
__func__,
&MediaFormatReader::RequestAudioData)
->Then(mOwnerThread,
__func__,
- [startTime](RefPtr<AudioData> aAudio) {
- aAudio->AdjustForStartTime(startTime);
- return AudioDataPromise::CreateAndResolve(aAudio.forget(), __func__);
- },
- [](const MediaResult& aError) {
- return AudioDataPromise::CreateAndReject(aError, __func__);
- });
+ this,
+ &ReaderProxy::OnAudioDataRequestCompleted,
+ &ReaderProxy::OnAudioDataRequestFailed);
}
RefPtr<ReaderProxy::VideoDataPromise>
ReaderProxy::RequestVideoData(const media::TimeUnit& aTimeThreshold)
{
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
MOZ_ASSERT(!mShutdown);
--- a/dom/media/ReaderProxy.h
+++ b/dom/media/ReaderProxy.h
@@ -87,16 +87,21 @@ public:
void SetSeamlessLoopingEnabled(bool aEnabled);
private:
~ReaderProxy();
RefPtr<MetadataPromise> OnMetadataRead(MetadataHolder&& aMetadata);
RefPtr<MetadataPromise> OnMetadataNotRead(const MediaResult& aError);
void UpdateDuration();
+ RefPtr<ReaderProxy::AudioDataPromise> OnAudioDataRequestCompleted(
+ RefPtr<AudioData> aAudio);
+ RefPtr<ReaderProxy::AudioDataPromise> OnAudioDataRequestFailed(
+ const MediaResult& aError);
+
const RefPtr<AbstractThread> mOwnerThread;
const RefPtr<MediaFormatReader> mReader;
bool mShutdown = false;
Maybe<media::TimeUnit> mStartTime;
// State-watching manager.
WatchManager<ReaderProxy> mWatchManager;