From 186cb9d08f68bbb5540ab8efaf1dd50376ea29df Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 01:00:23 -0700 Subject: [PATCH 01/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/5eaec29efe38 Author: Arthur Chen Desc: Merge pull request #11393 from chuck-lee/bug-901837_WAP_Push_test_app Bug 901837 - Test app for receiving WAP Push. r=arthurcc ======== https://hg.mozilla.org/integration/gaia-central/rev/0a2692200e33 Author: Chuck Lee Desc: Bug 901837 - Test app for receiving WAP Push. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index f0ca48d5bef..e38c14d25ed 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "fd03fbd18a09517bc5eb4e2af62314421ae7124a", + "revision": "5eaec29efe385d399ebd929d11b0f644b6938677", "repo_path": "/integration/gaia-central" } From 1573d86782a74860afd3954da2f0dc39f83b41e6 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 24 Jan 2013 13:38:32 +0100 Subject: [PATCH 02/82] Bug 831224: Remove trailing whitespaces, r=padenot --HG-- extra : rebase_source : e04ddb59ab953550d988924670c96b73bf7909f2 --- content/media/MediaDecoder.cpp | 2 +- content/media/MediaDecoderReader.h | 4 ++-- content/media/MediaDecoderStateMachine.cpp | 22 +++++++++++----------- content/media/omx/OmxDecoder.h | 2 +- content/media/test/manifest.js | 20 ++++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp index 7e9effd0678..0c0ad4d0298 100644 --- a/content/media/MediaDecoder.cpp +++ b/content/media/MediaDecoder.cpp @@ -632,7 +632,7 @@ nsresult MediaDecoder::Seek(double aTime) if (distanceLeft == distanceRight) { distanceLeft = Abs(leftBound - mCurrentTime); distanceRight = Abs(rightBound - mCurrentTime); - } + } aTime = (distanceLeft < distanceRight) ? leftBound : rightBound; } else { // Seek target is after the end last range in seekable data. diff --git a/content/media/MediaDecoderReader.h b/content/media/MediaDecoderReader.h index 47f128cf9ad..243eb64e743 100644 --- a/content/media/MediaDecoderReader.h +++ b/content/media/MediaDecoderReader.h @@ -456,12 +456,12 @@ public: int64_t aStartTime, int64_t aEndTime, int64_t aCurrentTime) = 0; - + // Called when the decode thread is started, before calling any other // decode, read metadata, or seek functions. Do any thread local setup // in this function. virtual void OnDecodeThreadStart() {} - + // Called when the decode thread is about to finish, after all calls to // any other decode, read metadata, or seek functions. Any backend specific // thread local tear down must be done in this function. Note that another diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index 84e5297a608..eb25714d457 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -140,8 +140,8 @@ private: { MOZ_COUNT_CTOR(StateMachineTracker); NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); - } - + } + ~StateMachineTracker() { NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); @@ -156,7 +156,7 @@ public: // access always occurs after this and uses the monitor to // safely access the decode thread counts. static StateMachineTracker& Instance(); - + // Instantiate the global state machine thread if required. // Call on main thread only. void EnsureGlobalStateMachine(); @@ -244,7 +244,7 @@ StateMachineTracker& StateMachineTracker::Instance() return *sInstance; } -void StateMachineTracker::EnsureGlobalStateMachine() +void StateMachineTracker::EnsureGlobalStateMachine() { NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); ReentrantMonitorAutoEnter mon(mMonitor); @@ -451,7 +451,7 @@ MediaDecoderStateMachine::~MediaDecoderStateMachine() mTimer->Cancel(); mTimer = nullptr; mReader = nullptr; - + StateMachineTracker::Instance().CleanupGlobalStateMachine(); #ifdef XP_WIN timeEndPeriod(1); @@ -490,7 +490,7 @@ void MediaDecoderStateMachine::DecodeThreadRun() { NS_ASSERTION(OnDecodeThread(), "Should be on decode thread."); mReader->OnDecodeThreadStart(); - + { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); @@ -531,7 +531,7 @@ void MediaDecoderStateMachine::DecodeThreadRun() mDecodeThreadIdle = true; LOG(PR_LOG_DEBUG, ("%p Decode thread finished", mDecoder.get())); } - + mReader->OnDecodeThreadFinish(); } @@ -1323,7 +1323,7 @@ void MediaDecoderStateMachine::StartPlayback() NS_ASSERTION(IsPlaying(), "Should report playing by end of StartPlayback()"); if (NS_FAILED(StartAudioThread())) { - NS_WARNING("Failed to create audio thread"); + NS_WARNING("Failed to create audio thread"); } mDecoder->GetReentrantMonitor().NotifyAll(); } @@ -1700,7 +1700,7 @@ MediaDecoderStateMachine::ScheduleDecodeThread() { NS_ASSERTION(OnStateMachineThread(), "Should be on state machine thread."); mDecoder->GetReentrantMonitor().AssertCurrentThreadIn(); - + mStopDecodeThread = false; if (mState >= DECODER_STATE_COMPLETED) { return NS_OK; @@ -1831,7 +1831,7 @@ int64_t MediaDecoderStateMachine::GetUndecodedData() const NS_ASSERTION(mState > DECODER_STATE_DECODING_METADATA, "Must have loaded metadata for GetBuffered() to work"); TimeRanges buffered; - + nsresult res = mDecoder->GetBuffered(&buffered); NS_ENSURE_SUCCESS(res, 0); double currentTime = GetCurrentTime(); @@ -2201,7 +2201,7 @@ nsresult MediaDecoderStateMachine::RunStateMachine() // Ensure we have a decode thread to decode metadata. return ScheduleDecodeThread(); } - + case DECODER_STATE_DECODING: { if (mDecoder->GetState() != MediaDecoder::PLAY_STATE_PLAYING && IsPlaying()) diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 870df892c56..84e7e467358 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -199,7 +199,7 @@ public: return mAudioSource != nullptr; } - bool ReadVideo(VideoFrame *aFrame, int64_t aSeekTimeUs, + bool ReadVideo(VideoFrame *aFrame, int64_t aSeekTimeUs, bool aKeyframeSkip = false, bool aDoSeek = false); bool ReadAudio(AudioFrame *aFrame, int64_t aSeekTimeUs); diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 1940cb36841..05aa7fe8b4e 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -154,10 +154,10 @@ var gPlayTests = [ // Test playback of a WebM file with non-zero start time. { name:"split.webm", type:"video/webm", duration:1.967 }, - + // Test playback of a raw file { name:"seek.yuv", type:"video/x-raw-yuv", duration:1.833 }, - + // A really short, low sample rate, single channel file. This tests whether // we can handle playing files when only push very little audio data to the // hardware. @@ -563,7 +563,7 @@ const DEBUG_TEST_LOOP_FOREVER = false; // 1. Create a new MediaTestManager object. // 2. Create a test startTest function. This takes a test object and a token, // and performs anything necessary to start the test. The test object is an -// element in one of the g*Tests above. Your startTest function must call +// element in one of the g*Tests above. Your startTest function must call // MediaTestManager.start(token) if it starts a test. The test object is // guaranteed to be playable by our supported decoders; you don't need to // check canPlayType. @@ -574,12 +574,12 @@ function MediaTestManager() { // Sets up a MediaTestManager to runs through the 'tests' array, which needs // to be one of, or have the same fields as, the g*Test arrays of tests. Uses - // the user supplied 'startTest' function to initialize the test. This + // the user supplied 'startTest' function to initialize the test. This // function must accept two arguments, the test entry from the 'tests' array, // and a token. Call MediaTestManager.started(token) if you start the test, // and MediaTestManager.finished(token) when the test finishes. You don't have // to start every test, but if you call started() you *must* call finish() - // else you'll timeout. + // else you'll timeout. this.runTests = function(tests, startTest) { this.startTime = new Date(); SimpleTest.info("Started " + this.startTime + " (" + this.startTime.getTime()/1000 + "s)"); @@ -593,7 +593,7 @@ function MediaTestManager() { SimpleTest.waitForExplicitFinish(); this.nextTest(); } - + // Registers that the test corresponding to 'token' has been started. // Don't call more than once per token. this.started = function(token) { @@ -601,7 +601,7 @@ function MediaTestManager() { this.numTestsRunning++; is(this.numTestsRunning, this.tokens.length, "[started " + token + "] Length of array should match number of running tests"); } - + // Registers that the test corresponding to 'token' has finished. Call when // you've finished your test. If all tests are complete this will finish the // run, otherwise it may start up the next run. It's ok to call multiple times @@ -626,7 +626,7 @@ function MediaTestManager() { // with live threads waiting for the GC are killed promptly, to free up the // thread stacks' address space. SpecialPowers.forceGC(); - + while (this.testNum < this.tests.length && this.tokens.length < PARALLEL_TESTS) { var test = this.tests[this.testNum]; var token = (test.name ? (test.name + "-"): "") + this.testNum; @@ -635,11 +635,11 @@ function MediaTestManager() { if (DEBUG_TEST_LOOP_FOREVER && this.testNum == this.tests.length) { this.testNum = 0; } - + // Ensure we can play the resource type. if (test.type && !document.createElement('video').canPlayType(test.type)) continue; - + // Do the init. This should start the test. this.startTest(test, token); } From 9f51b66cc300965829d945acb8a26b785ab96cdd Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Fri, 3 May 2013 09:44:02 +0200 Subject: [PATCH 03/82] Bug 831224: Added MP3 frame parser, r=padenot MP3 streams consist of small frames, with each frame containing the audio data of a few hundred milliseconds. The actual duration of the encoded audio can among frames. Each frame consists of a 4-byte frame header, some optional extra information, and the audio data. The MP3 frame parser walks over the content of an MP3 stream, computes the duration of each frame from the frame header, and sums them up to the streams complete duration. The MP3 frame parser does not decode the actual audio data. --HG-- extra : rebase_source : 1b101d8f9bf73e62672933d0f5d20253d7b25491 --- content/media/omx/MP3FrameParser.cpp | 487 +++++++++++++++++++++++++++ content/media/omx/MP3FrameParser.h | 76 +++++ content/media/omx/moz.build | 1 + 3 files changed, 564 insertions(+) create mode 100644 content/media/omx/MP3FrameParser.cpp create mode 100644 content/media/omx/MP3FrameParser.h diff --git a/content/media/omx/MP3FrameParser.cpp b/content/media/omx/MP3FrameParser.cpp new file mode 100644 index 00000000000..d6ca438edc0 --- /dev/null +++ b/content/media/omx/MP3FrameParser.cpp @@ -0,0 +1,487 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include +#include "nsMemory.h" +#include "MP3FrameParser.h" + +namespace mozilla { + +// An ID3Buffer contains data of an ID3v2 header. The supplied buffer must +// point to an ID3 header and at least the size of ID_HEADER_LENGTH. Run the +// Parse method to read in the header's values. + +class ID3Buffer +{ +public: + + enum { + ID3_HEADER_LENGTH = 10 + }; + + ID3Buffer(const uint8_t* aBuffer, uint32_t aLength) + : mBuffer(aBuffer), + mLength(aLength), + mSize(0) + { + MOZ_ASSERT(mBuffer || !mLength); + } + + nsresult Parse(); + + int64_t GetMP3Offset() const { + return ID3_HEADER_LENGTH + mSize; + } + +private: + const uint8_t* mBuffer; + uint32_t mLength; + uint32_t mSize; +}; + +nsresult ID3Buffer::Parse() +{ + NS_ENSURE_TRUE(mBuffer && mLength >= ID3_HEADER_LENGTH, NS_ERROR_INVALID_ARG); + + if ((mBuffer[0] != 'I') || + (mBuffer[1] != 'D') || + (mBuffer[2] != '3') || + (mBuffer[6] & 0x80) || + (mBuffer[7] & 0x80) || + (mBuffer[8] & 0x80) || + (mBuffer[9] & 0x80)) { + return NS_ERROR_INVALID_ARG; + } + + mSize = ((static_cast(mBuffer[6])<<21) | + (static_cast(mBuffer[7])<<14) | + (static_cast(mBuffer[8])<<7) | + static_cast(mBuffer[9])); + + return NS_OK; +} + +// The MP3Buffer contains MP3 frame data. The supplied buffer must point +// to a frame header. Call the method Parse to extract information from +// the MP3 frame headers in the supplied buffer. + +class MP3Buffer +{ +public: + + enum { + MP3_HEADER_LENGTH = 4, + MP3_FRAMESIZE_CONST = 144000, + MP3_DURATION_CONST = 8000 + }; + + MP3Buffer(const uint8_t* aBuffer, uint32_t aLength) + : mBuffer(aBuffer), + mLength(aLength), + mDurationUs(0), + mNumFrames(0), + mBitRateSum(0), + mFrameSizeSum(0), + mTrailing(0) + { + MOZ_ASSERT(mBuffer || !mLength); + } + + static const uint8_t* FindNextHeader(const uint8_t* aBuffer, uint32_t aLength); + + nsresult Parse(); + + int64_t GetDuration() const { + return mDurationUs; + } + + int64_t GetNumberOfFrames() const { + return mNumFrames; + } + + int64_t GetBitRateSum() const { + return mBitRateSum; + } + + int64_t GetFrameSizeSum() const { + return mFrameSizeSum; + } + + int64_t GetTrailing() const { + return mTrailing; + } + +private: + + enum MP3FrameHeaderField { + MP3_HDR_FIELD_SYNC, + MP3_HDR_FIELD_VERSION, + MP3_HDR_FIELD_LAYER, + MP3_HDR_FIELD_BITRATE, + MP3_HDR_FIELD_SAMPLERATE, + MP3_HDR_FIELD_PADDING, + MP3_HDR_FIELDS // Must be last enumerator value + }; + + enum { + MP3_HDR_CONST_FRAMESYNC = 0x7ff, + MP3_HDR_CONST_VERSION = 3, + MP3_HDR_CONST_LAYER = 1 + }; + + static uint32_t ExtractBits(uint32_t aValue, uint32_t aOffset, + uint32_t aBits); + static uint32_t ExtractFrameHeaderField(uint32_t aHeader, + enum MP3FrameHeaderField aField); + static uint32_t ExtractFrameHeader(const uint8_t* aBuffer); + static nsresult DecodeFrameHeader(const uint8_t* aBuffer, + size_t* aFrameSize, + uint32_t* aBitRate, + uint64_t* aDuration); + + static const uint16_t sBitRate[16]; + static const uint16_t sSampleRate[4]; + + const uint8_t* mBuffer; + uint32_t mLength; + + // The duration of this parsers data in milliseconds. + int64_t mDurationUs; + + // The number of frames in the range. + int64_t mNumFrames; + + // The sum of all frame's bit rates. + int64_t mBitRateSum; + + // The sum of all frame's sizes in byte. + int32_t mFrameSizeSum; + + // The number of trailing bytes. + int32_t mTrailing; +}; + +const uint16_t MP3Buffer::sBitRate[16] = { + 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0 +}; + +const uint16_t MP3Buffer::sSampleRate[4] = { + 44100, 48000, 32000, 0 +}; + +uint32_t MP3Buffer::ExtractBits(uint32_t aValue, uint32_t aOffset, uint32_t aBits) +{ + return (aValue >> aOffset) & ((0x1ul << aBits) - 1); +} + +uint32_t MP3Buffer::ExtractFrameHeaderField(uint32_t aHeader, enum MP3FrameHeaderField aField) +{ + static const uint8_t sField[MP3_HDR_FIELDS][2] = { + {21, 11}, {19, 2}, {17, 2}, {12, 4}, {10, 2}, {9, 1} + }; + + MOZ_ASSERT(aField < MP3_HDR_FIELDS); + return ExtractBits(aHeader, sField[aField][0], sField[aField][1]); +} + +uint32_t MP3Buffer::ExtractFrameHeader(const uint8_t* aBuffer) +{ + MOZ_ASSERT(aBuffer); + + uint32_t header = (static_cast(aBuffer[0])<<24) | + (static_cast(aBuffer[1])<<16) | + (static_cast(aBuffer[2])<<8) | + static_cast(aBuffer[3]); + + uint32_t frameSync = ExtractFrameHeaderField(header, MP3_HDR_FIELD_SYNC); + uint32_t version = ExtractFrameHeaderField(header, MP3_HDR_FIELD_VERSION); + uint32_t layer = ExtractFrameHeaderField(header, MP3_HDR_FIELD_LAYER); + uint32_t bitRate = sBitRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_BITRATE)]; + uint32_t sampleRate = sSampleRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_SAMPLERATE)]; + + // branch-less implementation of + // + // if (fields-are-valid) + // return header; + // else + // return 0; + // + return (frameSync == uint32_t(MP3_HDR_CONST_FRAMESYNC)) * + (version == uint32_t(MP3_HDR_CONST_VERSION)) * + (layer == uint32_t(MP3_HDR_CONST_LAYER)) * !!bitRate * !!sampleRate * header; +} + +const uint8_t* MP3Buffer::FindNextHeader(const uint8_t* aBuffer, uint32_t aLength) +{ + MOZ_ASSERT(aBuffer || !aLength); + + // Find MP3's frame-sync marker while there are at least 4 bytes + // left to contain the MP3 frame header + + while (aLength >= MP3_HEADER_LENGTH) { + if (ExtractFrameHeader(aBuffer)) { + break; + } + ++aBuffer; + --aLength; + } + + return aBuffer; +} + +nsresult MP3Buffer::DecodeFrameHeader(const uint8_t* aBuffer, + uint32_t* aFrameSize, + uint32_t* aBitRate, + uint64_t* aDuration) +{ + uint32_t header = ExtractFrameHeader(aBuffer); + + if (!header) { + return NS_ERROR_INVALID_ARG; + } + + uint32_t bitRate = sBitRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_BITRATE)]; + uint32_t sampleRate = sSampleRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_SAMPLERATE)]; + + uint32_t padding = ExtractFrameHeaderField(header, MP3_HDR_FIELD_PADDING); + uint32_t frameSize = (uint64_t(MP3_FRAMESIZE_CONST) * bitRate) / sampleRate + padding; + + MOZ_ASSERT(aBitRate); + *aBitRate = bitRate; + + MOZ_ASSERT(aFrameSize); + *aFrameSize = frameSize; + + MOZ_ASSERT(aDuration); + *aDuration = (uint64_t(MP3_DURATION_CONST) * frameSize) / bitRate; + + return NS_OK; +} + +nsresult MP3Buffer::Parse() +{ + // We walk over the newly arrived data and sum up the + // bit rates, sizes, durations, etc. of the contained + // MP3 frames. + + const uint8_t* buffer = mBuffer; + uint32_t length = mLength; + + while (length >= MP3_HEADER_LENGTH) { + + uint32_t frameSize; + uint32_t bitRate; + uint64_t duration; + + nsresult rv = DecodeFrameHeader(buffer, &frameSize, &bitRate, &duration); + NS_ENSURE_SUCCESS(rv, rv); + + mBitRateSum += bitRate; + mDurationUs += duration; + ++mNumFrames; + + mFrameSizeSum += frameSize; + + if (frameSize <= length) { + length -= frameSize; + } else { + length = 0; + } + + buffer += frameSize; + } + + mTrailing = length; + + return NS_OK; +} + +MP3FrameParser::MP3FrameParser(int64_t aLength) +: mBufferLength(0), + mLock("MP3FrameParser.mLock"), + mDurationUs(0), + mBitRateSum(0), + mNumFrames(0), + mOffset(0), + mUnhandled(0), + mLength(aLength), + mTrailing(0), + mIsMP3(true) +{ } + +size_t MP3FrameParser::ParseInternalBuffer(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset) +{ + if (mOffset != aOffset) { + // If we don't append, we throw away our temporary buffer. + mBufferLength = 0; + return 0; + } + + size_t copyLength = 0; + + if (mBufferLength || !mOffset) { + + // We have some data in our temporary buffer and append to it, or + // we are at the beginning of the stream. We both cases, we append + // some data to our temporary buffer and try to parse it. + copyLength = std::min(NS_ARRAY_LENGTH(mBuffer)-mBufferLength, aLength); + memcpy(mBuffer+mBufferLength, aBuffer, copyLength*sizeof(*mBuffer)); + mBufferLength += copyLength; + } + + if ((mBufferLength >= ID3Buffer::ID3_HEADER_LENGTH) && (mOffset < ID3Buffer::ID3_HEADER_LENGTH)) { + + // There might be an ID3 header at the very beginning of the stream. + ID3Buffer id3Buffer(mBuffer, mBufferLength); + nsresult rv = id3Buffer.Parse(); + + if (rv == NS_OK) { + mOffset += id3Buffer.GetMP3Offset()-(mBufferLength-copyLength); + mBufferLength = 0; + } + } + + if (mBufferLength >= MP3Buffer::MP3_HEADER_LENGTH) { + + // Or there could be a regular frame header somewhere + // in the stream. + MP3Buffer mp3Buffer(mBuffer, mBufferLength); + nsresult rv = mp3Buffer.Parse(); + + if (rv == NS_OK) { + mDurationUs += mp3Buffer.GetDuration(); + mBitRateSum += mp3Buffer.GetBitRateSum(); + mNumFrames += mp3Buffer.GetNumberOfFrames(); + mOffset += mp3Buffer.GetFrameSizeSum()-(mBufferLength-copyLength); + mBufferLength = 0; + } + } + + if (mBufferLength) { + // We have not been able to successfully parse the + // content of the temporary buffer. If the buffer is + // full already, the stream does not contain MP3. + mOffset += copyLength; + mIsMP3 = (mBufferLength < NS_ARRAY_LENGTH(mBuffer)); + } else { + // We parsed the temporary buffer. The parser code + // will update the input data. + copyLength = 0; + } + + if (mOffset > mLength) { + mLength = mOffset; + } + + return copyLength; +} + +void MP3FrameParser::Parse(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset) +{ + MutexAutoLock mon(mLock); + + // We first try to parse the remaining data from the last call that + // is stored in an internal buffer. + size_t bufferIncr = ParseInternalBuffer(aBuffer, aLength, aOffset); + + aBuffer += bufferIncr; + aLength -= bufferIncr; + aOffset += bufferIncr; + + // The number of attempts to parse the data. This should be 1 of we + // append to the end of the existing data. + int retries = 1; + + if (aOffset+aLength <= mOffset) { + // We already processed this fragment. + return; + } else if (aOffset < mOffset) { + // mOffset is within the new fragment, shorten range. + aLength -= mOffset-aOffset; + aBuffer += mOffset-aOffset; + aOffset = mOffset; + } else if (aOffset > mOffset) { + // Fragment comes after current position, store difference. + mUnhandled += aOffset-mOffset; + + // We might start in the middle of a frame and have find the next + // frame header. As our detection heuristics might return false + // positives, we simply try multiple times. The current value comes + // from experimentation with MP3 files. If you encounter false positives + // and incorrectly parsed MP3 files, try incrementing this value. + retries = 5; + } + + uint32_t trailing = 0; + + while (retries) { + + MP3Buffer mp3Buffer(aBuffer, aLength); + nsresult rv = mp3Buffer.Parse(); + + if (rv != NS_OK) { + --retries; + + if (!retries) { + mIsMP3 = false; + return; + } + + // We might be in the middle of a frame, find next frame header + const uint8_t *buffer = MP3Buffer::FindNextHeader(aBuffer+1, aLength-1); + + mUnhandled += buffer-aBuffer; + mOffset = aOffset + buffer-aBuffer; + aLength -= buffer-aBuffer; + aBuffer = buffer; + } else { + mDurationUs += mp3Buffer.GetDuration(); + mBitRateSum += mp3Buffer.GetBitRateSum(); + mNumFrames += mp3Buffer.GetNumberOfFrames(); + mOffset += mp3Buffer.GetFrameSizeSum(); + + trailing = mp3Buffer.GetTrailing(); + retries = 0; + } + } + + if (trailing) { + // Store trailing bytes in temporary buffer. + MOZ_ASSERT(trailing < (NS_ARRAY_LENGTH(mBuffer)*sizeof(*mBuffer))); + memcpy(mBuffer, aBuffer+(aLength-trailing), trailing); + mBufferLength = trailing; + } + + if (mOffset > mLength) { + mLength = mOffset; + } +} + +void MP3FrameParser::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) +{ + Parse(reinterpret_cast(aBuffer), aLength, aOffset); +} + +int64_t MP3FrameParser::GetDuration() +{ + MutexAutoLock mon(mLock); + + if (!mNumFrames) { + return -1; // Not a single frame decoded yet + } + + // Compute the duration of the unhandled fragments from + // the average bitrate. + int64_t avgBitRate = mBitRateSum / mNumFrames; + NS_ENSURE_TRUE(avgBitRate > 0, mDurationUs); + + MOZ_ASSERT(mLength >= mOffset); + int64_t unhandled = mUnhandled + (mLength-mOffset); + + return mDurationUs + (uint64_t(MP3Buffer::MP3_DURATION_CONST) * unhandled) / avgBitRate; +} + +} diff --git a/content/media/omx/MP3FrameParser.h b/content/media/omx/MP3FrameParser.h new file mode 100644 index 00000000000..82b60d2245a --- /dev/null +++ b/content/media/omx/MP3FrameParser.h @@ -0,0 +1,76 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include +#include "mozilla/Mutex.h" + +namespace mozilla { + +// A description of the MP3 format and its extensions is available at +// +// http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header +// +// The data in MP3 streams is split into small frames, with each frame +// containing a fixed number of samples. The duration of a frame depends +// on the frame's bit rate and sample rate. Both values can vary among +// frames, so it is necessary to examine each individual frame of an MP3 +// stream to calculate the stream's overall duration. +// +// The MP3 frame parser extracts information from an MP3 data stream. It +// accepts a range of frames of an MP3 stream as input, and parses all +// frames for their duration. Callers can query the stream's overall +// duration from the parser. +// +// Call the methods NotifyDataArrived or Parse to add new data. If you added +// information for a certain stream position, you cannot go back to previous +// positions. The parser will simply ignore the input. If you skip stream +// positions, the duration of the related MP3 frames will be estimated from +// the stream's average. +// +// The method GetDuration returns calculated duration of the stream, including +// estimates for skipped ranges. +// +// All public methods are thread-safe. + +class MP3FrameParser +{ +public: + MP3FrameParser(int64_t aLength=-1); + + bool IsMP3() { + MutexAutoLock mon(mLock); + return mIsMP3; + } + + void Parse(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset); + + void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); + + int64_t GetDuration(); + +private: + size_t ParseInternalBuffer(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset); + + uint8_t mBuffer[10]; + uint32_t mBufferLength; + + // A low-contention lock for protecting the parser results + Mutex mLock; + + // All fields below are protected by mLock + uint64_t mDurationUs; + uint64_t mBitRateSum; + uint64_t mNumFrames; + int64_t mOffset; + int64_t mUnhandled; + int64_t mLength; + uint32_t mTrailing; + + // Contains the state of the MP3 detection + bool mIsMP3; +}; + +} diff --git a/content/media/omx/moz.build b/content/media/omx/moz.build index 4ad2d79a184..e36b67f1cae 100644 --- a/content/media/omx/moz.build +++ b/content/media/omx/moz.build @@ -14,6 +14,7 @@ EXPORTS += [ CPP_SOURCES += [ 'MediaOmxDecoder.cpp', 'MediaOmxReader.cpp', + 'MP3FrameParser.cpp', 'OmxDecoder.cpp', 'OMXCodecProxy.cpp', ] From 21922c6b1f4f0945bf48febb910b8793d8f6276a Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Fri, 3 May 2013 09:48:37 +0200 Subject: [PATCH 04/82] Bug 831224: Allow update of the media duration, r=padenot With MP3 streams, the media duration might change after we received new data. This patch adds infrastructure to signal the new duration to the media decoder and state machine. It will also fire an event of type 'durationchange' to the DOM. --HG-- extra : rebase_source : f417b968e81d9c9a1aff8ae3174079a297eb371b --- content/media/AbstractMediaDecoder.h | 5 +++++ content/media/MediaDecoder.cpp | 6 ++++++ content/media/MediaDecoder.h | 1 + content/media/MediaDecoderStateMachine.cpp | 10 ++++++++++ content/media/MediaDecoderStateMachine.h | 4 ++++ content/media/webaudio/MediaBufferDecoder.cpp | 8 ++++++++ 6 files changed, 34 insertions(+) diff --git a/content/media/AbstractMediaDecoder.h b/content/media/AbstractMediaDecoder.h index e7e2d4f781e..5c65c5d3aa8 100644 --- a/content/media/AbstractMediaDecoder.h +++ b/content/media/AbstractMediaDecoder.h @@ -72,6 +72,11 @@ public: // Set the duration of the media in microseconds. virtual void SetMediaDuration(int64_t aDuration) = 0; + // Sets the duration of the media in microseconds. The MediaDecoder + // fires a durationchange event to its owner (e.g., an HTML audio + // tag). + virtual void UpdateMediaDuration(int64_t aDuration) = 0; + // Set the media as being seekable or not. virtual void SetMediaSeekable(bool aMediaSeekable) = 0; diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp index 0c0ad4d0298..1f85d8d7af1 100644 --- a/content/media/MediaDecoder.cpp +++ b/content/media/MediaDecoder.cpp @@ -1272,6 +1272,12 @@ void MediaDecoder::SetMediaDuration(int64_t aDuration) GetStateMachine()->SetDuration(aDuration); } +void MediaDecoder::UpdateMediaDuration(int64_t aDuration) +{ + NS_ENSURE_TRUE_VOID(GetStateMachine()); + GetStateMachine()->UpdateDuration(aDuration); +} + void MediaDecoder::SetMediaSeekable(bool aMediaSeekable) { ReentrantMonitorAutoEnter mon(GetReentrantMonitor()); MOZ_ASSERT(NS_IsMainThread() || OnDecodeThread()); diff --git a/content/media/MediaDecoder.h b/content/media/MediaDecoder.h index 2c1af472570..12494e3b076 100644 --- a/content/media/MediaDecoder.h +++ b/content/media/MediaDecoder.h @@ -506,6 +506,7 @@ public: virtual void SetDuration(double aDuration); void SetMediaDuration(int64_t aDuration) MOZ_OVERRIDE; + void UpdateMediaDuration(int64_t aDuration) MOZ_OVERRIDE; // Set a flag indicating whether seeking is supported virtual void SetMediaSeekable(bool aMediaSeekable) MOZ_OVERRIDE; diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index eb25714d457..2cb728e89b3 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -1446,6 +1446,16 @@ void MediaDecoderStateMachine::SetDuration(int64_t aDuration) } } +void MediaDecoderStateMachine::UpdateDuration(int64_t aDuration) +{ + if (aDuration != GetDuration()) { + SetDuration(aDuration); + nsCOMPtr event = + NS_NewRunnableMethod(mDecoder, &MediaDecoder::DurationChanged); + NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL); + } +} + void MediaDecoderStateMachine::SetMediaEndTime(int64_t aEndTime) { NS_ASSERTION(OnDecodeThread(), "Should be on decode thread"); diff --git a/content/media/MediaDecoderStateMachine.h b/content/media/MediaDecoderStateMachine.h index 23179e4c517..3cc4d8d6755 100644 --- a/content/media/MediaDecoderStateMachine.h +++ b/content/media/MediaDecoderStateMachine.h @@ -157,6 +157,10 @@ public: // aEndTime is in microseconds. void SetMediaEndTime(int64_t aEndTime); + // Called from decode thread to update the duration. Can result in + // a durationchangeevent. aDuration is in microseconds. + void UpdateDuration(int64_t aDuration); + // Functions used by assertions to ensure we're calling things // on the appropriate threads. bool OnDecodeThread() const { diff --git a/content/media/webaudio/MediaBufferDecoder.cpp b/content/media/webaudio/MediaBufferDecoder.cpp index c0e301808b6..1ac22e1bba1 100644 --- a/content/media/webaudio/MediaBufferDecoder.cpp +++ b/content/media/webaudio/MediaBufferDecoder.cpp @@ -97,6 +97,8 @@ public: virtual void SetMediaDuration(int64_t aDuration) MOZ_FINAL MOZ_OVERRIDE; + virtual void UpdateMediaDuration(int64_t aDuration) MOZ_FINAL MOZ_OVERRIDE; + virtual void SetMediaSeekable(bool aMediaSeekable) MOZ_OVERRIDE; virtual void SetTransportSeekable(bool aTransportSeekable) MOZ_FINAL MOZ_OVERRIDE; @@ -214,6 +216,12 @@ BufferDecoder::SetMediaDuration(int64_t aDuration) // ignore } +void +BufferDecoder::UpdateMediaDuration(int64_t aDuration) +{ + // ignore +} + void BufferDecoder::SetMediaSeekable(bool aMediaSeekable) { From 5fa26f0ddd0c62f3b174095eb473e250f17a1cce Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 24 Jan 2013 13:38:32 +0100 Subject: [PATCH 05/82] Bug 831224: Parse MP3 frame headers in OmxDecoder, r=padenot On FirefoxOS, the Android libraries estimate the duration of MP3 streams by examining the first MP3 frame header. This only works for streams with constant bit rate. For streams with variable bit rate, a too short or too long duration is computed. This patch adds support for parsing MP3 frame headers. The decoder handles file streams by reading them at once at the beginning and parsing them immediately. Network streams are updated when a new fragment arrives. --HG-- extra : rebase_source : bffb9447a5fdba4145e83f5aeb3c2accfb7872d6 --- content/media/MediaDecoderReader.h | 4 +- content/media/omx/MediaOmxReader.cpp | 9 ++ content/media/omx/MediaOmxReader.h | 2 + content/media/omx/OmxDecoder.cpp | 156 ++++++++++++++++++++++++++- content/media/omx/OmxDecoder.h | 5 + 5 files changed, 171 insertions(+), 5 deletions(-) diff --git a/content/media/MediaDecoderReader.h b/content/media/MediaDecoderReader.h index 243eb64e743..f6636c9612d 100644 --- a/content/media/MediaDecoderReader.h +++ b/content/media/MediaDecoderReader.h @@ -519,8 +519,8 @@ public: return functor.mResult; } - // Only used by WebMReader for now, so stub here rather than in every - // reader than inherits from MediaDecoderReader. + // Only used by WebMReader and MediaOmxReader for now, so stub here rather + // than in every reader than inherits from MediaDecoderReader. virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) {} virtual MediaQueue& AudioQueue() { return mAudioQueue; } diff --git a/content/media/omx/MediaOmxReader.cpp b/content/media/omx/MediaOmxReader.cpp index cf27940e75c..5fcb456a50f 100644 --- a/content/media/omx/MediaOmxReader.cpp +++ b/content/media/omx/MediaOmxReader.cpp @@ -270,6 +270,15 @@ bool MediaOmxReader::DecodeVideoFrame(bool &aKeyframeSkip, return true; } +void MediaOmxReader::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) +{ + android::OmxDecoder *omxDecoder = mOmxDecoder.get(); + + if (omxDecoder) { + omxDecoder->NotifyDataArrived(aBuffer, aLength, aOffset); + } +} + bool MediaOmxReader::DecodeAudioData() { NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); diff --git a/content/media/omx/MediaOmxReader.h b/content/media/omx/MediaOmxReader.h index 13a36c595c6..db55f2d7fd6 100644 --- a/content/media/omx/MediaOmxReader.h +++ b/content/media/omx/MediaOmxReader.h @@ -40,6 +40,8 @@ public: virtual nsresult Init(MediaDecoderReader* aCloneDonor); virtual nsresult ResetDecode(); + virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); + virtual bool DecodeAudioData(); virtual bool DecodeVideoFrame(bool &aKeyframeSkip, int64_t aTimeThreshold); diff --git a/content/media/omx/OmxDecoder.cpp b/content/media/omx/OmxDecoder.cpp index 011ef252119..3899e0f92f5 100644 --- a/content/media/omx/OmxDecoder.cpp +++ b/content/media/omx/OmxDecoder.cpp @@ -18,6 +18,8 @@ #include "mozilla/Preferences.h" #include "mozilla/Types.h" +#include "mozilla/Monitor.h" +#include "nsMimeTypes.h" #include "MPAPI.h" #include "prlog.h" @@ -37,6 +39,114 @@ using namespace MPAPI; using namespace mozilla; namespace mozilla { + +// When loading an MP3 stream from a file, we need to parse the file's +// content to find its duration. We must do this from within the decode +// thread, but parsing itself must be done in the main thread. +// +// After we read the file's content in the decode thread, an instance +// of this class is scheduled to the main thread for parsing the MP3 +// stream. We then wait until it has returned. + +class OmxDecoderNotifyDataArrivedRunnable : public nsRunnable +{ +public: + OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset) + : mOmxDecoder(aOmxDecoder), + mBuffer(aBuffer), + mLength(aLength), + mOffset(aOffset), + mCompletedMonitor("OmxDecoderNotifyDataArrived.mCompleted"), + mCompleted(false) + { + MOZ_ASSERT(mOmxDecoder.get()); + MOZ_ASSERT(mBuffer.get() || !mLength); + } + + NS_IMETHOD Run() + { + NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); + + const char* buffer = mBuffer.get(); + + while (mLength) { + uint32_t length = std::min(mLength, UINT32_MAX); + mOmxDecoder->NotifyDataArrived(mBuffer.get(), mLength, mOffset); + + buffer += length; + mLength -= length; + mOffset += length; + } + + Completed(); + + return NS_OK; + } + + void WaitForCompletion() + { + MOZ_ASSERT(!NS_IsMainThread()); + + MonitorAutoLock mon(mCompletedMonitor); + if (!mCompleted) { + mCompletedMonitor.Wait(); + } + } + + static nsresult ProcessCachedData(android::OmxDecoder* aOmxDecoder); + +private: + // Call this function at the end of Run() to notify waiting + // threads. + void Completed() + { + MonitorAutoLock mon(mCompletedMonitor); + MOZ_ASSERT(!mCompleted); + mCompleted = true; + mCompletedMonitor.Notify(); + } + + android::sp mOmxDecoder; + nsAutoArrayPtr mBuffer; + uint64_t mLength; + int64_t mOffset; + + Monitor mCompletedMonitor; + bool mCompleted; +}; + +nsresult OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(android::OmxDecoder* aOmxDecoder) +{ + MOZ_ASSERT(aOmxDecoder); + + NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); + + MediaResource* resource = aOmxDecoder->GetResource(); + MOZ_ASSERT(resource); + + int64_t length = resource->GetCachedDataEnd(0); + NS_ENSURE_TRUE(length >= 0, NS_ERROR_UNEXPECTED); + + if (!length) { + return NS_OK; // Cache is empty, nothing to do + } + + nsAutoArrayPtr buffer(new char[length]); + + nsresult rv = resource->ReadFromCache(buffer.get(), 0, length); + NS_ENSURE_SUCCESS(rv, rv); + + nsRefPtr runnable( + new OmxDecoderNotifyDataArrivedRunnable(aOmxDecoder, buffer.forget(), length, 0)); + + rv = NS_DispatchToMainThread(runnable.get()); + NS_ENSURE_SUCCESS(rv, rv); + + runnable->WaitForCompletion(); + + return NS_OK; +} + namespace layers { VideoGraphicBuffer::VideoGraphicBuffer(const android::wp aOmxDecoder, @@ -147,6 +257,7 @@ OmxDecoder::OmxDecoder(MediaResource *aResource, mAudioChannels(-1), mAudioSampleRate(-1), mDurationUs(-1), + mMP3FrameParser(aResource->GetLength()), mVideoBuffer(nullptr), mAudioBuffer(nullptr), mIsVideoSeeking(false), @@ -274,9 +385,29 @@ bool OmxDecoder::TryLoad() { if (durationUs > totalDurationUs) totalDurationUs = durationUs; } - if (mAudioTrack.get() && mAudioTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { - if (durationUs > totalDurationUs) - totalDurationUs = durationUs; + if (mAudioTrack.get()) { + durationUs = -1; + const char* audioMime; + sp meta = mAudioTrack->getFormat(); + + if (meta->findCString(kKeyMIMEType, &audioMime) && !strcasecmp(audioMime, AUDIO_MP3)) { + // Feed MP3 parser with cached data. Local files will be fully + // cached already, network streams will update with sucessive + // calls to NotifyDataArrived. + nsresult rv = OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(this); + + if (rv == NS_OK) { + durationUs = mMP3FrameParser.GetDuration(); + if (durationUs > totalDurationUs) { + totalDurationUs = durationUs; + } + } + } + if ((durationUs == -1) && meta->findInt64(kKeyDuration, &durationUs)) { + if (durationUs > totalDurationUs) { + totalDurationUs = durationUs; + } + } } mDurationUs = totalDurationUs; @@ -485,6 +616,25 @@ bool OmxDecoder::SetAudioFormat() { return true; } +void OmxDecoder::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) +{ + if (!mMP3FrameParser.IsMP3()) { + return; + } + + mMP3FrameParser.NotifyDataArrived(aBuffer, aLength, aOffset); + + int64_t durationUs = mMP3FrameParser.GetDuration(); + + if (durationUs != mDurationUs) { + mDurationUs = durationUs; + + MOZ_ASSERT(mDecoder); + ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); + mDecoder->UpdateMediaDuration(mDurationUs); + } +} + void OmxDecoder::ReleaseVideoBuffer() { if (mVideoBuffer) { mVideoBuffer->release(); diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 84e7e467358..82d3135aa6d 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -9,6 +9,7 @@ #include "GonkNativeWindow.h" #include "GonkNativeWindowClient.h" #include "GrallocImages.h" +#include "MP3FrameParser.h" #include "MPAPI.h" #include "MediaResource.h" #include "AbstractMediaDecoder.h" @@ -76,6 +77,7 @@ private: class OmxDecoder : public OMXCodecProxy::EventListener { typedef MPAPI::AudioFrame AudioFrame; typedef MPAPI::VideoFrame VideoFrame; + typedef mozilla::MP3FrameParser MP3FrameParser; typedef mozilla::MediaResource MediaResource; typedef mozilla::AbstractMediaDecoder AbstractMediaDecoder; @@ -109,6 +111,7 @@ class OmxDecoder : public OMXCodecProxy::EventListener { int64_t mDurationUs; VideoFrame mVideoFrame; AudioFrame mAudioFrame; + MP3FrameParser mMP3FrameParser; // Lifetime of these should be handled by OMXCodec, as long as we release // them after use: see ReleaseVideoBuffer(), ReleaseAudioBuffer() @@ -177,6 +180,8 @@ public: bool SetVideoFormat(); bool SetAudioFormat(); + void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); + void GetDuration(int64_t *durationUs) { *durationUs = mDurationUs; } From 38af5b43c80725c4f24ffd0a33bd661c8d7be283 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Mon, 6 May 2013 20:07:29 +0200 Subject: [PATCH 06/82] Bug 831224: Use multi-threaded I/O for reading and processing MP3 frames, r=padenot Reading large MP3 files from a slow medium, such as an SD card, takes several seconds. This is too long for interactive applications like the music app. With this patch, the OmxDecoder reads large MP3 file in smaller chunks and hands over each chunk individually to the MP3 parser. Reading the file is done in the I/O thread, which is allowed to block, parsing is done on the main thread. The current chunk size is 8 MiB, which is small enough to not cause any delay. --HG-- extra : rebase_source : 4effb86db481c405a97760cd98f4218dde42104d --- content/media/omx/OmxDecoder.cpp | 126 ++++++++++++++++++++----------- content/media/omx/OmxDecoder.h | 1 + 2 files changed, 84 insertions(+), 43 deletions(-) diff --git a/content/media/omx/OmxDecoder.cpp b/content/media/omx/OmxDecoder.cpp index 3899e0f92f5..511cd336bdc 100644 --- a/content/media/omx/OmxDecoder.cpp +++ b/content/media/omx/OmxDecoder.cpp @@ -40,22 +40,50 @@ using namespace mozilla; namespace mozilla { +class OmxDecoderProcessCachedDataTask : public Task +{ +public: + OmxDecoderProcessCachedDataTask(android::OmxDecoder* aOmxDecoder, int64_t aOffset) + : mOmxDecoder(aOmxDecoder), + mOffset(aOffset) + { } + + void Run() + { + MOZ_ASSERT(!NS_IsMainThread()); + MOZ_ASSERT(mOmxDecoder.get()); + mOmxDecoder->ProcessCachedData(mOffset, false); + } + +private: + android::sp mOmxDecoder; + int64_t mOffset; +}; + // When loading an MP3 stream from a file, we need to parse the file's -// content to find its duration. We must do this from within the decode -// thread, but parsing itself must be done in the main thread. +// content to find its duration. Reading files of 100 Mib or more can +// delay the player app noticably, so the file os read and decoded in +// smaller chunks. // -// After we read the file's content in the decode thread, an instance -// of this class is scheduled to the main thread for parsing the MP3 -// stream. We then wait until it has returned. +// We first read on the decode thread, but parsing must be done on the +// main thread. After we read the file's initial MiBs in the decode +// thread, an instance of this class is scheduled to the main thread for +// parsing the MP3 stream. The decode thread waits until it has finished. +// +// If there is more data available from the file, the runnable dispatches +// a task to the IO thread for retrieving the next chunk of data, and +// the IO task dispatches a runnable to the main thread for parsing the +// data. This goes on until all of the MP3 file has been parsed. class OmxDecoderNotifyDataArrivedRunnable : public nsRunnable { public: - OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset) + OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset, uint64_t aFullLength) : mOmxDecoder(aOmxDecoder), mBuffer(aBuffer), mLength(aLength), mOffset(aOffset), + mFullLength(aFullLength), mCompletedMonitor("OmxDecoderNotifyDataArrived.mCompleted"), mCompleted(false) { @@ -78,6 +106,13 @@ public: mOffset += length; } + if (mOffset < mFullLength) { + // We cannot read data in the main thread because it + // might block for too long. Instead we post an IO task + // to the IO thread if there is more data available. + XRE_GetIOMessageLoop()->PostTask(FROM_HERE, new OmxDecoderProcessCachedDataTask(mOmxDecoder.get(), mOffset)); + } + Completed(); return NS_OK; @@ -93,8 +128,6 @@ public: } } - static nsresult ProcessCachedData(android::OmxDecoder* aOmxDecoder); - private: // Call this function at the end of Run() to notify waiting // threads. @@ -110,43 +143,12 @@ private: nsAutoArrayPtr mBuffer; uint64_t mLength; int64_t mOffset; + uint64_t mFullLength; Monitor mCompletedMonitor; bool mCompleted; }; -nsresult OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(android::OmxDecoder* aOmxDecoder) -{ - MOZ_ASSERT(aOmxDecoder); - - NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); - - MediaResource* resource = aOmxDecoder->GetResource(); - MOZ_ASSERT(resource); - - int64_t length = resource->GetCachedDataEnd(0); - NS_ENSURE_TRUE(length >= 0, NS_ERROR_UNEXPECTED); - - if (!length) { - return NS_OK; // Cache is empty, nothing to do - } - - nsAutoArrayPtr buffer(new char[length]); - - nsresult rv = resource->ReadFromCache(buffer.get(), 0, length); - NS_ENSURE_SUCCESS(rv, rv); - - nsRefPtr runnable( - new OmxDecoderNotifyDataArrivedRunnable(aOmxDecoder, buffer.forget(), length, 0)); - - rv = NS_DispatchToMainThread(runnable.get()); - NS_ENSURE_SUCCESS(rv, rv); - - runnable->WaitForCompletion(); - - return NS_OK; -} - namespace layers { VideoGraphicBuffer::VideoGraphicBuffer(const android::wp aOmxDecoder, @@ -394,9 +396,7 @@ bool OmxDecoder::TryLoad() { // Feed MP3 parser with cached data. Local files will be fully // cached already, network streams will update with sucessive // calls to NotifyDataArrived. - nsresult rv = OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(this); - - if (rv == NS_OK) { + if (ProcessCachedData(0, true)) { durationUs = mMP3FrameParser.GetDuration(); if (durationUs > totalDurationUs) { totalDurationUs = durationUs; @@ -992,3 +992,43 @@ void OmxDecoder::ReleaseAllPendingVideoBuffersLocked() releasingVideoBuffers.clear(); } +bool OmxDecoder::ProcessCachedData(int64_t aOffset, bool aWaitForCompletion) +{ + // We read data in chunks of 8 MiB. We can reduce this + // value if media, such as sdcards, is too slow. + static const int64_t sReadSize = 8 * 1024 * 1024; + + NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); + + MOZ_ASSERT(mResource); + + int64_t resourceLength = mResource->GetCachedDataEnd(0); + NS_ENSURE_TRUE(resourceLength >= 0, false); + + if (aOffset >= resourceLength) { + return true; // Cache is empty, nothing to do + } + + int64_t bufferLength = std::min(resourceLength-aOffset, sReadSize); + + nsAutoArrayPtr buffer(new char[bufferLength]); + + nsresult rv = mResource->ReadFromCache(buffer.get(), aOffset, bufferLength); + NS_ENSURE_SUCCESS(rv, false); + + nsRefPtr runnable( + new OmxDecoderNotifyDataArrivedRunnable(this, + buffer.forget(), + bufferLength, + aOffset, + resourceLength)); + + rv = NS_DispatchToMainThread(runnable.get()); + NS_ENSURE_SUCCESS(rv, false); + + if (aWaitForCompletion) { + runnable->WaitForCompletion(); + } + + return true; +} diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 82d3135aa6d..c3e3d8f5aed 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -225,6 +225,7 @@ public: // Called on ALooper thread. void onMessageReceived(const sp &msg); + bool ProcessCachedData(int64_t aOffset, bool aWaitForCompletion); }; } From eb53c373e16ae3ec26ca1b966ce998543ecd5bfe Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Wed, 7 Aug 2013 18:54:04 +0200 Subject: [PATCH 07/82] Bug 831224: Added mochitest for variable-bitrate MP3s, r=padenot The test checks the duration of an MP3 file with variable bitrate. The MP3 file only contains silence. It uses a high bit-rate encoding for its first half, a low bit-rate encoding for its second half. The correct duration is 10 seconds, but an incorrect implementation will return a much shorter value. --HG-- extra : rebase_source : f62cf69a631a276c4e6e96e827ab615367cad877 --- content/media/test/manifest.js | 1 + content/media/test/vbr.mp3 | Bin 0 -> 300553 bytes 2 files changed, 1 insertion(+) create mode 100644 content/media/test/vbr.mp3 diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 05aa7fe8b4e..5f0b80ab554 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -42,6 +42,7 @@ var gPlayedTests = [ { name:"seek.webm", type:"video/webm", duration:3.966 }, { name:"gizmo.mp4", type:"video/mp4", duration:5.56 }, { name:"owl.mp3", type:"audio/mpeg", duration:3.29 }, + { name:"vbr.mp3", type:"audio/mpeg", duration:10.0 } ]; // Used by test_mozLoadFrom. Need one test file per decoder backend, plus diff --git a/content/media/test/vbr.mp3 b/content/media/test/vbr.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..38eb376a971154722676b4a55019808168796c2b GIT binary patch literal 300553 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�_?X?`op9pDmI3_Uq$UyJ*aZ+l@bW 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

{q^N?j1!g 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∨ay_>C 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%0DWNEAkE;bq%kIE7njqmaSzzGkGgL_|Be0UX5~ayU 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 MU;mH)-~9gn0fke|RR910 literal 0 HcmV?d00001 From 28468656b5fb1efe6bcc458504b8d408c4b0b862 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 02:05:23 -0700 Subject: [PATCH 08/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/1d71d406d7fe Author: George Desc: Merge pull request #11380 from cctuan/896934 Bug 896934 - [Settings] Listen new system message for Bluetooth pairing requests in connectivity.js ======== https://hg.mozilla.org/integration/gaia-central/rev/2a769b49413e Author: cctuan Desc: Bug 896934 - [Settings] Listen new system message for Bluetooth pairing requests in connectivity.js --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index e38c14d25ed..b270dc57e53 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "5eaec29efe385d399ebd929d11b0f644b6938677", + "revision": "1d71d406d7fe313e0b50004c55e71beeca970ea5", "repo_path": "/integration/gaia-central" } From d1520754a733a7ada386afe5e69bfc769f8cee8c Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Wed, 7 Aug 2013 23:28:24 +0800 Subject: [PATCH 09/82] Bug 902480 - B2G RIL: follow up to bug 743150 - this._sendTelephonyMessage is not a function. r=allstars.chh --- dom/system/gonk/RadioInterfaceLayer.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dom/system/gonk/RadioInterfaceLayer.js b/dom/system/gonk/RadioInterfaceLayer.js index 4035d906d7f..b452924c04f 100644 --- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -1829,7 +1829,8 @@ RadioInterface.prototype = { */ handleSuppSvcNotification: function handleSuppSvcNotification(message) { message.notification = convertRILSuppSvcNotification(message.notification); - this._sendTelephonyMessage("RIL:SuppSvcNotification", message); + gMessageManager.sendTelephonyMessage("RIL:SuppSvcNotification", + this.clientId, message); }, /** From 33471a88f68f4c249cf8cd8deb5fc60e95978d5b Mon Sep 17 00:00:00 2001 From: Eric Chou Date: Thu, 8 Aug 2013 17:51:37 +0800 Subject: [PATCH 10/82] Bug 891257 - Disconnect gracefully when the user turns off Bluetooth, r=mrbkap --- dom/bluetooth/BluetoothService.cpp | 10 +++++ dom/bluetooth/linux/BluetoothDBusService.cpp | 41 ++++++++++++++++---- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/dom/bluetooth/BluetoothService.cpp b/dom/bluetooth/BluetoothService.cpp index b5b8c5f6d71..1e9eef496ec 100644 --- a/dom/bluetooth/BluetoothService.cpp +++ b/dom/bluetooth/BluetoothService.cpp @@ -9,7 +9,9 @@ #include "BluetoothService.h" #include "BluetoothCommon.h" +#include "BluetoothHfpManager.h" #include "BluetoothManager.h" +#include "BluetoothOppManager.h" #include "BluetoothParent.h" #include "BluetoothReplyRunnable.h" #include "BluetoothServiceChildProcess.h" @@ -475,6 +477,14 @@ BluetoothService::StartStopBluetooth(bool aStart, bool aIsStartup) NS_ENSURE_SUCCESS(rv, rv); } + if (!aStart) { + BluetoothHfpManager* hfp = BluetoothHfpManager::Get(); + hfp->Disconnect(); + + BluetoothOppManager* opp = BluetoothOppManager::Get(); + opp->Disconnect(); + } + nsCOMPtr runnable = new ToggleBtTask(aStart, aIsStartup); rv = mBluetoothCommandThread->Dispatch(runnable, NS_DISPATCH_NORMAL); NS_ENSURE_SUCCESS(rv, rv); diff --git a/dom/bluetooth/linux/BluetoothDBusService.cpp b/dom/bluetooth/linux/BluetoothDBusService.cpp index 2389ad43d9a..2d833b91eda 100644 --- a/dom/bluetooth/linux/BluetoothDBusService.cpp +++ b/dom/bluetooth/linux/BluetoothDBusService.cpp @@ -34,14 +34,16 @@ #include "nsDebug.h" #include "nsDataHashtable.h" #include "mozilla/Atomics.h" +#include "mozilla/dom/bluetooth/BluetoothTypes.h" #include "mozilla/Hal.h" #include "mozilla/ipc/UnixSocket.h" #include "mozilla/ipc/DBusThread.h" #include "mozilla/ipc/DBusUtils.h" #include "mozilla/ipc/RawDBusConnection.h" -#include "mozilla/Util.h" +#include "mozilla/Mutex.h" #include "mozilla/NullPtr.h" -#include "mozilla/dom/bluetooth/BluetoothTypes.h" +#include "mozilla/StaticMutex.h" +#include "mozilla/Util.h" #if defined(MOZ_WIDGET_GONK) #include "cutils/properties.h" #endif @@ -75,6 +77,13 @@ USING_BLUETOOTH_NAMESPACE #define ERR_AVRCP_IS_DISCONNECTED "AvrcpIsDisconnected" #define ERR_UNKNOWN_PROFILE "UnknownProfileError" +/** + * To not lock Bluetooth switch button on Settings UI because of any accident, + * we will force disabling Bluetooth 5 seconds after the user requesting to + * turn off Bluetooth. + */ +#define TIMEOUT_FORCE_TO_DISABLE_BT 5 + typedef struct { const char* name; int type; @@ -159,8 +168,10 @@ static const char* sBluetoothDBusSignals[] = static nsRefPtr gThreadConnection; static nsDataHashtable sPairingReqTable; static nsDataHashtable sAuthorizeReqTable; -static Atomic sIsPairing; static nsString sAdapterPath; +static Atomic sIsPairing(0); +static int sConnectedDeviceCount = 0; +static Monitor sStopBluetoothMonitor("BluetoothService.sStopBluetoothMonitor"); typedef void (*UnpackFunc)(DBusMessage*, DBusError*, BluetoothValue&, nsAString&); typedef bool (*FilterFunc)(const BluetoothValue&); @@ -1499,6 +1510,19 @@ EventFilter(DBusConnection* aConn, DBusMessage* aMsg, void* aData) signal.path() = NS_LITERAL_STRING(KEY_ADAPTER); signal.value() = parameters; NS_DispatchToMainThread(new DistributeBluetoothSignalTask(signal)); + } else if (property.name().EqualsLiteral("Connected")) { + MonitorAutoLock lock(sStopBluetoothMonitor); + + if (property.value().get_bool()) { + ++sConnectedDeviceCount; + } else { + MOZ_ASSERT(sConnectedDeviceCount > 0); + + --sConnectedDeviceCount; + if (sConnectedDeviceCount == 0) { + lock.Notify(); + } + } } } else if (dbus_message_is_signal(aMsg, DBUS_MANAGER_IFACE, "AdapterAdded")) { const char* str; @@ -1689,11 +1713,11 @@ BluetoothDBusService::StopInternal() // This could block. It should never be run on the main thread. MOZ_ASSERT(!NS_IsMainThread()); - // If Bluetooth is turned off while connections exist, in order not to only - // disconnect with profile connections with low level ACL connections alive, - // we disconnect ACLs directly instead of closing each socket. - if (!sAdapterPath.IsEmpty()) { - DisconnectAllAcls(sAdapterPath); + { + MonitorAutoLock lock(sStopBluetoothMonitor); + if (sConnectedDeviceCount > 0) { + lock.Wait(PR_SecondsToInterval(TIMEOUT_FORCE_TO_DISABLE_BT)); + } } if (!mConnection) { @@ -1737,6 +1761,7 @@ BluetoothDBusService::StopInternal() sAuthorizeReqTable.Clear(); sIsPairing = 0; + sConnectedDeviceCount = 0; StopDBus(); return NS_OK; From 96d9d3c73954be3a65ff59739f917c41a11305d5 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 03:35:23 -0700 Subject: [PATCH 11/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/20258a9a0b11 Author: Etienne Segonzac Desc: Merge pull request #10929 from lissyx/bug892520 Bug 892520 - Ensure serialization of upgrade path ======== https://hg.mozilla.org/integration/gaia-central/rev/bc8ab7a1d3bd Author: Alexandre Lissy Desc: Bug 892520 - Ensure proper upgrade path --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index b270dc57e53..e2a05afffb4 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "1d71d406d7fe313e0b50004c55e71beeca970ea5", + "revision": "20258a9a0b118f4b1c3345495c0b98cd3337b94e", "repo_path": "/integration/gaia-central" } From 200e630469ecd0dd5ab389f034a7f0545d6c8bfa Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 04:10:23 -0700 Subject: [PATCH 12/82] Bumping gaia.json for 4 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/dbfb03ac7296 Author: Etienne Segonzac Desc: Merge pull request #10865 from lissyx/bug889245 Bug 889245 - [Call log] When user make a voicemail call, call log shows ... ======== https://hg.mozilla.org/integration/gaia-central/rev/89fb5a99c545 Author: Alexandre Lissy Desc: Bug 889245 - [Call log] Display emergency number or Voicemail string ======== https://hg.mozilla.org/integration/gaia-central/rev/a212e78a202b Author: Arthur Chen Desc: Merge pull request #11333 from crh0716/900386 Bug 900386 - Use localize function to do localization r=evelyn ======== https://hg.mozilla.org/integration/gaia-central/rev/e6fa4ecb565c Author: crh0716 Desc: Bug 900386 - Use localize function to do localization --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index e2a05afffb4..dfdae407a6a 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "20258a9a0b118f4b1c3345495c0b98cd3337b94e", + "revision": "dbfb03ac729627f91bd63ad9d2830e0479bfb899", "repo_path": "/integration/gaia-central" } From 94ca4aa51d4f58b36469ce8ea1c2e1f0cd35afef Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 05:30:23 -0700 Subject: [PATCH 13/82] Bumping gaia.json for 4 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/80cde7ce278e Author: Jose M. Cantera Desc: Merge pull request #11378 from jmcanterafonseca/align_fb_active_merge Bug 901571 - FB Contacts must not match under different circumstances ======== https://hg.mozilla.org/integration/gaia-central/rev/f11cf9fe096d Author: Jose M. Cantera Desc: Bug 901571 - FB Contacts must not match under different circumstances ======== https://hg.mozilla.org/integration/gaia-central/rev/45321dab19db Author: Jose M. Cantera Desc: Merge pull request #11419 from jmcanterafonseca/edit_active_merge Bug 902391 - Active merge in edit mode for Contacts ======== https://hg.mozilla.org/integration/gaia-central/rev/316758208a3c Author: Jose M. Cantera Desc: Bug 902391 - Active merge in edit mode for Contacts --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index dfdae407a6a..9cbe3339e92 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "dbfb03ac729627f91bd63ad9d2830e0479bfb899", + "revision": "80cde7ce278e09ad1bf92410c729b96a9bd5ccfe", "repo_path": "/integration/gaia-central" } From bf21f81e8a0cd7eb86a555bfe78fd41c41e169f8 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 05:40:23 -0700 Subject: [PATCH 14/82] Bumping gaia.json for 1 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/cf4b9e1d77d1 Author: Julien Wajsberg Desc: Bug 902390 - [sms][mms] the input is 1px too high with the 'Moz' font r=borja --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 9cbe3339e92..d0e24099e8a 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "80cde7ce278e09ad1bf92410c729b96a9bd5ccfe", + "revision": "cf4b9e1d77d17c349b64c1c556586d81bd32a577", "repo_path": "/integration/gaia-central" } From eb29df66dfbd1d96beede99aa5051488695bfb0b Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 05:50:30 -0700 Subject: [PATCH 15/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/f10c7f33dcf5 Author: Etienne Segonzac Desc: Merge pull request #11421 from lissyx/bug900848 Bug 900848 - Use withheld-number string key instead of unknown in call log r=etienne ======== https://hg.mozilla.org/integration/gaia-central/rev/bb08fbdbb2bf Author: Alexandre Lissy Desc: Bug 900848 - Use withheld-number string key instead of unknown in call log Also remove a portion of dead code that was referring to the unknown key: since |Utils.getPhoneNumberPrimaryInfo| will return null in case |matchingTel| is invalid, it means that either way we will have been thrown out of this code previously, since the |matchingTel| is being checked for in the if() code just above. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index d0e24099e8a..4ee7ffc6316 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "cf4b9e1d77d17c349b64c1c556586d81bd32a577", + "revision": "f10c7f33dcf5d1bf24bbd470bea1e656794083c2", "repo_path": "/integration/gaia-central" } From a1487037365f498d191091c6714914726639c0e0 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 07:00:29 -0700 Subject: [PATCH 16/82] Bumping gaia.json for 5 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/20da670c9645 Author: Fabien Cazenave Desc: Merge pull request #11055 from fabi1cazenave/smsCursorScroll-bug875338 Bug 875338: the content is not scrolled down when sending an MMS, r=gnarf ======== https://hg.mozilla.org/integration/gaia-central/rev/8dd470c59d5d Author: Fabien Cazenave Desc: Bug 875338: unit tests ======== https://hg.mozilla.org/integration/gaia-central/rev/91bcb68bfa1b Author: Fabien Cazenave Desc: Bug 875338: the content is not scrolled down when sending an MMS, r=gnarf + do not scroll to bottom if the user already scrolled manually ======== https://hg.mozilla.org/integration/gaia-central/rev/347ba8341259 Author: ochameau Desc: Merge pull request #11409 from ochameau/bug902625 Bug 902625 - DEVICE_DEBUG doesn't correctly set remote debugging mode r=@vingtetun ======== https://hg.mozilla.org/integration/gaia-central/rev/5415ffb74ea9 Author: Alexandre Poirot Desc: Bug 902625 - DEVICE_DEBUG doesn't correctly set remote debugging mode --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 4ee7ffc6316..d66b97e0b97 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "f10c7f33dcf5d1bf24bbd470bea1e656794083c2", + "revision": "20da670c9645c9f4140503c5727820e23de7926c", "repo_path": "/integration/gaia-central" } From 7ab4f5c1b9dad2f831ea53869a1148df88fdc72b Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 07:10:24 -0700 Subject: [PATCH 17/82] Bumping gaia.json for 3 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/feae4d017673 Author: Fabien Cazenave Desc: Merge pull request #11428 from fabi1cazenave/smsCursorScroll-bug875338 Bug 875338: the content is not scrolled down when sending an MMS, r=julienw ======== https://hg.mozilla.org/integration/gaia-central/rev/ad7ba745f6df Author: Fabien Cazenave Desc: Bug 875338: the content is not scrolled down when sending an MMS, r=julienw ======== https://hg.mozilla.org/integration/gaia-central/rev/5bb8a4a8dcbf Author: Fabien Cazenave Desc: Revert "Merge pull request #11055 from fabi1cazenave/smsCursorScroll-bug875338" This reverts commit 96e8da02b834bc15fc4adc402b40c08ba36b2a59, reversing changes made to b3fb4af5ef69ac087afc77329fdd82d5c6d122a0. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index d66b97e0b97..57267fe2fb0 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "20da670c9645c9f4140503c5727820e23de7926c", + "revision": "feae4d0176732e5f3a7122c1c20b8f4cce99fa5f", "repo_path": "/integration/gaia-central" } From 027ba9ab798ce357547eef01391862804910ecab Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 07:45:32 -0700 Subject: [PATCH 18/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/6b84d29fdbb8 Author: Arthur Chen Desc: Merge pull request #11336 from crh0716/895226 Bug 895226 - Add a check on active call r=etienne, a=leo+ ======== https://hg.mozilla.org/integration/gaia-central/rev/7a870cd8850d Author: crh0716 Desc: Bug 895226 - Get the previous call from handledCalls directly --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 57267fe2fb0..36e210d16b7 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "feae4d0176732e5f3a7122c1c20b8f4cce99fa5f", + "revision": "6b84d29fdbb8db1ba062bd06fd6ed1cc1d45507f", "repo_path": "/integration/gaia-central" } From 3e6a7077f10eca1c60dcd7212195d8ef7996f466 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 07:55:24 -0700 Subject: [PATCH 19/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/f7fe122995e7 Author: Francisco Jordano Desc: Merge pull request #11420 from borjasalguero/paris_ftu_screen Bug 902800 - [FTU] Flickering with start tour screen after About Firefox OS screen r=arcturus ======== https://hg.mozilla.org/integration/gaia-central/rev/e0b402a314ea Author: borjasalguero Desc: Bug 902800 - [FTU] Flickering with start tour screen after About Firefox OS screen r=fcampo --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 36e210d16b7..06eed339eaa 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "6b84d29fdbb8db1ba062bd06fd6ed1cc1d45507f", + "revision": "f7fe122995e797cb7f029cde8d073001c8d8f83e", "repo_path": "/integration/gaia-central" } From 2ad3935ff5f55dbd647fead99885eda44c7f1057 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 08:05:23 -0700 Subject: [PATCH 20/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/2665bef33588 Author: Francisco Borja Salguero Castellano Desc: Merge pull request #11427 from borjasalguero/paris_sms_manifest Bug 879199 - Remove mobileconnection permission from SMS app r=julienw ======== https://hg.mozilla.org/integration/gaia-central/rev/a1350cdec37c Author: borjasalguero Desc: Bug 879199 - Remove mobileconnection permission from SMS app r=julienw --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 06eed339eaa..4a6aa8fec33 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "f7fe122995e797cb7f029cde8d073001c8d8f83e", + "revision": "2665bef33588e70ec65b09c2b5fb67faaa69ddd7", "repo_path": "/integration/gaia-central" } From 67f89c8b21662c0c8eac519f44ff34e015180f30 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 8 Aug 2013 17:12:32 +0200 Subject: [PATCH 21/82] Bug 831224: List vbr.mp3 in Makefile.in, r=padenot The MP3 file for testing variable-bitrate MP3's was not listed in the Makefile; and thus missing from the installation. The respective Mochitest always failed. --- content/media/test/Makefile.in | 1 + 1 file changed, 1 insertion(+) diff --git a/content/media/test/Makefile.in b/content/media/test/Makefile.in index 9d31f65bd7f..6554a849014 100644 --- a/content/media/test/Makefile.in +++ b/content/media/test/Makefile.in @@ -258,6 +258,7 @@ MOCHITEST_FILES += \ test-6-5.1.opus \ test-7-6.1.opus \ test-8-7.1.opus \ + vbr.mp3 \ video-overhang.ogg \ file_a4_tone.ogg \ detodos.opus \ From c6c61f68e678b6a7b48975fde83cac79ddd52750 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 08:40:24 -0700 Subject: [PATCH 22/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/c307df5aae16 Author: Francisco Jordano Desc: Merge pull request #11398 from arcturus/contact_list_selectable-2 Bug 901079 - [Contacts] Contacts list should offer a select mode ======== https://hg.mozilla.org/integration/gaia-central/rev/6df7529b0aae Author: Francisco Jordano Desc: Bug 901079 - [Contacts] Contacts list should offer a select mode --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 4a6aa8fec33..ee406a9d6d1 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "2665bef33588e70ec65b09c2b5fb67faaa69ddd7", + "revision": "c307df5aae16c32702732aea32769632c66b2311", "repo_path": "/integration/gaia-central" } From ff4cff79355f05854373fd5b2b5198e5b3098959 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Mon, 15 Jul 2013 16:27:19 +0800 Subject: [PATCH 23/82] Bug 888592 - move Telephony and TelephonyCall to webidl. sr=sicking, r=bent --- dom/base/Navigator.cpp | 2 +- dom/base/Navigator.h | 11 +- dom/base/nsDOMClassInfo.cpp | 15 -- dom/base/nsDOMClassInfoClasses.h | 2 - dom/bindings/Bindings.conf | 20 +++ dom/permission/tests/test_telephony.html | 2 +- dom/telephony/CallEvent.cpp | 73 ++++++++ dom/telephony/CallEvent.h | 61 +++++++ dom/telephony/CallsList.cpp | 69 ++++++++ dom/telephony/CallsList.h | 50 ++++++ dom/telephony/Telephony.cpp | 203 +++++++++-------------- dom/telephony/Telephony.h | 84 +++++++--- dom/telephony/TelephonyCall.cpp | 126 ++++++-------- dom/telephony/TelephonyCall.h | 72 ++++++-- dom/telephony/TelephonyCommon.h | 6 +- dom/telephony/moz.build | 5 +- dom/telephony/nsIDOMCallEvent.idl | 24 --- dom/telephony/nsIDOMTelephony.idl | 35 ---- dom/telephony/nsIDOMTelephonyCall.idl | 44 ----- dom/webidl/CallEvent.webidl | 3 +- dom/webidl/CallsList.webidl | 11 ++ dom/webidl/Navigator.webidl | 4 +- dom/webidl/Telephony.webidl | 35 ++++ dom/webidl/TelephonyCall.webidl | 50 ++++++ dom/webidl/WebIDL.mk | 3 + js/xpconnect/src/event_impl_gen.conf.in | 1 - 26 files changed, 633 insertions(+), 378 deletions(-) create mode 100644 dom/telephony/CallEvent.cpp create mode 100644 dom/telephony/CallEvent.h create mode 100644 dom/telephony/CallsList.cpp create mode 100644 dom/telephony/CallsList.h delete mode 100644 dom/telephony/nsIDOMCallEvent.idl delete mode 100644 dom/telephony/nsIDOMTelephony.idl delete mode 100644 dom/telephony/nsIDOMTelephonyCall.idl create mode 100644 dom/webidl/CallsList.webidl create mode 100644 dom/webidl/Telephony.webidl create mode 100644 dom/webidl/TelephonyCall.webidl diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp index e8e05c6bae8..15a53930aeb 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp @@ -1140,7 +1140,7 @@ Navigator::GetMozCellBroadcast(ErrorResult& aRv) return mCellBroadcast; } -nsIDOMTelephony* +telephony::Telephony* Navigator::GetMozTelephony(ErrorResult& aRv) { if (!mTelephony) { diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h index 92639d4c933..56a24b5fb67 100644 --- a/dom/base/Navigator.h +++ b/dom/base/Navigator.h @@ -33,7 +33,6 @@ class systemMessageCallback; #endif #ifdef MOZ_B2G_RIL -class nsIDOMTelephony; class nsIDOMMozMobileConnection; class nsIDOMMozCellBroadcast; class nsIDOMMozVoicemail; @@ -86,6 +85,12 @@ class MobileConnection; #endif } // namespace Connection; +#ifdef MOZ_B2G_RIL +namespace telephony { +class Telephony; +} // namespace Telephony; +#endif + namespace power { class PowerManager; } // namespace power @@ -214,7 +219,7 @@ public: ErrorResult& aRv); bool MozHasPendingMessage(const nsAString& aType, ErrorResult& aRv); #ifdef MOZ_B2G_RIL - nsIDOMTelephony* GetMozTelephony(ErrorResult& aRv); + telephony::Telephony* GetMozTelephony(ErrorResult& aRv); nsIDOMMozMobileConnection* GetMozMobileConnection(ErrorResult& aRv); nsIDOMMozCellBroadcast* GetMozCellBroadcast(ErrorResult& aRv); nsIDOMMozVoicemail* GetMozVoicemail(ErrorResult& aRv); @@ -309,7 +314,7 @@ private: nsRefPtr mPowerManager; nsRefPtr mMobileMessageManager; #ifdef MOZ_B2G_RIL - nsCOMPtr mTelephony; + nsRefPtr mTelephony; nsCOMPtr mVoicemail; #endif nsRefPtr mConnection; diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp index 8dea4d77ed8..891e6aa265b 100644 --- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -225,8 +225,6 @@ using mozilla::dom::workers::ResolveWorkerClasses; #include "nsIDOMConnection.h" #ifdef MOZ_B2G_RIL -#include "Telephony.h" -#include "TelephonyCall.h" #include "nsIDOMMozVoicemail.h" #include "nsIDOMIccManager.h" #include "nsIDOMMozCellBroadcast.h" @@ -640,10 +638,6 @@ static nsDOMClassInfoData sClassInfoData[] = { DOM_DEFAULT_SCRIPTABLE_FLAGS) #ifdef MOZ_B2G_RIL - NS_DEFINE_CLASSINFO_DATA(Telephony, nsEventTargetSH, - EVENTTARGET_SCRIPTABLE_FLAGS) - NS_DEFINE_CLASSINFO_DATA(TelephonyCall, nsEventTargetSH, - EVENTTARGET_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(MozVoicemail, nsEventTargetSH, EVENTTARGET_SCRIPTABLE_FLAGS) NS_DEFINE_CLASSINFO_DATA(MozIccManager, nsDOMGenericSH, @@ -1529,15 +1523,6 @@ nsDOMClassInfo::Init() DOM_CLASSINFO_MAP_END #ifdef MOZ_B2G_RIL - DOM_CLASSINFO_MAP_BEGIN(Telephony, nsIDOMTelephony) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMTelephony) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) - DOM_CLASSINFO_MAP_END - - DOM_CLASSINFO_MAP_BEGIN(TelephonyCall, nsIDOMTelephonyCall) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMTelephonyCall) - DOM_CLASSINFO_MAP_ENTRY(nsIDOMEventTarget) - DOM_CLASSINFO_MAP_END DOM_CLASSINFO_MAP_BEGIN(MozVoicemail, nsIDOMMozVoicemail) DOM_CLASSINFO_MAP_ENTRY(nsIDOMMozVoicemail) diff --git a/dom/base/nsDOMClassInfoClasses.h b/dom/base/nsDOMClassInfoClasses.h index d914f714c23..8406564aabe 100644 --- a/dom/base/nsDOMClassInfoClasses.h +++ b/dom/base/nsDOMClassInfoClasses.h @@ -128,8 +128,6 @@ DOMCI_CLASS(CSSPageRule) DOMCI_CLASS(MediaQueryList) #ifdef MOZ_B2G_RIL -DOMCI_CLASS(Telephony) -DOMCI_CLASS(TelephonyCall) DOMCI_CLASS(MozVoicemail) DOMCI_CLASS(MozIccManager) #endif diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf index 058ef8a51f8..82f435b4b07 100644 --- a/dom/bindings/Bindings.conf +++ b/dom/bindings/Bindings.conf @@ -150,6 +150,16 @@ DOMInterfaces = { 'headerFile': 'BatteryManager.h' }, +'CallEvent': { + 'nativeType': 'mozilla::dom::telephony::CallEvent', + 'headerFile': 'CallEvent.h', +}, + +'CallsList': { + 'nativeType': 'mozilla::dom::telephony::CallsList', + 'headerFile': 'CallsList.h', +}, + 'CameraManager': { 'nativeType': 'nsDOMCameraManager', 'headerFile': 'DOMCameraManager.h' @@ -1118,6 +1128,16 @@ DOMInterfaces = { 'concrete': False, }, +'Telephony' : { + 'nativeType': 'mozilla::dom::telephony::Telephony', + 'headerFile': 'Telephony.h', +}, + +'TelephonyCall' : { + 'nativeType': 'mozilla::dom::telephony::TelephonyCall', + 'headerFile': 'TelephonyCall.h', +}, + 'Text': { # Total hack to allow binding code to realize that nsTextNode can # in fact be cast to Text. diff --git a/dom/permission/tests/test_telephony.html b/dom/permission/tests/test_telephony.html index d459e032553..1c0917ec692 100644 --- a/dom/permission/tests/test_telephony.html +++ b/dom/permission/tests/test_telephony.html @@ -22,7 +22,7 @@ var gData = [ perm: ["telephony"], needParentPerm: true, obj: "mozTelephony", - idl: "nsIDOMTelephony", + webidl: "Telephony", }, ] diff --git a/dom/telephony/CallEvent.cpp b/dom/telephony/CallEvent.cpp new file mode 100644 index 00000000000..a479312b23a --- /dev/null +++ b/dom/telephony/CallEvent.cpp @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "CallEvent.h" +#include "mozilla/dom/CallEventBinding.h" + +#include "TelephonyCall.h" + +USING_TELEPHONY_NAMESPACE +using namespace mozilla::dom; + +/* static */ +already_AddRefed +CallEvent::Create(EventTarget* aOwner, const nsAString& aType, + TelephonyCall* aCall, bool aCanBubble, + bool aCancelable) +{ + nsRefPtr event = new CallEvent(aOwner, nullptr, nullptr); + event->mCall = aCall; + event->InitEvent(aType, aCanBubble, aCancelable); + return event.forget(); +} + +JSObject* +CallEvent::WrapObject(JSContext* aCx, JS::Handle aScope) +{ + return CallEventBinding::Wrap(aCx, aScope, this); +} + +NS_IMPL_CYCLE_COLLECTION_CLASS(CallEvent) + +NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(CallEvent, nsDOMEvent) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mCall) +NS_IMPL_CYCLE_COLLECTION_UNLINK_END + +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(CallEvent, nsDOMEvent) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCall) +NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END + +NS_IMPL_ADDREF_INHERITED(CallEvent, nsDOMEvent) +NS_IMPL_RELEASE_INHERITED(CallEvent, nsDOMEvent) + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(CallEvent) +NS_INTERFACE_MAP_END_INHERITING(nsDOMEvent) + +// WebIDL + +/* static */ +already_AddRefed +CallEvent::Constructor(const GlobalObject& aGlobal, const nsAString& aType, + const CallEventInit& aOptions, ErrorResult& aRv) +{ + nsCOMPtr target = do_QueryInterface(aGlobal.Get()); + + if (!target) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + + nsRefPtr event = Create(target, aType, aOptions.mCall, false, false); + + return event.forget(); +} + +already_AddRefed +CallEvent::GetCall() const +{ + nsRefPtr call = mCall; + return call.forget(); +} diff --git a/dom/telephony/CallEvent.h b/dom/telephony/CallEvent.h new file mode 100644 index 00000000000..61125968b3b --- /dev/null +++ b/dom/telephony/CallEvent.h @@ -0,0 +1,61 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_dom_telephony_callevent_h +#define mozilla_dom_telephony_callevent_h + +#include "TelephonyCommon.h" + +#include "nsDOMEvent.h" + +namespace mozilla { +namespace dom { +struct CallEventInit; +} +} + +BEGIN_TELEPHONY_NAMESPACE + +class CallEvent MOZ_FINAL : public nsDOMEvent +{ + nsRefPtr mCall; + +public: + NS_DECL_ISUPPORTS_INHERITED + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(CallEvent, nsDOMEvent) + NS_FORWARD_TO_NSDOMEVENT + + virtual JSObject* + WrapObject(JSContext* aCx, JS::Handle aScope) MOZ_OVERRIDE; + + // WebIDL + static already_AddRefed + Constructor(const GlobalObject& aGlobal, const nsAString& aType, + const CallEventInit& aOptions, ErrorResult& aRv); + + already_AddRefed + GetCall() const; + + static already_AddRefed + Create(EventTarget* aOwner, const nsAString& aType, TelephonyCall* aCall, + bool aCanBubble, bool aCancelable); + +private: + CallEvent(EventTarget* aOwner, + nsPresContext* aPresContext, + nsEvent* aEvent) + : nsDOMEvent(aOwner, aPresContext, aEvent) + { + SetIsDOMBinding(); + } + + virtual ~CallEvent() + { } +}; + +END_TELEPHONY_NAMESPACE + +#endif // mozilla_dom_telephony_callevent_h diff --git a/dom/telephony/CallsList.cpp b/dom/telephony/CallsList.cpp new file mode 100644 index 00000000000..20776c4cc5b --- /dev/null +++ b/dom/telephony/CallsList.cpp @@ -0,0 +1,69 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "CallsList.h" +#include "mozilla/dom/CallsListBinding.h" + +#include "Telephony.h" +#include "TelephonyCall.h" + +USING_TELEPHONY_NAMESPACE +using namespace mozilla::dom; + +NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_1(CallsList, mTelephony) + +NS_IMPL_CYCLE_COLLECTING_ADDREF(CallsList) +NS_IMPL_CYCLE_COLLECTING_RELEASE(CallsList) + +NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(CallsList) + NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY + NS_INTERFACE_MAP_ENTRY(nsISupports) +NS_INTERFACE_MAP_END + +CallsList::CallsList(Telephony* aTelephony) +: mTelephony(aTelephony) +{ + MOZ_ASSERT(mTelephony); + + SetIsDOMBinding(); +} + +CallsList::~CallsList() +{ +} + +nsPIDOMWindow* +CallsList::GetParentObject() const +{ + return mTelephony->GetOwner(); +} + +JSObject* +CallsList::WrapObject(JSContext* aCx, JS::Handle aScope) +{ + return CallsListBinding::Wrap(aCx, aScope, this); +} + +already_AddRefed +CallsList::Item(uint32_t aIndex) const +{ + nsRefPtr call = mTelephony->CallsArray().SafeElementAt(aIndex); + return call.forget(); +} + +uint32_t +CallsList::Length() const +{ + return mTelephony->CallsArray().Length(); +} + +already_AddRefed +CallsList::IndexedGetter(uint32_t aIndex, bool& aFound) const +{ + nsRefPtr call = mTelephony->CallsArray().SafeElementAt(aIndex); + aFound = call ? true : false; + return call.forget(); +} diff --git a/dom/telephony/CallsList.h b/dom/telephony/CallsList.h new file mode 100644 index 00000000000..75fc6616de3 --- /dev/null +++ b/dom/telephony/CallsList.h @@ -0,0 +1,50 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_dom_telephony_CallsList_h__ +#define mozilla_dom_telephony_CallsList_h__ + +#include "TelephonyCommon.h" + +#include "nsWrapperCache.h" + +BEGIN_TELEPHONY_NAMESPACE + +class CallsList MOZ_FINAL : public nsISupports, + public nsWrapperCache +{ + nsRefPtr mTelephony; + +public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(CallsList) + + CallsList(Telephony* aTelephony); + + nsPIDOMWindow* + GetParentObject() const; + + // WrapperCache + virtual JSObject* + WrapObject(JSContext* aCx, JS::Handle aScope) MOZ_OVERRIDE; + + // CallsList WebIDL + already_AddRefed + Item(uint32_t aIndex) const; + + uint32_t + Length() const; + + already_AddRefed + IndexedGetter(uint32_t aIndex, bool& aFound) const; + +private: + ~CallsList(); +}; + +END_TELEPHONY_NAMESPACE + +#endif // mozilla_dom_telephony_CallsList_h__ diff --git a/dom/telephony/Telephony.cpp b/dom/telephony/Telephony.cpp index cb98b5c1eac..9ec8dc00893 100644 --- a/dom/telephony/Telephony.cpp +++ b/dom/telephony/Telephony.cpp @@ -5,23 +5,22 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "Telephony.h" +#include "mozilla/dom/TelephonyBinding.h" #include "nsIURI.h" -#include "nsIDOMCallEvent.h" #include "nsPIDOMWindow.h" #include "nsIPermissionManager.h" -#include "GeneratedEvents.h" -#include "jsapi.h" #include "nsCharSeparatedTokenizer.h" #include "nsContentUtils.h" #include "nsCxPusher.h" -#include "nsDOMClassInfo.h" #include "nsNetUtil.h" #include "nsServiceManagerUtils.h" #include "nsTArrayHelpers.h" #include "nsThreadUtils.h" +#include "CallEvent.h" +#include "CallsList.h" #include "TelephonyCall.h" #define NS_RILCONTENTHELPER_CONTRACTID "@mozilla.org/ril/content-helper;1" @@ -78,14 +77,15 @@ public: }; Telephony::Telephony() -: mActiveCall(nullptr), mCallsArray(nullptr), mRooted(false), - mEnumerated(false) +: mActiveCall(nullptr), mEnumerated(false) { if (!gTelephonyList) { gTelephonyList = new TelephonyList(); } gTelephonyList->AppendElement(this); + + SetIsDOMBinding(); } Telephony::~Telephony() @@ -98,11 +98,6 @@ Telephony::~Telephony() } } - if (mRooted) { - mCallsArray = nullptr; - NS_DROP_JS_OBJECTS(this, Telephony); - } - NS_ASSERTION(gTelephonyList, "This should never be null!"); NS_ASSERTION(gTelephonyList->Contains(this), "Should be in the list!"); @@ -115,6 +110,12 @@ Telephony::~Telephony() } } +JSObject* +Telephony::WrapObject(JSContext* aCx, JS::Handle aScope) +{ + return TelephonyBinding::Wrap(aCx, aScope, this); +} + // static already_AddRefed Telephony::Create(nsPIDOMWindow* aOwner, ErrorResult& aRv) @@ -146,6 +147,7 @@ Telephony::Create(nsPIDOMWindow* aOwner, ErrorResult& aRv) telephony->mProvider = ril; telephony->mListener = new Listener(telephony); + telephony->mCallsList = new CallsList(telephony); nsresult rv = ril->EnumerateCalls(telephony->mListener); if (NS_FAILED(rv)) { @@ -199,12 +201,15 @@ Telephony::NotifyCallsChanged(TelephonyCall* aCall) return DispatchCallEvent(NS_LITERAL_STRING("callschanged"), aCall); } -nsresult +already_AddRefed Telephony::DialInternal(bool isEmergency, const nsAString& aNumber, - nsIDOMTelephonyCall** aResult) + ErrorResult& aRv) { - NS_ENSURE_ARG(!aNumber.IsEmpty()); + if (aNumber.IsEmpty()) { + aRv.Throw(NS_ERROR_INVALID_ARG); + return nullptr; + } for (uint32_t index = 0; index < mCalls.Length(); index++) { const nsRefPtr& tempCall = mCalls[index]; @@ -213,7 +218,8 @@ Telephony::DialInternal(bool isEmergency, // One call has been dialed already and we only support one outgoing call // at a time. NS_WARNING("Only permitted to dial one call at a time!"); - return NS_ERROR_NOT_AVAILABLE; + aRv.Throw(NS_ERROR_NOT_AVAILABLE); + return nullptr; } } @@ -223,7 +229,10 @@ Telephony::DialInternal(bool isEmergency, } else { rv = mProvider->Dial(aNumber); } - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + aRv.Throw(rv); + return nullptr; + } nsRefPtr call = CreateNewDialingCall(aNumber); @@ -236,169 +245,114 @@ Telephony::DialInternal(bool isEmergency, } } - call.forget(aResult); - return NS_OK; + return call.forget(); } NS_IMPL_CYCLE_COLLECTION_CLASS(Telephony) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(Telephony, nsDOMEventTargetHelper) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS - for (uint32_t index = 0; index < tmp->mCalls.Length(); index++) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCalls[i]"); - cb.NoteXPCOMChild(tmp->mCalls[index]->ToISupports()); - } - // Don't traverse mListener because it doesn't keep any reference to - // Telephony but a raw pointer instead. + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCalls) + NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallsList) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END -NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(Telephony, - nsDOMEventTargetHelper) - NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mCallsArray) -NS_IMPL_CYCLE_COLLECTION_TRACE_END - NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(Telephony, nsDOMEventTargetHelper) - tmp->mCalls.Clear(); tmp->mActiveCall = nullptr; - tmp->mCallsArray = nullptr; + NS_IMPL_CYCLE_COLLECTION_UNLINK(mCalls) + NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallsList) NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(Telephony) - NS_INTERFACE_MAP_ENTRY(nsIDOMTelephony) - NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(Telephony) NS_INTERFACE_MAP_END_INHERITING(nsDOMEventTargetHelper) NS_IMPL_ADDREF_INHERITED(Telephony, nsDOMEventTargetHelper) NS_IMPL_RELEASE_INHERITED(Telephony, nsDOMEventTargetHelper) -DOMCI_DATA(Telephony, Telephony) - NS_IMPL_ISUPPORTS1(Telephony::Listener, nsITelephonyListener) -// nsIDOMTelephony +// Telephony WebIDL -NS_IMETHODIMP -Telephony::Dial(const nsAString& aNumber, nsIDOMTelephonyCall** aResult) +already_AddRefed +Telephony::Dial(const nsAString& aNumber, ErrorResult& aRv) { - DialInternal(false, aNumber, aResult); - - return NS_OK; + nsRefPtr call = DialInternal(false, aNumber, aRv); + return call.forget(); } -NS_IMETHODIMP -Telephony::DialEmergency(const nsAString& aNumber, nsIDOMTelephonyCall** aResult) +already_AddRefed +Telephony::DialEmergency(const nsAString& aNumber, ErrorResult& aRv) { - DialInternal(true, aNumber, aResult); - - return NS_OK; + nsRefPtr call = DialInternal(true, aNumber, aRv); + return call.forget(); } -NS_IMETHODIMP -Telephony::GetMuted(bool* aMuted) +bool +Telephony::GetMuted(ErrorResult& aRv) const { - nsresult rv = mProvider->GetMicrophoneMuted(aMuted); - NS_ENSURE_SUCCESS(rv, rv); + bool muted = false; + aRv = mProvider->GetMicrophoneMuted(&muted); - return NS_OK; + return muted; } -NS_IMETHODIMP -Telephony::SetMuted(bool aMuted) +void +Telephony::SetMuted(bool aMuted, ErrorResult& aRv) { - nsresult rv = mProvider->SetMicrophoneMuted(aMuted); - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; + aRv = mProvider->SetMicrophoneMuted(aMuted); } -NS_IMETHODIMP -Telephony::GetSpeakerEnabled(bool* aSpeakerEnabled) +bool +Telephony::GetSpeakerEnabled(ErrorResult& aRv) const { - nsresult rv = mProvider->GetSpeakerEnabled(aSpeakerEnabled); - NS_ENSURE_SUCCESS(rv, rv); + bool enabled = false; + aRv = mProvider->GetSpeakerEnabled(&enabled); - return NS_OK; + return enabled; } -NS_IMETHODIMP -Telephony::SetSpeakerEnabled(bool aSpeakerEnabled) +void +Telephony::SetSpeakerEnabled(bool aEnabled, ErrorResult& aRv) { - nsresult rv = mProvider->SetSpeakerEnabled(aSpeakerEnabled); - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; + aRv = mProvider->SetSpeakerEnabled(aEnabled); } -NS_IMETHODIMP -Telephony::GetActive(nsIDOMTelephonyCall** aActive) +already_AddRefed +Telephony::GetActive() const { - nsCOMPtr activeCall = mActiveCall; - activeCall.forget(aActive); - return NS_OK; + nsCOMPtr activeCall = mActiveCall; + return activeCall.forget(); } -NS_IMETHODIMP -Telephony::GetCalls(JS::Value* aCalls) +already_AddRefed +Telephony::Calls() const { - JSObject* calls = mCallsArray; - if (!calls) { - nsresult rv; - nsIScriptContext* sc = GetContextForEventHandlers(&rv); - NS_ENSURE_SUCCESS(rv, rv); - AutoPushJSContext cx(sc ? sc->GetNativeContext() : nullptr); - if (sc) { - rv = nsTArrayToJSArray(cx, mCalls, &calls); - NS_ENSURE_SUCCESS(rv, rv); - - if (!mRooted) { - NS_HOLD_JS_OBJECTS(this, Telephony); - mRooted = true; - } - - mCallsArray = calls; - } else { - NS_ENSURE_SUCCESS(rv, rv); - } - } - - aCalls->setObject(*calls); - return NS_OK; + nsRefPtr list = mCallsList; + return list.forget(); } -NS_IMETHODIMP -Telephony::StartTone(const nsAString& aDTMFChar) +void +Telephony::StartTone(const nsAString& aDTMFChar, ErrorResult& aRv) { if (aDTMFChar.IsEmpty()) { NS_WARNING("Empty tone string will be ignored"); - return NS_OK; + return; } if (aDTMFChar.Length() > 1) { - return NS_ERROR_INVALID_ARG; + aRv.Throw(NS_ERROR_INVALID_ARG); + return; } - nsresult rv = mProvider->StartTone(aDTMFChar); - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; + aRv = mProvider->StartTone(aDTMFChar); } -NS_IMETHODIMP -Telephony::StopTone() +void +Telephony::StopTone(ErrorResult& aRv) { - nsresult rv = mProvider->StopTone(); - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; + aRv = mProvider->StopTone(); } -NS_IMPL_EVENT_HANDLER(Telephony, incoming) -NS_IMPL_EVENT_HANDLER(Telephony, callschanged) -NS_IMPL_EVENT_HANDLER(Telephony, remoteheld) -NS_IMPL_EVENT_HANDLER(Telephony, remoteresumed) - // EventTarget void @@ -600,7 +554,7 @@ Telephony::NotifyError(int32_t aCallIndex, nsresult Telephony::DispatchCallEvent(const nsAString& aType, - nsIDOMTelephonyCall* aCall) + TelephonyCall* aCall) { // The call may be null in following cases: // 1. callschanged when notifying enumeration being completed @@ -610,16 +564,9 @@ Telephony::DispatchCallEvent(const nsAString& aType, aType.EqualsLiteral("remoteheld") || aType.EqualsLiteral("remtoeresumed")); - nsCOMPtr event; - NS_NewDOMCallEvent(getter_AddRefs(event), this, nullptr, nullptr); - NS_ASSERTION(event, "This should never fail!"); + nsRefPtr event = CallEvent::Create(this, aType, aCall, false, false); - nsCOMPtr callEvent = do_QueryInterface(event); - MOZ_ASSERT(callEvent); - nsresult rv = callEvent->InitCallEvent(aType, false, false, aCall); - NS_ENSURE_SUCCESS(rv, rv); - - return DispatchTrustedEvent(callEvent); + return DispatchTrustedEvent(event); } void diff --git a/dom/telephony/Telephony.h b/dom/telephony/Telephony.h index 1062c2634f5..1cf49693af2 100644 --- a/dom/telephony/Telephony.h +++ b/dom/telephony/Telephony.h @@ -12,17 +12,13 @@ // assume they see the definition of TelephonyCall. #include "TelephonyCall.h" -#include "nsIDOMTelephony.h" -#include "nsIDOMTelephonyCall.h" #include "nsITelephonyProvider.h" -class nsIScriptContext; class nsPIDOMWindow; BEGIN_TELEPHONY_NAMESPACE -class Telephony : public nsDOMEventTargetHelper, - public nsIDOMTelephony +class Telephony MOZ_FINAL : public nsDOMEventTargetHelper { /** * Class Telephony doesn't actually inherit nsITelephonyListener. @@ -41,40 +37,73 @@ class Telephony : public nsDOMEventTargetHelper, TelephonyCall* mActiveCall; nsTArray > mCalls; + nsRefPtr mCallsList; - // Cached calls array object. Cleared whenever mCalls changes and then rebuilt - // once a page looks for the liveCalls attribute. - JS::Heap mCallsArray; - - bool mRooted; bool mEnumerated; public: NS_DECL_ISUPPORTS_INHERITED - NS_DECL_NSIDOMTELEPHONY NS_DECL_NSITELEPHONYLISTENER NS_REALLY_FORWARD_NSIDOMEVENTTARGET(nsDOMEventTargetHelper) - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED( - Telephony, - nsDOMEventTargetHelper) + NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(Telephony, + nsDOMEventTargetHelper) + + nsPIDOMWindow* + GetParentObject() const + { + return GetOwner(); + } + + // WrapperCache + virtual JSObject* + WrapObject(JSContext* aCx, JS::Handle aScope) MOZ_OVERRIDE; + + // WebIDL + already_AddRefed + Dial(const nsAString& aNumber, ErrorResult& aRv); + + already_AddRefed + DialEmergency(const nsAString& aNumber, ErrorResult& aRv); + + bool + GetMuted(ErrorResult& aRv) const; + + void + SetMuted(bool aMuted, ErrorResult& aRv); + + bool + GetSpeakerEnabled(ErrorResult& aRv) const; + + void + SetSpeakerEnabled(bool aEnabled, ErrorResult& aRv); + + already_AddRefed + GetActive() const; + + already_AddRefed + Calls() const; + + void + StartTone(const nsAString& aDTMF, ErrorResult& aRv); + + void + StopTone(ErrorResult& aRv); + + IMPL_EVENT_HANDLER(incoming) + IMPL_EVENT_HANDLER(callschanged) + IMPL_EVENT_HANDLER(remoteheld) + IMPL_EVENT_HANDLER(remoteresumed) static already_AddRefed Create(nsPIDOMWindow* aOwner, ErrorResult& aRv); static bool CheckPermission(nsPIDOMWindow* aOwner); - nsISupports* - ToISupports() - { - return static_cast(this); - } - void AddCall(TelephonyCall* aCall) { NS_ASSERTION(!mCalls.Contains(aCall), "Already know about this one!"); mCalls.AppendElement(aCall); - mCallsArray = nullptr; NotifyCallsChanged(aCall); } @@ -83,7 +112,6 @@ public: { NS_ASSERTION(mCalls.Contains(aCall), "Didn't know about this one!"); mCalls.RemoveElement(aCall); - mCallsArray = nullptr; NotifyCallsChanged(aCall); } @@ -93,6 +121,12 @@ public: return mProvider; } + const nsTArray >& + CallsArray() const + { + return mCalls; + } + virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE; private: @@ -108,14 +142,14 @@ private: nsresult NotifyCallsChanged(TelephonyCall* aCall); - nsresult + already_AddRefed DialInternal(bool isEmergency, const nsAString& aNumber, - nsIDOMTelephonyCall** aResult); + ErrorResult& aRv); nsresult DispatchCallEvent(const nsAString& aType, - nsIDOMTelephonyCall* aCall); + TelephonyCall* aCall); void EnqueueEnumerationAck(); diff --git a/dom/telephony/TelephonyCall.cpp b/dom/telephony/TelephonyCall.cpp index d4785cb6b29..0f376fe2bda 100644 --- a/dom/telephony/TelephonyCall.cpp +++ b/dom/telephony/TelephonyCall.cpp @@ -5,16 +5,15 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "TelephonyCall.h" - -#include "nsIDOMCallEvent.h" +#include "mozilla/dom/TelephonyCallBinding.h" #include "mozilla/dom/DOMError.h" -#include "GeneratedEvents.h" -#include "nsDOMClassInfo.h" + +#include "CallEvent.h" #include "Telephony.h" -#include "nsITelephonyProvider.h" USING_TELEPHONY_NAMESPACE +using namespace mozilla::dom; // static already_AddRefed @@ -46,6 +45,17 @@ TelephonyCall::TelephonyCall() mLive(false), mOutgoing(false) { + SetIsDOMBinding(); +} + +TelephonyCall::~TelephonyCall() +{ +} + +JSObject* +TelephonyCall::WrapObject(JSContext* aCx, JS::Handle aScope) +{ + return TelephonyCallBinding::Wrap(aCx, aScope, this); } void @@ -124,20 +134,13 @@ TelephonyCall::ChangeStateInternal(uint16_t aCallState, bool aFireEvents) nsresult TelephonyCall::DispatchCallEvent(const nsAString& aType, - nsIDOMTelephonyCall* aCall) + TelephonyCall* aCall) { MOZ_ASSERT(aCall); - nsCOMPtr event; - NS_NewDOMCallEvent(getter_AddRefs(event), this, nullptr, nullptr); - NS_ASSERTION(event, "This should never fail!"); + nsRefPtr event = CallEvent::Create(this, aType, aCall, false, false); - nsCOMPtr callEvent = do_QueryInterface(event); - MOZ_ASSERT(callEvent); - nsresult rv = callEvent->InitCallEvent(aType, false, false, aCall); - NS_ENSURE_SUCCESS(rv, rv); - - return DispatchTrustedEvent(callEvent); + return DispatchTrustedEvent(event); } void @@ -163,114 +166,87 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED_2(TelephonyCall, mError); NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(TelephonyCall) - NS_INTERFACE_MAP_ENTRY(nsIDOMTelephonyCall) - NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(TelephonyCall) NS_INTERFACE_MAP_END_INHERITING(nsDOMEventTargetHelper) NS_IMPL_ADDREF_INHERITED(TelephonyCall, nsDOMEventTargetHelper) NS_IMPL_RELEASE_INHERITED(TelephonyCall, nsDOMEventTargetHelper) -DOMCI_DATA(TelephonyCall, TelephonyCall) +// TelephonyCall WebIDL -NS_IMETHODIMP -TelephonyCall::GetNumber(nsAString& aNumber) +already_AddRefed +TelephonyCall::GetError() const { - aNumber.Assign(mNumber); - return NS_OK; + nsRefPtr error = mError; + return error.forget(); } -NS_IMETHODIMP -TelephonyCall::GetState(nsAString& aState) -{ - aState.Assign(mState); - return NS_OK; -} - -NS_IMETHODIMP -TelephonyCall::GetEmergency(bool* aEmergency) -{ - *aEmergency = mEmergency; - return NS_OK; -} - -NS_IMETHODIMP -TelephonyCall::GetError(nsISupports** aError) -{ - NS_IF_ADDREF(*aError = mError); - return NS_OK; -} - -NS_IMETHODIMP -TelephonyCall::Answer() +void +TelephonyCall::Answer(ErrorResult& aRv) { if (mCallState != nsITelephonyProvider::CALL_STATE_INCOMING) { NS_WARNING("Answer on non-incoming call ignored!"); - return NS_OK; + return; } nsresult rv = mTelephony->Provider()->AnswerCall(mCallIndex); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + aRv.Throw(rv); + return; + } ChangeStateInternal(nsITelephonyProvider::CALL_STATE_CONNECTING, true); - return NS_OK; } -NS_IMETHODIMP -TelephonyCall::HangUp() +void +TelephonyCall::HangUp(ErrorResult& aRv) { if (mCallState == nsITelephonyProvider::CALL_STATE_DISCONNECTING || mCallState == nsITelephonyProvider::CALL_STATE_DISCONNECTED) { NS_WARNING("HangUp on previously disconnected call ignored!"); - return NS_OK; + return; } nsresult rv = mCallState == nsITelephonyProvider::CALL_STATE_INCOMING ? mTelephony->Provider()->RejectCall(mCallIndex) : mTelephony->Provider()->HangUp(mCallIndex); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + aRv.Throw(rv); + return; + } ChangeStateInternal(nsITelephonyProvider::CALL_STATE_DISCONNECTING, true); - return NS_OK; } -NS_IMETHODIMP -TelephonyCall::Hold() +void +TelephonyCall::Hold(ErrorResult& aRv) { if (mCallState != nsITelephonyProvider::CALL_STATE_CONNECTED) { NS_WARNING("Hold non-connected call ignored!"); - return NS_OK; + return; } nsresult rv = mTelephony->Provider()->HoldCall(mCallIndex); - NS_ENSURE_SUCCESS(rv,rv); + if (NS_FAILED(rv)) { + aRv.Throw(rv); + return; + } ChangeStateInternal(nsITelephonyProvider::CALL_STATE_HOLDING, true); - return NS_OK; } -NS_IMETHODIMP -TelephonyCall::Resume() +void +TelephonyCall::Resume(ErrorResult& aRv) { if (mCallState != nsITelephonyProvider::CALL_STATE_HELD) { NS_WARNING("Resume non-held call ignored!"); - return NS_OK; + return; } nsresult rv = mTelephony->Provider()->ResumeCall(mCallIndex); - NS_ENSURE_SUCCESS(rv,rv); + if (NS_FAILED(rv)) { + aRv.Throw(rv); + return; + } ChangeStateInternal(nsITelephonyProvider::CALL_STATE_RESUMING, true); - return NS_OK; } - -NS_IMPL_EVENT_HANDLER(TelephonyCall, statechange) -NS_IMPL_EVENT_HANDLER(TelephonyCall, dialing) -NS_IMPL_EVENT_HANDLER(TelephonyCall, alerting) -NS_IMPL_EVENT_HANDLER(TelephonyCall, connecting) -NS_IMPL_EVENT_HANDLER(TelephonyCall, connected) -NS_IMPL_EVENT_HANDLER(TelephonyCall, disconnecting) -NS_IMPL_EVENT_HANDLER(TelephonyCall, disconnected) -NS_IMPL_EVENT_HANDLER(TelephonyCall, holding) -NS_IMPL_EVENT_HANDLER(TelephonyCall, held) -NS_IMPL_EVENT_HANDLER(TelephonyCall, resuming) -NS_IMPL_EVENT_HANDLER(TelephonyCall, error) diff --git a/dom/telephony/TelephonyCall.h b/dom/telephony/TelephonyCall.h index f244b6acb88..120ced93483 100644 --- a/dom/telephony/TelephonyCall.h +++ b/dom/telephony/TelephonyCall.h @@ -9,15 +9,13 @@ #include "TelephonyCommon.h" -#include "nsIDOMTelephonyCall.h" #include "mozilla/dom/DOMError.h" class nsPIDOMWindow; BEGIN_TELEPHONY_NAMESPACE -class TelephonyCall : public nsDOMEventTargetHelper, - public nsIDOMTelephonyCall +class TelephonyCall MOZ_FINAL : public nsDOMEventTargetHelper { nsRefPtr mTelephony; @@ -33,22 +31,71 @@ class TelephonyCall : public nsDOMEventTargetHelper, public: NS_DECL_ISUPPORTS_INHERITED - NS_DECL_NSIDOMTELEPHONYCALL NS_REALLY_FORWARD_NSIDOMEVENTTARGET(nsDOMEventTargetHelper) NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TelephonyCall, nsDOMEventTargetHelper) + nsPIDOMWindow* + GetParentObject() const + { + return GetOwner(); + } + + // WrapperCache + virtual JSObject* + WrapObject(JSContext* aCx, JS::Handle aScope) MOZ_OVERRIDE; + + // WebIDL + void + GetNumber(nsString& aNumber) const + { + aNumber.Assign(mNumber); + } + + void + GetState(nsString& aState) const + { + aState.Assign(mState); + } + + bool + Emergency() const + { + return mEmergency; + } + + already_AddRefed + GetError() const; + + void + Answer(ErrorResult& aRv); + + void + HangUp(ErrorResult& aRv); + + void + Hold(ErrorResult& aRv); + + void + Resume(ErrorResult& aRv); + + IMPL_EVENT_HANDLER(statechange) + IMPL_EVENT_HANDLER(dialing) + IMPL_EVENT_HANDLER(alerting) + IMPL_EVENT_HANDLER(connecting) + IMPL_EVENT_HANDLER(connected) + IMPL_EVENT_HANDLER(disconnecting) + IMPL_EVENT_HANDLER(disconnected) + IMPL_EVENT_HANDLER(holding) + IMPL_EVENT_HANDLER(held) + IMPL_EVENT_HANDLER(resuming) + IMPL_EVENT_HANDLER(error) + static already_AddRefed Create(Telephony* aTelephony, const nsAString& aNumber, uint16_t aCallState, uint32_t aCallIndex = kOutgoingPlaceholderCallIndex, bool aEmergency = false); - nsISupports* - ToISupports() - { - return static_cast(this); - } - void ChangeState(uint16_t aCallState) { @@ -93,15 +140,14 @@ public: private: TelephonyCall(); - ~TelephonyCall() - { } + ~TelephonyCall(); void ChangeStateInternal(uint16_t aCallState, bool aFireEvents); nsresult DispatchCallEvent(const nsAString& aType, - nsIDOMTelephonyCall* aCall); + TelephonyCall* aCall); }; END_TELEPHONY_NAMESPACE diff --git a/dom/telephony/TelephonyCommon.h b/dom/telephony/TelephonyCommon.h index 41e7467da1d..cbd4a7f9dd4 100644 --- a/dom/telephony/TelephonyCommon.h +++ b/dom/telephony/TelephonyCommon.h @@ -7,6 +7,8 @@ #ifndef mozilla_dom_telephony_telephonycommon_h__ #define mozilla_dom_telephony_telephonycommon_h__ +#include "mozilla/Attributes.h" +#include "mozilla/ErrorResult.h" #include "nsAutoPtr.h" #include "nsCOMPtr.h" #include "nsCycleCollectionParticipant.h" @@ -22,15 +24,13 @@ #define USING_TELEPHONY_NAMESPACE \ using namespace mozilla::dom::telephony; -class nsIDOMTelephony; -class nsIDOMTelephonyCall; - BEGIN_TELEPHONY_NAMESPACE enum { kOutgoingPlaceholderCallIndex = UINT32_MAX }; +class CallsList; class Telephony; class TelephonyCall; diff --git a/dom/telephony/moz.build b/dom/telephony/moz.build index 21262d97bcc..8a06b1bbcc2 100644 --- a/dom/telephony/moz.build +++ b/dom/telephony/moz.build @@ -5,9 +5,6 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. XPIDL_SOURCES += [ - 'nsIDOMCallEvent.idl', - 'nsIDOMTelephony.idl', - 'nsIDOMTelephonyCall.idl', 'nsITelephonyProvider.idl', ] @@ -22,6 +19,8 @@ XPIDL_FLAGS += [ MODULE = 'dom' CPP_SOURCES += [ + 'CallEvent.cpp', + 'CallsList.cpp', 'Telephony.cpp', 'TelephonyCall.cpp', ] diff --git a/dom/telephony/nsIDOMCallEvent.idl b/dom/telephony/nsIDOMCallEvent.idl deleted file mode 100644 index 1ae8185482f..00000000000 --- a/dom/telephony/nsIDOMCallEvent.idl +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */ -/* vim: set ts=2 et sw=2 tw=40: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsIDOMEvent.idl" - -interface nsIDOMTelephonyCall; - -[scriptable, builtinclass, uuid(476aacec-661e-44ec-80b4-4b7292b927b5)] -interface nsIDOMCallEvent : nsIDOMEvent -{ - readonly attribute nsIDOMTelephonyCall call; - [noscript] void initCallEvent(in DOMString aType, - in boolean aCanBubble, - in boolean aCancelable, - in nsIDOMTelephonyCall aCall); -}; - -dictionary CallEventInit : EventInit -{ - nsIDOMTelephonyCall call; -}; diff --git a/dom/telephony/nsIDOMTelephony.idl b/dom/telephony/nsIDOMTelephony.idl deleted file mode 100644 index 33405955027..00000000000 --- a/dom/telephony/nsIDOMTelephony.idl +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsIDOMEventTarget.idl" - -interface nsIDOMEventListener; -interface nsIDOMTelephonyCall; - -[scriptable, builtinclass, uuid(5ad8bf8b-958c-447b-9e1a-e6cf598b680f)] -interface nsIDOMTelephony : nsIDOMEventTarget -{ - nsIDOMTelephonyCall dial(in DOMString number); - nsIDOMTelephonyCall dialEmergency(in DOMString number); - - attribute boolean muted; - attribute boolean speakerEnabled; - - // The call that is "active", i.e. receives microphone input and tones - // generated via startTone. - readonly attribute nsIDOMTelephonyCall active; - - // Array of all calls that are currently connected. - readonly attribute jsval calls; - - void startTone(in DOMString tone); - void stopTone(); - - [implicit_jscontext] attribute jsval onincoming; - [implicit_jscontext] attribute jsval oncallschanged; - [implicit_jscontext] attribute jsval onremoteheld; - [implicit_jscontext] attribute jsval onremoteresumed; -}; diff --git a/dom/telephony/nsIDOMTelephonyCall.idl b/dom/telephony/nsIDOMTelephonyCall.idl deleted file mode 100644 index 3b6ccd3b5d3..00000000000 --- a/dom/telephony/nsIDOMTelephonyCall.idl +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */ -/* vim: set ts=2 et sw=2 tw=40: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsIDOMEventTarget.idl" - -interface nsIDOMEventListener; - -[scriptable, builtinclass, uuid(74d240f5-a379-4ac0-a085-a7f714189a27)] -interface nsIDOMTelephonyCall : nsIDOMEventTarget -{ - readonly attribute DOMString number; - - readonly attribute DOMString state; - - // The property "emergency" indicate whether the call number is an emergency - // number. Only the outgoing call could have a value with true and it is - // available after dialing state. - readonly attribute boolean emergency; - - // This is a DOMError - readonly attribute nsISupports error; - - void answer(); - void hangUp(); - void hold(); - void resume(); - - [implicit_jscontext] attribute jsval onstatechange; - - [implicit_jscontext] attribute jsval ondialing; - [implicit_jscontext] attribute jsval onalerting; - [implicit_jscontext] attribute jsval onconnecting; - [implicit_jscontext] attribute jsval onconnected; - [implicit_jscontext] attribute jsval ondisconnecting; - [implicit_jscontext] attribute jsval ondisconnected; - [implicit_jscontext] attribute jsval onholding; - [implicit_jscontext] attribute jsval onheld; - [implicit_jscontext] attribute jsval onresuming; - - [implicit_jscontext] attribute jsval onerror; -}; diff --git a/dom/webidl/CallEvent.webidl b/dom/webidl/CallEvent.webidl index 83db7db030c..4de26c9ad2f 100644 --- a/dom/webidl/CallEvent.webidl +++ b/dom/webidl/CallEvent.webidl @@ -3,9 +3,8 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -interface TelephonyCall; -[Constructor(DOMString type, optional CallEventInit eventInitDict), HeaderFile="GeneratedEventClasses.h"] +[Constructor(DOMString type, optional CallEventInit eventInitDict)] interface CallEvent : Event { readonly attribute TelephonyCall? call; diff --git a/dom/webidl/CallsList.webidl b/dom/webidl/CallsList.webidl new file mode 100644 index 00000000000..251a0b91d5f --- /dev/null +++ b/dom/webidl/CallsList.webidl @@ -0,0 +1,11 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +[ArrayClass, NoInterfaceObject] +interface CallsList { + getter TelephonyCall item(unsigned long index); + readonly attribute unsigned long length; +}; diff --git a/dom/webidl/Navigator.webidl b/dom/webidl/Navigator.webidl index c9f224ef1e9..419e61b6e82 100644 --- a/dom/webidl/Navigator.webidl +++ b/dom/webidl/Navigator.webidl @@ -252,11 +252,9 @@ partial interface Navigator { }; #ifdef MOZ_B2G_RIL -interface MozTelephony; -// nsIDOMNavigatorTelephony partial interface Navigator { [Throws, Func="Navigator::HasTelephonySupport"] - readonly attribute MozTelephony? mozTelephony; + readonly attribute Telephony? mozTelephony; }; // nsIMozNavigatorMobileConnection diff --git a/dom/webidl/Telephony.webidl b/dom/webidl/Telephony.webidl new file mode 100644 index 00000000000..2d5f705a6bd --- /dev/null +++ b/dom/webidl/Telephony.webidl @@ -0,0 +1,35 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +interface Telephony : EventTarget { + [Throws] + TelephonyCall dial(DOMString number); + [Throws] + TelephonyCall dialEmergency(DOMString number); + + [Throws] + attribute boolean muted; + [Throws] + attribute boolean speakerEnabled; + + readonly attribute TelephonyCall? active; + + readonly attribute CallsList calls; + + [Throws] + void startTone(DOMString tone); + [Throws] + void stopTone(); + + [SetterThrows] + attribute EventHandler onincoming; + [SetterThrows] + attribute EventHandler oncallschanged; + [SetterThrows] + attribute EventHandler onremoteheld; + [SetterThrows] + attribute EventHandler onremoteresumed; +}; diff --git a/dom/webidl/TelephonyCall.webidl b/dom/webidl/TelephonyCall.webidl new file mode 100644 index 00000000000..02888e4faf8 --- /dev/null +++ b/dom/webidl/TelephonyCall.webidl @@ -0,0 +1,50 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +interface TelephonyCall : EventTarget { + readonly attribute DOMString number; + + readonly attribute DOMString state; + + // The property "emergency" indicates whether the call number is an emergency + // number. Only the outgoing call could have a value with true and it is + // available after dialing state. + readonly attribute boolean emergency; + + readonly attribute DOMError? error; + + [Throws] + void answer(); + [Throws] + void hangUp(); + [Throws] + void hold(); + [Throws] + void resume(); + + [SetterThrows] + attribute EventHandler onstatechange; + [SetterThrows] + attribute EventHandler ondialing; + [SetterThrows] + attribute EventHandler onalerting; + [SetterThrows] + attribute EventHandler onconnecting; + [SetterThrows] + attribute EventHandler onconnected; + [SetterThrows] + attribute EventHandler ondisconnecting; + [SetterThrows] + attribute EventHandler ondisconnected; + [SetterThrows] + attribute EventHandler onholding; + [SetterThrows] + attribute EventHandler onheld; + [SetterThrows] + attribute EventHandler onresuming; + [SetterThrows] + attribute EventHandler onerror; +}; diff --git a/dom/webidl/WebIDL.mk b/dom/webidl/WebIDL.mk index 8d8554f3538..24af47647ac 100644 --- a/dom/webidl/WebIDL.mk +++ b/dom/webidl/WebIDL.mk @@ -437,7 +437,10 @@ endif ifdef MOZ_B2G_RIL webidl_files += \ + CallsList.webidl \ MozStkCommandEvent.webidl \ + Telephony.webidl \ + TelephonyCall.webidl \ $(NULL) endif diff --git a/js/xpconnect/src/event_impl_gen.conf.in b/js/xpconnect/src/event_impl_gen.conf.in index f17fd06e1e1..7b88abfc650 100644 --- a/js/xpconnect/src/event_impl_gen.conf.in +++ b/js/xpconnect/src/event_impl_gen.conf.in @@ -32,7 +32,6 @@ simple_events = [ 'BluetoothStatusChangedEvent', #endif #ifdef MOZ_B2G_RIL - 'CallEvent', 'CFStateChangeEvent', 'DataErrorEvent', 'IccCardLockErrorEvent', From b6a3c06681963d708d43e1296d328cf011bfd548 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Tue, 6 Aug 2013 20:07:40 +0800 Subject: [PATCH 24/82] Bug 822210 - cdma call waiting - part1 - idl. sr=sicking, r=bent --- dom/telephony/nsITelephonyProvider.idl | 10 +++++++++- dom/webidl/TelephonyCall.webidl | 4 ++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/dom/telephony/nsITelephonyProvider.idl b/dom/telephony/nsITelephonyProvider.idl index 7435f8e4d0b..f21afd1de9d 100644 --- a/dom/telephony/nsITelephonyProvider.idl +++ b/dom/telephony/nsITelephonyProvider.idl @@ -4,7 +4,7 @@ #include "nsISupports.idl" -[scriptable, uuid(a1e9fdd9-7901-4a0f-8b6b-6ee0fa8f9d81)] +[scriptable, uuid(3fb573c3-6fc4-41d3-80c1-f0e60662691e)] interface nsITelephonyListener : nsISupports { /** @@ -82,6 +82,14 @@ interface nsITelephonyListener : nsISupports */ void notifyError(in long callIndex, in AString error); + + /** + * Called when a waiting call comes in CDMA networks. + * + * @param number + * Number of the other party. + */ + void notifyCdmaCallWaiting(in AString number); }; /** diff --git a/dom/webidl/TelephonyCall.webidl b/dom/webidl/TelephonyCall.webidl index 02888e4faf8..2a900cd96c8 100644 --- a/dom/webidl/TelephonyCall.webidl +++ b/dom/webidl/TelephonyCall.webidl @@ -7,6 +7,10 @@ interface TelephonyCall : EventTarget { readonly attribute DOMString number; + // In CDMA networks, the 2nd waiting call shares the connection with the 1st + // call. We need an additional attribute for the 2nd number. + readonly attribute DOMString? secondNumber; + readonly attribute DOMString state; // The property "emergency" indicates whether the call number is an emergency From 09536b0fc3b89de3d646aba86e91669db6cecbb8 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Tue, 30 Jul 2013 17:08:53 +0800 Subject: [PATCH 25/82] Bug 822210 - cdma call waiting - part2 - telephony DOM. r=bent --- dom/telephony/Telephony.cpp | 12 ++++++++++++ dom/telephony/TelephonyCall.h | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/dom/telephony/Telephony.cpp b/dom/telephony/Telephony.cpp index 9ec8dc00893..2ceb4723509 100644 --- a/dom/telephony/Telephony.cpp +++ b/dom/telephony/Telephony.cpp @@ -552,6 +552,18 @@ Telephony::NotifyError(int32_t aCallIndex, return NS_OK; } +NS_IMETHODIMP +Telephony::NotifyCdmaCallWaiting(const nsAString& aNumber) +{ + MOZ_ASSERT(mActiveCall && + mActiveCall->CallState() == nsITelephonyProvider::CALL_STATE_CONNECTED); + + nsRefPtr callToNotify = mActiveCall; + callToNotify->UpdateSecondNumber(aNumber); + DispatchCallEvent(NS_LITERAL_STRING("callschanged"), callToNotify); + return NS_OK; +} + nsresult Telephony::DispatchCallEvent(const nsAString& aType, TelephonyCall* aCall) diff --git a/dom/telephony/TelephonyCall.h b/dom/telephony/TelephonyCall.h index 120ced93483..9b213de05e5 100644 --- a/dom/telephony/TelephonyCall.h +++ b/dom/telephony/TelephonyCall.h @@ -20,6 +20,7 @@ class TelephonyCall MOZ_FINAL : public nsDOMEventTargetHelper nsRefPtr mTelephony; nsString mNumber; + nsString mSecondNumber; nsString mState; bool mEmergency; nsRefPtr mError; @@ -52,6 +53,12 @@ public: aNumber.Assign(mNumber); } + void + GetSecondNumber(nsString& aSecondNumber) const + { + aSecondNumber.Assign(mSecondNumber); + } + void GetState(nsString& aState) const { @@ -128,6 +135,12 @@ public: mEmergency = aEmergency; } + void + UpdateSecondNumber(const nsAString& aNumber) + { + mSecondNumber = aNumber; + } + bool IsOutgoing() const { From 894e92056489889b4a918662496be280745b19b0 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Tue, 30 Jul 2013 17:24:43 +0800 Subject: [PATCH 26/82] Bug 822210 - cdma call waiting - part3 - ril impl. r=vicamo --- dom/system/gonk/RILContentHelper.js | 8 +++++++- dom/system/gonk/RadioInterfaceLayer.js | 4 ++++ dom/system/gonk/ril_worker.js | 22 ++++++++++++++++++++-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/dom/system/gonk/RILContentHelper.js b/dom/system/gonk/RILContentHelper.js index 7334e7c86c1..f50588f4842 100644 --- a/dom/system/gonk/RILContentHelper.js +++ b/dom/system/gonk/RILContentHelper.js @@ -105,7 +105,8 @@ const RIL_IPC_MSG_NAMES = [ "RIL:ReadIccContacts", "RIL:UpdateIccContact", "RIL:SetRoamingPreference", - "RIL:GetRoamingPreference" + "RIL:GetRoamingPreference", + "RIL:CdmaCallWaiting" ]; XPCOMUtils.defineLazyServiceGetter(this, "cpmm", @@ -1600,6 +1601,11 @@ RILContentHelper.prototype = { this.handleSimpleRequest(msg.json.requestId, msg.json.errorMsg, msg.json.mode); break; + case "RIL:CdmaCallWaiting": + this._deliverEvent("_telephonyListeners", + "notifyCdmaCallWaiting", + [msg.json.data]); + break; } }, diff --git a/dom/system/gonk/RadioInterfaceLayer.js b/dom/system/gonk/RadioInterfaceLayer.js index b452924c04f..8339b28af5a 100644 --- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -943,6 +943,10 @@ RadioInterface.prototype = { // This one will handle its own notifications. this.handleCallDisconnected(message.call); break; + case "cdmaCallWaiting": + gMessageManager.sendTelephonyMessage("RIL:CdmaCallWaiting", + this.clientId, message.number); + break; case "enumerateCalls": // This one will handle its own notifications. this.handleEnumerateCalls(message); diff --git a/dom/system/gonk/ril_worker.js b/dom/system/gonk/ril_worker.js index 781edae56c8..ecafa525805 100644 --- a/dom/system/gonk/ril_worker.js +++ b/dom/system/gonk/ril_worker.js @@ -1955,7 +1955,13 @@ let RIL = { holdCall: function holdCall(options) { let call = this.currentCalls[options.callIndex]; if (call && call.state == CALL_STATE_ACTIVE) { - Buf.simpleRequest(REQUEST_SWITCH_HOLDING_AND_ACTIVE); + if (this._isCdma) { + Buf.newParcel(REQUEST_CDMA_FLASH); + Buf.writeString(""); + Buf.sendParcel(); + } else { + Buf.simpleRequest(REQUEST_SWITCH_HOLDING_AND_ACTIVE); + } } }, @@ -6179,7 +6185,19 @@ RIL[UNSOLICITED_RESPONSE_NEW_BROADCAST_SMS] = function UNSOLICITED_RESPONSE_NEW_ RIL[UNSOLICITED_CDMA_RUIM_SMS_STORAGE_FULL] = null; RIL[UNSOLICITED_RESTRICTED_STATE_CHANGED] = null; RIL[UNSOLICITED_ENTER_EMERGENCY_CALLBACK_MODE] = null; -RIL[UNSOLICITED_CDMA_CALL_WAITING] = null; +RIL[UNSOLICITED_CDMA_CALL_WAITING] = function UNSOLICITED_CDMA_CALL_WAITING(length) { + let call = {}; + call.number = Buf.readString(); + call.numberPresentation = Buf.readUint32(); + call.name = Buf.readString(); + call.namePresentation = Buf.readUint32(); + call.isPresent = Buf.readUint32(); + call.signalType = Buf.readUint32(); + call.alertPitch = Buf.readUint32(); + call.signal = Buf.readUint32(); + this.sendChromeMessage({rilMessageType: "cdmaCallWaiting", + number: call.number}); +}; RIL[UNSOLICITED_CDMA_OTA_PROVISION_STATUS] = null; RIL[UNSOLICITED_CDMA_INFO_REC] = null; RIL[UNSOLICITED_OEM_HOOK_RAW] = null; From e40502137a16a8f7bc898dff02e4cb12f5b58484 Mon Sep 17 00:00:00 2001 From: Hsin-Yi Tsai Date: Tue, 30 Jul 2013 17:27:23 +0800 Subject: [PATCH 27/82] Bug 822210 - cdma call waiting - part4 - BT impl. r=gyeh --- dom/bluetooth/BluetoothTelephonyListener.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dom/bluetooth/BluetoothTelephonyListener.cpp b/dom/bluetooth/BluetoothTelephonyListener.cpp index 3c6a448e4e6..6f5924397ab 100644 --- a/dom/bluetooth/BluetoothTelephonyListener.cpp +++ b/dom/bluetooth/BluetoothTelephonyListener.cpp @@ -92,6 +92,12 @@ TelephonyListener::NotifyError(int32_t aCallIndex, return NS_OK; } +NS_IMETHODIMP +TelephonyListener::NotifyCdmaCallWaiting(const nsAString& aNumber) +{ + return NS_OK; +} + } // anonymous namespace BluetoothTelephonyListener::BluetoothTelephonyListener() From d07cf9666fef3e820296bb7e4129fce79006ec3d Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 8 Aug 2013 09:59:39 -0700 Subject: [PATCH 28/82] Backed out changeset 374a8aab2b49 (bug 831224) --- content/media/test/manifest.js | 1 - content/media/test/vbr.mp3 | Bin 300553 -> 0 bytes 2 files changed, 1 deletion(-) delete mode 100644 content/media/test/vbr.mp3 diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 5f0b80ab554..05aa7fe8b4e 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -42,7 +42,6 @@ var gPlayedTests = [ { name:"seek.webm", type:"video/webm", duration:3.966 }, { name:"gizmo.mp4", type:"video/mp4", duration:5.56 }, { name:"owl.mp3", type:"audio/mpeg", duration:3.29 }, - { name:"vbr.mp3", type:"audio/mpeg", duration:10.0 } ]; // Used by test_mozLoadFrom. Need one test file per decoder backend, plus diff --git a/content/media/test/vbr.mp3 b/content/media/test/vbr.mp3 deleted file mode 100644 index 38eb376a971154722676b4a55019808168796c2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300553 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�_?X?`op9pDmI3_Uq$UyJ*aZ+l@bW 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

{q^N?j1!g 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∨ay_>C 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%0DWNEAkE;bq%kIE7njqmaSzzGkGgL_|Be0UX5~ayU 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 MU;mH)-~9gn0fke|RR910 From 34a074e7fdb12cfe6cdad3b4de4df1cfac700f98 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 8 Aug 2013 09:59:42 -0700 Subject: [PATCH 29/82] Backed out changeset 909cddbd5af9 (bug 831224) --- content/media/omx/OmxDecoder.cpp | 126 +++++++++++-------------------- content/media/omx/OmxDecoder.h | 1 - 2 files changed, 43 insertions(+), 84 deletions(-) diff --git a/content/media/omx/OmxDecoder.cpp b/content/media/omx/OmxDecoder.cpp index 511cd336bdc..3899e0f92f5 100644 --- a/content/media/omx/OmxDecoder.cpp +++ b/content/media/omx/OmxDecoder.cpp @@ -40,50 +40,22 @@ using namespace mozilla; namespace mozilla { -class OmxDecoderProcessCachedDataTask : public Task -{ -public: - OmxDecoderProcessCachedDataTask(android::OmxDecoder* aOmxDecoder, int64_t aOffset) - : mOmxDecoder(aOmxDecoder), - mOffset(aOffset) - { } - - void Run() - { - MOZ_ASSERT(!NS_IsMainThread()); - MOZ_ASSERT(mOmxDecoder.get()); - mOmxDecoder->ProcessCachedData(mOffset, false); - } - -private: - android::sp mOmxDecoder; - int64_t mOffset; -}; - // When loading an MP3 stream from a file, we need to parse the file's -// content to find its duration. Reading files of 100 Mib or more can -// delay the player app noticably, so the file os read and decoded in -// smaller chunks. +// content to find its duration. We must do this from within the decode +// thread, but parsing itself must be done in the main thread. // -// We first read on the decode thread, but parsing must be done on the -// main thread. After we read the file's initial MiBs in the decode -// thread, an instance of this class is scheduled to the main thread for -// parsing the MP3 stream. The decode thread waits until it has finished. -// -// If there is more data available from the file, the runnable dispatches -// a task to the IO thread for retrieving the next chunk of data, and -// the IO task dispatches a runnable to the main thread for parsing the -// data. This goes on until all of the MP3 file has been parsed. +// After we read the file's content in the decode thread, an instance +// of this class is scheduled to the main thread for parsing the MP3 +// stream. We then wait until it has returned. class OmxDecoderNotifyDataArrivedRunnable : public nsRunnable { public: - OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset, uint64_t aFullLength) + OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset) : mOmxDecoder(aOmxDecoder), mBuffer(aBuffer), mLength(aLength), mOffset(aOffset), - mFullLength(aFullLength), mCompletedMonitor("OmxDecoderNotifyDataArrived.mCompleted"), mCompleted(false) { @@ -106,13 +78,6 @@ public: mOffset += length; } - if (mOffset < mFullLength) { - // We cannot read data in the main thread because it - // might block for too long. Instead we post an IO task - // to the IO thread if there is more data available. - XRE_GetIOMessageLoop()->PostTask(FROM_HERE, new OmxDecoderProcessCachedDataTask(mOmxDecoder.get(), mOffset)); - } - Completed(); return NS_OK; @@ -128,6 +93,8 @@ public: } } + static nsresult ProcessCachedData(android::OmxDecoder* aOmxDecoder); + private: // Call this function at the end of Run() to notify waiting // threads. @@ -143,12 +110,43 @@ private: nsAutoArrayPtr mBuffer; uint64_t mLength; int64_t mOffset; - uint64_t mFullLength; Monitor mCompletedMonitor; bool mCompleted; }; +nsresult OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(android::OmxDecoder* aOmxDecoder) +{ + MOZ_ASSERT(aOmxDecoder); + + NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); + + MediaResource* resource = aOmxDecoder->GetResource(); + MOZ_ASSERT(resource); + + int64_t length = resource->GetCachedDataEnd(0); + NS_ENSURE_TRUE(length >= 0, NS_ERROR_UNEXPECTED); + + if (!length) { + return NS_OK; // Cache is empty, nothing to do + } + + nsAutoArrayPtr buffer(new char[length]); + + nsresult rv = resource->ReadFromCache(buffer.get(), 0, length); + NS_ENSURE_SUCCESS(rv, rv); + + nsRefPtr runnable( + new OmxDecoderNotifyDataArrivedRunnable(aOmxDecoder, buffer.forget(), length, 0)); + + rv = NS_DispatchToMainThread(runnable.get()); + NS_ENSURE_SUCCESS(rv, rv); + + runnable->WaitForCompletion(); + + return NS_OK; +} + namespace layers { VideoGraphicBuffer::VideoGraphicBuffer(const android::wp aOmxDecoder, @@ -396,7 +394,9 @@ bool OmxDecoder::TryLoad() { // Feed MP3 parser with cached data. Local files will be fully // cached already, network streams will update with sucessive // calls to NotifyDataArrived. - if (ProcessCachedData(0, true)) { + nsresult rv = OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(this); + + if (rv == NS_OK) { durationUs = mMP3FrameParser.GetDuration(); if (durationUs > totalDurationUs) { totalDurationUs = durationUs; @@ -992,43 +992,3 @@ void OmxDecoder::ReleaseAllPendingVideoBuffersLocked() releasingVideoBuffers.clear(); } -bool OmxDecoder::ProcessCachedData(int64_t aOffset, bool aWaitForCompletion) -{ - // We read data in chunks of 8 MiB. We can reduce this - // value if media, such as sdcards, is too slow. - static const int64_t sReadSize = 8 * 1024 * 1024; - - NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); - - MOZ_ASSERT(mResource); - - int64_t resourceLength = mResource->GetCachedDataEnd(0); - NS_ENSURE_TRUE(resourceLength >= 0, false); - - if (aOffset >= resourceLength) { - return true; // Cache is empty, nothing to do - } - - int64_t bufferLength = std::min(resourceLength-aOffset, sReadSize); - - nsAutoArrayPtr buffer(new char[bufferLength]); - - nsresult rv = mResource->ReadFromCache(buffer.get(), aOffset, bufferLength); - NS_ENSURE_SUCCESS(rv, false); - - nsRefPtr runnable( - new OmxDecoderNotifyDataArrivedRunnable(this, - buffer.forget(), - bufferLength, - aOffset, - resourceLength)); - - rv = NS_DispatchToMainThread(runnable.get()); - NS_ENSURE_SUCCESS(rv, false); - - if (aWaitForCompletion) { - runnable->WaitForCompletion(); - } - - return true; -} diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index c3e3d8f5aed..82d3135aa6d 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -225,7 +225,6 @@ public: // Called on ALooper thread. void onMessageReceived(const sp &msg); - bool ProcessCachedData(int64_t aOffset, bool aWaitForCompletion); }; } From 7b2317d99cc6b0e7833da90429b9ca9246e3e11b Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 8 Aug 2013 09:59:45 -0700 Subject: [PATCH 30/82] Backed out changeset e334b3139e2a (bug 831224) --- content/media/MediaDecoderReader.h | 4 +- content/media/omx/MediaOmxReader.cpp | 9 -- content/media/omx/MediaOmxReader.h | 2 - content/media/omx/OmxDecoder.cpp | 156 +-------------------------- content/media/omx/OmxDecoder.h | 5 - 5 files changed, 5 insertions(+), 171 deletions(-) diff --git a/content/media/MediaDecoderReader.h b/content/media/MediaDecoderReader.h index f6636c9612d..243eb64e743 100644 --- a/content/media/MediaDecoderReader.h +++ b/content/media/MediaDecoderReader.h @@ -519,8 +519,8 @@ public: return functor.mResult; } - // Only used by WebMReader and MediaOmxReader for now, so stub here rather - // than in every reader than inherits from MediaDecoderReader. + // Only used by WebMReader for now, so stub here rather than in every + // reader than inherits from MediaDecoderReader. virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) {} virtual MediaQueue& AudioQueue() { return mAudioQueue; } diff --git a/content/media/omx/MediaOmxReader.cpp b/content/media/omx/MediaOmxReader.cpp index 5fcb456a50f..cf27940e75c 100644 --- a/content/media/omx/MediaOmxReader.cpp +++ b/content/media/omx/MediaOmxReader.cpp @@ -270,15 +270,6 @@ bool MediaOmxReader::DecodeVideoFrame(bool &aKeyframeSkip, return true; } -void MediaOmxReader::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) -{ - android::OmxDecoder *omxDecoder = mOmxDecoder.get(); - - if (omxDecoder) { - omxDecoder->NotifyDataArrived(aBuffer, aLength, aOffset); - } -} - bool MediaOmxReader::DecodeAudioData() { NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); diff --git a/content/media/omx/MediaOmxReader.h b/content/media/omx/MediaOmxReader.h index db55f2d7fd6..13a36c595c6 100644 --- a/content/media/omx/MediaOmxReader.h +++ b/content/media/omx/MediaOmxReader.h @@ -40,8 +40,6 @@ public: virtual nsresult Init(MediaDecoderReader* aCloneDonor); virtual nsresult ResetDecode(); - virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); - virtual bool DecodeAudioData(); virtual bool DecodeVideoFrame(bool &aKeyframeSkip, int64_t aTimeThreshold); diff --git a/content/media/omx/OmxDecoder.cpp b/content/media/omx/OmxDecoder.cpp index 3899e0f92f5..011ef252119 100644 --- a/content/media/omx/OmxDecoder.cpp +++ b/content/media/omx/OmxDecoder.cpp @@ -18,8 +18,6 @@ #include "mozilla/Preferences.h" #include "mozilla/Types.h" -#include "mozilla/Monitor.h" -#include "nsMimeTypes.h" #include "MPAPI.h" #include "prlog.h" @@ -39,114 +37,6 @@ using namespace MPAPI; using namespace mozilla; namespace mozilla { - -// When loading an MP3 stream from a file, we need to parse the file's -// content to find its duration. We must do this from within the decode -// thread, but parsing itself must be done in the main thread. -// -// After we read the file's content in the decode thread, an instance -// of this class is scheduled to the main thread for parsing the MP3 -// stream. We then wait until it has returned. - -class OmxDecoderNotifyDataArrivedRunnable : public nsRunnable -{ -public: - OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset) - : mOmxDecoder(aOmxDecoder), - mBuffer(aBuffer), - mLength(aLength), - mOffset(aOffset), - mCompletedMonitor("OmxDecoderNotifyDataArrived.mCompleted"), - mCompleted(false) - { - MOZ_ASSERT(mOmxDecoder.get()); - MOZ_ASSERT(mBuffer.get() || !mLength); - } - - NS_IMETHOD Run() - { - NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); - - const char* buffer = mBuffer.get(); - - while (mLength) { - uint32_t length = std::min(mLength, UINT32_MAX); - mOmxDecoder->NotifyDataArrived(mBuffer.get(), mLength, mOffset); - - buffer += length; - mLength -= length; - mOffset += length; - } - - Completed(); - - return NS_OK; - } - - void WaitForCompletion() - { - MOZ_ASSERT(!NS_IsMainThread()); - - MonitorAutoLock mon(mCompletedMonitor); - if (!mCompleted) { - mCompletedMonitor.Wait(); - } - } - - static nsresult ProcessCachedData(android::OmxDecoder* aOmxDecoder); - -private: - // Call this function at the end of Run() to notify waiting - // threads. - void Completed() - { - MonitorAutoLock mon(mCompletedMonitor); - MOZ_ASSERT(!mCompleted); - mCompleted = true; - mCompletedMonitor.Notify(); - } - - android::sp mOmxDecoder; - nsAutoArrayPtr mBuffer; - uint64_t mLength; - int64_t mOffset; - - Monitor mCompletedMonitor; - bool mCompleted; -}; - -nsresult OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(android::OmxDecoder* aOmxDecoder) -{ - MOZ_ASSERT(aOmxDecoder); - - NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); - - MediaResource* resource = aOmxDecoder->GetResource(); - MOZ_ASSERT(resource); - - int64_t length = resource->GetCachedDataEnd(0); - NS_ENSURE_TRUE(length >= 0, NS_ERROR_UNEXPECTED); - - if (!length) { - return NS_OK; // Cache is empty, nothing to do - } - - nsAutoArrayPtr buffer(new char[length]); - - nsresult rv = resource->ReadFromCache(buffer.get(), 0, length); - NS_ENSURE_SUCCESS(rv, rv); - - nsRefPtr runnable( - new OmxDecoderNotifyDataArrivedRunnable(aOmxDecoder, buffer.forget(), length, 0)); - - rv = NS_DispatchToMainThread(runnable.get()); - NS_ENSURE_SUCCESS(rv, rv); - - runnable->WaitForCompletion(); - - return NS_OK; -} - namespace layers { VideoGraphicBuffer::VideoGraphicBuffer(const android::wp aOmxDecoder, @@ -257,7 +147,6 @@ OmxDecoder::OmxDecoder(MediaResource *aResource, mAudioChannels(-1), mAudioSampleRate(-1), mDurationUs(-1), - mMP3FrameParser(aResource->GetLength()), mVideoBuffer(nullptr), mAudioBuffer(nullptr), mIsVideoSeeking(false), @@ -385,29 +274,9 @@ bool OmxDecoder::TryLoad() { if (durationUs > totalDurationUs) totalDurationUs = durationUs; } - if (mAudioTrack.get()) { - durationUs = -1; - const char* audioMime; - sp meta = mAudioTrack->getFormat(); - - if (meta->findCString(kKeyMIMEType, &audioMime) && !strcasecmp(audioMime, AUDIO_MP3)) { - // Feed MP3 parser with cached data. Local files will be fully - // cached already, network streams will update with sucessive - // calls to NotifyDataArrived. - nsresult rv = OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(this); - - if (rv == NS_OK) { - durationUs = mMP3FrameParser.GetDuration(); - if (durationUs > totalDurationUs) { - totalDurationUs = durationUs; - } - } - } - if ((durationUs == -1) && meta->findInt64(kKeyDuration, &durationUs)) { - if (durationUs > totalDurationUs) { - totalDurationUs = durationUs; - } - } + if (mAudioTrack.get() && mAudioTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { + if (durationUs > totalDurationUs) + totalDurationUs = durationUs; } mDurationUs = totalDurationUs; @@ -616,25 +485,6 @@ bool OmxDecoder::SetAudioFormat() { return true; } -void OmxDecoder::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) -{ - if (!mMP3FrameParser.IsMP3()) { - return; - } - - mMP3FrameParser.NotifyDataArrived(aBuffer, aLength, aOffset); - - int64_t durationUs = mMP3FrameParser.GetDuration(); - - if (durationUs != mDurationUs) { - mDurationUs = durationUs; - - MOZ_ASSERT(mDecoder); - ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); - mDecoder->UpdateMediaDuration(mDurationUs); - } -} - void OmxDecoder::ReleaseVideoBuffer() { if (mVideoBuffer) { mVideoBuffer->release(); diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 82d3135aa6d..84e7e467358 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -9,7 +9,6 @@ #include "GonkNativeWindow.h" #include "GonkNativeWindowClient.h" #include "GrallocImages.h" -#include "MP3FrameParser.h" #include "MPAPI.h" #include "MediaResource.h" #include "AbstractMediaDecoder.h" @@ -77,7 +76,6 @@ private: class OmxDecoder : public OMXCodecProxy::EventListener { typedef MPAPI::AudioFrame AudioFrame; typedef MPAPI::VideoFrame VideoFrame; - typedef mozilla::MP3FrameParser MP3FrameParser; typedef mozilla::MediaResource MediaResource; typedef mozilla::AbstractMediaDecoder AbstractMediaDecoder; @@ -111,7 +109,6 @@ class OmxDecoder : public OMXCodecProxy::EventListener { int64_t mDurationUs; VideoFrame mVideoFrame; AudioFrame mAudioFrame; - MP3FrameParser mMP3FrameParser; // Lifetime of these should be handled by OMXCodec, as long as we release // them after use: see ReleaseVideoBuffer(), ReleaseAudioBuffer() @@ -180,8 +177,6 @@ public: bool SetVideoFormat(); bool SetAudioFormat(); - void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); - void GetDuration(int64_t *durationUs) { *durationUs = mDurationUs; } From dd1504ab3814416ea1eadc0e633aa0e5d4b509b6 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 8 Aug 2013 09:59:49 -0700 Subject: [PATCH 31/82] Backed out changeset 43953e9233a2 (bug 831224) --- content/media/AbstractMediaDecoder.h | 5 ----- content/media/MediaDecoder.cpp | 6 ------ content/media/MediaDecoder.h | 1 - content/media/MediaDecoderStateMachine.cpp | 10 ---------- content/media/MediaDecoderStateMachine.h | 4 ---- content/media/webaudio/MediaBufferDecoder.cpp | 8 -------- 6 files changed, 34 deletions(-) diff --git a/content/media/AbstractMediaDecoder.h b/content/media/AbstractMediaDecoder.h index 5c65c5d3aa8..e7e2d4f781e 100644 --- a/content/media/AbstractMediaDecoder.h +++ b/content/media/AbstractMediaDecoder.h @@ -72,11 +72,6 @@ public: // Set the duration of the media in microseconds. virtual void SetMediaDuration(int64_t aDuration) = 0; - // Sets the duration of the media in microseconds. The MediaDecoder - // fires a durationchange event to its owner (e.g., an HTML audio - // tag). - virtual void UpdateMediaDuration(int64_t aDuration) = 0; - // Set the media as being seekable or not. virtual void SetMediaSeekable(bool aMediaSeekable) = 0; diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp index 1f85d8d7af1..0c0ad4d0298 100644 --- a/content/media/MediaDecoder.cpp +++ b/content/media/MediaDecoder.cpp @@ -1272,12 +1272,6 @@ void MediaDecoder::SetMediaDuration(int64_t aDuration) GetStateMachine()->SetDuration(aDuration); } -void MediaDecoder::UpdateMediaDuration(int64_t aDuration) -{ - NS_ENSURE_TRUE_VOID(GetStateMachine()); - GetStateMachine()->UpdateDuration(aDuration); -} - void MediaDecoder::SetMediaSeekable(bool aMediaSeekable) { ReentrantMonitorAutoEnter mon(GetReentrantMonitor()); MOZ_ASSERT(NS_IsMainThread() || OnDecodeThread()); diff --git a/content/media/MediaDecoder.h b/content/media/MediaDecoder.h index 12494e3b076..2c1af472570 100644 --- a/content/media/MediaDecoder.h +++ b/content/media/MediaDecoder.h @@ -506,7 +506,6 @@ public: virtual void SetDuration(double aDuration); void SetMediaDuration(int64_t aDuration) MOZ_OVERRIDE; - void UpdateMediaDuration(int64_t aDuration) MOZ_OVERRIDE; // Set a flag indicating whether seeking is supported virtual void SetMediaSeekable(bool aMediaSeekable) MOZ_OVERRIDE; diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index 2cb728e89b3..eb25714d457 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -1446,16 +1446,6 @@ void MediaDecoderStateMachine::SetDuration(int64_t aDuration) } } -void MediaDecoderStateMachine::UpdateDuration(int64_t aDuration) -{ - if (aDuration != GetDuration()) { - SetDuration(aDuration); - nsCOMPtr event = - NS_NewRunnableMethod(mDecoder, &MediaDecoder::DurationChanged); - NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL); - } -} - void MediaDecoderStateMachine::SetMediaEndTime(int64_t aEndTime) { NS_ASSERTION(OnDecodeThread(), "Should be on decode thread"); diff --git a/content/media/MediaDecoderStateMachine.h b/content/media/MediaDecoderStateMachine.h index 3cc4d8d6755..23179e4c517 100644 --- a/content/media/MediaDecoderStateMachine.h +++ b/content/media/MediaDecoderStateMachine.h @@ -157,10 +157,6 @@ public: // aEndTime is in microseconds. void SetMediaEndTime(int64_t aEndTime); - // Called from decode thread to update the duration. Can result in - // a durationchangeevent. aDuration is in microseconds. - void UpdateDuration(int64_t aDuration); - // Functions used by assertions to ensure we're calling things // on the appropriate threads. bool OnDecodeThread() const { diff --git a/content/media/webaudio/MediaBufferDecoder.cpp b/content/media/webaudio/MediaBufferDecoder.cpp index 1ac22e1bba1..c0e301808b6 100644 --- a/content/media/webaudio/MediaBufferDecoder.cpp +++ b/content/media/webaudio/MediaBufferDecoder.cpp @@ -97,8 +97,6 @@ public: virtual void SetMediaDuration(int64_t aDuration) MOZ_FINAL MOZ_OVERRIDE; - virtual void UpdateMediaDuration(int64_t aDuration) MOZ_FINAL MOZ_OVERRIDE; - virtual void SetMediaSeekable(bool aMediaSeekable) MOZ_OVERRIDE; virtual void SetTransportSeekable(bool aTransportSeekable) MOZ_FINAL MOZ_OVERRIDE; @@ -216,12 +214,6 @@ BufferDecoder::SetMediaDuration(int64_t aDuration) // ignore } -void -BufferDecoder::UpdateMediaDuration(int64_t aDuration) -{ - // ignore -} - void BufferDecoder::SetMediaSeekable(bool aMediaSeekable) { From 77d8517be34eb0a07db3a4ca5f849a5aa2d44e3c Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 8 Aug 2013 09:59:52 -0700 Subject: [PATCH 32/82] Backed out changeset 3cfe2793f157 (bug 831224) --- content/media/omx/MP3FrameParser.cpp | 487 --------------------------- content/media/omx/MP3FrameParser.h | 76 ----- content/media/omx/moz.build | 1 - 3 files changed, 564 deletions(-) delete mode 100644 content/media/omx/MP3FrameParser.cpp delete mode 100644 content/media/omx/MP3FrameParser.h diff --git a/content/media/omx/MP3FrameParser.cpp b/content/media/omx/MP3FrameParser.cpp deleted file mode 100644 index d6ca438edc0..00000000000 --- a/content/media/omx/MP3FrameParser.cpp +++ /dev/null @@ -1,487 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include "nsMemory.h" -#include "MP3FrameParser.h" - -namespace mozilla { - -// An ID3Buffer contains data of an ID3v2 header. The supplied buffer must -// point to an ID3 header and at least the size of ID_HEADER_LENGTH. Run the -// Parse method to read in the header's values. - -class ID3Buffer -{ -public: - - enum { - ID3_HEADER_LENGTH = 10 - }; - - ID3Buffer(const uint8_t* aBuffer, uint32_t aLength) - : mBuffer(aBuffer), - mLength(aLength), - mSize(0) - { - MOZ_ASSERT(mBuffer || !mLength); - } - - nsresult Parse(); - - int64_t GetMP3Offset() const { - return ID3_HEADER_LENGTH + mSize; - } - -private: - const uint8_t* mBuffer; - uint32_t mLength; - uint32_t mSize; -}; - -nsresult ID3Buffer::Parse() -{ - NS_ENSURE_TRUE(mBuffer && mLength >= ID3_HEADER_LENGTH, NS_ERROR_INVALID_ARG); - - if ((mBuffer[0] != 'I') || - (mBuffer[1] != 'D') || - (mBuffer[2] != '3') || - (mBuffer[6] & 0x80) || - (mBuffer[7] & 0x80) || - (mBuffer[8] & 0x80) || - (mBuffer[9] & 0x80)) { - return NS_ERROR_INVALID_ARG; - } - - mSize = ((static_cast(mBuffer[6])<<21) | - (static_cast(mBuffer[7])<<14) | - (static_cast(mBuffer[8])<<7) | - static_cast(mBuffer[9])); - - return NS_OK; -} - -// The MP3Buffer contains MP3 frame data. The supplied buffer must point -// to a frame header. Call the method Parse to extract information from -// the MP3 frame headers in the supplied buffer. - -class MP3Buffer -{ -public: - - enum { - MP3_HEADER_LENGTH = 4, - MP3_FRAMESIZE_CONST = 144000, - MP3_DURATION_CONST = 8000 - }; - - MP3Buffer(const uint8_t* aBuffer, uint32_t aLength) - : mBuffer(aBuffer), - mLength(aLength), - mDurationUs(0), - mNumFrames(0), - mBitRateSum(0), - mFrameSizeSum(0), - mTrailing(0) - { - MOZ_ASSERT(mBuffer || !mLength); - } - - static const uint8_t* FindNextHeader(const uint8_t* aBuffer, uint32_t aLength); - - nsresult Parse(); - - int64_t GetDuration() const { - return mDurationUs; - } - - int64_t GetNumberOfFrames() const { - return mNumFrames; - } - - int64_t GetBitRateSum() const { - return mBitRateSum; - } - - int64_t GetFrameSizeSum() const { - return mFrameSizeSum; - } - - int64_t GetTrailing() const { - return mTrailing; - } - -private: - - enum MP3FrameHeaderField { - MP3_HDR_FIELD_SYNC, - MP3_HDR_FIELD_VERSION, - MP3_HDR_FIELD_LAYER, - MP3_HDR_FIELD_BITRATE, - MP3_HDR_FIELD_SAMPLERATE, - MP3_HDR_FIELD_PADDING, - MP3_HDR_FIELDS // Must be last enumerator value - }; - - enum { - MP3_HDR_CONST_FRAMESYNC = 0x7ff, - MP3_HDR_CONST_VERSION = 3, - MP3_HDR_CONST_LAYER = 1 - }; - - static uint32_t ExtractBits(uint32_t aValue, uint32_t aOffset, - uint32_t aBits); - static uint32_t ExtractFrameHeaderField(uint32_t aHeader, - enum MP3FrameHeaderField aField); - static uint32_t ExtractFrameHeader(const uint8_t* aBuffer); - static nsresult DecodeFrameHeader(const uint8_t* aBuffer, - size_t* aFrameSize, - uint32_t* aBitRate, - uint64_t* aDuration); - - static const uint16_t sBitRate[16]; - static const uint16_t sSampleRate[4]; - - const uint8_t* mBuffer; - uint32_t mLength; - - // The duration of this parsers data in milliseconds. - int64_t mDurationUs; - - // The number of frames in the range. - int64_t mNumFrames; - - // The sum of all frame's bit rates. - int64_t mBitRateSum; - - // The sum of all frame's sizes in byte. - int32_t mFrameSizeSum; - - // The number of trailing bytes. - int32_t mTrailing; -}; - -const uint16_t MP3Buffer::sBitRate[16] = { - 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0 -}; - -const uint16_t MP3Buffer::sSampleRate[4] = { - 44100, 48000, 32000, 0 -}; - -uint32_t MP3Buffer::ExtractBits(uint32_t aValue, uint32_t aOffset, uint32_t aBits) -{ - return (aValue >> aOffset) & ((0x1ul << aBits) - 1); -} - -uint32_t MP3Buffer::ExtractFrameHeaderField(uint32_t aHeader, enum MP3FrameHeaderField aField) -{ - static const uint8_t sField[MP3_HDR_FIELDS][2] = { - {21, 11}, {19, 2}, {17, 2}, {12, 4}, {10, 2}, {9, 1} - }; - - MOZ_ASSERT(aField < MP3_HDR_FIELDS); - return ExtractBits(aHeader, sField[aField][0], sField[aField][1]); -} - -uint32_t MP3Buffer::ExtractFrameHeader(const uint8_t* aBuffer) -{ - MOZ_ASSERT(aBuffer); - - uint32_t header = (static_cast(aBuffer[0])<<24) | - (static_cast(aBuffer[1])<<16) | - (static_cast(aBuffer[2])<<8) | - static_cast(aBuffer[3]); - - uint32_t frameSync = ExtractFrameHeaderField(header, MP3_HDR_FIELD_SYNC); - uint32_t version = ExtractFrameHeaderField(header, MP3_HDR_FIELD_VERSION); - uint32_t layer = ExtractFrameHeaderField(header, MP3_HDR_FIELD_LAYER); - uint32_t bitRate = sBitRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_BITRATE)]; - uint32_t sampleRate = sSampleRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_SAMPLERATE)]; - - // branch-less implementation of - // - // if (fields-are-valid) - // return header; - // else - // return 0; - // - return (frameSync == uint32_t(MP3_HDR_CONST_FRAMESYNC)) * - (version == uint32_t(MP3_HDR_CONST_VERSION)) * - (layer == uint32_t(MP3_HDR_CONST_LAYER)) * !!bitRate * !!sampleRate * header; -} - -const uint8_t* MP3Buffer::FindNextHeader(const uint8_t* aBuffer, uint32_t aLength) -{ - MOZ_ASSERT(aBuffer || !aLength); - - // Find MP3's frame-sync marker while there are at least 4 bytes - // left to contain the MP3 frame header - - while (aLength >= MP3_HEADER_LENGTH) { - if (ExtractFrameHeader(aBuffer)) { - break; - } - ++aBuffer; - --aLength; - } - - return aBuffer; -} - -nsresult MP3Buffer::DecodeFrameHeader(const uint8_t* aBuffer, - uint32_t* aFrameSize, - uint32_t* aBitRate, - uint64_t* aDuration) -{ - uint32_t header = ExtractFrameHeader(aBuffer); - - if (!header) { - return NS_ERROR_INVALID_ARG; - } - - uint32_t bitRate = sBitRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_BITRATE)]; - uint32_t sampleRate = sSampleRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_SAMPLERATE)]; - - uint32_t padding = ExtractFrameHeaderField(header, MP3_HDR_FIELD_PADDING); - uint32_t frameSize = (uint64_t(MP3_FRAMESIZE_CONST) * bitRate) / sampleRate + padding; - - MOZ_ASSERT(aBitRate); - *aBitRate = bitRate; - - MOZ_ASSERT(aFrameSize); - *aFrameSize = frameSize; - - MOZ_ASSERT(aDuration); - *aDuration = (uint64_t(MP3_DURATION_CONST) * frameSize) / bitRate; - - return NS_OK; -} - -nsresult MP3Buffer::Parse() -{ - // We walk over the newly arrived data and sum up the - // bit rates, sizes, durations, etc. of the contained - // MP3 frames. - - const uint8_t* buffer = mBuffer; - uint32_t length = mLength; - - while (length >= MP3_HEADER_LENGTH) { - - uint32_t frameSize; - uint32_t bitRate; - uint64_t duration; - - nsresult rv = DecodeFrameHeader(buffer, &frameSize, &bitRate, &duration); - NS_ENSURE_SUCCESS(rv, rv); - - mBitRateSum += bitRate; - mDurationUs += duration; - ++mNumFrames; - - mFrameSizeSum += frameSize; - - if (frameSize <= length) { - length -= frameSize; - } else { - length = 0; - } - - buffer += frameSize; - } - - mTrailing = length; - - return NS_OK; -} - -MP3FrameParser::MP3FrameParser(int64_t aLength) -: mBufferLength(0), - mLock("MP3FrameParser.mLock"), - mDurationUs(0), - mBitRateSum(0), - mNumFrames(0), - mOffset(0), - mUnhandled(0), - mLength(aLength), - mTrailing(0), - mIsMP3(true) -{ } - -size_t MP3FrameParser::ParseInternalBuffer(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset) -{ - if (mOffset != aOffset) { - // If we don't append, we throw away our temporary buffer. - mBufferLength = 0; - return 0; - } - - size_t copyLength = 0; - - if (mBufferLength || !mOffset) { - - // We have some data in our temporary buffer and append to it, or - // we are at the beginning of the stream. We both cases, we append - // some data to our temporary buffer and try to parse it. - copyLength = std::min(NS_ARRAY_LENGTH(mBuffer)-mBufferLength, aLength); - memcpy(mBuffer+mBufferLength, aBuffer, copyLength*sizeof(*mBuffer)); - mBufferLength += copyLength; - } - - if ((mBufferLength >= ID3Buffer::ID3_HEADER_LENGTH) && (mOffset < ID3Buffer::ID3_HEADER_LENGTH)) { - - // There might be an ID3 header at the very beginning of the stream. - ID3Buffer id3Buffer(mBuffer, mBufferLength); - nsresult rv = id3Buffer.Parse(); - - if (rv == NS_OK) { - mOffset += id3Buffer.GetMP3Offset()-(mBufferLength-copyLength); - mBufferLength = 0; - } - } - - if (mBufferLength >= MP3Buffer::MP3_HEADER_LENGTH) { - - // Or there could be a regular frame header somewhere - // in the stream. - MP3Buffer mp3Buffer(mBuffer, mBufferLength); - nsresult rv = mp3Buffer.Parse(); - - if (rv == NS_OK) { - mDurationUs += mp3Buffer.GetDuration(); - mBitRateSum += mp3Buffer.GetBitRateSum(); - mNumFrames += mp3Buffer.GetNumberOfFrames(); - mOffset += mp3Buffer.GetFrameSizeSum()-(mBufferLength-copyLength); - mBufferLength = 0; - } - } - - if (mBufferLength) { - // We have not been able to successfully parse the - // content of the temporary buffer. If the buffer is - // full already, the stream does not contain MP3. - mOffset += copyLength; - mIsMP3 = (mBufferLength < NS_ARRAY_LENGTH(mBuffer)); - } else { - // We parsed the temporary buffer. The parser code - // will update the input data. - copyLength = 0; - } - - if (mOffset > mLength) { - mLength = mOffset; - } - - return copyLength; -} - -void MP3FrameParser::Parse(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset) -{ - MutexAutoLock mon(mLock); - - // We first try to parse the remaining data from the last call that - // is stored in an internal buffer. - size_t bufferIncr = ParseInternalBuffer(aBuffer, aLength, aOffset); - - aBuffer += bufferIncr; - aLength -= bufferIncr; - aOffset += bufferIncr; - - // The number of attempts to parse the data. This should be 1 of we - // append to the end of the existing data. - int retries = 1; - - if (aOffset+aLength <= mOffset) { - // We already processed this fragment. - return; - } else if (aOffset < mOffset) { - // mOffset is within the new fragment, shorten range. - aLength -= mOffset-aOffset; - aBuffer += mOffset-aOffset; - aOffset = mOffset; - } else if (aOffset > mOffset) { - // Fragment comes after current position, store difference. - mUnhandled += aOffset-mOffset; - - // We might start in the middle of a frame and have find the next - // frame header. As our detection heuristics might return false - // positives, we simply try multiple times. The current value comes - // from experimentation with MP3 files. If you encounter false positives - // and incorrectly parsed MP3 files, try incrementing this value. - retries = 5; - } - - uint32_t trailing = 0; - - while (retries) { - - MP3Buffer mp3Buffer(aBuffer, aLength); - nsresult rv = mp3Buffer.Parse(); - - if (rv != NS_OK) { - --retries; - - if (!retries) { - mIsMP3 = false; - return; - } - - // We might be in the middle of a frame, find next frame header - const uint8_t *buffer = MP3Buffer::FindNextHeader(aBuffer+1, aLength-1); - - mUnhandled += buffer-aBuffer; - mOffset = aOffset + buffer-aBuffer; - aLength -= buffer-aBuffer; - aBuffer = buffer; - } else { - mDurationUs += mp3Buffer.GetDuration(); - mBitRateSum += mp3Buffer.GetBitRateSum(); - mNumFrames += mp3Buffer.GetNumberOfFrames(); - mOffset += mp3Buffer.GetFrameSizeSum(); - - trailing = mp3Buffer.GetTrailing(); - retries = 0; - } - } - - if (trailing) { - // Store trailing bytes in temporary buffer. - MOZ_ASSERT(trailing < (NS_ARRAY_LENGTH(mBuffer)*sizeof(*mBuffer))); - memcpy(mBuffer, aBuffer+(aLength-trailing), trailing); - mBufferLength = trailing; - } - - if (mOffset > mLength) { - mLength = mOffset; - } -} - -void MP3FrameParser::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) -{ - Parse(reinterpret_cast(aBuffer), aLength, aOffset); -} - -int64_t MP3FrameParser::GetDuration() -{ - MutexAutoLock mon(mLock); - - if (!mNumFrames) { - return -1; // Not a single frame decoded yet - } - - // Compute the duration of the unhandled fragments from - // the average bitrate. - int64_t avgBitRate = mBitRateSum / mNumFrames; - NS_ENSURE_TRUE(avgBitRate > 0, mDurationUs); - - MOZ_ASSERT(mLength >= mOffset); - int64_t unhandled = mUnhandled + (mLength-mOffset); - - return mDurationUs + (uint64_t(MP3Buffer::MP3_DURATION_CONST) * unhandled) / avgBitRate; -} - -} diff --git a/content/media/omx/MP3FrameParser.h b/content/media/omx/MP3FrameParser.h deleted file mode 100644 index 82b60d2245a..00000000000 --- a/content/media/omx/MP3FrameParser.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include -#include "mozilla/Mutex.h" - -namespace mozilla { - -// A description of the MP3 format and its extensions is available at -// -// http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header -// -// The data in MP3 streams is split into small frames, with each frame -// containing a fixed number of samples. The duration of a frame depends -// on the frame's bit rate and sample rate. Both values can vary among -// frames, so it is necessary to examine each individual frame of an MP3 -// stream to calculate the stream's overall duration. -// -// The MP3 frame parser extracts information from an MP3 data stream. It -// accepts a range of frames of an MP3 stream as input, and parses all -// frames for their duration. Callers can query the stream's overall -// duration from the parser. -// -// Call the methods NotifyDataArrived or Parse to add new data. If you added -// information for a certain stream position, you cannot go back to previous -// positions. The parser will simply ignore the input. If you skip stream -// positions, the duration of the related MP3 frames will be estimated from -// the stream's average. -// -// The method GetDuration returns calculated duration of the stream, including -// estimates for skipped ranges. -// -// All public methods are thread-safe. - -class MP3FrameParser -{ -public: - MP3FrameParser(int64_t aLength=-1); - - bool IsMP3() { - MutexAutoLock mon(mLock); - return mIsMP3; - } - - void Parse(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset); - - void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); - - int64_t GetDuration(); - -private: - size_t ParseInternalBuffer(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset); - - uint8_t mBuffer[10]; - uint32_t mBufferLength; - - // A low-contention lock for protecting the parser results - Mutex mLock; - - // All fields below are protected by mLock - uint64_t mDurationUs; - uint64_t mBitRateSum; - uint64_t mNumFrames; - int64_t mOffset; - int64_t mUnhandled; - int64_t mLength; - uint32_t mTrailing; - - // Contains the state of the MP3 detection - bool mIsMP3; -}; - -} diff --git a/content/media/omx/moz.build b/content/media/omx/moz.build index e36b67f1cae..4ad2d79a184 100644 --- a/content/media/omx/moz.build +++ b/content/media/omx/moz.build @@ -14,7 +14,6 @@ EXPORTS += [ CPP_SOURCES += [ 'MediaOmxDecoder.cpp', 'MediaOmxReader.cpp', - 'MP3FrameParser.cpp', 'OmxDecoder.cpp', 'OMXCodecProxy.cpp', ] From 356d0996fbc4d74b4ad7b91b85d71688f8bffd98 Mon Sep 17 00:00:00 2001 From: Ed Morley Date: Thu, 8 Aug 2013 10:00:26 -0700 Subject: [PATCH 33/82] Backed out changeset 303ba353d785 (bug 831224) for turning bug 897108 permaorange --- content/media/MediaDecoder.cpp | 2 +- content/media/MediaDecoderReader.h | 4 ++-- content/media/MediaDecoderStateMachine.cpp | 22 +++++++++++----------- content/media/omx/OmxDecoder.h | 2 +- content/media/test/manifest.js | 20 ++++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp index 0c0ad4d0298..7e9effd0678 100644 --- a/content/media/MediaDecoder.cpp +++ b/content/media/MediaDecoder.cpp @@ -632,7 +632,7 @@ nsresult MediaDecoder::Seek(double aTime) if (distanceLeft == distanceRight) { distanceLeft = Abs(leftBound - mCurrentTime); distanceRight = Abs(rightBound - mCurrentTime); - } + } aTime = (distanceLeft < distanceRight) ? leftBound : rightBound; } else { // Seek target is after the end last range in seekable data. diff --git a/content/media/MediaDecoderReader.h b/content/media/MediaDecoderReader.h index 243eb64e743..47f128cf9ad 100644 --- a/content/media/MediaDecoderReader.h +++ b/content/media/MediaDecoderReader.h @@ -456,12 +456,12 @@ public: int64_t aStartTime, int64_t aEndTime, int64_t aCurrentTime) = 0; - + // Called when the decode thread is started, before calling any other // decode, read metadata, or seek functions. Do any thread local setup // in this function. virtual void OnDecodeThreadStart() {} - + // Called when the decode thread is about to finish, after all calls to // any other decode, read metadata, or seek functions. Any backend specific // thread local tear down must be done in this function. Note that another diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index eb25714d457..84e5297a608 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -140,8 +140,8 @@ private: { MOZ_COUNT_CTOR(StateMachineTracker); NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); - } - + } + ~StateMachineTracker() { NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); @@ -156,7 +156,7 @@ public: // access always occurs after this and uses the monitor to // safely access the decode thread counts. static StateMachineTracker& Instance(); - + // Instantiate the global state machine thread if required. // Call on main thread only. void EnsureGlobalStateMachine(); @@ -244,7 +244,7 @@ StateMachineTracker& StateMachineTracker::Instance() return *sInstance; } -void StateMachineTracker::EnsureGlobalStateMachine() +void StateMachineTracker::EnsureGlobalStateMachine() { NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); ReentrantMonitorAutoEnter mon(mMonitor); @@ -451,7 +451,7 @@ MediaDecoderStateMachine::~MediaDecoderStateMachine() mTimer->Cancel(); mTimer = nullptr; mReader = nullptr; - + StateMachineTracker::Instance().CleanupGlobalStateMachine(); #ifdef XP_WIN timeEndPeriod(1); @@ -490,7 +490,7 @@ void MediaDecoderStateMachine::DecodeThreadRun() { NS_ASSERTION(OnDecodeThread(), "Should be on decode thread."); mReader->OnDecodeThreadStart(); - + { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); @@ -531,7 +531,7 @@ void MediaDecoderStateMachine::DecodeThreadRun() mDecodeThreadIdle = true; LOG(PR_LOG_DEBUG, ("%p Decode thread finished", mDecoder.get())); } - + mReader->OnDecodeThreadFinish(); } @@ -1323,7 +1323,7 @@ void MediaDecoderStateMachine::StartPlayback() NS_ASSERTION(IsPlaying(), "Should report playing by end of StartPlayback()"); if (NS_FAILED(StartAudioThread())) { - NS_WARNING("Failed to create audio thread"); + NS_WARNING("Failed to create audio thread"); } mDecoder->GetReentrantMonitor().NotifyAll(); } @@ -1700,7 +1700,7 @@ MediaDecoderStateMachine::ScheduleDecodeThread() { NS_ASSERTION(OnStateMachineThread(), "Should be on state machine thread."); mDecoder->GetReentrantMonitor().AssertCurrentThreadIn(); - + mStopDecodeThread = false; if (mState >= DECODER_STATE_COMPLETED) { return NS_OK; @@ -1831,7 +1831,7 @@ int64_t MediaDecoderStateMachine::GetUndecodedData() const NS_ASSERTION(mState > DECODER_STATE_DECODING_METADATA, "Must have loaded metadata for GetBuffered() to work"); TimeRanges buffered; - + nsresult res = mDecoder->GetBuffered(&buffered); NS_ENSURE_SUCCESS(res, 0); double currentTime = GetCurrentTime(); @@ -2201,7 +2201,7 @@ nsresult MediaDecoderStateMachine::RunStateMachine() // Ensure we have a decode thread to decode metadata. return ScheduleDecodeThread(); } - + case DECODER_STATE_DECODING: { if (mDecoder->GetState() != MediaDecoder::PLAY_STATE_PLAYING && IsPlaying()) diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 84e7e467358..870df892c56 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -199,7 +199,7 @@ public: return mAudioSource != nullptr; } - bool ReadVideo(VideoFrame *aFrame, int64_t aSeekTimeUs, + bool ReadVideo(VideoFrame *aFrame, int64_t aSeekTimeUs, bool aKeyframeSkip = false, bool aDoSeek = false); bool ReadAudio(AudioFrame *aFrame, int64_t aSeekTimeUs); diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 05aa7fe8b4e..1940cb36841 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -154,10 +154,10 @@ var gPlayTests = [ // Test playback of a WebM file with non-zero start time. { name:"split.webm", type:"video/webm", duration:1.967 }, - + // Test playback of a raw file { name:"seek.yuv", type:"video/x-raw-yuv", duration:1.833 }, - + // A really short, low sample rate, single channel file. This tests whether // we can handle playing files when only push very little audio data to the // hardware. @@ -563,7 +563,7 @@ const DEBUG_TEST_LOOP_FOREVER = false; // 1. Create a new MediaTestManager object. // 2. Create a test startTest function. This takes a test object and a token, // and performs anything necessary to start the test. The test object is an -// element in one of the g*Tests above. Your startTest function must call +// element in one of the g*Tests above. Your startTest function must call // MediaTestManager.start(token) if it starts a test. The test object is // guaranteed to be playable by our supported decoders; you don't need to // check canPlayType. @@ -574,12 +574,12 @@ function MediaTestManager() { // Sets up a MediaTestManager to runs through the 'tests' array, which needs // to be one of, or have the same fields as, the g*Test arrays of tests. Uses - // the user supplied 'startTest' function to initialize the test. This + // the user supplied 'startTest' function to initialize the test. This // function must accept two arguments, the test entry from the 'tests' array, // and a token. Call MediaTestManager.started(token) if you start the test, // and MediaTestManager.finished(token) when the test finishes. You don't have // to start every test, but if you call started() you *must* call finish() - // else you'll timeout. + // else you'll timeout. this.runTests = function(tests, startTest) { this.startTime = new Date(); SimpleTest.info("Started " + this.startTime + " (" + this.startTime.getTime()/1000 + "s)"); @@ -593,7 +593,7 @@ function MediaTestManager() { SimpleTest.waitForExplicitFinish(); this.nextTest(); } - + // Registers that the test corresponding to 'token' has been started. // Don't call more than once per token. this.started = function(token) { @@ -601,7 +601,7 @@ function MediaTestManager() { this.numTestsRunning++; is(this.numTestsRunning, this.tokens.length, "[started " + token + "] Length of array should match number of running tests"); } - + // Registers that the test corresponding to 'token' has finished. Call when // you've finished your test. If all tests are complete this will finish the // run, otherwise it may start up the next run. It's ok to call multiple times @@ -626,7 +626,7 @@ function MediaTestManager() { // with live threads waiting for the GC are killed promptly, to free up the // thread stacks' address space. SpecialPowers.forceGC(); - + while (this.testNum < this.tests.length && this.tokens.length < PARALLEL_TESTS) { var test = this.tests[this.testNum]; var token = (test.name ? (test.name + "-"): "") + this.testNum; @@ -635,11 +635,11 @@ function MediaTestManager() { if (DEBUG_TEST_LOOP_FOREVER && this.testNum == this.tests.length) { this.testNum = 0; } - + // Ensure we can play the resource type. if (test.type && !document.createElement('video').canPlayType(test.type)) continue; - + // Do the init. This should start the test. this.startTest(test, token); } From 2c32a3c85f9821edab26c1623f026004b97a230c Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 10:10:24 -0700 Subject: [PATCH 34/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/82e365b7253c Author: Jonathan Griffin Desc: Merge pull request #11435 from jonallengriffin/902973 Bug 902973 - Disable sms notification_test.js for frequent TBPL orange, ... ======== https://hg.mozilla.org/integration/gaia-central/rev/bb7baf95cc0c Author: Jonathan Griffin Desc: Bug 902973 - Disable sms notification_test.js for frequent TBPL orange, a=test-only --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index ee406a9d6d1..a118e5ae9d6 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "c307df5aae16c32702732aea32769632c66b2311", + "revision": "82e365b7253cab83a6ed10a59125ad02721e345b", "repo_path": "/integration/gaia-central" } From b16efa1540db3753ab836156c31fc7c6437ef6f3 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Wed, 7 Aug 2013 11:39:47 +0800 Subject: [PATCH 35/82] Bug 882171 - Part 1: Add NEON implementation of AudioNodeEngine.cpp. r=roc, r=padenot, r=derf --- content/media/AudioNodeEngineNEON.cpp | 250 ++++++++++++++++++++++++++ content/media/AudioNodeEngineNEON.h | 41 +++++ content/media/Makefile.in | 2 + content/media/moz.build | 5 + 4 files changed, 298 insertions(+) create mode 100644 content/media/AudioNodeEngineNEON.cpp create mode 100644 content/media/AudioNodeEngineNEON.h diff --git a/content/media/AudioNodeEngineNEON.cpp b/content/media/AudioNodeEngineNEON.cpp new file mode 100644 index 00000000000..28a61ac3cdc --- /dev/null +++ b/content/media/AudioNodeEngineNEON.cpp @@ -0,0 +1,250 @@ +/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* this source code form is subject to the terms of the mozilla public + * license, v. 2.0. if a copy of the mpl was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "AudioNodeEngineNEON.h" +#include + +#ifdef DEBUG + #define ASSERT_ALIGNED(ptr) \ + MOZ_ASSERT((((uintptr_t)ptr + 15) & ~0x0F) == (uintptr_t)ptr, \ + #ptr " has to be aligned 16-bytes aligned."); +#else + #define ASSERT_ALIGNED(ptr) +#endif + +#define ADDRESS_OF(array, index) ((float32_t*)&array[index]) + +namespace mozilla { +void AudioBufferAddWithScale_NEON(const float* aInput, + float aScale, + float* aOutput, + uint32_t aSize) +{ + ASSERT_ALIGNED(aInput); + ASSERT_ALIGNED(aOutput); + + float32x4_t vin0, vin1, vin2, vin3; + float32x4_t vout0, vout1, vout2, vout3; + float32x4_t vscale = vmovq_n_f32(aScale); + + uint32_t dif = aSize % 16; + aSize -= dif; + unsigned i = 0; + for (; i < aSize; i+=16) { + vin0 = vld1q_f32(ADDRESS_OF(aInput, i)); + vin1 = vld1q_f32(ADDRESS_OF(aInput, i+4)); + vin2 = vld1q_f32(ADDRESS_OF(aInput, i+8)); + vin3 = vld1q_f32(ADDRESS_OF(aInput, i+12)); + + vout0 = vld1q_f32(ADDRESS_OF(aOutput, i)); + vout1 = vld1q_f32(ADDRESS_OF(aOutput, i+4)); + vout2 = vld1q_f32(ADDRESS_OF(aOutput, i+8)); + vout3 = vld1q_f32(ADDRESS_OF(aOutput, i+12)); + + vout0 = vmlaq_f32(vout0, vin0, vscale); + vout1 = vmlaq_f32(vout1, vin1, vscale); + vout2 = vmlaq_f32(vout2, vin2, vscale); + vout3 = vmlaq_f32(vout3, vin3, vscale); + + vst1q_f32(ADDRESS_OF(aOutput, i), vout0); + vst1q_f32(ADDRESS_OF(aOutput, i+4), vout1); + vst1q_f32(ADDRESS_OF(aOutput, i+8), vout2); + vst1q_f32(ADDRESS_OF(aOutput, i+12), vout3); + } + + for (unsigned j = 0; j < dif; ++i, ++j) { + aOutput[i] += aInput[i]*aScale; + } +} +void +AudioBlockCopyChannelWithScale_NEON(const float* aInput, + float aScale, + float* aOutput) +{ + ASSERT_ALIGNED(aInput); + ASSERT_ALIGNED(aOutput); + + float32x4_t vin0, vin1, vin2, vin3; + float32x4_t vout0, vout1, vout2, vout3; + float32x4_t vscale = vmovq_n_f32(aScale); + + for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { + vin0 = vld1q_f32(ADDRESS_OF(aInput, i)); + vin1 = vld1q_f32(ADDRESS_OF(aInput, i+4)); + vin2 = vld1q_f32(ADDRESS_OF(aInput, i+8)); + vin3 = vld1q_f32(ADDRESS_OF(aInput, i+12)); + + vout0 = vmulq_f32(vin0, vscale); + vout1 = vmulq_f32(vin1, vscale); + vout2 = vmulq_f32(vin2, vscale); + vout3 = vmulq_f32(vin3, vscale); + + vst1q_f32(ADDRESS_OF(aOutput, i), vout0); + vst1q_f32(ADDRESS_OF(aOutput, i+4), vout1); + vst1q_f32(ADDRESS_OF(aOutput, i+8), vout2); + vst1q_f32(ADDRESS_OF(aOutput, i+12), vout3); + } +} + +void +AudioBlockCopyChannelWithScale_NEON(const float aInput[WEBAUDIO_BLOCK_SIZE], + const float aScale[WEBAUDIO_BLOCK_SIZE], + float aOutput[WEBAUDIO_BLOCK_SIZE]) +{ + ASSERT_ALIGNED(aInput); + ASSERT_ALIGNED(aScale); + ASSERT_ALIGNED(aOutput); + + float32x4_t vin0, vin1, vin2, vin3; + float32x4_t vout0, vout1, vout2, vout3; + float32x4_t vscale0, vscale1, vscale2, vscale3; + + for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { + vin0 = vld1q_f32(ADDRESS_OF(aInput, i)); + vin1 = vld1q_f32(ADDRESS_OF(aInput, i+4)); + vin2 = vld1q_f32(ADDRESS_OF(aInput, i+8)); + vin3 = vld1q_f32(ADDRESS_OF(aInput, i+12)); + + vscale0 = vld1q_f32(ADDRESS_OF(aScale, i)); + vscale1 = vld1q_f32(ADDRESS_OF(aScale, i+4)); + vscale2 = vld1q_f32(ADDRESS_OF(aScale, i+8)); + vscale3 = vld1q_f32(ADDRESS_OF(aScale, i+12)); + + vout0 = vmulq_f32(vin0, vscale0); + vout1 = vmulq_f32(vin1, vscale1); + vout2 = vmulq_f32(vin2, vscale2); + vout3 = vmulq_f32(vin3, vscale3); + + vst1q_f32(ADDRESS_OF(aOutput, i), vout0); + vst1q_f32(ADDRESS_OF(aOutput, i+4), vout1); + vst1q_f32(ADDRESS_OF(aOutput, i+8), vout2); + vst1q_f32(ADDRESS_OF(aOutput, i+12), vout3); + } +} + +void +AudioBufferInPlaceScale_NEON(float* aBlock, + uint32_t aChannelCount, + float aScale, + uint32_t aSize) +{ + ASSERT_ALIGNED(aBlock); + + float32x4_t vin0, vin1, vin2, vin3; + float32x4_t vout0, vout1, vout2, vout3; + float32x4_t vscale = vmovq_n_f32(aScale); + + uint32_t totalSize = aSize * aChannelCount; + uint32_t dif = totalSize % 16; + totalSize -= dif; + uint32_t i = 0; + for (; i < totalSize; i+=16) { + vin0 = vld1q_f32(ADDRESS_OF(aBlock, i)); + vin1 = vld1q_f32(ADDRESS_OF(aBlock, i+4)); + vin2 = vld1q_f32(ADDRESS_OF(aBlock, i+8)); + vin3 = vld1q_f32(ADDRESS_OF(aBlock, i+12)); + + vout0 = vmulq_f32(vin0, vscale); + vout1 = vmulq_f32(vin1, vscale); + vout2 = vmulq_f32(vin2, vscale); + vout3 = vmulq_f32(vin3, vscale); + + vst1q_f32(ADDRESS_OF(aBlock, i), vout0); + vst1q_f32(ADDRESS_OF(aBlock, i+4), vout1); + vst1q_f32(ADDRESS_OF(aBlock, i+8), vout2); + vst1q_f32(ADDRESS_OF(aBlock, i+12), vout3); + } + + for (unsigned j = 0; j < dif; ++i, ++j) { + aBlock[i] *= aScale; + } +} + +void +AudioBlockPanStereoToStereo_NEON(const float aInputL[WEBAUDIO_BLOCK_SIZE], + const float aInputR[WEBAUDIO_BLOCK_SIZE], + float aGainL, float aGainR, bool aIsOnTheLeft, + float aOutputL[WEBAUDIO_BLOCK_SIZE], + float aOutputR[WEBAUDIO_BLOCK_SIZE]) +{ + ASSERT_ALIGNED(aInputL); + ASSERT_ALIGNED(aInputR); + ASSERT_ALIGNED(aOutputL); + ASSERT_ALIGNED(aOutputR); + + float32x4_t vinL0, vinL1, vinL2, vinL3; + float32x4_t vinR0, vinR1, vinR2, vinR3; + float32x4_t voutL0, voutL1, voutL2, voutL3; + float32x4_t voutR0, voutR1, voutR2, voutR3; + float32x4_t vscaleL = vmovq_n_f32(aGainL); + float32x4_t vscaleR = vmovq_n_f32(aGainR); + + if (aIsOnTheLeft) { + for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { + vinL0 = vld1q_f32(ADDRESS_OF(aInputL, i)); + vinL1 = vld1q_f32(ADDRESS_OF(aInputL, i+4)); + vinL2 = vld1q_f32(ADDRESS_OF(aInputL, i+8)); + vinL3 = vld1q_f32(ADDRESS_OF(aInputL, i+12)); + + vinR0 = vld1q_f32(ADDRESS_OF(aInputR, i)); + vinR1 = vld1q_f32(ADDRESS_OF(aInputR, i+4)); + vinR2 = vld1q_f32(ADDRESS_OF(aInputR, i+8)); + vinR3 = vld1q_f32(ADDRESS_OF(aInputR, i+12)); + + voutL0 = vmlaq_f32(vinL0, vinR0, vscaleL); + voutL1 = vmlaq_f32(vinL1, vinR1, vscaleL); + voutL2 = vmlaq_f32(vinL2, vinR2, vscaleL); + voutL3 = vmlaq_f32(vinL3, vinR3, vscaleL); + + vst1q_f32(ADDRESS_OF(aOutputL, i), voutL0); + vst1q_f32(ADDRESS_OF(aOutputL, i+4), voutL1); + vst1q_f32(ADDRESS_OF(aOutputL, i+8), voutL2); + vst1q_f32(ADDRESS_OF(aOutputL, i+12), voutL3); + + voutR0 = vmulq_f32(vinR0, vscaleR); + voutR1 = vmulq_f32(vinR1, vscaleR); + voutR2 = vmulq_f32(vinR2, vscaleR); + voutR3 = vmulq_f32(vinR3, vscaleR); + + vst1q_f32(ADDRESS_OF(aOutputR, i), voutR0); + vst1q_f32(ADDRESS_OF(aOutputR, i+4), voutR1); + vst1q_f32(ADDRESS_OF(aOutputR, i+8), voutR2); + vst1q_f32(ADDRESS_OF(aOutputR, i+12), voutR3); + } + } else { + for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { + vinL0 = vld1q_f32(ADDRESS_OF(aInputL, i)); + vinL1 = vld1q_f32(ADDRESS_OF(aInputL, i+4)); + vinL2 = vld1q_f32(ADDRESS_OF(aInputL, i+8)); + vinL3 = vld1q_f32(ADDRESS_OF(aInputL, i+12)); + + vinR0 = vld1q_f32(ADDRESS_OF(aInputR, i)); + vinR1 = vld1q_f32(ADDRESS_OF(aInputR, i+4)); + vinR2 = vld1q_f32(ADDRESS_OF(aInputR, i+8)); + vinR3 = vld1q_f32(ADDRESS_OF(aInputR, i+12)); + + voutL0 = vmulq_f32(vinL0, vscaleL); + voutL1 = vmulq_f32(vinL1, vscaleL); + voutL2 = vmulq_f32(vinL2, vscaleL); + voutL3 = vmulq_f32(vinL3, vscaleL); + + vst1q_f32(ADDRESS_OF(aOutputL, i), voutL0); + vst1q_f32(ADDRESS_OF(aOutputL, i+4), voutL1); + vst1q_f32(ADDRESS_OF(aOutputL, i+8), voutL2); + vst1q_f32(ADDRESS_OF(aOutputL, i+12), voutL3); + + voutR0 = vmlaq_f32(vinR0, vinL0, vscaleR); + voutR1 = vmlaq_f32(vinR1, vinL1, vscaleR); + voutR2 = vmlaq_f32(vinR2, vinL2, vscaleR); + voutR3 = vmlaq_f32(vinR3, vinL3, vscaleR); + + vst1q_f32(ADDRESS_OF(aOutputR, i), voutR0); + vst1q_f32(ADDRESS_OF(aOutputR, i+4), voutR1); + vst1q_f32(ADDRESS_OF(aOutputR, i+8), voutR2); + vst1q_f32(ADDRESS_OF(aOutputR, i+12), voutR3); + } + } +} +} \ No newline at end of file diff --git a/content/media/AudioNodeEngineNEON.h b/content/media/AudioNodeEngineNEON.h new file mode 100644 index 00000000000..8034482314e --- /dev/null +++ b/content/media/AudioNodeEngineNEON.h @@ -0,0 +1,41 @@ +/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* this source code form is subject to the terms of the mozilla public + * license, v. 2.0. if a copy of the mpl was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZILLA_AUDIONODEENGINENEON_H_ +#define MOZILLA_AUDIONODEENGINENEON_H_ + +#include "AudioNodeEngine.h" + +namespace mozilla { +void AudioBufferAddWithScale_NEON(const float* aInput, + float aScale, + float* aOutput, + uint32_t aSize); + +void +AudioBlockCopyChannelWithScale_NEON(const float* aInput, + float aScale, + float* aOutput); + +void +AudioBlockCopyChannelWithScale_NEON(const float aInput[WEBAUDIO_BLOCK_SIZE], + const float aScale[WEBAUDIO_BLOCK_SIZE], + float aOutput[WEBAUDIO_BLOCK_SIZE]); + +void +AudioBufferInPlaceScale_NEON(float* aBlock, + uint32_t aChannelCount, + float aScale, + uint32_t aSize); + +void +AudioBlockPanStereoToStereo_NEON(const float aInputL[WEBAUDIO_BLOCK_SIZE], + const float aInputR[WEBAUDIO_BLOCK_SIZE], + float aGainL, float aGainR, bool aIsOnTheLeft, + float aOutputL[WEBAUDIO_BLOCK_SIZE], + float aOutputR[WEBAUDIO_BLOCK_SIZE]); +} + +#endif /* MOZILLA_AUDIONODEENGINENEON_H_ */ \ No newline at end of file diff --git a/content/media/Makefile.in b/content/media/Makefile.in index 2d291ece50e..7ae92785c27 100644 --- a/content/media/Makefile.in +++ b/content/media/Makefile.in @@ -27,3 +27,5 @@ INCLUDES += \ DEFINES += -D_IMPL_NS_LAYOUT CFLAGS += $(GSTREAMER_CFLAGS) CXXFLAGS += $(GSTREAMER_CFLAGS) + +AudioNodeEngineNEON.$(OBJ_SUFFIX): CXXFLAGS += -mfpu=neon \ No newline at end of file diff --git a/content/media/moz.build b/content/media/moz.build index 9e329899945..b70eac62f3c 100644 --- a/content/media/moz.build +++ b/content/media/moz.build @@ -127,3 +127,8 @@ CPP_SOURCES += [ 'VideoUtils.cpp', 'WebVTTLoadListener.cpp', ] + +if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']: + CPP_SOURCES += [ + 'AudioNodeEngineNEON.cpp', + ] From 2c6d744e50c95e1affc24229e5501b336a048ca3 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Wed, 7 Aug 2013 11:37:01 +0800 Subject: [PATCH 36/82] Bug 882171 - Part 2: Call NEON implementation. r=ehsan --- content/media/AudioNodeEngine.cpp | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/content/media/AudioNodeEngine.cpp b/content/media/AudioNodeEngine.cpp index 9f476e3a0bf..81dbef9c641 100644 --- a/content/media/AudioNodeEngine.cpp +++ b/content/media/AudioNodeEngine.cpp @@ -4,7 +4,11 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "mozilla/arm.h" #include "AudioNodeEngine.h" +#ifdef MOZILLA_MAY_SUPPORT_NEON +#include "AudioNodeEngineNEON.h" +#endif namespace mozilla { @@ -58,6 +62,12 @@ void AudioBufferAddWithScale(const float* aInput, float* aOutput, uint32_t aSize) { +#ifdef MOZILLA_MAY_SUPPORT_NEON + if (mozilla::supports_neon()) { + AudioBufferAddWithScale_NEON(aInput, aScale, aOutput, aSize); + return; + } +#endif if (aScale == 1.0f) { for (uint32_t i = 0; i < aSize; ++i) { aOutput[i] += aInput[i]; @@ -85,6 +95,12 @@ AudioBlockCopyChannelWithScale(const float* aInput, if (aScale == 1.0f) { memcpy(aOutput, aInput, WEBAUDIO_BLOCK_SIZE*sizeof(float)); } else { +#ifdef MOZILLA_MAY_SUPPORT_NEON + if (mozilla::supports_neon()) { + AudioBlockCopyChannelWithScale_NEON(aInput, aScale, aOutput); + return; + } +#endif for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { aOutput[i] = aInput[i]*aScale; } @@ -114,6 +130,12 @@ AudioBlockCopyChannelWithScale(const float aInput[WEBAUDIO_BLOCK_SIZE], const float aScale[WEBAUDIO_BLOCK_SIZE], float aOutput[WEBAUDIO_BLOCK_SIZE]) { +#ifdef MOZILLA_MAY_SUPPORT_NEON + if (mozilla::supports_neon()) { + AudioBlockCopyChannelWithScale_NEON(aInput, aScale, aOutput); + return; + } +#endif for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { aOutput[i] = aInput[i]*aScale[i]; } @@ -136,6 +158,12 @@ AudioBufferInPlaceScale(float* aBlock, if (aScale == 1.0f) { return; } +#ifdef MOZILLA_MAY_SUPPORT_NEON + if (mozilla::supports_neon()) { + AudioBufferInPlaceScale_NEON(aBlock, aChannelCount, aScale, aSize); + return; + } +#endif for (uint32_t i = 0; i < aSize * aChannelCount; ++i) { *aBlock++ *= aScale; } @@ -158,6 +186,15 @@ AudioBlockPanStereoToStereo(const float aInputL[WEBAUDIO_BLOCK_SIZE], float aOutputL[WEBAUDIO_BLOCK_SIZE], float aOutputR[WEBAUDIO_BLOCK_SIZE]) { +#ifdef MOZILLA_MAY_SUPPORT_NEON + if (mozilla::supports_neon()) { + AudioBlockPanStereoToStereo_NEON(aInputL, aInputR, + aGainL, aGainR, aIsOnTheLeft, + aOutputL, aOutputR); + return; + } +#endif + uint32_t i; if (aIsOnTheLeft) { From 704634eff4c755d3389ef262d1b453e14551de44 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Tue, 23 Jul 2013 11:54:32 +0800 Subject: [PATCH 37/82] Bug 896353 - Set principal for mDOMStream in MediaStreamAudioDestinationNode. r=roc --- content/media/webaudio/MediaStreamAudioDestinationNode.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/media/webaudio/MediaStreamAudioDestinationNode.cpp b/content/media/webaudio/MediaStreamAudioDestinationNode.cpp index 0c99d700207..c2e2b983200 100644 --- a/content/media/webaudio/MediaStreamAudioDestinationNode.cpp +++ b/content/media/webaudio/MediaStreamAudioDestinationNode.cpp @@ -5,6 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "MediaStreamAudioDestinationNode.h" +#include "nsIDocument.h" #include "mozilla/dom/AudioStreamTrack.h" #include "mozilla/dom/MediaStreamAudioDestinationNodeBinding.h" #include "AudioNodeEngine.h" @@ -73,6 +74,11 @@ MediaStreamAudioDestinationNode::MediaStreamAudioDestinationNode(AudioContext* a MediaStreamDestinationEngine* engine = new MediaStreamDestinationEngine(this, tus); mStream = aContext->Graph()->CreateAudioNodeStream(engine, MediaStreamGraph::INTERNAL_STREAM); mPort = tus->AllocateInputPort(mStream, 0); + + nsIDocument* doc = aContext->GetParentObject()->GetExtantDoc(); + if (doc) { + mDOMStream->CombineWithPrincipal(doc->NodePrincipal()); + } } void From b9e2c7a2401e29748d729a82b149b7ebf7a770e9 Mon Sep 17 00:00:00 2001 From: Randy Lin Date: Fri, 26 Jul 2013 20:29:41 +0800 Subject: [PATCH 38/82] Bug 896353 - Media Recording - Can't record the mediaStream created by AudioContext. r=roc --- content/media/MediaRecorder.cpp | 6 ++++-- content/media/MediaRecorder.h | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/content/media/MediaRecorder.cpp b/content/media/MediaRecorder.cpp index 35cf3acd098..64630ba7ca4 100644 --- a/content/media/MediaRecorder.cpp +++ b/content/media/MediaRecorder.cpp @@ -114,6 +114,9 @@ private: MediaRecorder::~MediaRecorder() { + if (mStreamPort) { + mStreamPort->Destroy(); + } if (mTrackUnionStream) { mTrackUnionStream->Destroy(); } @@ -191,8 +194,7 @@ MediaRecorder::Start(const Optional& aTimeSlice, ErrorResult& aResult) MOZ_ASSERT(mEncoder, "CreateEncoder failed"); mTrackUnionStream->SetAutofinish(true); - nsRefPtr port = - mTrackUnionStream->AllocateInputPort(mStream->GetStream(), MediaInputPort::FLAG_BLOCK_OUTPUT); + mStreamPort = mTrackUnionStream->AllocateInputPort(mStream->GetStream(), MediaInputPort::FLAG_BLOCK_OUTPUT); if (mEncoder) { mTrackUnionStream->AddListener(mEncoder); diff --git a/content/media/MediaRecorder.h b/content/media/MediaRecorder.h index 85350ae33f7..0a5e14217d8 100644 --- a/content/media/MediaRecorder.h +++ b/content/media/MediaRecorder.h @@ -110,6 +110,8 @@ protected: nsRefPtr mStream; // This media stream is used for notifying raw data to encoder and can be blocked. nsRefPtr mTrackUnionStream; + // This is used for destroing the inputport when destroy the mediaRecorder + nsRefPtr mStreamPort; // This object creates on start() and destroys in ~MediaRecorder. nsAutoPtr mEncodedBufferCache; // It specifies the container format as well as the audio and video capture formats. From 4b48487cb37b3f977f868e4bd0fa543a17fb7a60 Mon Sep 17 00:00:00 2001 From: Randy Lin Date: Fri, 26 Jul 2013 10:47:56 +0800 Subject: [PATCH 39/82] Bug 896353 - Media Recording - Test case for record the MediaStream from audioContext. r=jsmith --- content/media/test/Makefile.in | 1 + ...est_mediarecorder_record_audiocontext.html | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 content/media/test/test_mediarecorder_record_audiocontext.html diff --git a/content/media/test/Makefile.in b/content/media/test/Makefile.in index 6554a849014..9993f1a3d93 100644 --- a/content/media/test/Makefile.in +++ b/content/media/test/Makefile.in @@ -116,6 +116,7 @@ MOCHITEST_FILES = \ test_video_to_canvas.html \ test_audiowrite.html \ test_mediarecorder_creation.html \ + test_mediarecorder_record_audiocontext.html \ test_mozHasAudio.html \ test_source_media.html \ test_autoplay_contentEditable.html \ diff --git a/content/media/test/test_mediarecorder_record_audiocontext.html b/content/media/test/test_mediarecorder_record_audiocontext.html new file mode 100644 index 00000000000..80ca190d507 --- /dev/null +++ b/content/media/test/test_mediarecorder_record_audiocontext.html @@ -0,0 +1,65 @@ + + + + Test MediaRecorder Record AudioContext + + + + + + + + + + From ea7a1b0a1468fd40111e5f20e3da16ad3b3c116c Mon Sep 17 00:00:00 2001 From: Randy Lin Date: Wed, 7 Aug 2013 14:20:42 +0800 Subject: [PATCH 40/82] Bug 898952 - Media Recording - Avoid to record a stopped MediaStream. r=roc --- content/media/MediaRecorder.cpp | 5 ++ content/media/test/Makefile.in | 1 + .../test_mediarecorder_record_stopms.html | 47 +++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 content/media/test/test_mediarecorder_record_stopms.html diff --git a/content/media/MediaRecorder.cpp b/content/media/MediaRecorder.cpp index 64630ba7ca4..dc2faf40955 100644 --- a/content/media/MediaRecorder.cpp +++ b/content/media/MediaRecorder.cpp @@ -166,6 +166,11 @@ MediaRecorder::Start(const Optional& aTimeSlice, ErrorResult& aResult) return; } + if (mStream->GetStream()->IsFinished() || mStream->GetStream()->IsDestroyed()) { + aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR); + return; + } + if (aTimeSlice.WasPassed()) { if (aTimeSlice.Value() < 0) { aResult.Throw(NS_ERROR_INVALID_ARG); diff --git a/content/media/test/Makefile.in b/content/media/test/Makefile.in index 9993f1a3d93..575f0df3b29 100644 --- a/content/media/test/Makefile.in +++ b/content/media/test/Makefile.in @@ -117,6 +117,7 @@ MOCHITEST_FILES = \ test_audiowrite.html \ test_mediarecorder_creation.html \ test_mediarecorder_record_audiocontext.html \ + test_mediarecorder_record_stopms.html \ test_mozHasAudio.html \ test_source_media.html \ test_autoplay_contentEditable.html \ diff --git a/content/media/test/test_mediarecorder_record_stopms.html b/content/media/test/test_mediarecorder_record_stopms.html new file mode 100644 index 00000000000..0dad5ba6179 --- /dev/null +++ b/content/media/test/test_mediarecorder_record_stopms.html @@ -0,0 +1,47 @@ + + + + Test MediaRecorder Record Stopped Stream + + + + +

+
+
+
+ + + From 261b23f442b767626cc27fb6738fa94038e6b389 Mon Sep 17 00:00:00 2001 From: Randy Lin Date: Wed, 7 Aug 2013 16:51:28 +0800 Subject: [PATCH 41/82] Bug 898952 - Media Recording - Skip new test on B2G. r=jsmith --- testing/mochitest/b2g.json | 1 + 1 file changed, 1 insertion(+) diff --git a/testing/mochitest/b2g.json b/testing/mochitest/b2g.json index 871843dd9f7..4cd190ff835 100644 --- a/testing/mochitest/b2g.json +++ b/testing/mochitest/b2g.json @@ -21,6 +21,7 @@ "content/media/test/test_can_play_type.html":"timed out", "content/media/test/test_can_play_type_mpeg.html":"7 failures out of 27", "content/media/test/test_can_play_type_no_dash.html":"", + "content/media/test/test_mediarecorder_record_stopms.html":"", "content/media/test/test_can_play_type_ogg.html":"", "content/media/test/test_chaining.html": "timed out", "content/media/test/test_delay_load.html": "6 failures", From 9e2e522185489c1deff627c3b422d98fad2b165f Mon Sep 17 00:00:00 2001 From: Randy Lin Date: Thu, 1 Aug 2013 18:38:57 +0800 Subject: [PATCH 42/82] Bug 900419 - Media Recording - MediaRecorder's state is wrong when stopping media stream during recording. r=roc --- content/media/MediaRecorder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/media/MediaRecorder.cpp b/content/media/MediaRecorder.cpp index dc2faf40955..ac21747f020 100644 --- a/content/media/MediaRecorder.cpp +++ b/content/media/MediaRecorder.cpp @@ -89,6 +89,7 @@ public: NS_IMETHODIMP Run() { MOZ_ASSERT(NS_IsMainThread()); + mRecorder->mState = RecordingState::Inactive; mRecorder->DispatchSimpleEvent(NS_LITERAL_STRING("stop")); mRecorder->mReadThread->Shutdown(); mRecorder->mReadThread = nullptr; @@ -228,7 +229,6 @@ MediaRecorder::Stop(ErrorResult& aResult) return; } mTrackUnionStream->RemoveListener(mEncoder); - mState = RecordingState::Inactive; } void From 607ca68b06a216a0cc0ed6b7f0da558ca8ebf51f Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 8 Aug 2013 13:31:58 -0400 Subject: [PATCH 43/82] Bug 901757 - Fix mac permissions. r=felipc --- toolkit/webapps/WebappsInstaller.jsm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/toolkit/webapps/WebappsInstaller.jsm b/toolkit/webapps/WebappsInstaller.jsm index 8cd0a204154..6c15f474606 100644 --- a/toolkit/webapps/WebappsInstaller.jsm +++ b/toolkit/webapps/WebappsInstaller.jsm @@ -15,6 +15,7 @@ Cu.import("resource://gre/modules/NetUtil.jsm"); Cu.import("resource://gre/modules/osfile.jsm"); Cu.import("resource://gre/modules/WebappOSUtils.jsm"); Cu.import("resource://gre/modules/AppsUtils.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); this.WebappsInstaller = { shell: null, @@ -639,6 +640,7 @@ MacNativeApp.prototype = { writer.setString("Webapp", "Name", this.appName); writer.setString("Webapp", "Profile", this.appProfileDir.leafName); writer.writeFile(); + applicationINI.permissions = FileUtils.PERMS_FILE; // ${InstallDir}/Contents/Info.plist let infoPListContent = '\n\ @@ -956,9 +958,12 @@ LinuxNativeApp.prototype = { * @param aData a string with the data to be written */ function writeToFile(aFile, aData) { - let path = aFile.path; - let data = new TextEncoder().encode(aData); - return OS.File.writeAtomic(path, data, { tmpPath: path + ".tmp" }); + return Task.spawn(function() { + let data = new TextEncoder().encode(aData); + let file = yield OS.File.open(aFile.path, { truncate: true }, { unixMode: FileUtils.PERMS_FILE }); + yield file.write(data); + yield file.close(); + }); } /** From 71d76d4dc879aa2a515d5678d6c1019808e11b24 Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 8 Aug 2013 13:31:58 -0400 Subject: [PATCH 44/82] Bug 902048 - Use nsIWindowMediator getOuterWindowWithId in WebappsUI.jsm. r=felipc --- browser/modules/webappsUI.jsm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/browser/modules/webappsUI.jsm b/browser/modules/webappsUI.jsm index 7ca1766f70f..a90aba30b20 100644 --- a/browser/modules/webappsUI.jsm +++ b/browser/modules/webappsUI.jsm @@ -50,9 +50,7 @@ this.webappsUI = { _getWindowForId: function(aId) { let someWindow = Services.wm.getMostRecentWindow(null); - return someWindow && someWindow.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIDOMWindowUtils) - .getOuterWindowWithId(aId); + return someWindow && Services.wm.getOuterWindowWithId(aId); }, openURL: function(aUrl, aOrigin) { From d184108c327bf4551f0e4ca2eff38747d49cc01a Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 24 Jan 2013 13:38:32 +0100 Subject: [PATCH 45/82] Bug 831224: Remove trailing whitespaces, r=padenot --- content/media/MediaDecoder.cpp | 2 +- content/media/MediaDecoderReader.h | 4 ++-- content/media/MediaDecoderStateMachine.cpp | 22 +++++++++++----------- content/media/omx/OmxDecoder.h | 2 +- content/media/test/manifest.js | 20 ++++++++++---------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp index 7e9effd0678..0c0ad4d0298 100644 --- a/content/media/MediaDecoder.cpp +++ b/content/media/MediaDecoder.cpp @@ -632,7 +632,7 @@ nsresult MediaDecoder::Seek(double aTime) if (distanceLeft == distanceRight) { distanceLeft = Abs(leftBound - mCurrentTime); distanceRight = Abs(rightBound - mCurrentTime); - } + } aTime = (distanceLeft < distanceRight) ? leftBound : rightBound; } else { // Seek target is after the end last range in seekable data. diff --git a/content/media/MediaDecoderReader.h b/content/media/MediaDecoderReader.h index 47f128cf9ad..243eb64e743 100644 --- a/content/media/MediaDecoderReader.h +++ b/content/media/MediaDecoderReader.h @@ -456,12 +456,12 @@ public: int64_t aStartTime, int64_t aEndTime, int64_t aCurrentTime) = 0; - + // Called when the decode thread is started, before calling any other // decode, read metadata, or seek functions. Do any thread local setup // in this function. virtual void OnDecodeThreadStart() {} - + // Called when the decode thread is about to finish, after all calls to // any other decode, read metadata, or seek functions. Any backend specific // thread local tear down must be done in this function. Note that another diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index 84e5297a608..eb25714d457 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -140,8 +140,8 @@ private: { MOZ_COUNT_CTOR(StateMachineTracker); NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); - } - + } + ~StateMachineTracker() { NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); @@ -156,7 +156,7 @@ public: // access always occurs after this and uses the monitor to // safely access the decode thread counts. static StateMachineTracker& Instance(); - + // Instantiate the global state machine thread if required. // Call on main thread only. void EnsureGlobalStateMachine(); @@ -244,7 +244,7 @@ StateMachineTracker& StateMachineTracker::Instance() return *sInstance; } -void StateMachineTracker::EnsureGlobalStateMachine() +void StateMachineTracker::EnsureGlobalStateMachine() { NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); ReentrantMonitorAutoEnter mon(mMonitor); @@ -451,7 +451,7 @@ MediaDecoderStateMachine::~MediaDecoderStateMachine() mTimer->Cancel(); mTimer = nullptr; mReader = nullptr; - + StateMachineTracker::Instance().CleanupGlobalStateMachine(); #ifdef XP_WIN timeEndPeriod(1); @@ -490,7 +490,7 @@ void MediaDecoderStateMachine::DecodeThreadRun() { NS_ASSERTION(OnDecodeThread(), "Should be on decode thread."); mReader->OnDecodeThreadStart(); - + { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); @@ -531,7 +531,7 @@ void MediaDecoderStateMachine::DecodeThreadRun() mDecodeThreadIdle = true; LOG(PR_LOG_DEBUG, ("%p Decode thread finished", mDecoder.get())); } - + mReader->OnDecodeThreadFinish(); } @@ -1323,7 +1323,7 @@ void MediaDecoderStateMachine::StartPlayback() NS_ASSERTION(IsPlaying(), "Should report playing by end of StartPlayback()"); if (NS_FAILED(StartAudioThread())) { - NS_WARNING("Failed to create audio thread"); + NS_WARNING("Failed to create audio thread"); } mDecoder->GetReentrantMonitor().NotifyAll(); } @@ -1700,7 +1700,7 @@ MediaDecoderStateMachine::ScheduleDecodeThread() { NS_ASSERTION(OnStateMachineThread(), "Should be on state machine thread."); mDecoder->GetReentrantMonitor().AssertCurrentThreadIn(); - + mStopDecodeThread = false; if (mState >= DECODER_STATE_COMPLETED) { return NS_OK; @@ -1831,7 +1831,7 @@ int64_t MediaDecoderStateMachine::GetUndecodedData() const NS_ASSERTION(mState > DECODER_STATE_DECODING_METADATA, "Must have loaded metadata for GetBuffered() to work"); TimeRanges buffered; - + nsresult res = mDecoder->GetBuffered(&buffered); NS_ENSURE_SUCCESS(res, 0); double currentTime = GetCurrentTime(); @@ -2201,7 +2201,7 @@ nsresult MediaDecoderStateMachine::RunStateMachine() // Ensure we have a decode thread to decode metadata. return ScheduleDecodeThread(); } - + case DECODER_STATE_DECODING: { if (mDecoder->GetState() != MediaDecoder::PLAY_STATE_PLAYING && IsPlaying()) diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 870df892c56..84e7e467358 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -199,7 +199,7 @@ public: return mAudioSource != nullptr; } - bool ReadVideo(VideoFrame *aFrame, int64_t aSeekTimeUs, + bool ReadVideo(VideoFrame *aFrame, int64_t aSeekTimeUs, bool aKeyframeSkip = false, bool aDoSeek = false); bool ReadAudio(AudioFrame *aFrame, int64_t aSeekTimeUs); diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 1940cb36841..05aa7fe8b4e 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -154,10 +154,10 @@ var gPlayTests = [ // Test playback of a WebM file with non-zero start time. { name:"split.webm", type:"video/webm", duration:1.967 }, - + // Test playback of a raw file { name:"seek.yuv", type:"video/x-raw-yuv", duration:1.833 }, - + // A really short, low sample rate, single channel file. This tests whether // we can handle playing files when only push very little audio data to the // hardware. @@ -563,7 +563,7 @@ const DEBUG_TEST_LOOP_FOREVER = false; // 1. Create a new MediaTestManager object. // 2. Create a test startTest function. This takes a test object and a token, // and performs anything necessary to start the test. The test object is an -// element in one of the g*Tests above. Your startTest function must call +// element in one of the g*Tests above. Your startTest function must call // MediaTestManager.start(token) if it starts a test. The test object is // guaranteed to be playable by our supported decoders; you don't need to // check canPlayType. @@ -574,12 +574,12 @@ function MediaTestManager() { // Sets up a MediaTestManager to runs through the 'tests' array, which needs // to be one of, or have the same fields as, the g*Test arrays of tests. Uses - // the user supplied 'startTest' function to initialize the test. This + // the user supplied 'startTest' function to initialize the test. This // function must accept two arguments, the test entry from the 'tests' array, // and a token. Call MediaTestManager.started(token) if you start the test, // and MediaTestManager.finished(token) when the test finishes. You don't have // to start every test, but if you call started() you *must* call finish() - // else you'll timeout. + // else you'll timeout. this.runTests = function(tests, startTest) { this.startTime = new Date(); SimpleTest.info("Started " + this.startTime + " (" + this.startTime.getTime()/1000 + "s)"); @@ -593,7 +593,7 @@ function MediaTestManager() { SimpleTest.waitForExplicitFinish(); this.nextTest(); } - + // Registers that the test corresponding to 'token' has been started. // Don't call more than once per token. this.started = function(token) { @@ -601,7 +601,7 @@ function MediaTestManager() { this.numTestsRunning++; is(this.numTestsRunning, this.tokens.length, "[started " + token + "] Length of array should match number of running tests"); } - + // Registers that the test corresponding to 'token' has finished. Call when // you've finished your test. If all tests are complete this will finish the // run, otherwise it may start up the next run. It's ok to call multiple times @@ -626,7 +626,7 @@ function MediaTestManager() { // with live threads waiting for the GC are killed promptly, to free up the // thread stacks' address space. SpecialPowers.forceGC(); - + while (this.testNum < this.tests.length && this.tokens.length < PARALLEL_TESTS) { var test = this.tests[this.testNum]; var token = (test.name ? (test.name + "-"): "") + this.testNum; @@ -635,11 +635,11 @@ function MediaTestManager() { if (DEBUG_TEST_LOOP_FOREVER && this.testNum == this.tests.length) { this.testNum = 0; } - + // Ensure we can play the resource type. if (test.type && !document.createElement('video').canPlayType(test.type)) continue; - + // Do the init. This should start the test. this.startTest(test, token); } From 156ef9939ccb63d18f8e3cca199aae92fcb73a55 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Fri, 3 May 2013 09:44:02 +0200 Subject: [PATCH 46/82] Bug 831224: Added MP3 frame parser, r=padenot MP3 streams consist of small frames, with each frame containing the audio data of a few hundred milliseconds. The actual duration of the encoded audio can among frames. Each frame consists of a 4-byte frame header, some optional extra information, and the audio data. The MP3 frame parser walks over the content of an MP3 stream, computes the duration of each frame from the frame header, and sums them up to the streams complete duration. The MP3 frame parser does not decode the actual audio data. --- content/media/omx/MP3FrameParser.cpp | 487 +++++++++++++++++++++++++++ content/media/omx/MP3FrameParser.h | 76 +++++ content/media/omx/moz.build | 1 + 3 files changed, 564 insertions(+) create mode 100644 content/media/omx/MP3FrameParser.cpp create mode 100644 content/media/omx/MP3FrameParser.h diff --git a/content/media/omx/MP3FrameParser.cpp b/content/media/omx/MP3FrameParser.cpp new file mode 100644 index 00000000000..d6ca438edc0 --- /dev/null +++ b/content/media/omx/MP3FrameParser.cpp @@ -0,0 +1,487 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include +#include "nsMemory.h" +#include "MP3FrameParser.h" + +namespace mozilla { + +// An ID3Buffer contains data of an ID3v2 header. The supplied buffer must +// point to an ID3 header and at least the size of ID_HEADER_LENGTH. Run the +// Parse method to read in the header's values. + +class ID3Buffer +{ +public: + + enum { + ID3_HEADER_LENGTH = 10 + }; + + ID3Buffer(const uint8_t* aBuffer, uint32_t aLength) + : mBuffer(aBuffer), + mLength(aLength), + mSize(0) + { + MOZ_ASSERT(mBuffer || !mLength); + } + + nsresult Parse(); + + int64_t GetMP3Offset() const { + return ID3_HEADER_LENGTH + mSize; + } + +private: + const uint8_t* mBuffer; + uint32_t mLength; + uint32_t mSize; +}; + +nsresult ID3Buffer::Parse() +{ + NS_ENSURE_TRUE(mBuffer && mLength >= ID3_HEADER_LENGTH, NS_ERROR_INVALID_ARG); + + if ((mBuffer[0] != 'I') || + (mBuffer[1] != 'D') || + (mBuffer[2] != '3') || + (mBuffer[6] & 0x80) || + (mBuffer[7] & 0x80) || + (mBuffer[8] & 0x80) || + (mBuffer[9] & 0x80)) { + return NS_ERROR_INVALID_ARG; + } + + mSize = ((static_cast(mBuffer[6])<<21) | + (static_cast(mBuffer[7])<<14) | + (static_cast(mBuffer[8])<<7) | + static_cast(mBuffer[9])); + + return NS_OK; +} + +// The MP3Buffer contains MP3 frame data. The supplied buffer must point +// to a frame header. Call the method Parse to extract information from +// the MP3 frame headers in the supplied buffer. + +class MP3Buffer +{ +public: + + enum { + MP3_HEADER_LENGTH = 4, + MP3_FRAMESIZE_CONST = 144000, + MP3_DURATION_CONST = 8000 + }; + + MP3Buffer(const uint8_t* aBuffer, uint32_t aLength) + : mBuffer(aBuffer), + mLength(aLength), + mDurationUs(0), + mNumFrames(0), + mBitRateSum(0), + mFrameSizeSum(0), + mTrailing(0) + { + MOZ_ASSERT(mBuffer || !mLength); + } + + static const uint8_t* FindNextHeader(const uint8_t* aBuffer, uint32_t aLength); + + nsresult Parse(); + + int64_t GetDuration() const { + return mDurationUs; + } + + int64_t GetNumberOfFrames() const { + return mNumFrames; + } + + int64_t GetBitRateSum() const { + return mBitRateSum; + } + + int64_t GetFrameSizeSum() const { + return mFrameSizeSum; + } + + int64_t GetTrailing() const { + return mTrailing; + } + +private: + + enum MP3FrameHeaderField { + MP3_HDR_FIELD_SYNC, + MP3_HDR_FIELD_VERSION, + MP3_HDR_FIELD_LAYER, + MP3_HDR_FIELD_BITRATE, + MP3_HDR_FIELD_SAMPLERATE, + MP3_HDR_FIELD_PADDING, + MP3_HDR_FIELDS // Must be last enumerator value + }; + + enum { + MP3_HDR_CONST_FRAMESYNC = 0x7ff, + MP3_HDR_CONST_VERSION = 3, + MP3_HDR_CONST_LAYER = 1 + }; + + static uint32_t ExtractBits(uint32_t aValue, uint32_t aOffset, + uint32_t aBits); + static uint32_t ExtractFrameHeaderField(uint32_t aHeader, + enum MP3FrameHeaderField aField); + static uint32_t ExtractFrameHeader(const uint8_t* aBuffer); + static nsresult DecodeFrameHeader(const uint8_t* aBuffer, + size_t* aFrameSize, + uint32_t* aBitRate, + uint64_t* aDuration); + + static const uint16_t sBitRate[16]; + static const uint16_t sSampleRate[4]; + + const uint8_t* mBuffer; + uint32_t mLength; + + // The duration of this parsers data in milliseconds. + int64_t mDurationUs; + + // The number of frames in the range. + int64_t mNumFrames; + + // The sum of all frame's bit rates. + int64_t mBitRateSum; + + // The sum of all frame's sizes in byte. + int32_t mFrameSizeSum; + + // The number of trailing bytes. + int32_t mTrailing; +}; + +const uint16_t MP3Buffer::sBitRate[16] = { + 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0 +}; + +const uint16_t MP3Buffer::sSampleRate[4] = { + 44100, 48000, 32000, 0 +}; + +uint32_t MP3Buffer::ExtractBits(uint32_t aValue, uint32_t aOffset, uint32_t aBits) +{ + return (aValue >> aOffset) & ((0x1ul << aBits) - 1); +} + +uint32_t MP3Buffer::ExtractFrameHeaderField(uint32_t aHeader, enum MP3FrameHeaderField aField) +{ + static const uint8_t sField[MP3_HDR_FIELDS][2] = { + {21, 11}, {19, 2}, {17, 2}, {12, 4}, {10, 2}, {9, 1} + }; + + MOZ_ASSERT(aField < MP3_HDR_FIELDS); + return ExtractBits(aHeader, sField[aField][0], sField[aField][1]); +} + +uint32_t MP3Buffer::ExtractFrameHeader(const uint8_t* aBuffer) +{ + MOZ_ASSERT(aBuffer); + + uint32_t header = (static_cast(aBuffer[0])<<24) | + (static_cast(aBuffer[1])<<16) | + (static_cast(aBuffer[2])<<8) | + static_cast(aBuffer[3]); + + uint32_t frameSync = ExtractFrameHeaderField(header, MP3_HDR_FIELD_SYNC); + uint32_t version = ExtractFrameHeaderField(header, MP3_HDR_FIELD_VERSION); + uint32_t layer = ExtractFrameHeaderField(header, MP3_HDR_FIELD_LAYER); + uint32_t bitRate = sBitRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_BITRATE)]; + uint32_t sampleRate = sSampleRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_SAMPLERATE)]; + + // branch-less implementation of + // + // if (fields-are-valid) + // return header; + // else + // return 0; + // + return (frameSync == uint32_t(MP3_HDR_CONST_FRAMESYNC)) * + (version == uint32_t(MP3_HDR_CONST_VERSION)) * + (layer == uint32_t(MP3_HDR_CONST_LAYER)) * !!bitRate * !!sampleRate * header; +} + +const uint8_t* MP3Buffer::FindNextHeader(const uint8_t* aBuffer, uint32_t aLength) +{ + MOZ_ASSERT(aBuffer || !aLength); + + // Find MP3's frame-sync marker while there are at least 4 bytes + // left to contain the MP3 frame header + + while (aLength >= MP3_HEADER_LENGTH) { + if (ExtractFrameHeader(aBuffer)) { + break; + } + ++aBuffer; + --aLength; + } + + return aBuffer; +} + +nsresult MP3Buffer::DecodeFrameHeader(const uint8_t* aBuffer, + uint32_t* aFrameSize, + uint32_t* aBitRate, + uint64_t* aDuration) +{ + uint32_t header = ExtractFrameHeader(aBuffer); + + if (!header) { + return NS_ERROR_INVALID_ARG; + } + + uint32_t bitRate = sBitRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_BITRATE)]; + uint32_t sampleRate = sSampleRate[ExtractFrameHeaderField(header, MP3_HDR_FIELD_SAMPLERATE)]; + + uint32_t padding = ExtractFrameHeaderField(header, MP3_HDR_FIELD_PADDING); + uint32_t frameSize = (uint64_t(MP3_FRAMESIZE_CONST) * bitRate) / sampleRate + padding; + + MOZ_ASSERT(aBitRate); + *aBitRate = bitRate; + + MOZ_ASSERT(aFrameSize); + *aFrameSize = frameSize; + + MOZ_ASSERT(aDuration); + *aDuration = (uint64_t(MP3_DURATION_CONST) * frameSize) / bitRate; + + return NS_OK; +} + +nsresult MP3Buffer::Parse() +{ + // We walk over the newly arrived data and sum up the + // bit rates, sizes, durations, etc. of the contained + // MP3 frames. + + const uint8_t* buffer = mBuffer; + uint32_t length = mLength; + + while (length >= MP3_HEADER_LENGTH) { + + uint32_t frameSize; + uint32_t bitRate; + uint64_t duration; + + nsresult rv = DecodeFrameHeader(buffer, &frameSize, &bitRate, &duration); + NS_ENSURE_SUCCESS(rv, rv); + + mBitRateSum += bitRate; + mDurationUs += duration; + ++mNumFrames; + + mFrameSizeSum += frameSize; + + if (frameSize <= length) { + length -= frameSize; + } else { + length = 0; + } + + buffer += frameSize; + } + + mTrailing = length; + + return NS_OK; +} + +MP3FrameParser::MP3FrameParser(int64_t aLength) +: mBufferLength(0), + mLock("MP3FrameParser.mLock"), + mDurationUs(0), + mBitRateSum(0), + mNumFrames(0), + mOffset(0), + mUnhandled(0), + mLength(aLength), + mTrailing(0), + mIsMP3(true) +{ } + +size_t MP3FrameParser::ParseInternalBuffer(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset) +{ + if (mOffset != aOffset) { + // If we don't append, we throw away our temporary buffer. + mBufferLength = 0; + return 0; + } + + size_t copyLength = 0; + + if (mBufferLength || !mOffset) { + + // We have some data in our temporary buffer and append to it, or + // we are at the beginning of the stream. We both cases, we append + // some data to our temporary buffer and try to parse it. + copyLength = std::min(NS_ARRAY_LENGTH(mBuffer)-mBufferLength, aLength); + memcpy(mBuffer+mBufferLength, aBuffer, copyLength*sizeof(*mBuffer)); + mBufferLength += copyLength; + } + + if ((mBufferLength >= ID3Buffer::ID3_HEADER_LENGTH) && (mOffset < ID3Buffer::ID3_HEADER_LENGTH)) { + + // There might be an ID3 header at the very beginning of the stream. + ID3Buffer id3Buffer(mBuffer, mBufferLength); + nsresult rv = id3Buffer.Parse(); + + if (rv == NS_OK) { + mOffset += id3Buffer.GetMP3Offset()-(mBufferLength-copyLength); + mBufferLength = 0; + } + } + + if (mBufferLength >= MP3Buffer::MP3_HEADER_LENGTH) { + + // Or there could be a regular frame header somewhere + // in the stream. + MP3Buffer mp3Buffer(mBuffer, mBufferLength); + nsresult rv = mp3Buffer.Parse(); + + if (rv == NS_OK) { + mDurationUs += mp3Buffer.GetDuration(); + mBitRateSum += mp3Buffer.GetBitRateSum(); + mNumFrames += mp3Buffer.GetNumberOfFrames(); + mOffset += mp3Buffer.GetFrameSizeSum()-(mBufferLength-copyLength); + mBufferLength = 0; + } + } + + if (mBufferLength) { + // We have not been able to successfully parse the + // content of the temporary buffer. If the buffer is + // full already, the stream does not contain MP3. + mOffset += copyLength; + mIsMP3 = (mBufferLength < NS_ARRAY_LENGTH(mBuffer)); + } else { + // We parsed the temporary buffer. The parser code + // will update the input data. + copyLength = 0; + } + + if (mOffset > mLength) { + mLength = mOffset; + } + + return copyLength; +} + +void MP3FrameParser::Parse(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset) +{ + MutexAutoLock mon(mLock); + + // We first try to parse the remaining data from the last call that + // is stored in an internal buffer. + size_t bufferIncr = ParseInternalBuffer(aBuffer, aLength, aOffset); + + aBuffer += bufferIncr; + aLength -= bufferIncr; + aOffset += bufferIncr; + + // The number of attempts to parse the data. This should be 1 of we + // append to the end of the existing data. + int retries = 1; + + if (aOffset+aLength <= mOffset) { + // We already processed this fragment. + return; + } else if (aOffset < mOffset) { + // mOffset is within the new fragment, shorten range. + aLength -= mOffset-aOffset; + aBuffer += mOffset-aOffset; + aOffset = mOffset; + } else if (aOffset > mOffset) { + // Fragment comes after current position, store difference. + mUnhandled += aOffset-mOffset; + + // We might start in the middle of a frame and have find the next + // frame header. As our detection heuristics might return false + // positives, we simply try multiple times. The current value comes + // from experimentation with MP3 files. If you encounter false positives + // and incorrectly parsed MP3 files, try incrementing this value. + retries = 5; + } + + uint32_t trailing = 0; + + while (retries) { + + MP3Buffer mp3Buffer(aBuffer, aLength); + nsresult rv = mp3Buffer.Parse(); + + if (rv != NS_OK) { + --retries; + + if (!retries) { + mIsMP3 = false; + return; + } + + // We might be in the middle of a frame, find next frame header + const uint8_t *buffer = MP3Buffer::FindNextHeader(aBuffer+1, aLength-1); + + mUnhandled += buffer-aBuffer; + mOffset = aOffset + buffer-aBuffer; + aLength -= buffer-aBuffer; + aBuffer = buffer; + } else { + mDurationUs += mp3Buffer.GetDuration(); + mBitRateSum += mp3Buffer.GetBitRateSum(); + mNumFrames += mp3Buffer.GetNumberOfFrames(); + mOffset += mp3Buffer.GetFrameSizeSum(); + + trailing = mp3Buffer.GetTrailing(); + retries = 0; + } + } + + if (trailing) { + // Store trailing bytes in temporary buffer. + MOZ_ASSERT(trailing < (NS_ARRAY_LENGTH(mBuffer)*sizeof(*mBuffer))); + memcpy(mBuffer, aBuffer+(aLength-trailing), trailing); + mBufferLength = trailing; + } + + if (mOffset > mLength) { + mLength = mOffset; + } +} + +void MP3FrameParser::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) +{ + Parse(reinterpret_cast(aBuffer), aLength, aOffset); +} + +int64_t MP3FrameParser::GetDuration() +{ + MutexAutoLock mon(mLock); + + if (!mNumFrames) { + return -1; // Not a single frame decoded yet + } + + // Compute the duration of the unhandled fragments from + // the average bitrate. + int64_t avgBitRate = mBitRateSum / mNumFrames; + NS_ENSURE_TRUE(avgBitRate > 0, mDurationUs); + + MOZ_ASSERT(mLength >= mOffset); + int64_t unhandled = mUnhandled + (mLength-mOffset); + + return mDurationUs + (uint64_t(MP3Buffer::MP3_DURATION_CONST) * unhandled) / avgBitRate; +} + +} diff --git a/content/media/omx/MP3FrameParser.h b/content/media/omx/MP3FrameParser.h new file mode 100644 index 00000000000..82b60d2245a --- /dev/null +++ b/content/media/omx/MP3FrameParser.h @@ -0,0 +1,76 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include +#include "mozilla/Mutex.h" + +namespace mozilla { + +// A description of the MP3 format and its extensions is available at +// +// http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header +// +// The data in MP3 streams is split into small frames, with each frame +// containing a fixed number of samples. The duration of a frame depends +// on the frame's bit rate and sample rate. Both values can vary among +// frames, so it is necessary to examine each individual frame of an MP3 +// stream to calculate the stream's overall duration. +// +// The MP3 frame parser extracts information from an MP3 data stream. It +// accepts a range of frames of an MP3 stream as input, and parses all +// frames for their duration. Callers can query the stream's overall +// duration from the parser. +// +// Call the methods NotifyDataArrived or Parse to add new data. If you added +// information for a certain stream position, you cannot go back to previous +// positions. The parser will simply ignore the input. If you skip stream +// positions, the duration of the related MP3 frames will be estimated from +// the stream's average. +// +// The method GetDuration returns calculated duration of the stream, including +// estimates for skipped ranges. +// +// All public methods are thread-safe. + +class MP3FrameParser +{ +public: + MP3FrameParser(int64_t aLength=-1); + + bool IsMP3() { + MutexAutoLock mon(mLock); + return mIsMP3; + } + + void Parse(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset); + + void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); + + int64_t GetDuration(); + +private: + size_t ParseInternalBuffer(const uint8_t* aBuffer, uint32_t aLength, int64_t aOffset); + + uint8_t mBuffer[10]; + uint32_t mBufferLength; + + // A low-contention lock for protecting the parser results + Mutex mLock; + + // All fields below are protected by mLock + uint64_t mDurationUs; + uint64_t mBitRateSum; + uint64_t mNumFrames; + int64_t mOffset; + int64_t mUnhandled; + int64_t mLength; + uint32_t mTrailing; + + // Contains the state of the MP3 detection + bool mIsMP3; +}; + +} diff --git a/content/media/omx/moz.build b/content/media/omx/moz.build index 4ad2d79a184..e36b67f1cae 100644 --- a/content/media/omx/moz.build +++ b/content/media/omx/moz.build @@ -14,6 +14,7 @@ EXPORTS += [ CPP_SOURCES += [ 'MediaOmxDecoder.cpp', 'MediaOmxReader.cpp', + 'MP3FrameParser.cpp', 'OmxDecoder.cpp', 'OMXCodecProxy.cpp', ] From 029ae7c49e8a67deed128b581909d43a501442b9 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Fri, 3 May 2013 09:48:37 +0200 Subject: [PATCH 47/82] Bug 831224: Allow update of the media duration, r=padenot With MP3 streams, the media duration might change after we received new data. This patch adds infrastructure to signal the new duration to the media decoder and state machine. It will also fire an event of type 'durationchange' to the DOM. --- content/media/AbstractMediaDecoder.h | 5 +++++ content/media/MediaDecoder.cpp | 6 ++++++ content/media/MediaDecoder.h | 1 + content/media/MediaDecoderStateMachine.cpp | 10 ++++++++++ content/media/MediaDecoderStateMachine.h | 4 ++++ content/media/webaudio/MediaBufferDecoder.cpp | 8 ++++++++ 6 files changed, 34 insertions(+) diff --git a/content/media/AbstractMediaDecoder.h b/content/media/AbstractMediaDecoder.h index e7e2d4f781e..5c65c5d3aa8 100644 --- a/content/media/AbstractMediaDecoder.h +++ b/content/media/AbstractMediaDecoder.h @@ -72,6 +72,11 @@ public: // Set the duration of the media in microseconds. virtual void SetMediaDuration(int64_t aDuration) = 0; + // Sets the duration of the media in microseconds. The MediaDecoder + // fires a durationchange event to its owner (e.g., an HTML audio + // tag). + virtual void UpdateMediaDuration(int64_t aDuration) = 0; + // Set the media as being seekable or not. virtual void SetMediaSeekable(bool aMediaSeekable) = 0; diff --git a/content/media/MediaDecoder.cpp b/content/media/MediaDecoder.cpp index 0c0ad4d0298..1f85d8d7af1 100644 --- a/content/media/MediaDecoder.cpp +++ b/content/media/MediaDecoder.cpp @@ -1272,6 +1272,12 @@ void MediaDecoder::SetMediaDuration(int64_t aDuration) GetStateMachine()->SetDuration(aDuration); } +void MediaDecoder::UpdateMediaDuration(int64_t aDuration) +{ + NS_ENSURE_TRUE_VOID(GetStateMachine()); + GetStateMachine()->UpdateDuration(aDuration); +} + void MediaDecoder::SetMediaSeekable(bool aMediaSeekable) { ReentrantMonitorAutoEnter mon(GetReentrantMonitor()); MOZ_ASSERT(NS_IsMainThread() || OnDecodeThread()); diff --git a/content/media/MediaDecoder.h b/content/media/MediaDecoder.h index 2c1af472570..12494e3b076 100644 --- a/content/media/MediaDecoder.h +++ b/content/media/MediaDecoder.h @@ -506,6 +506,7 @@ public: virtual void SetDuration(double aDuration); void SetMediaDuration(int64_t aDuration) MOZ_OVERRIDE; + void UpdateMediaDuration(int64_t aDuration) MOZ_OVERRIDE; // Set a flag indicating whether seeking is supported virtual void SetMediaSeekable(bool aMediaSeekable) MOZ_OVERRIDE; diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp index eb25714d457..2cb728e89b3 100644 --- a/content/media/MediaDecoderStateMachine.cpp +++ b/content/media/MediaDecoderStateMachine.cpp @@ -1446,6 +1446,16 @@ void MediaDecoderStateMachine::SetDuration(int64_t aDuration) } } +void MediaDecoderStateMachine::UpdateDuration(int64_t aDuration) +{ + if (aDuration != GetDuration()) { + SetDuration(aDuration); + nsCOMPtr event = + NS_NewRunnableMethod(mDecoder, &MediaDecoder::DurationChanged); + NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL); + } +} + void MediaDecoderStateMachine::SetMediaEndTime(int64_t aEndTime) { NS_ASSERTION(OnDecodeThread(), "Should be on decode thread"); diff --git a/content/media/MediaDecoderStateMachine.h b/content/media/MediaDecoderStateMachine.h index 23179e4c517..3cc4d8d6755 100644 --- a/content/media/MediaDecoderStateMachine.h +++ b/content/media/MediaDecoderStateMachine.h @@ -157,6 +157,10 @@ public: // aEndTime is in microseconds. void SetMediaEndTime(int64_t aEndTime); + // Called from decode thread to update the duration. Can result in + // a durationchangeevent. aDuration is in microseconds. + void UpdateDuration(int64_t aDuration); + // Functions used by assertions to ensure we're calling things // on the appropriate threads. bool OnDecodeThread() const { diff --git a/content/media/webaudio/MediaBufferDecoder.cpp b/content/media/webaudio/MediaBufferDecoder.cpp index c0e301808b6..1ac22e1bba1 100644 --- a/content/media/webaudio/MediaBufferDecoder.cpp +++ b/content/media/webaudio/MediaBufferDecoder.cpp @@ -97,6 +97,8 @@ public: virtual void SetMediaDuration(int64_t aDuration) MOZ_FINAL MOZ_OVERRIDE; + virtual void UpdateMediaDuration(int64_t aDuration) MOZ_FINAL MOZ_OVERRIDE; + virtual void SetMediaSeekable(bool aMediaSeekable) MOZ_OVERRIDE; virtual void SetTransportSeekable(bool aTransportSeekable) MOZ_FINAL MOZ_OVERRIDE; @@ -214,6 +216,12 @@ BufferDecoder::SetMediaDuration(int64_t aDuration) // ignore } +void +BufferDecoder::UpdateMediaDuration(int64_t aDuration) +{ + // ignore +} + void BufferDecoder::SetMediaSeekable(bool aMediaSeekable) { From 79d1b1351b4301265984ae73885a7b80db802088 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 24 Jan 2013 13:38:32 +0100 Subject: [PATCH 48/82] Bug 831224: Parse MP3 frame headers in OmxDecoder, r=padenot On FirefoxOS, the Android libraries estimate the duration of MP3 streams by examining the first MP3 frame header. This only works for streams with constant bit rate. For streams with variable bit rate, a too short or too long duration is computed. This patch adds support for parsing MP3 frame headers. The decoder handles file streams by reading them at once at the beginning and parsing them immediately. Network streams are updated when a new fragment arrives. --- content/media/MediaDecoderReader.h | 4 +- content/media/omx/MediaOmxReader.cpp | 9 ++ content/media/omx/MediaOmxReader.h | 2 + content/media/omx/OmxDecoder.cpp | 156 ++++++++++++++++++++++++++- content/media/omx/OmxDecoder.h | 5 + 5 files changed, 171 insertions(+), 5 deletions(-) diff --git a/content/media/MediaDecoderReader.h b/content/media/MediaDecoderReader.h index 243eb64e743..f6636c9612d 100644 --- a/content/media/MediaDecoderReader.h +++ b/content/media/MediaDecoderReader.h @@ -519,8 +519,8 @@ public: return functor.mResult; } - // Only used by WebMReader for now, so stub here rather than in every - // reader than inherits from MediaDecoderReader. + // Only used by WebMReader and MediaOmxReader for now, so stub here rather + // than in every reader than inherits from MediaDecoderReader. virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) {} virtual MediaQueue& AudioQueue() { return mAudioQueue; } diff --git a/content/media/omx/MediaOmxReader.cpp b/content/media/omx/MediaOmxReader.cpp index cf27940e75c..5fcb456a50f 100644 --- a/content/media/omx/MediaOmxReader.cpp +++ b/content/media/omx/MediaOmxReader.cpp @@ -270,6 +270,15 @@ bool MediaOmxReader::DecodeVideoFrame(bool &aKeyframeSkip, return true; } +void MediaOmxReader::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) +{ + android::OmxDecoder *omxDecoder = mOmxDecoder.get(); + + if (omxDecoder) { + omxDecoder->NotifyDataArrived(aBuffer, aLength, aOffset); + } +} + bool MediaOmxReader::DecodeAudioData() { NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); diff --git a/content/media/omx/MediaOmxReader.h b/content/media/omx/MediaOmxReader.h index 13a36c595c6..db55f2d7fd6 100644 --- a/content/media/omx/MediaOmxReader.h +++ b/content/media/omx/MediaOmxReader.h @@ -40,6 +40,8 @@ public: virtual nsresult Init(MediaDecoderReader* aCloneDonor); virtual nsresult ResetDecode(); + virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); + virtual bool DecodeAudioData(); virtual bool DecodeVideoFrame(bool &aKeyframeSkip, int64_t aTimeThreshold); diff --git a/content/media/omx/OmxDecoder.cpp b/content/media/omx/OmxDecoder.cpp index 011ef252119..3899e0f92f5 100644 --- a/content/media/omx/OmxDecoder.cpp +++ b/content/media/omx/OmxDecoder.cpp @@ -18,6 +18,8 @@ #include "mozilla/Preferences.h" #include "mozilla/Types.h" +#include "mozilla/Monitor.h" +#include "nsMimeTypes.h" #include "MPAPI.h" #include "prlog.h" @@ -37,6 +39,114 @@ using namespace MPAPI; using namespace mozilla; namespace mozilla { + +// When loading an MP3 stream from a file, we need to parse the file's +// content to find its duration. We must do this from within the decode +// thread, but parsing itself must be done in the main thread. +// +// After we read the file's content in the decode thread, an instance +// of this class is scheduled to the main thread for parsing the MP3 +// stream. We then wait until it has returned. + +class OmxDecoderNotifyDataArrivedRunnable : public nsRunnable +{ +public: + OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset) + : mOmxDecoder(aOmxDecoder), + mBuffer(aBuffer), + mLength(aLength), + mOffset(aOffset), + mCompletedMonitor("OmxDecoderNotifyDataArrived.mCompleted"), + mCompleted(false) + { + MOZ_ASSERT(mOmxDecoder.get()); + MOZ_ASSERT(mBuffer.get() || !mLength); + } + + NS_IMETHOD Run() + { + NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); + + const char* buffer = mBuffer.get(); + + while (mLength) { + uint32_t length = std::min(mLength, UINT32_MAX); + mOmxDecoder->NotifyDataArrived(mBuffer.get(), mLength, mOffset); + + buffer += length; + mLength -= length; + mOffset += length; + } + + Completed(); + + return NS_OK; + } + + void WaitForCompletion() + { + MOZ_ASSERT(!NS_IsMainThread()); + + MonitorAutoLock mon(mCompletedMonitor); + if (!mCompleted) { + mCompletedMonitor.Wait(); + } + } + + static nsresult ProcessCachedData(android::OmxDecoder* aOmxDecoder); + +private: + // Call this function at the end of Run() to notify waiting + // threads. + void Completed() + { + MonitorAutoLock mon(mCompletedMonitor); + MOZ_ASSERT(!mCompleted); + mCompleted = true; + mCompletedMonitor.Notify(); + } + + android::sp mOmxDecoder; + nsAutoArrayPtr mBuffer; + uint64_t mLength; + int64_t mOffset; + + Monitor mCompletedMonitor; + bool mCompleted; +}; + +nsresult OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(android::OmxDecoder* aOmxDecoder) +{ + MOZ_ASSERT(aOmxDecoder); + + NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); + + MediaResource* resource = aOmxDecoder->GetResource(); + MOZ_ASSERT(resource); + + int64_t length = resource->GetCachedDataEnd(0); + NS_ENSURE_TRUE(length >= 0, NS_ERROR_UNEXPECTED); + + if (!length) { + return NS_OK; // Cache is empty, nothing to do + } + + nsAutoArrayPtr buffer(new char[length]); + + nsresult rv = resource->ReadFromCache(buffer.get(), 0, length); + NS_ENSURE_SUCCESS(rv, rv); + + nsRefPtr runnable( + new OmxDecoderNotifyDataArrivedRunnable(aOmxDecoder, buffer.forget(), length, 0)); + + rv = NS_DispatchToMainThread(runnable.get()); + NS_ENSURE_SUCCESS(rv, rv); + + runnable->WaitForCompletion(); + + return NS_OK; +} + namespace layers { VideoGraphicBuffer::VideoGraphicBuffer(const android::wp aOmxDecoder, @@ -147,6 +257,7 @@ OmxDecoder::OmxDecoder(MediaResource *aResource, mAudioChannels(-1), mAudioSampleRate(-1), mDurationUs(-1), + mMP3FrameParser(aResource->GetLength()), mVideoBuffer(nullptr), mAudioBuffer(nullptr), mIsVideoSeeking(false), @@ -274,9 +385,29 @@ bool OmxDecoder::TryLoad() { if (durationUs > totalDurationUs) totalDurationUs = durationUs; } - if (mAudioTrack.get() && mAudioTrack->getFormat()->findInt64(kKeyDuration, &durationUs)) { - if (durationUs > totalDurationUs) - totalDurationUs = durationUs; + if (mAudioTrack.get()) { + durationUs = -1; + const char* audioMime; + sp meta = mAudioTrack->getFormat(); + + if (meta->findCString(kKeyMIMEType, &audioMime) && !strcasecmp(audioMime, AUDIO_MP3)) { + // Feed MP3 parser with cached data. Local files will be fully + // cached already, network streams will update with sucessive + // calls to NotifyDataArrived. + nsresult rv = OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(this); + + if (rv == NS_OK) { + durationUs = mMP3FrameParser.GetDuration(); + if (durationUs > totalDurationUs) { + totalDurationUs = durationUs; + } + } + } + if ((durationUs == -1) && meta->findInt64(kKeyDuration, &durationUs)) { + if (durationUs > totalDurationUs) { + totalDurationUs = durationUs; + } + } } mDurationUs = totalDurationUs; @@ -485,6 +616,25 @@ bool OmxDecoder::SetAudioFormat() { return true; } +void OmxDecoder::NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset) +{ + if (!mMP3FrameParser.IsMP3()) { + return; + } + + mMP3FrameParser.NotifyDataArrived(aBuffer, aLength, aOffset); + + int64_t durationUs = mMP3FrameParser.GetDuration(); + + if (durationUs != mDurationUs) { + mDurationUs = durationUs; + + MOZ_ASSERT(mDecoder); + ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); + mDecoder->UpdateMediaDuration(mDurationUs); + } +} + void OmxDecoder::ReleaseVideoBuffer() { if (mVideoBuffer) { mVideoBuffer->release(); diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 84e7e467358..82d3135aa6d 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -9,6 +9,7 @@ #include "GonkNativeWindow.h" #include "GonkNativeWindowClient.h" #include "GrallocImages.h" +#include "MP3FrameParser.h" #include "MPAPI.h" #include "MediaResource.h" #include "AbstractMediaDecoder.h" @@ -76,6 +77,7 @@ private: class OmxDecoder : public OMXCodecProxy::EventListener { typedef MPAPI::AudioFrame AudioFrame; typedef MPAPI::VideoFrame VideoFrame; + typedef mozilla::MP3FrameParser MP3FrameParser; typedef mozilla::MediaResource MediaResource; typedef mozilla::AbstractMediaDecoder AbstractMediaDecoder; @@ -109,6 +111,7 @@ class OmxDecoder : public OMXCodecProxy::EventListener { int64_t mDurationUs; VideoFrame mVideoFrame; AudioFrame mAudioFrame; + MP3FrameParser mMP3FrameParser; // Lifetime of these should be handled by OMXCodec, as long as we release // them after use: see ReleaseVideoBuffer(), ReleaseAudioBuffer() @@ -177,6 +180,8 @@ public: bool SetVideoFormat(); bool SetAudioFormat(); + void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset); + void GetDuration(int64_t *durationUs) { *durationUs = mDurationUs; } From a0bcc67e59dc40e0b254e2d942493cfb68f2ff91 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Mon, 6 May 2013 20:07:29 +0200 Subject: [PATCH 49/82] Bug 831224: Use multi-threaded I/O for reading and processing MP3 frames, r=padenot Reading large MP3 files from a slow medium, such as an SD card, takes several seconds. This is too long for interactive applications like the music app. With this patch, the OmxDecoder reads large MP3 file in smaller chunks and hands over each chunk individually to the MP3 parser. Reading the file is done in the I/O thread, which is allowed to block, parsing is done on the main thread. The current chunk size is 8 MiB, which is small enough to not cause any delay. --- content/media/omx/OmxDecoder.cpp | 126 ++++++++++++++++++++----------- content/media/omx/OmxDecoder.h | 1 + 2 files changed, 84 insertions(+), 43 deletions(-) diff --git a/content/media/omx/OmxDecoder.cpp b/content/media/omx/OmxDecoder.cpp index 3899e0f92f5..511cd336bdc 100644 --- a/content/media/omx/OmxDecoder.cpp +++ b/content/media/omx/OmxDecoder.cpp @@ -40,22 +40,50 @@ using namespace mozilla; namespace mozilla { +class OmxDecoderProcessCachedDataTask : public Task +{ +public: + OmxDecoderProcessCachedDataTask(android::OmxDecoder* aOmxDecoder, int64_t aOffset) + : mOmxDecoder(aOmxDecoder), + mOffset(aOffset) + { } + + void Run() + { + MOZ_ASSERT(!NS_IsMainThread()); + MOZ_ASSERT(mOmxDecoder.get()); + mOmxDecoder->ProcessCachedData(mOffset, false); + } + +private: + android::sp mOmxDecoder; + int64_t mOffset; +}; + // When loading an MP3 stream from a file, we need to parse the file's -// content to find its duration. We must do this from within the decode -// thread, but parsing itself must be done in the main thread. +// content to find its duration. Reading files of 100 Mib or more can +// delay the player app noticably, so the file os read and decoded in +// smaller chunks. // -// After we read the file's content in the decode thread, an instance -// of this class is scheduled to the main thread for parsing the MP3 -// stream. We then wait until it has returned. +// We first read on the decode thread, but parsing must be done on the +// main thread. After we read the file's initial MiBs in the decode +// thread, an instance of this class is scheduled to the main thread for +// parsing the MP3 stream. The decode thread waits until it has finished. +// +// If there is more data available from the file, the runnable dispatches +// a task to the IO thread for retrieving the next chunk of data, and +// the IO task dispatches a runnable to the main thread for parsing the +// data. This goes on until all of the MP3 file has been parsed. class OmxDecoderNotifyDataArrivedRunnable : public nsRunnable { public: - OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset) + OmxDecoderNotifyDataArrivedRunnable(android::OmxDecoder* aOmxDecoder, const char* aBuffer, uint64_t aLength, int64_t aOffset, uint64_t aFullLength) : mOmxDecoder(aOmxDecoder), mBuffer(aBuffer), mLength(aLength), mOffset(aOffset), + mFullLength(aFullLength), mCompletedMonitor("OmxDecoderNotifyDataArrived.mCompleted"), mCompleted(false) { @@ -78,6 +106,13 @@ public: mOffset += length; } + if (mOffset < mFullLength) { + // We cannot read data in the main thread because it + // might block for too long. Instead we post an IO task + // to the IO thread if there is more data available. + XRE_GetIOMessageLoop()->PostTask(FROM_HERE, new OmxDecoderProcessCachedDataTask(mOmxDecoder.get(), mOffset)); + } + Completed(); return NS_OK; @@ -93,8 +128,6 @@ public: } } - static nsresult ProcessCachedData(android::OmxDecoder* aOmxDecoder); - private: // Call this function at the end of Run() to notify waiting // threads. @@ -110,43 +143,12 @@ private: nsAutoArrayPtr mBuffer; uint64_t mLength; int64_t mOffset; + uint64_t mFullLength; Monitor mCompletedMonitor; bool mCompleted; }; -nsresult OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(android::OmxDecoder* aOmxDecoder) -{ - MOZ_ASSERT(aOmxDecoder); - - NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); - - MediaResource* resource = aOmxDecoder->GetResource(); - MOZ_ASSERT(resource); - - int64_t length = resource->GetCachedDataEnd(0); - NS_ENSURE_TRUE(length >= 0, NS_ERROR_UNEXPECTED); - - if (!length) { - return NS_OK; // Cache is empty, nothing to do - } - - nsAutoArrayPtr buffer(new char[length]); - - nsresult rv = resource->ReadFromCache(buffer.get(), 0, length); - NS_ENSURE_SUCCESS(rv, rv); - - nsRefPtr runnable( - new OmxDecoderNotifyDataArrivedRunnable(aOmxDecoder, buffer.forget(), length, 0)); - - rv = NS_DispatchToMainThread(runnable.get()); - NS_ENSURE_SUCCESS(rv, rv); - - runnable->WaitForCompletion(); - - return NS_OK; -} - namespace layers { VideoGraphicBuffer::VideoGraphicBuffer(const android::wp aOmxDecoder, @@ -394,9 +396,7 @@ bool OmxDecoder::TryLoad() { // Feed MP3 parser with cached data. Local files will be fully // cached already, network streams will update with sucessive // calls to NotifyDataArrived. - nsresult rv = OmxDecoderNotifyDataArrivedRunnable::ProcessCachedData(this); - - if (rv == NS_OK) { + if (ProcessCachedData(0, true)) { durationUs = mMP3FrameParser.GetDuration(); if (durationUs > totalDurationUs) { totalDurationUs = durationUs; @@ -992,3 +992,43 @@ void OmxDecoder::ReleaseAllPendingVideoBuffersLocked() releasingVideoBuffers.clear(); } +bool OmxDecoder::ProcessCachedData(int64_t aOffset, bool aWaitForCompletion) +{ + // We read data in chunks of 8 MiB. We can reduce this + // value if media, such as sdcards, is too slow. + static const int64_t sReadSize = 8 * 1024 * 1024; + + NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread."); + + MOZ_ASSERT(mResource); + + int64_t resourceLength = mResource->GetCachedDataEnd(0); + NS_ENSURE_TRUE(resourceLength >= 0, false); + + if (aOffset >= resourceLength) { + return true; // Cache is empty, nothing to do + } + + int64_t bufferLength = std::min(resourceLength-aOffset, sReadSize); + + nsAutoArrayPtr buffer(new char[bufferLength]); + + nsresult rv = mResource->ReadFromCache(buffer.get(), aOffset, bufferLength); + NS_ENSURE_SUCCESS(rv, false); + + nsRefPtr runnable( + new OmxDecoderNotifyDataArrivedRunnable(this, + buffer.forget(), + bufferLength, + aOffset, + resourceLength)); + + rv = NS_DispatchToMainThread(runnable.get()); + NS_ENSURE_SUCCESS(rv, false); + + if (aWaitForCompletion) { + runnable->WaitForCompletion(); + } + + return true; +} diff --git a/content/media/omx/OmxDecoder.h b/content/media/omx/OmxDecoder.h index 82d3135aa6d..c3e3d8f5aed 100644 --- a/content/media/omx/OmxDecoder.h +++ b/content/media/omx/OmxDecoder.h @@ -225,6 +225,7 @@ public: // Called on ALooper thread. void onMessageReceived(const sp &msg); + bool ProcessCachedData(int64_t aOffset, bool aWaitForCompletion); }; } From cc9047ec0220df6b1dd4cbc9699ed88e08a2f6f1 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Wed, 7 Aug 2013 18:54:04 +0200 Subject: [PATCH 50/82] Bug 831224: Added mochitest for variable-bitrate MP3s, r=padenot The test checks the duration of an MP3 file with variable bitrate. The MP3 file only contains silence. It uses a high bit-rate encoding for its first half, a low bit-rate encoding for its second half. The correct duration is 10 seconds, but an incorrect implementation will return a much shorter value. --- content/media/test/manifest.js | 1 + content/media/test/vbr.mp3 | Bin 0 -> 300553 bytes 2 files changed, 1 insertion(+) create mode 100644 content/media/test/vbr.mp3 diff --git a/content/media/test/manifest.js b/content/media/test/manifest.js index 05aa7fe8b4e..5f0b80ab554 100644 --- a/content/media/test/manifest.js +++ b/content/media/test/manifest.js @@ -42,6 +42,7 @@ var gPlayedTests = [ { name:"seek.webm", type:"video/webm", duration:3.966 }, { name:"gizmo.mp4", type:"video/mp4", duration:5.56 }, { name:"owl.mp3", type:"audio/mpeg", duration:3.29 }, + { name:"vbr.mp3", type:"audio/mpeg", duration:10.0 } ]; // Used by test_mozLoadFrom. Need one test file per decoder backend, plus diff --git a/content/media/test/vbr.mp3 b/content/media/test/vbr.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..38eb376a971154722676b4a55019808168796c2b GIT binary patch literal 300553 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�_?X?`op9pDmI3_Uq$UyJ*aZ+l@bW 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 elements within the desktop webapp runtime. r=myk --- webapprt/content/webapp.js | 66 ++++++++++++++++++++++++++++++++++++- webapprt/content/webapp.xul | 10 +++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/webapprt/content/webapp.js b/webapprt/content/webapp.js index 75fd31f799e..90c05bf5763 100644 --- a/webapprt/content/webapp.js +++ b/webapprt/content/webapp.js @@ -128,15 +128,22 @@ function updateMenuItems() { #endif } +#ifndef XP_MACOSX +let gEditUIVisible = true; +#endif + function updateEditUIVisibility() { #ifndef XP_MACOSX let editMenuPopupState = document.getElementById("menu_EditPopup").state; + let contextMenuPopupState = document.getElementById("contentAreaContextMenu").state; // The UI is visible if the Edit menu is opening or open, if the context menu // is open, or if the toolbar has been customized to include the Cut, Copy, // or Paste toolbar buttons. gEditUIVisible = editMenuPopupState == "showing" || - editMenuPopupState == "open"; + editMenuPopupState == "open" || + contextMenuPopupState == "showing" || + contextMenuPopupState == "open"; // If UI is visible, update the edit commands' enabled state to reflect // whether or not they are actually enabled for the current focus/selection. @@ -177,3 +184,60 @@ function updateCrashReportURL(aURI) { gCrashReporter.annotateCrashReport("URL", uri.spec); #endif } + +// Context menu handling code. +// At the moment there isn't any built-in menu, we only support HTML5 custom +// menus. + +let gContextMenu = null; + +XPCOMUtils.defineLazyGetter(this, "PageMenu", function() { + let tmp = {}; + Cu.import("resource://gre/modules/PageMenu.jsm", tmp); + return new tmp.PageMenu(); +}); + +function showContextMenu(aEvent, aXULMenu) { + if (aEvent.target != aXULMenu) { + return true; + } + + gContextMenu = new nsContextMenu(aXULMenu); + if (gContextMenu.shouldDisplay) { + updateEditUIVisibility(); + } + + return gContextMenu.shouldDisplay; +} + +function hideContextMenu(aEvent, aXULMenu) { + if (aEvent.target != aXULMenu) { + return; + } + + gContextMenu = null; + + updateEditUIVisibility(); +} + +function nsContextMenu(aXULMenu) { + this.initMenu(aXULMenu); +} + +nsContextMenu.prototype = { + initMenu: function(aXULMenu) { + this.hasPageMenu = PageMenu.maybeBuildAndAttachMenu(document.popupNode, + aXULMenu); + this.shouldDisplay = this.hasPageMenu; + + this.showItem("page-menu-separator", this.hasPageMenu); + }, + + showItem: function(aItemOrID, aShow) { + let item = aItemOrID.constructor == String ? + document.getElementById(aItemOrID) : aItemOrID; + if (item) { + item.hidden = !aShow; + } + } +}; diff --git a/webapprt/content/webapp.xul b/webapprt/content/webapp.xul index 5d5ae0af709..cf8424158ce 100644 --- a/webapprt/content/webapp.xul +++ b/webapprt/content/webapp.xul @@ -154,6 +154,14 @@ - + + + + + + + From 879dd4f18144b5624beb1e986c976619b3ef19e0 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Fri, 9 Aug 2013 11:45:23 -0700 Subject: [PATCH 81/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/30a28b592ed8 Author: Kevin Grandon Desc: Merge pull request #11353 from KevinGrandon/bug_901578_remove_mouse_shim_settings Bug 901578 - Remove mouse_event_shim from settings r=kaze ======== https://hg.mozilla.org/integration/gaia-central/rev/86532663e60e Author: Kevin Grandon Desc: Bug 901578 - Remove mouse_event_shim from settings --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index b67ff4deeba..62b46193c81 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "a202d951a704cd82d32590b058ca81fb1ddcfc54", + "revision": "30a28b592ed8268bf5fa7a9a9e1307d25a3a2a57", "repo_path": "/integration/gaia-central" } From 374c2749bb505f0c874625815c7649d10040df92 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Fri, 9 Aug 2013 12:05:25 -0700 Subject: [PATCH 82/82] Bumping gaia.json for 1 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/0e3e30e489ff Author: Rick Waldron Desc: Bug 903137 - [SMS][MMS] Contextmenu prompt for email in message should display email address r=gnarf - Make all prompts consistent - Ensures that dataset.isContact strings are only used to derive a true isContact boolean - Renames ThreadUI.activateContact to ThreadUI.prompt - The function no longer serves as only a "contact" prompt - May prompt any type of recipient (contact, unknown, email) - May prompt from header, group list or message content - Renames ThreadUI.genPrompt to ThreadUI.prompContact - genPrompt is meaningless - The function is explicitly for creating a prompt with a known contact - Includes the contact info lookup - Converts promptContact arguments to an object, instead of named parameters - Update LinkActionHandler to delegate to promptContact, instead of doing it's own duplicated lookup - Adds tests to ensure that a something is displayed when something is provided - Could be any of the following: - DOM UL - Email address - Phone Number - Name - Updates LinkActionHandler tests to use the correct new function names Signed-off-by: Rick Waldron --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 62b46193c81..71528e42bf1 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "30a28b592ed8268bf5fa7a9a9e1307d25a3a2a57", + "revision": "0e3e30e489ff38cceb8b9cf9ee5caea5fb072457", "repo_path": "/integration/gaia-central" }

{q^N?j1!g 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∨ay_>C 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%0DWNEAkE;bq%kIE7njqmaSzzGkGgL_|Be0UX5~ayU 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 MU;mH)-~9gn0fke|RR910 literal 0 HcmV?d00001 From 651775015bfa4dfa6aed744abf1a3862e7fe6cc7 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 10:55:26 -0700 Subject: [PATCH 51/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/c406aed66b1a Author: Jonathan Griffin Desc: Merge pull request #11437 from jonallengriffin/updateui Bug 866908 - Pick up a newer version of gaia-ui-tests, a=test-only ======== https://hg.mozilla.org/integration/gaia-central/rev/d6110bb2ae9d Author: Jonathan Griffin Desc: Bug 866908 - Pick up a newer version of gaia-ui-tests, a=test-only --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index a118e5ae9d6..5c010c64be7 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "82e365b7253cab83a6ed10a59125ad02721e345b", + "revision": "c406aed66b1ac0fea59b07335419579917193b32", "repo_path": "/integration/gaia-central" } From 875b9c2a87d198c754a0d05a0366f0235b3f6520 Mon Sep 17 00:00:00 2001 From: Gaia Pushbot Date: Thu, 8 Aug 2013 11:25:23 -0700 Subject: [PATCH 52/82] Bumping gaia.json for 2 gaia-central revision(s) ======== https://hg.mozilla.org/integration/gaia-central/rev/c841634cb485 Author: Dale Harvey Desc: Bug 898326 - Disable buttons when switching camera. r=djf ======== https://hg.mozilla.org/integration/gaia-central/rev/e71e50ddfde5 Author: David Flanagan Desc: Bug 890427: use camera API's onPreviewStateChange callback to avoid deadlock. r=johu do the same thing in loadCameraPreview --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 5c010c64be7..e76e173372c 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "c406aed66b1ac0fea59b07335419579917193b32", + "revision": "c841634cb485184993739fd9c8ba5a0aec4dc18a", "repo_path": "/integration/gaia-central" } From 593f66c42ceaf1e776b772676d936b311744f898 Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Thu, 8 Aug 2013 14:38:33 -0400 Subject: [PATCH 53/82] Backed out changesets 6126987777f3 and a232e4df28e5 (bug 882171) due to Android build bustage. --- content/media/AudioNodeEngine.cpp | 37 ---- content/media/AudioNodeEngineNEON.cpp | 250 -------------------------- content/media/AudioNodeEngineNEON.h | 41 ----- content/media/Makefile.in | 2 - content/media/moz.build | 5 - 5 files changed, 335 deletions(-) delete mode 100644 content/media/AudioNodeEngineNEON.cpp delete mode 100644 content/media/AudioNodeEngineNEON.h diff --git a/content/media/AudioNodeEngine.cpp b/content/media/AudioNodeEngine.cpp index 81dbef9c641..9f476e3a0bf 100644 --- a/content/media/AudioNodeEngine.cpp +++ b/content/media/AudioNodeEngine.cpp @@ -4,11 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "mozilla/arm.h" #include "AudioNodeEngine.h" -#ifdef MOZILLA_MAY_SUPPORT_NEON -#include "AudioNodeEngineNEON.h" -#endif namespace mozilla { @@ -62,12 +58,6 @@ void AudioBufferAddWithScale(const float* aInput, float* aOutput, uint32_t aSize) { -#ifdef MOZILLA_MAY_SUPPORT_NEON - if (mozilla::supports_neon()) { - AudioBufferAddWithScale_NEON(aInput, aScale, aOutput, aSize); - return; - } -#endif if (aScale == 1.0f) { for (uint32_t i = 0; i < aSize; ++i) { aOutput[i] += aInput[i]; @@ -95,12 +85,6 @@ AudioBlockCopyChannelWithScale(const float* aInput, if (aScale == 1.0f) { memcpy(aOutput, aInput, WEBAUDIO_BLOCK_SIZE*sizeof(float)); } else { -#ifdef MOZILLA_MAY_SUPPORT_NEON - if (mozilla::supports_neon()) { - AudioBlockCopyChannelWithScale_NEON(aInput, aScale, aOutput); - return; - } -#endif for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { aOutput[i] = aInput[i]*aScale; } @@ -130,12 +114,6 @@ AudioBlockCopyChannelWithScale(const float aInput[WEBAUDIO_BLOCK_SIZE], const float aScale[WEBAUDIO_BLOCK_SIZE], float aOutput[WEBAUDIO_BLOCK_SIZE]) { -#ifdef MOZILLA_MAY_SUPPORT_NEON - if (mozilla::supports_neon()) { - AudioBlockCopyChannelWithScale_NEON(aInput, aScale, aOutput); - return; - } -#endif for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; ++i) { aOutput[i] = aInput[i]*aScale[i]; } @@ -158,12 +136,6 @@ AudioBufferInPlaceScale(float* aBlock, if (aScale == 1.0f) { return; } -#ifdef MOZILLA_MAY_SUPPORT_NEON - if (mozilla::supports_neon()) { - AudioBufferInPlaceScale_NEON(aBlock, aChannelCount, aScale, aSize); - return; - } -#endif for (uint32_t i = 0; i < aSize * aChannelCount; ++i) { *aBlock++ *= aScale; } @@ -186,15 +158,6 @@ AudioBlockPanStereoToStereo(const float aInputL[WEBAUDIO_BLOCK_SIZE], float aOutputL[WEBAUDIO_BLOCK_SIZE], float aOutputR[WEBAUDIO_BLOCK_SIZE]) { -#ifdef MOZILLA_MAY_SUPPORT_NEON - if (mozilla::supports_neon()) { - AudioBlockPanStereoToStereo_NEON(aInputL, aInputR, - aGainL, aGainR, aIsOnTheLeft, - aOutputL, aOutputR); - return; - } -#endif - uint32_t i; if (aIsOnTheLeft) { diff --git a/content/media/AudioNodeEngineNEON.cpp b/content/media/AudioNodeEngineNEON.cpp deleted file mode 100644 index 28a61ac3cdc..00000000000 --- a/content/media/AudioNodeEngineNEON.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* this source code form is subject to the terms of the mozilla public - * license, v. 2.0. if a copy of the mpl was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "AudioNodeEngineNEON.h" -#include - -#ifdef DEBUG - #define ASSERT_ALIGNED(ptr) \ - MOZ_ASSERT((((uintptr_t)ptr + 15) & ~0x0F) == (uintptr_t)ptr, \ - #ptr " has to be aligned 16-bytes aligned."); -#else - #define ASSERT_ALIGNED(ptr) -#endif - -#define ADDRESS_OF(array, index) ((float32_t*)&array[index]) - -namespace mozilla { -void AudioBufferAddWithScale_NEON(const float* aInput, - float aScale, - float* aOutput, - uint32_t aSize) -{ - ASSERT_ALIGNED(aInput); - ASSERT_ALIGNED(aOutput); - - float32x4_t vin0, vin1, vin2, vin3; - float32x4_t vout0, vout1, vout2, vout3; - float32x4_t vscale = vmovq_n_f32(aScale); - - uint32_t dif = aSize % 16; - aSize -= dif; - unsigned i = 0; - for (; i < aSize; i+=16) { - vin0 = vld1q_f32(ADDRESS_OF(aInput, i)); - vin1 = vld1q_f32(ADDRESS_OF(aInput, i+4)); - vin2 = vld1q_f32(ADDRESS_OF(aInput, i+8)); - vin3 = vld1q_f32(ADDRESS_OF(aInput, i+12)); - - vout0 = vld1q_f32(ADDRESS_OF(aOutput, i)); - vout1 = vld1q_f32(ADDRESS_OF(aOutput, i+4)); - vout2 = vld1q_f32(ADDRESS_OF(aOutput, i+8)); - vout3 = vld1q_f32(ADDRESS_OF(aOutput, i+12)); - - vout0 = vmlaq_f32(vout0, vin0, vscale); - vout1 = vmlaq_f32(vout1, vin1, vscale); - vout2 = vmlaq_f32(vout2, vin2, vscale); - vout3 = vmlaq_f32(vout3, vin3, vscale); - - vst1q_f32(ADDRESS_OF(aOutput, i), vout0); - vst1q_f32(ADDRESS_OF(aOutput, i+4), vout1); - vst1q_f32(ADDRESS_OF(aOutput, i+8), vout2); - vst1q_f32(ADDRESS_OF(aOutput, i+12), vout3); - } - - for (unsigned j = 0; j < dif; ++i, ++j) { - aOutput[i] += aInput[i]*aScale; - } -} -void -AudioBlockCopyChannelWithScale_NEON(const float* aInput, - float aScale, - float* aOutput) -{ - ASSERT_ALIGNED(aInput); - ASSERT_ALIGNED(aOutput); - - float32x4_t vin0, vin1, vin2, vin3; - float32x4_t vout0, vout1, vout2, vout3; - float32x4_t vscale = vmovq_n_f32(aScale); - - for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { - vin0 = vld1q_f32(ADDRESS_OF(aInput, i)); - vin1 = vld1q_f32(ADDRESS_OF(aInput, i+4)); - vin2 = vld1q_f32(ADDRESS_OF(aInput, i+8)); - vin3 = vld1q_f32(ADDRESS_OF(aInput, i+12)); - - vout0 = vmulq_f32(vin0, vscale); - vout1 = vmulq_f32(vin1, vscale); - vout2 = vmulq_f32(vin2, vscale); - vout3 = vmulq_f32(vin3, vscale); - - vst1q_f32(ADDRESS_OF(aOutput, i), vout0); - vst1q_f32(ADDRESS_OF(aOutput, i+4), vout1); - vst1q_f32(ADDRESS_OF(aOutput, i+8), vout2); - vst1q_f32(ADDRESS_OF(aOutput, i+12), vout3); - } -} - -void -AudioBlockCopyChannelWithScale_NEON(const float aInput[WEBAUDIO_BLOCK_SIZE], - const float aScale[WEBAUDIO_BLOCK_SIZE], - float aOutput[WEBAUDIO_BLOCK_SIZE]) -{ - ASSERT_ALIGNED(aInput); - ASSERT_ALIGNED(aScale); - ASSERT_ALIGNED(aOutput); - - float32x4_t vin0, vin1, vin2, vin3; - float32x4_t vout0, vout1, vout2, vout3; - float32x4_t vscale0, vscale1, vscale2, vscale3; - - for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { - vin0 = vld1q_f32(ADDRESS_OF(aInput, i)); - vin1 = vld1q_f32(ADDRESS_OF(aInput, i+4)); - vin2 = vld1q_f32(ADDRESS_OF(aInput, i+8)); - vin3 = vld1q_f32(ADDRESS_OF(aInput, i+12)); - - vscale0 = vld1q_f32(ADDRESS_OF(aScale, i)); - vscale1 = vld1q_f32(ADDRESS_OF(aScale, i+4)); - vscale2 = vld1q_f32(ADDRESS_OF(aScale, i+8)); - vscale3 = vld1q_f32(ADDRESS_OF(aScale, i+12)); - - vout0 = vmulq_f32(vin0, vscale0); - vout1 = vmulq_f32(vin1, vscale1); - vout2 = vmulq_f32(vin2, vscale2); - vout3 = vmulq_f32(vin3, vscale3); - - vst1q_f32(ADDRESS_OF(aOutput, i), vout0); - vst1q_f32(ADDRESS_OF(aOutput, i+4), vout1); - vst1q_f32(ADDRESS_OF(aOutput, i+8), vout2); - vst1q_f32(ADDRESS_OF(aOutput, i+12), vout3); - } -} - -void -AudioBufferInPlaceScale_NEON(float* aBlock, - uint32_t aChannelCount, - float aScale, - uint32_t aSize) -{ - ASSERT_ALIGNED(aBlock); - - float32x4_t vin0, vin1, vin2, vin3; - float32x4_t vout0, vout1, vout2, vout3; - float32x4_t vscale = vmovq_n_f32(aScale); - - uint32_t totalSize = aSize * aChannelCount; - uint32_t dif = totalSize % 16; - totalSize -= dif; - uint32_t i = 0; - for (; i < totalSize; i+=16) { - vin0 = vld1q_f32(ADDRESS_OF(aBlock, i)); - vin1 = vld1q_f32(ADDRESS_OF(aBlock, i+4)); - vin2 = vld1q_f32(ADDRESS_OF(aBlock, i+8)); - vin3 = vld1q_f32(ADDRESS_OF(aBlock, i+12)); - - vout0 = vmulq_f32(vin0, vscale); - vout1 = vmulq_f32(vin1, vscale); - vout2 = vmulq_f32(vin2, vscale); - vout3 = vmulq_f32(vin3, vscale); - - vst1q_f32(ADDRESS_OF(aBlock, i), vout0); - vst1q_f32(ADDRESS_OF(aBlock, i+4), vout1); - vst1q_f32(ADDRESS_OF(aBlock, i+8), vout2); - vst1q_f32(ADDRESS_OF(aBlock, i+12), vout3); - } - - for (unsigned j = 0; j < dif; ++i, ++j) { - aBlock[i] *= aScale; - } -} - -void -AudioBlockPanStereoToStereo_NEON(const float aInputL[WEBAUDIO_BLOCK_SIZE], - const float aInputR[WEBAUDIO_BLOCK_SIZE], - float aGainL, float aGainR, bool aIsOnTheLeft, - float aOutputL[WEBAUDIO_BLOCK_SIZE], - float aOutputR[WEBAUDIO_BLOCK_SIZE]) -{ - ASSERT_ALIGNED(aInputL); - ASSERT_ALIGNED(aInputR); - ASSERT_ALIGNED(aOutputL); - ASSERT_ALIGNED(aOutputR); - - float32x4_t vinL0, vinL1, vinL2, vinL3; - float32x4_t vinR0, vinR1, vinR2, vinR3; - float32x4_t voutL0, voutL1, voutL2, voutL3; - float32x4_t voutR0, voutR1, voutR2, voutR3; - float32x4_t vscaleL = vmovq_n_f32(aGainL); - float32x4_t vscaleR = vmovq_n_f32(aGainR); - - if (aIsOnTheLeft) { - for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { - vinL0 = vld1q_f32(ADDRESS_OF(aInputL, i)); - vinL1 = vld1q_f32(ADDRESS_OF(aInputL, i+4)); - vinL2 = vld1q_f32(ADDRESS_OF(aInputL, i+8)); - vinL3 = vld1q_f32(ADDRESS_OF(aInputL, i+12)); - - vinR0 = vld1q_f32(ADDRESS_OF(aInputR, i)); - vinR1 = vld1q_f32(ADDRESS_OF(aInputR, i+4)); - vinR2 = vld1q_f32(ADDRESS_OF(aInputR, i+8)); - vinR3 = vld1q_f32(ADDRESS_OF(aInputR, i+12)); - - voutL0 = vmlaq_f32(vinL0, vinR0, vscaleL); - voutL1 = vmlaq_f32(vinL1, vinR1, vscaleL); - voutL2 = vmlaq_f32(vinL2, vinR2, vscaleL); - voutL3 = vmlaq_f32(vinL3, vinR3, vscaleL); - - vst1q_f32(ADDRESS_OF(aOutputL, i), voutL0); - vst1q_f32(ADDRESS_OF(aOutputL, i+4), voutL1); - vst1q_f32(ADDRESS_OF(aOutputL, i+8), voutL2); - vst1q_f32(ADDRESS_OF(aOutputL, i+12), voutL3); - - voutR0 = vmulq_f32(vinR0, vscaleR); - voutR1 = vmulq_f32(vinR1, vscaleR); - voutR2 = vmulq_f32(vinR2, vscaleR); - voutR3 = vmulq_f32(vinR3, vscaleR); - - vst1q_f32(ADDRESS_OF(aOutputR, i), voutR0); - vst1q_f32(ADDRESS_OF(aOutputR, i+4), voutR1); - vst1q_f32(ADDRESS_OF(aOutputR, i+8), voutR2); - vst1q_f32(ADDRESS_OF(aOutputR, i+12), voutR3); - } - } else { - for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE; i+=16) { - vinL0 = vld1q_f32(ADDRESS_OF(aInputL, i)); - vinL1 = vld1q_f32(ADDRESS_OF(aInputL, i+4)); - vinL2 = vld1q_f32(ADDRESS_OF(aInputL, i+8)); - vinL3 = vld1q_f32(ADDRESS_OF(aInputL, i+12)); - - vinR0 = vld1q_f32(ADDRESS_OF(aInputR, i)); - vinR1 = vld1q_f32(ADDRESS_OF(aInputR, i+4)); - vinR2 = vld1q_f32(ADDRESS_OF(aInputR, i+8)); - vinR3 = vld1q_f32(ADDRESS_OF(aInputR, i+12)); - - voutL0 = vmulq_f32(vinL0, vscaleL); - voutL1 = vmulq_f32(vinL1, vscaleL); - voutL2 = vmulq_f32(vinL2, vscaleL); - voutL3 = vmulq_f32(vinL3, vscaleL); - - vst1q_f32(ADDRESS_OF(aOutputL, i), voutL0); - vst1q_f32(ADDRESS_OF(aOutputL, i+4), voutL1); - vst1q_f32(ADDRESS_OF(aOutputL, i+8), voutL2); - vst1q_f32(ADDRESS_OF(aOutputL, i+12), voutL3); - - voutR0 = vmlaq_f32(vinR0, vinL0, vscaleR); - voutR1 = vmlaq_f32(vinR1, vinL1, vscaleR); - voutR2 = vmlaq_f32(vinR2, vinL2, vscaleR); - voutR3 = vmlaq_f32(vinR3, vinL3, vscaleR); - - vst1q_f32(ADDRESS_OF(aOutputR, i), voutR0); - vst1q_f32(ADDRESS_OF(aOutputR, i+4), voutR1); - vst1q_f32(ADDRESS_OF(aOutputR, i+8), voutR2); - vst1q_f32(ADDRESS_OF(aOutputR, i+12), voutR3); - } - } -} -} \ No newline at end of file diff --git a/content/media/AudioNodeEngineNEON.h b/content/media/AudioNodeEngineNEON.h deleted file mode 100644 index 8034482314e..00000000000 --- a/content/media/AudioNodeEngineNEON.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* this source code form is subject to the terms of the mozilla public - * license, v. 2.0. if a copy of the mpl was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_AUDIONODEENGINENEON_H_ -#define MOZILLA_AUDIONODEENGINENEON_H_ - -#include "AudioNodeEngine.h" - -namespace mozilla { -void AudioBufferAddWithScale_NEON(const float* aInput, - float aScale, - float* aOutput, - uint32_t aSize); - -void -AudioBlockCopyChannelWithScale_NEON(const float* aInput, - float aScale, - float* aOutput); - -void -AudioBlockCopyChannelWithScale_NEON(const float aInput[WEBAUDIO_BLOCK_SIZE], - const float aScale[WEBAUDIO_BLOCK_SIZE], - float aOutput[WEBAUDIO_BLOCK_SIZE]); - -void -AudioBufferInPlaceScale_NEON(float* aBlock, - uint32_t aChannelCount, - float aScale, - uint32_t aSize); - -void -AudioBlockPanStereoToStereo_NEON(const float aInputL[WEBAUDIO_BLOCK_SIZE], - const float aInputR[WEBAUDIO_BLOCK_SIZE], - float aGainL, float aGainR, bool aIsOnTheLeft, - float aOutputL[WEBAUDIO_BLOCK_SIZE], - float aOutputR[WEBAUDIO_BLOCK_SIZE]); -} - -#endif /* MOZILLA_AUDIONODEENGINENEON_H_ */ \ No newline at end of file diff --git a/content/media/Makefile.in b/content/media/Makefile.in index 7ae92785c27..2d291ece50e 100644 --- a/content/media/Makefile.in +++ b/content/media/Makefile.in @@ -27,5 +27,3 @@ INCLUDES += \ DEFINES += -D_IMPL_NS_LAYOUT CFLAGS += $(GSTREAMER_CFLAGS) CXXFLAGS += $(GSTREAMER_CFLAGS) - -AudioNodeEngineNEON.$(OBJ_SUFFIX): CXXFLAGS += -mfpu=neon \ No newline at end of file diff --git a/content/media/moz.build b/content/media/moz.build index b70eac62f3c..9e329899945 100644 --- a/content/media/moz.build +++ b/content/media/moz.build @@ -127,8 +127,3 @@ CPP_SOURCES += [ 'VideoUtils.cpp', 'WebVTTLoadListener.cpp', ] - -if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']: - CPP_SOURCES += [ - 'AudioNodeEngineNEON.cpp', - ] From 7af9d5e82554bf2081253ab3c43a08ab65e3dd98 Mon Sep 17 00:00:00 2001 From: Justin Lebar Date: Thu, 8 Aug 2013 11:36:56 -0700 Subject: [PATCH 54/82] Bug 902714 - Add {add,remove}WeakMessageListener to nsIMessageManager. r=smaug --HG-- extra : rebase_source : 3fa06e18fce1c1338924ec940a6833f87c450106 --- content/base/public/nsIMessageManager.idl | 25 +++++- content/base/src/nsFrameMessageManager.cpp | 94 ++++++++++++++++++++-- content/base/src/nsFrameMessageManager.h | 5 +- 3 files changed, 112 insertions(+), 12 deletions(-) diff --git a/content/base/public/nsIMessageManager.idl b/content/base/public/nsIMessageManager.idl index 2b8f731f4bc..99ca4e23d98 100644 --- a/content/base/public/nsIMessageManager.idl +++ b/content/base/public/nsIMessageManager.idl @@ -179,7 +179,7 @@ interface nsIMessageListener : nsISupports void receiveMessage(); }; -[scriptable, builtinclass, uuid(9c37a142-3de3-4902-a1a4-133f37d5980a)] +[scriptable, builtinclass, uuid(aae827bd-acf1-45fe-a556-ea545d4c0804)] interface nsIMessageListenerManager : nsISupports { /** @@ -196,12 +196,31 @@ interface nsIMessageListenerManager : nsISupports in nsIMessageListener listener); /** - * No longer invoke |listener| when |messageName| is received, after - * the first time removeMessageListener() is called. + * Undo an |addMessageListener| call -- that is, calling this causes us to no + * longer invoke |listener| when |messageName| is received. + * + * removeMessageListener does not remove a message listener added via + * addWeakMessageListener; use removeWeakMessageListener for that. */ void removeMessageListener(in AString messageName, in nsIMessageListener listener); + /** + * This is just like addMessageListener, except the message manager holds a + * weak ref to |listener|. + * + * If you have two weak message listeners for the same message, they may be + * called in any order. + */ + void addWeakMessageListener(in AString messageName, + in nsIMessageListener listener); + + /** + * This undoes an |addWeakMessageListener| call. + */ + void removeWeakMessageListener(in AString messageName, + in nsIMessageListener listener); + [notxpcom] boolean markForCC(); }; diff --git a/content/base/src/nsFrameMessageManager.cpp b/content/base/src/nsFrameMessageManager.cpp index 8766e0b0868..988dd9f8e31 100644 --- a/content/base/src/nsFrameMessageManager.cpp +++ b/content/base/src/nsFrameMessageManager.cpp @@ -51,8 +51,8 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsFrameMessageManager) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsFrameMessageManager) uint32_t count = tmp->mListeners.Length(); for (uint32_t i = 0; i < count; i++) { - NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mListeners[i] mListener"); - cb.NoteXPCOMChild(tmp->mListeners[i].mListener.get()); + NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mListeners[i] mStrongListener"); + cb.NoteXPCOMChild(tmp->mListeners[i].mStrongListener.get()); } NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mChildManagers) NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END @@ -246,14 +246,14 @@ nsFrameMessageManager::AddMessageListener(const nsAString& aMessage, uint32_t len = mListeners.Length(); for (uint32_t i = 0; i < len; ++i) { if (mListeners[i].mMessage == message && - mListeners[i].mListener == aListener) { + mListeners[i].mStrongListener == aListener) { return NS_OK; } } nsMessageListenerInfo* entry = mListeners.AppendElement(); NS_ENSURE_TRUE(entry, NS_ERROR_OUT_OF_MEMORY); entry->mMessage = message; - entry->mListener = aListener; + entry->mStrongListener = aListener; return NS_OK; } @@ -265,7 +265,7 @@ nsFrameMessageManager::RemoveMessageListener(const nsAString& aMessage, uint32_t len = mListeners.Length(); for (uint32_t i = 0; i < len; ++i) { if (mListeners[i].mMessage == message && - mListeners[i].mListener == aListener) { + mListeners[i].mStrongListener == aListener) { mListeners.RemoveElementAt(i); return NS_OK; } @@ -273,6 +273,66 @@ nsFrameMessageManager::RemoveMessageListener(const nsAString& aMessage, return NS_OK; } +NS_IMETHODIMP +nsFrameMessageManager::AddWeakMessageListener(const nsAString& aMessage, + nsIMessageListener* aListener) +{ + nsWeakPtr weak = do_GetWeakReference(aListener); + NS_ENSURE_TRUE(weak, NS_ERROR_NO_INTERFACE); + +#ifdef DEBUG + // It's technically possible that one object X could give two different + // nsIWeakReference*'s when you do_GetWeakReference(X). We really don't want + // this to happen; it will break e.g. RemoveWeakMessageListener. So let's + // check that we're not getting ourselves into that situation. + nsCOMPtr canonical = do_QueryInterface(aListener); + for (uint32_t i = 0; i < mListeners.Length(); ++i) { + if (!mListeners[i].mWeakListener) { + continue; + } + + nsCOMPtr otherCanonical = + do_QueryReferent(mListeners[i].mWeakListener); + MOZ_ASSERT((canonical == otherCanonical) == + (weak == mListeners[i].mWeakListener)); + } +#endif + + nsCOMPtr message = do_GetAtom(aMessage); + uint32_t len = mListeners.Length(); + for (uint32_t i = 0; i < len; ++i) { + if (mListeners[i].mMessage == message && + mListeners[i].mWeakListener == weak) { + return NS_OK; + } + } + + nsMessageListenerInfo* entry = mListeners.AppendElement(); + entry->mMessage = message; + entry->mWeakListener = weak; + return NS_OK; +} + +NS_IMETHODIMP +nsFrameMessageManager::RemoveWeakMessageListener(const nsAString& aMessage, + nsIMessageListener* aListener) +{ + nsWeakPtr weak = do_GetWeakReference(aListener); + NS_ENSURE_TRUE(weak, NS_OK); + + nsCOMPtr message = do_GetAtom(aMessage); + uint32_t len = mListeners.Length(); + for (uint32_t i = 0; i < len; ++i) { + if (mListeners[i].mMessage == message && + mListeners[i].mWeakListener == weak) { + mListeners.RemoveElementAt(i); + return NS_OK; + } + } + + return NS_OK; +} + // nsIFrameScriptLoader NS_IMETHODIMP @@ -667,14 +727,30 @@ nsFrameMessageManager::ReceiveMessage(nsISupports* aTarget, InfallibleTArray* aJSONRetVal) { AutoSafeJSContext ctx; + if (mListeners.Length()) { nsCOMPtr name = do_GetAtom(aMessage); MMListenerRemover lr(this); for (uint32_t i = 0; i < mListeners.Length(); ++i) { + // Remove mListeners[i] if it's an expired weak listener. + nsCOMPtr weakListener; + if (mListeners[i].mWeakListener) { + weakListener = do_QueryReferent(mListeners[i].mWeakListener); + if (!weakListener) { + mListeners.RemoveElementAt(i--); + continue; + } + } + if (mListeners[i].mMessage == name) { - nsCOMPtr wrappedJS = - do_QueryInterface(mListeners[i].mListener); + nsCOMPtr wrappedJS; + if (weakListener) { + wrappedJS = do_QueryInterface(weakListener); + } else { + wrappedJS = do_QueryInterface(mListeners[i].mStrongListener); + } + if (!wrappedJS) { continue; } @@ -1405,7 +1481,9 @@ nsFrameMessageManager::MarkForCC() { uint32_t len = mListeners.Length(); for (uint32_t i = 0; i < len; ++i) { - xpc_TryUnmarkWrappedGrayObject(mListeners[i].mListener); + if (mListeners[i].mStrongListener) { + xpc_TryUnmarkWrappedGrayObject(mListeners[i].mStrongListener); + } } if (mRefCnt.IsPurple()) { mRefCnt.RemovePurple(); diff --git a/content/base/src/nsFrameMessageManager.h b/content/base/src/nsFrameMessageManager.h index 4ef10314696..b5b072c4b85 100644 --- a/content/base/src/nsFrameMessageManager.h +++ b/content/base/src/nsFrameMessageManager.h @@ -21,6 +21,7 @@ #include "mozilla/Services.h" #include "nsIObserverService.h" #include "nsThreadUtils.h" +#include "nsWeakPtr.h" #include "mozilla/Attributes.h" namespace mozilla { @@ -111,7 +112,9 @@ class JSObject; struct nsMessageListenerInfo { - nsCOMPtr mListener; + // Exactly one of mStrongListener and mWeakListener must be non-null. + nsCOMPtr mStrongListener; + nsWeakPtr mWeakListener; nsCOMPtr mMessage; }; From 67b4356bb2bae05ed154b44fcf4dbc2d3946dd83 Mon Sep 17 00:00:00 2001 From: Justin Lebar Date: Thu, 8 Aug 2013 11:36:56 -0700 Subject: [PATCH 55/82] Bug 902714 - Test for nsIMessageManager.addWeakMessageListener. r=smaug --HG-- extra : rebase_source : 75a15479fd45f9e6a6092356ff96fb26d5f27338 --- content/base/test/chrome/file_bug549682.xul | 144 +++++++++++++++----- 1 file changed, 112 insertions(+), 32 deletions(-) diff --git a/content/base/test/chrome/file_bug549682.xul b/content/base/test/chrome/file_bug549682.xul index 667d8533604..667e7ca0b69 100644 --- a/content/base/test/chrome/file_bug549682.xul +++ b/content/base/test/chrome/file_bug549682.xul @@ -11,14 +11,30 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=549682