☠☠ backed out by adc449224816 ☠ ☠ | |
author | JW Wang <jwwang@mozilla.com> |
Tue, 18 Aug 2015 11:12:39 +0800 | |
changeset 290760 | 157e41e329061531013562a923cdadd8a2afc635 |
parent 290759 | 60a3b1862f71453e459209ee166046867deb958d |
child 290761 | 6226b99f19bd774740cce55d7ba1737554e2d774 |
push id | 5245 |
push user | raliiev@mozilla.com |
push date | Thu, 29 Oct 2015 11:30:51 +0000 |
treeherder | mozilla-beta@dac831dc1bd0 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | cpearce |
bugs | 1195158 |
milestone | 43.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
dom/media/MediaDecoderReader.h | file | annotate | diff | comparison | revisions | |
dom/media/ogg/OggReader.cpp | file | annotate | diff | comparison | revisions |
--- a/dom/media/MediaDecoderReader.h +++ b/dom/media/MediaDecoderReader.h @@ -6,16 +6,17 @@ #if !defined(MediaDecoderReader_h_) #define MediaDecoderReader_h_ #include "mozilla/MozPromise.h" #include "AbstractMediaDecoder.h" #include "MediaInfo.h" #include "MediaData.h" +#include "MediaMetadataManager.h" #include "MediaQueue.h" #include "MediaTimer.h" #include "AudioCompactor.h" #include "Intervals.h" #include "TimeUnits.h" namespace mozilla { @@ -322,16 +323,20 @@ public: virtual bool IsAsync() const { return false; } // Returns true if this decoder reader uses hardware accelerated video // decoding. virtual bool VideoIsHardwareAccelerated() const { return false; } virtual void DisableHardwareAcceleration() {} + TimedMetadataEventSource& TimedMetadataEvent() { + return mTimedMetadataEvent; + } + protected: virtual ~MediaDecoderReader(); // Overrides of this function should decodes an unspecified amount of // audio data, enqueuing the audio data in mAudioQueue. Returns true // when there's more audio to decode, false if the audio is finished, // end of file has been reached, or an un-recoverable read error has // occured. This function blocks until the decode is complete. @@ -413,16 +418,19 @@ protected: // This is a quick-and-dirty way for DecodeAudioData implementations to // communicate the presence of a decoding error to RequestAudioData. We should // replace this with a promise-y mechanism as we make this stuff properly // async. bool mHitAudioDecodeError; bool mShutdown; + // Used to send TimedMetadata to the listener. + TimedMetadataEventProducer mTimedMetadataEvent; + private: // Promises used only for the base-class (sync->async adapter) implementation // of Request{Audio,Video}Data. MozPromiseHolder<AudioDataPromise> mBaseAudioPromise; MozPromiseHolder<VideoDataPromise> mBaseVideoPromise; bool mTaskQueueIsBorrowed;
--- a/dom/media/ogg/OggReader.cpp +++ b/dom/media/ogg/OggReader.cpp @@ -809,20 +809,21 @@ bool OggReader::ReadOggChain() chained = true; tags = newOpusState->GetTags(); } if (chained) { SetChained(true); { - nsAutoPtr<MediaInfo> info(new MediaInfo(mInfo)); - ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); auto t = mDecodedAudioFrames * USECS_PER_S / mInfo.mAudio.mRate; - mDecoder->QueueMetadata(media::TimeUnit::FromMicroseconds(t), info, tags); + mTimedMetadataEvent.Notify( + TimedMetadata(media::TimeUnit::FromMicroseconds(t), + Move(tags), + nsAutoPtr<MediaInfo>(new MediaInfo(mInfo)))); } return true; } return false; } nsresult OggReader::DecodeTheora(ogg_packet* aPacket, int64_t aTimeThreshold)