gecko-dev/dom/media/MediaRecorder.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

1734 строки
57 KiB
C++
Исходник Обычный вид История

/* -*- 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 "MediaRecorder.h"
#include "AudioNodeEngine.h"
#include "AudioNodeStream.h"
#include "DOMMediaStream.h"
#include "GeckoProfiler.h"
#include "MediaDecoder.h"
#include "MediaEncoder.h"
#include "MediaStreamGraphImpl.h"
#include "VideoUtils.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "mozilla/dom/AudioStreamTrack.h"
#include "mozilla/dom/BlobEvent.h"
#include "mozilla/dom/File.h"
#include "mozilla/dom/MediaRecorderErrorEvent.h"
#include "mozilla/dom/MutableBlobStorage.h"
#include "mozilla/dom/VideoStreamTrack.h"
#include "mozilla/media/MediaUtils.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/Preferences.h"
#include "mozilla/StaticPtr.h"
#include "mozilla/TaskQueue.h"
#include "nsAutoPtr.h"
#include "nsCharSeparatedTokenizer.h"
#include "nsContentTypeParser.h"
#include "nsContentUtils.h"
#include "nsDocShell.h"
#include "nsError.h"
#include "mozilla/dom/Document.h"
#include "nsIPermissionManager.h"
#include "nsIPrincipal.h"
#include "nsIScriptError.h"
#include "nsMimeTypes.h"
#include "nsProxyRelease.h"
#include "nsTArray.h"
Bug 946065 - Part 10: Move content/media/ to dom/. r=peterv --HG-- rename : content/media/AbstractMediaDecoder.h => dom/media/AbstractMediaDecoder.h rename : content/media/AudioBufferUtils.h => dom/media/AudioBufferUtils.h rename : content/media/AudioChannelFormat.cpp => dom/media/AudioChannelFormat.cpp rename : content/media/AudioChannelFormat.h => dom/media/AudioChannelFormat.h rename : content/media/AudioCompactor.cpp => dom/media/AudioCompactor.cpp rename : content/media/AudioCompactor.h => dom/media/AudioCompactor.h rename : content/media/AudioMixer.h => dom/media/AudioMixer.h rename : content/media/AudioSampleFormat.h => dom/media/AudioSampleFormat.h rename : content/media/AudioSegment.cpp => dom/media/AudioSegment.cpp rename : content/media/AudioSegment.h => dom/media/AudioSegment.h rename : content/media/AudioSink.cpp => dom/media/AudioSink.cpp rename : content/media/AudioSink.h => dom/media/AudioSink.h rename : content/media/AudioStream.cpp => dom/media/AudioStream.cpp rename : content/media/AudioStream.h => dom/media/AudioStream.h rename : content/media/AudioStreamTrack.cpp => dom/media/AudioStreamTrack.cpp rename : content/media/AudioStreamTrack.h => dom/media/AudioStreamTrack.h rename : content/media/AudioTrack.cpp => dom/media/AudioTrack.cpp rename : content/media/AudioTrack.h => dom/media/AudioTrack.h rename : content/media/AudioTrackList.cpp => dom/media/AudioTrackList.cpp rename : content/media/AudioTrackList.h => dom/media/AudioTrackList.h rename : content/media/BufferMediaResource.h => dom/media/BufferMediaResource.h rename : content/media/CubebUtils.cpp => dom/media/CubebUtils.cpp rename : content/media/CubebUtils.h => dom/media/CubebUtils.h rename : content/media/DOMMediaStream.cpp => dom/media/DOMMediaStream.cpp rename : content/media/DOMMediaStream.h => dom/media/DOMMediaStream.h rename : content/media/DecoderTraits.cpp => dom/media/DecoderTraits.cpp rename : content/media/DecoderTraits.h => dom/media/DecoderTraits.h rename : content/media/EncodedBufferCache.cpp => dom/media/EncodedBufferCache.cpp rename : content/media/EncodedBufferCache.h => dom/media/EncodedBufferCache.h rename : content/media/FileBlockCache.cpp => dom/media/FileBlockCache.cpp rename : content/media/FileBlockCache.h => dom/media/FileBlockCache.h rename : content/media/GraphDriver.cpp => dom/media/GraphDriver.cpp rename : content/media/GraphDriver.h => dom/media/GraphDriver.h rename : content/media/Latency.cpp => dom/media/Latency.cpp rename : content/media/Latency.h => dom/media/Latency.h rename : content/media/MP3FrameParser.cpp => dom/media/MP3FrameParser.cpp rename : content/media/MP3FrameParser.h => dom/media/MP3FrameParser.h rename : content/media/MediaCache.cpp => dom/media/MediaCache.cpp rename : content/media/MediaCache.h => dom/media/MediaCache.h rename : content/media/MediaData.cpp => dom/media/MediaData.cpp rename : content/media/MediaData.h => dom/media/MediaData.h rename : content/media/MediaDataDecodedListener.h => dom/media/MediaDataDecodedListener.h rename : content/media/MediaDecoder.cpp => dom/media/MediaDecoder.cpp rename : content/media/MediaDecoder.h => dom/media/MediaDecoder.h rename : content/media/MediaDecoderOwner.h => dom/media/MediaDecoderOwner.h rename : content/media/MediaDecoderReader.cpp => dom/media/MediaDecoderReader.cpp rename : content/media/MediaDecoderReader.h => dom/media/MediaDecoderReader.h rename : content/media/MediaDecoderStateMachine.cpp => dom/media/MediaDecoderStateMachine.cpp rename : content/media/MediaDecoderStateMachine.h => dom/media/MediaDecoderStateMachine.h rename : content/media/MediaDecoderStateMachineScheduler.cpp => dom/media/MediaDecoderStateMachineScheduler.cpp rename : content/media/MediaDecoderStateMachineScheduler.h => dom/media/MediaDecoderStateMachineScheduler.h rename : content/media/MediaInfo.h => dom/media/MediaInfo.h rename : content/media/MediaMetadataManager.h => dom/media/MediaMetadataManager.h rename : content/media/MediaQueue.h => dom/media/MediaQueue.h rename : content/media/MediaRecorder.cpp => dom/media/MediaRecorder.cpp rename : content/media/MediaRecorder.h => dom/media/MediaRecorder.h rename : content/media/MediaResource.cpp => dom/media/MediaResource.cpp rename : content/media/MediaResource.h => dom/media/MediaResource.h rename : content/media/MediaSegment.h => dom/media/MediaSegment.h rename : content/media/MediaShutdownManager.cpp => dom/media/MediaShutdownManager.cpp rename : content/media/MediaShutdownManager.h => dom/media/MediaShutdownManager.h rename : content/media/MediaStreamGraph.cpp => dom/media/MediaStreamGraph.cpp rename : content/media/MediaStreamGraph.h => dom/media/MediaStreamGraph.h rename : content/media/MediaStreamGraphImpl.h => dom/media/MediaStreamGraphImpl.h rename : content/media/MediaStreamTrack.cpp => dom/media/MediaStreamTrack.cpp rename : content/media/MediaStreamTrack.h => dom/media/MediaStreamTrack.h rename : content/media/MediaTaskQueue.cpp => dom/media/MediaTaskQueue.cpp rename : content/media/MediaTaskQueue.h => dom/media/MediaTaskQueue.h rename : content/media/MediaTrack.cpp => dom/media/MediaTrack.cpp rename : content/media/MediaTrack.h => dom/media/MediaTrack.h rename : content/media/MediaTrackList.cpp => dom/media/MediaTrackList.cpp rename : content/media/MediaTrackList.h => dom/media/MediaTrackList.h rename : content/media/RtspMediaResource.cpp => dom/media/RtspMediaResource.cpp rename : content/media/RtspMediaResource.h => dom/media/RtspMediaResource.h rename : content/media/SharedBuffer.h => dom/media/SharedBuffer.h rename : content/media/SharedThreadPool.cpp => dom/media/SharedThreadPool.cpp rename : content/media/SharedThreadPool.h => dom/media/SharedThreadPool.h rename : content/media/StreamBuffer.cpp => dom/media/StreamBuffer.cpp rename : content/media/StreamBuffer.h => dom/media/StreamBuffer.h rename : content/media/TextTrack.cpp => dom/media/TextTrack.cpp rename : content/media/TextTrack.h => dom/media/TextTrack.h rename : content/media/TextTrackCue.cpp => dom/media/TextTrackCue.cpp rename : content/media/TextTrackCue.h => dom/media/TextTrackCue.h rename : content/media/TextTrackCueList.cpp => dom/media/TextTrackCueList.cpp rename : content/media/TextTrackCueList.h => dom/media/TextTrackCueList.h rename : content/media/TextTrackList.cpp => dom/media/TextTrackList.cpp rename : content/media/TextTrackList.h => dom/media/TextTrackList.h rename : content/media/TextTrackRegion.cpp => dom/media/TextTrackRegion.cpp rename : content/media/TextTrackRegion.h => dom/media/TextTrackRegion.h rename : content/media/ThreadPoolCOMListener.cpp => dom/media/ThreadPoolCOMListener.cpp rename : content/media/ThreadPoolCOMListener.h => dom/media/ThreadPoolCOMListener.h rename : content/media/TimeVarying.h => dom/media/TimeVarying.h rename : content/media/TrackUnionStream.cpp => dom/media/TrackUnionStream.cpp rename : content/media/TrackUnionStream.h => dom/media/TrackUnionStream.h rename : content/media/VideoFrameContainer.cpp => dom/media/VideoFrameContainer.cpp rename : content/media/VideoFrameContainer.h => dom/media/VideoFrameContainer.h rename : content/media/VideoPlaybackQuality.cpp => dom/media/VideoPlaybackQuality.cpp rename : content/media/VideoPlaybackQuality.h => dom/media/VideoPlaybackQuality.h rename : content/media/VideoSegment.cpp => dom/media/VideoSegment.cpp rename : content/media/VideoSegment.h => dom/media/VideoSegment.h rename : content/media/VideoStreamTrack.cpp => dom/media/VideoStreamTrack.cpp rename : content/media/VideoStreamTrack.h => dom/media/VideoStreamTrack.h rename : content/media/VideoTrack.cpp => dom/media/VideoTrack.cpp rename : content/media/VideoTrack.h => dom/media/VideoTrack.h rename : content/media/VideoTrackList.cpp => dom/media/VideoTrackList.cpp rename : content/media/VideoTrackList.h => dom/media/VideoTrackList.h rename : content/media/VideoUtils.cpp => dom/media/VideoUtils.cpp rename : content/media/VideoUtils.h => dom/media/VideoUtils.h rename : content/media/VorbisUtils.h => dom/media/VorbisUtils.h rename : content/media/WebVTTListener.cpp => dom/media/WebVTTListener.cpp rename : content/media/WebVTTListener.h => dom/media/WebVTTListener.h rename : content/media/android/AndroidMediaDecoder.cpp => dom/media/android/AndroidMediaDecoder.cpp rename : content/media/android/AndroidMediaDecoder.h => dom/media/android/AndroidMediaDecoder.h rename : content/media/android/AndroidMediaPluginHost.cpp => dom/media/android/AndroidMediaPluginHost.cpp rename : content/media/android/AndroidMediaPluginHost.h => dom/media/android/AndroidMediaPluginHost.h rename : content/media/android/AndroidMediaReader.cpp => dom/media/android/AndroidMediaReader.cpp rename : content/media/android/AndroidMediaReader.h => dom/media/android/AndroidMediaReader.h rename : content/media/android/AndroidMediaResourceServer.cpp => dom/media/android/AndroidMediaResourceServer.cpp rename : content/media/android/AndroidMediaResourceServer.h => dom/media/android/AndroidMediaResourceServer.h rename : content/media/android/MPAPI.h => dom/media/android/MPAPI.h rename : content/media/android/moz.build => dom/media/android/moz.build rename : content/media/apple/AppleDecoder.cpp => dom/media/apple/AppleDecoder.cpp rename : content/media/apple/AppleDecoder.h => dom/media/apple/AppleDecoder.h rename : content/media/apple/AppleMP3Reader.cpp => dom/media/apple/AppleMP3Reader.cpp rename : content/media/apple/AppleMP3Reader.h => dom/media/apple/AppleMP3Reader.h rename : content/media/apple/moz.build => dom/media/apple/moz.build rename : content/media/compiledtest/TestAudioBuffers.cpp => dom/media/compiledtest/TestAudioBuffers.cpp rename : content/media/compiledtest/TestAudioMixer.cpp => dom/media/compiledtest/TestAudioMixer.cpp rename : content/media/compiledtest/moz.build => dom/media/compiledtest/moz.build rename : content/media/directshow/AudioSinkFilter.cpp => dom/media/directshow/AudioSinkFilter.cpp rename : content/media/directshow/AudioSinkFilter.h => dom/media/directshow/AudioSinkFilter.h rename : content/media/directshow/AudioSinkInputPin.cpp => dom/media/directshow/AudioSinkInputPin.cpp rename : content/media/directshow/AudioSinkInputPin.h => dom/media/directshow/AudioSinkInputPin.h rename : content/media/directshow/DirectShowDecoder.cpp => dom/media/directshow/DirectShowDecoder.cpp rename : content/media/directshow/DirectShowDecoder.h => dom/media/directshow/DirectShowDecoder.h rename : content/media/directshow/DirectShowReader.cpp => dom/media/directshow/DirectShowReader.cpp rename : content/media/directshow/DirectShowReader.h => dom/media/directshow/DirectShowReader.h rename : content/media/directshow/DirectShowUtils.cpp => dom/media/directshow/DirectShowUtils.cpp rename : content/media/directshow/DirectShowUtils.h => dom/media/directshow/DirectShowUtils.h rename : content/media/directshow/SampleSink.cpp => dom/media/directshow/SampleSink.cpp rename : content/media/directshow/SampleSink.h => dom/media/directshow/SampleSink.h rename : content/media/directshow/SourceFilter.cpp => dom/media/directshow/SourceFilter.cpp rename : content/media/directshow/SourceFilter.h => dom/media/directshow/SourceFilter.h rename : content/media/directshow/moz.build => dom/media/directshow/moz.build rename : content/media/eme/CDMCallbackProxy.cpp => dom/media/eme/CDMCallbackProxy.cpp rename : content/media/eme/CDMCallbackProxy.h => dom/media/eme/CDMCallbackProxy.h rename : content/media/eme/CDMCaps.cpp => dom/media/eme/CDMCaps.cpp rename : content/media/eme/CDMCaps.h => dom/media/eme/CDMCaps.h rename : content/media/eme/CDMProxy.cpp => dom/media/eme/CDMProxy.cpp rename : content/media/eme/CDMProxy.h => dom/media/eme/CDMProxy.h rename : content/media/eme/EMELog.cpp => dom/media/eme/EMELog.cpp rename : content/media/eme/EMELog.h => dom/media/eme/EMELog.h rename : content/media/eme/MediaEncryptedEvent.cpp => dom/media/eme/MediaEncryptedEvent.cpp rename : content/media/eme/MediaEncryptedEvent.h => dom/media/eme/MediaEncryptedEvent.h rename : content/media/eme/MediaKeyError.cpp => dom/media/eme/MediaKeyError.cpp rename : content/media/eme/MediaKeyError.h => dom/media/eme/MediaKeyError.h rename : content/media/eme/MediaKeyMessageEvent.cpp => dom/media/eme/MediaKeyMessageEvent.cpp rename : content/media/eme/MediaKeyMessageEvent.h => dom/media/eme/MediaKeyMessageEvent.h rename : content/media/eme/MediaKeySession.cpp => dom/media/eme/MediaKeySession.cpp rename : content/media/eme/MediaKeySession.h => dom/media/eme/MediaKeySession.h rename : content/media/eme/MediaKeys.cpp => dom/media/eme/MediaKeys.cpp rename : content/media/eme/MediaKeys.h => dom/media/eme/MediaKeys.h rename : content/media/eme/moz.build => dom/media/eme/moz.build rename : content/media/encoder/ContainerWriter.h => dom/media/encoder/ContainerWriter.h rename : content/media/encoder/EncodedFrameContainer.h => dom/media/encoder/EncodedFrameContainer.h rename : content/media/encoder/MediaEncoder.cpp => dom/media/encoder/MediaEncoder.cpp rename : content/media/encoder/MediaEncoder.h => dom/media/encoder/MediaEncoder.h rename : content/media/encoder/OmxTrackEncoder.cpp => dom/media/encoder/OmxTrackEncoder.cpp rename : content/media/encoder/OmxTrackEncoder.h => dom/media/encoder/OmxTrackEncoder.h rename : content/media/encoder/OpusTrackEncoder.cpp => dom/media/encoder/OpusTrackEncoder.cpp rename : content/media/encoder/OpusTrackEncoder.h => dom/media/encoder/OpusTrackEncoder.h rename : content/media/encoder/TrackEncoder.cpp => dom/media/encoder/TrackEncoder.cpp rename : content/media/encoder/TrackEncoder.h => dom/media/encoder/TrackEncoder.h rename : content/media/encoder/TrackMetadataBase.h => dom/media/encoder/TrackMetadataBase.h rename : content/media/encoder/VP8TrackEncoder.cpp => dom/media/encoder/VP8TrackEncoder.cpp rename : content/media/encoder/VP8TrackEncoder.h => dom/media/encoder/VP8TrackEncoder.h rename : content/media/encoder/VorbisTrackEncoder.cpp => dom/media/encoder/VorbisTrackEncoder.cpp rename : content/media/encoder/VorbisTrackEncoder.h => dom/media/encoder/VorbisTrackEncoder.h rename : content/media/encoder/fmp4_muxer/AMRBox.cpp => dom/media/encoder/fmp4_muxer/AMRBox.cpp rename : content/media/encoder/fmp4_muxer/AMRBox.h => dom/media/encoder/fmp4_muxer/AMRBox.h rename : content/media/encoder/fmp4_muxer/AVCBox.cpp => dom/media/encoder/fmp4_muxer/AVCBox.cpp rename : content/media/encoder/fmp4_muxer/AVCBox.h => dom/media/encoder/fmp4_muxer/AVCBox.h rename : content/media/encoder/fmp4_muxer/ISOControl.cpp => dom/media/encoder/fmp4_muxer/ISOControl.cpp rename : content/media/encoder/fmp4_muxer/ISOControl.h => dom/media/encoder/fmp4_muxer/ISOControl.h rename : content/media/encoder/fmp4_muxer/ISOMediaBoxes.cpp => dom/media/encoder/fmp4_muxer/ISOMediaBoxes.cpp rename : content/media/encoder/fmp4_muxer/ISOMediaBoxes.h => dom/media/encoder/fmp4_muxer/ISOMediaBoxes.h rename : content/media/encoder/fmp4_muxer/ISOMediaWriter.cpp => dom/media/encoder/fmp4_muxer/ISOMediaWriter.cpp rename : content/media/encoder/fmp4_muxer/ISOMediaWriter.h => dom/media/encoder/fmp4_muxer/ISOMediaWriter.h rename : content/media/encoder/fmp4_muxer/ISOTrackMetadata.h => dom/media/encoder/fmp4_muxer/ISOTrackMetadata.h rename : content/media/encoder/fmp4_muxer/MP4ESDS.cpp => dom/media/encoder/fmp4_muxer/MP4ESDS.cpp rename : content/media/encoder/fmp4_muxer/MP4ESDS.h => dom/media/encoder/fmp4_muxer/MP4ESDS.h rename : content/media/encoder/fmp4_muxer/MuxerOperation.h => dom/media/encoder/fmp4_muxer/MuxerOperation.h rename : content/media/encoder/fmp4_muxer/moz.build => dom/media/encoder/fmp4_muxer/moz.build rename : content/media/encoder/moz.build => dom/media/encoder/moz.build rename : content/media/fmp4/BlankDecoderModule.cpp => dom/media/fmp4/BlankDecoderModule.cpp rename : content/media/fmp4/MP4Decoder.cpp => dom/media/fmp4/MP4Decoder.cpp rename : content/media/fmp4/MP4Decoder.h => dom/media/fmp4/MP4Decoder.h rename : content/media/fmp4/MP4Reader.cpp => dom/media/fmp4/MP4Reader.cpp rename : content/media/fmp4/MP4Reader.h => dom/media/fmp4/MP4Reader.h rename : content/media/fmp4/PlatformDecoderModule.cpp => dom/media/fmp4/PlatformDecoderModule.cpp rename : content/media/fmp4/PlatformDecoderModule.h => dom/media/fmp4/PlatformDecoderModule.h rename : content/media/fmp4/android/AndroidDecoderModule.cpp => dom/media/fmp4/android/AndroidDecoderModule.cpp rename : content/media/fmp4/android/AndroidDecoderModule.h => dom/media/fmp4/android/AndroidDecoderModule.h rename : content/media/fmp4/apple/AppleATDecoder.cpp => dom/media/fmp4/apple/AppleATDecoder.cpp rename : content/media/fmp4/apple/AppleATDecoder.h => dom/media/fmp4/apple/AppleATDecoder.h rename : content/media/fmp4/apple/AppleCMFunctions.h => dom/media/fmp4/apple/AppleCMFunctions.h rename : content/media/fmp4/apple/AppleCMLinker.cpp => dom/media/fmp4/apple/AppleCMLinker.cpp rename : content/media/fmp4/apple/AppleCMLinker.h => dom/media/fmp4/apple/AppleCMLinker.h rename : content/media/fmp4/apple/AppleDecoderModule.cpp => dom/media/fmp4/apple/AppleDecoderModule.cpp rename : content/media/fmp4/apple/AppleDecoderModule.h => dom/media/fmp4/apple/AppleDecoderModule.h rename : content/media/fmp4/apple/AppleUtils.cpp => dom/media/fmp4/apple/AppleUtils.cpp rename : content/media/fmp4/apple/AppleUtils.h => dom/media/fmp4/apple/AppleUtils.h rename : content/media/fmp4/apple/AppleVDADecoder.cpp => dom/media/fmp4/apple/AppleVDADecoder.cpp rename : content/media/fmp4/apple/AppleVDADecoder.h => dom/media/fmp4/apple/AppleVDADecoder.h rename : content/media/fmp4/apple/AppleVDAFunctions.h => dom/media/fmp4/apple/AppleVDAFunctions.h rename : content/media/fmp4/apple/AppleVDALinker.cpp => dom/media/fmp4/apple/AppleVDALinker.cpp rename : content/media/fmp4/apple/AppleVDALinker.h => dom/media/fmp4/apple/AppleVDALinker.h rename : content/media/fmp4/apple/AppleVTDecoder.cpp => dom/media/fmp4/apple/AppleVTDecoder.cpp rename : content/media/fmp4/apple/AppleVTDecoder.h => dom/media/fmp4/apple/AppleVTDecoder.h rename : content/media/fmp4/apple/AppleVTFunctions.h => dom/media/fmp4/apple/AppleVTFunctions.h rename : content/media/fmp4/apple/AppleVTLinker.cpp => dom/media/fmp4/apple/AppleVTLinker.cpp rename : content/media/fmp4/apple/AppleVTLinker.h => dom/media/fmp4/apple/AppleVTLinker.h rename : content/media/fmp4/apple/ReorderQueue.h => dom/media/fmp4/apple/ReorderQueue.h rename : content/media/fmp4/apple/VideoDecodeAcceleration/VDADecoder.h => dom/media/fmp4/apple/VideoDecodeAcceleration/VDADecoder.h rename : content/media/fmp4/apple/VideoToolbox/VideoToolbox.h => dom/media/fmp4/apple/VideoToolbox/VideoToolbox.h rename : content/media/fmp4/eme/EMEAudioDecoder.cpp => dom/media/fmp4/eme/EMEAudioDecoder.cpp rename : content/media/fmp4/eme/EMEAudioDecoder.h => dom/media/fmp4/eme/EMEAudioDecoder.h rename : content/media/fmp4/eme/EMEDecoderModule.cpp => dom/media/fmp4/eme/EMEDecoderModule.cpp rename : content/media/fmp4/eme/EMEDecoderModule.h => dom/media/fmp4/eme/EMEDecoderModule.h rename : content/media/fmp4/eme/EMEH264Decoder.cpp => dom/media/fmp4/eme/EMEH264Decoder.cpp rename : content/media/fmp4/eme/EMEH264Decoder.h => dom/media/fmp4/eme/EMEH264Decoder.h rename : content/media/fmp4/eme/moz.build => dom/media/fmp4/eme/moz.build rename : content/media/fmp4/ffmpeg/FFmpegAudioDecoder.cpp => dom/media/fmp4/ffmpeg/FFmpegAudioDecoder.cpp rename : content/media/fmp4/ffmpeg/FFmpegAudioDecoder.h => dom/media/fmp4/ffmpeg/FFmpegAudioDecoder.h rename : content/media/fmp4/ffmpeg/FFmpegDataDecoder.cpp => dom/media/fmp4/ffmpeg/FFmpegDataDecoder.cpp rename : content/media/fmp4/ffmpeg/FFmpegDataDecoder.h => dom/media/fmp4/ffmpeg/FFmpegDataDecoder.h rename : content/media/fmp4/ffmpeg/FFmpegDecoderModule.cpp => dom/media/fmp4/ffmpeg/FFmpegDecoderModule.cpp rename : content/media/fmp4/ffmpeg/FFmpegDecoderModule.h => dom/media/fmp4/ffmpeg/FFmpegDecoderModule.h rename : content/media/fmp4/ffmpeg/FFmpegFunctionList.h => dom/media/fmp4/ffmpeg/FFmpegFunctionList.h rename : content/media/fmp4/ffmpeg/FFmpegH264Decoder.cpp => dom/media/fmp4/ffmpeg/FFmpegH264Decoder.cpp rename : content/media/fmp4/ffmpeg/FFmpegH264Decoder.h => dom/media/fmp4/ffmpeg/FFmpegH264Decoder.h rename : content/media/fmp4/ffmpeg/FFmpegLibs.h => dom/media/fmp4/ffmpeg/FFmpegLibs.h rename : content/media/fmp4/ffmpeg/FFmpegLog.cpp => dom/media/fmp4/ffmpeg/FFmpegLog.cpp rename : content/media/fmp4/ffmpeg/FFmpegLog.h => dom/media/fmp4/ffmpeg/FFmpegLog.h rename : content/media/fmp4/ffmpeg/FFmpegRuntimeLinker.cpp => dom/media/fmp4/ffmpeg/FFmpegRuntimeLinker.cpp rename : content/media/fmp4/ffmpeg/FFmpegRuntimeLinker.h => dom/media/fmp4/ffmpeg/FFmpegRuntimeLinker.h rename : content/media/fmp4/ffmpeg/README_mozilla => dom/media/fmp4/ffmpeg/README_mozilla rename : content/media/fmp4/ffmpeg/libav53/include/COPYING.LGPLv2.1 => dom/media/fmp4/ffmpeg/libav53/include/COPYING.LGPLv2.1 rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/avcodec.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/avcodec.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/avfft.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/avfft.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/dxva2.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/dxva2.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/old_codec_ids.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/old_codec_ids.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/opt.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/opt.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/vaapi.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/vaapi.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/vda.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/vda.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/vdpau.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/vdpau.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/version.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/version.h rename : content/media/fmp4/ffmpeg/libav53/include/libavcodec/xvmc.h => dom/media/fmp4/ffmpeg/libav53/include/libavcodec/xvmc.h rename : content/media/fmp4/ffmpeg/libav53/include/libavformat/avformat.h => dom/media/fmp4/ffmpeg/libav53/include/libavformat/avformat.h rename : content/media/fmp4/ffmpeg/libav53/include/libavformat/avio.h => dom/media/fmp4/ffmpeg/libav53/include/libavformat/avio.h rename : content/media/fmp4/ffmpeg/libav53/include/libavformat/version.h => dom/media/fmp4/ffmpeg/libav53/include/libavformat/version.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/adler32.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/adler32.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/aes.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/aes.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/attributes.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/attributes.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/audio_fifo.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/audio_fifo.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/audioconvert.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/audioconvert.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/avassert.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/avassert.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/avconfig.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/avconfig.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/avstring.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/avstring.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/avutil.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/avutil.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/base64.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/base64.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/blowfish.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/blowfish.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/bprint.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/bprint.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/bswap.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/bswap.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/common.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/common.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/cpu.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/cpu.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/crc.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/crc.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/dict.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/dict.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/error.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/error.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/eval.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/eval.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/fifo.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/fifo.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/file.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/file.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/imgutils.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/imgutils.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/intfloat.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/intfloat.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/intfloat_readwrite.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/intfloat_readwrite.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/intreadwrite.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/intreadwrite.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/lfg.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/lfg.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/log.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/log.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/lzo.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/lzo.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/mathematics.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/mathematics.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/md5.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/md5.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/mem.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/mem.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/old_pix_fmts.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/old_pix_fmts.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/opt.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/opt.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/parseutils.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/parseutils.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/pixdesc.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/pixdesc.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/pixfmt.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/pixfmt.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/random_seed.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/random_seed.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/rational.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/rational.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/samplefmt.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/samplefmt.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/sha.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/sha.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/time.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/time.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/timecode.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/timecode.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/timestamp.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/timestamp.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/version.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/version.h rename : content/media/fmp4/ffmpeg/libav53/include/libavutil/xtea.h => dom/media/fmp4/ffmpeg/libav53/include/libavutil/xtea.h rename : content/media/fmp4/ffmpeg/libav53/moz.build => dom/media/fmp4/ffmpeg/libav53/moz.build rename : content/media/fmp4/ffmpeg/libav54/include/COPYING.LGPLv2.1 => dom/media/fmp4/ffmpeg/libav54/include/COPYING.LGPLv2.1 rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/avcodec.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/avcodec.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/avfft.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/avfft.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/dxva2.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/dxva2.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/old_codec_ids.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/old_codec_ids.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/vaapi.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/vaapi.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/vda.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/vda.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/vdpau.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/vdpau.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/version.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/version.h rename : content/media/fmp4/ffmpeg/libav54/include/libavcodec/xvmc.h => dom/media/fmp4/ffmpeg/libav54/include/libavcodec/xvmc.h rename : content/media/fmp4/ffmpeg/libav54/include/libavformat/avformat.h => dom/media/fmp4/ffmpeg/libav54/include/libavformat/avformat.h rename : content/media/fmp4/ffmpeg/libav54/include/libavformat/avio.h => dom/media/fmp4/ffmpeg/libav54/include/libavformat/avio.h rename : content/media/fmp4/ffmpeg/libav54/include/libavformat/version.h => dom/media/fmp4/ffmpeg/libav54/include/libavformat/version.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/adler32.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/adler32.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/aes.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/aes.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/attributes.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/attributes.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/audio_fifo.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/audio_fifo.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/audioconvert.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/audioconvert.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/avassert.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/avassert.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/avconfig.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/avconfig.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/avstring.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/avstring.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/avutil.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/avutil.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/base64.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/base64.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/blowfish.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/blowfish.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/bswap.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/bswap.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/channel_layout.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/channel_layout.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/common.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/common.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/cpu.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/cpu.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/crc.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/crc.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/dict.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/dict.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/error.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/error.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/eval.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/eval.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/fifo.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/fifo.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/file.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/file.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/imgutils.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/imgutils.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/intfloat.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/intfloat.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/intfloat_readwrite.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/intfloat_readwrite.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/intreadwrite.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/intreadwrite.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/lfg.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/lfg.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/log.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/log.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/lzo.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/lzo.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/mathematics.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/mathematics.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/md5.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/md5.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/mem.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/mem.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/old_pix_fmts.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/old_pix_fmts.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/opt.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/opt.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/parseutils.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/parseutils.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/pixdesc.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/pixdesc.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/pixfmt.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/pixfmt.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/random_seed.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/random_seed.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/rational.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/rational.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/samplefmt.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/samplefmt.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/sha.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/sha.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/time.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/time.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/version.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/version.h rename : content/media/fmp4/ffmpeg/libav54/include/libavutil/xtea.h => dom/media/fmp4/ffmpeg/libav54/include/libavutil/xtea.h rename : content/media/fmp4/ffmpeg/libav54/moz.build => dom/media/fmp4/ffmpeg/libav54/moz.build rename : content/media/fmp4/ffmpeg/libav55/include/COPYING.LGPLv2.1 => dom/media/fmp4/ffmpeg/libav55/include/COPYING.LGPLv2.1 rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/avcodec.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/avcodec.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/avfft.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/avfft.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/dxva2.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/dxva2.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/vaapi.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/vaapi.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/vda.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/vda.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/vdpau.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/vdpau.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/version.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/version.h rename : content/media/fmp4/ffmpeg/libav55/include/libavcodec/xvmc.h => dom/media/fmp4/ffmpeg/libav55/include/libavcodec/xvmc.h rename : content/media/fmp4/ffmpeg/libav55/include/libavformat/avformat.h => dom/media/fmp4/ffmpeg/libav55/include/libavformat/avformat.h rename : content/media/fmp4/ffmpeg/libav55/include/libavformat/avio.h => dom/media/fmp4/ffmpeg/libav55/include/libavformat/avio.h rename : content/media/fmp4/ffmpeg/libav55/include/libavformat/version.h => dom/media/fmp4/ffmpeg/libav55/include/libavformat/version.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/adler32.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/adler32.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/aes.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/aes.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/attributes.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/attributes.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/audio_fifo.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/audio_fifo.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/audioconvert.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/audioconvert.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/avassert.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/avassert.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/avconfig.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/avconfig.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/avstring.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/avstring.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/avutil.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/avutil.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/base64.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/base64.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/blowfish.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/blowfish.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/bswap.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/bswap.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/buffer.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/buffer.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/channel_layout.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/channel_layout.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/common.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/common.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/cpu.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/cpu.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/crc.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/crc.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/dict.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/dict.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/downmix_info.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/downmix_info.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/error.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/error.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/eval.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/eval.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/fifo.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/fifo.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/file.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/file.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/frame.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/frame.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/hmac.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/hmac.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/imgutils.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/imgutils.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/intfloat.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/intfloat.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/intreadwrite.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/intreadwrite.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/lfg.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/lfg.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/log.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/log.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/lzo.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/lzo.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/macros.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/macros.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/mathematics.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/mathematics.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/md5.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/md5.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/mem.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/mem.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/old_pix_fmts.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/old_pix_fmts.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/opt.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/opt.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/parseutils.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/parseutils.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/pixdesc.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/pixdesc.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/pixfmt.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/pixfmt.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/random_seed.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/random_seed.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/rational.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/rational.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/samplefmt.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/samplefmt.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/sha.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/sha.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/stereo3d.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/stereo3d.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/time.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/time.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/version.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/version.h rename : content/media/fmp4/ffmpeg/libav55/include/libavutil/xtea.h => dom/media/fmp4/ffmpeg/libav55/include/libavutil/xtea.h rename : content/media/fmp4/ffmpeg/libav55/moz.build => dom/media/fmp4/ffmpeg/libav55/moz.build rename : content/media/fmp4/gonk/GonkAudioDecoderManager.cpp => dom/media/fmp4/gonk/GonkAudioDecoderManager.cpp rename : content/media/fmp4/gonk/GonkAudioDecoderManager.h => dom/media/fmp4/gonk/GonkAudioDecoderManager.h rename : content/media/fmp4/gonk/GonkDecoderModule.cpp => dom/media/fmp4/gonk/GonkDecoderModule.cpp rename : content/media/fmp4/gonk/GonkDecoderModule.h => dom/media/fmp4/gonk/GonkDecoderModule.h rename : content/media/fmp4/gonk/GonkMediaDataDecoder.cpp => dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp rename : content/media/fmp4/gonk/GonkMediaDataDecoder.h => dom/media/fmp4/gonk/GonkMediaDataDecoder.h rename : content/media/fmp4/gonk/GonkVideoDecoderManager.cpp => dom/media/fmp4/gonk/GonkVideoDecoderManager.cpp rename : content/media/fmp4/gonk/GonkVideoDecoderManager.h => dom/media/fmp4/gonk/GonkVideoDecoderManager.h rename : content/media/fmp4/gonk/moz.build => dom/media/fmp4/gonk/moz.build rename : content/media/fmp4/moz.build => dom/media/fmp4/moz.build rename : content/media/fmp4/wmf/MFTDecoder.cpp => dom/media/fmp4/wmf/MFTDecoder.cpp rename : content/media/fmp4/wmf/MFTDecoder.h => dom/media/fmp4/wmf/MFTDecoder.h rename : content/media/fmp4/wmf/WMFAudioMFTManager.cpp => dom/media/fmp4/wmf/WMFAudioMFTManager.cpp rename : content/media/fmp4/wmf/WMFAudioMFTManager.h => dom/media/fmp4/wmf/WMFAudioMFTManager.h rename : content/media/fmp4/wmf/WMFDecoderModule.cpp => dom/media/fmp4/wmf/WMFDecoderModule.cpp rename : content/media/fmp4/wmf/WMFDecoderModule.h => dom/media/fmp4/wmf/WMFDecoderModule.h rename : content/media/fmp4/wmf/WMFMediaDataDecoder.cpp => dom/media/fmp4/wmf/WMFMediaDataDecoder.cpp rename : content/media/fmp4/wmf/WMFMediaDataDecoder.h => dom/media/fmp4/wmf/WMFMediaDataDecoder.h rename : content/media/fmp4/wmf/WMFVideoMFTManager.cpp => dom/media/fmp4/wmf/WMFVideoMFTManager.cpp rename : content/media/fmp4/wmf/WMFVideoMFTManager.h => dom/media/fmp4/wmf/WMFVideoMFTManager.h rename : content/media/fmp4/wmf/moz.build => dom/media/fmp4/wmf/moz.build rename : content/media/gmp/GMPAudioDecoderChild.cpp => dom/media/gmp/GMPAudioDecoderChild.cpp rename : content/media/gmp/GMPAudioDecoderChild.h => dom/media/gmp/GMPAudioDecoderChild.h rename : content/media/gmp/GMPAudioDecoderParent.cpp => dom/media/gmp/GMPAudioDecoderParent.cpp rename : content/media/gmp/GMPAudioDecoderParent.h => dom/media/gmp/GMPAudioDecoderParent.h rename : content/media/gmp/GMPAudioDecoderProxy.h => dom/media/gmp/GMPAudioDecoderProxy.h rename : content/media/gmp/GMPAudioHost.cpp => dom/media/gmp/GMPAudioHost.cpp rename : content/media/gmp/GMPAudioHost.h => dom/media/gmp/GMPAudioHost.h rename : content/media/gmp/GMPCallbackBase.h => dom/media/gmp/GMPCallbackBase.h rename : content/media/gmp/GMPChild.cpp => dom/media/gmp/GMPChild.cpp rename : content/media/gmp/GMPChild.h => dom/media/gmp/GMPChild.h rename : content/media/gmp/GMPDecryptorChild.cpp => dom/media/gmp/GMPDecryptorChild.cpp rename : content/media/gmp/GMPDecryptorChild.h => dom/media/gmp/GMPDecryptorChild.h rename : content/media/gmp/GMPDecryptorParent.cpp => dom/media/gmp/GMPDecryptorParent.cpp rename : content/media/gmp/GMPDecryptorParent.h => dom/media/gmp/GMPDecryptorParent.h rename : content/media/gmp/GMPDecryptorProxy.h => dom/media/gmp/GMPDecryptorProxy.h rename : content/media/gmp/GMPEncryptedBufferDataImpl.cpp => dom/media/gmp/GMPEncryptedBufferDataImpl.cpp rename : content/media/gmp/GMPEncryptedBufferDataImpl.h => dom/media/gmp/GMPEncryptedBufferDataImpl.h rename : content/media/gmp/GMPMessageUtils.h => dom/media/gmp/GMPMessageUtils.h rename : content/media/gmp/GMPParent.cpp => dom/media/gmp/GMPParent.cpp rename : content/media/gmp/GMPParent.h => dom/media/gmp/GMPParent.h rename : content/media/gmp/GMPPlatform.cpp => dom/media/gmp/GMPPlatform.cpp rename : content/media/gmp/GMPPlatform.h => dom/media/gmp/GMPPlatform.h rename : content/media/gmp/GMPProcessChild.cpp => dom/media/gmp/GMPProcessChild.cpp rename : content/media/gmp/GMPProcessChild.h => dom/media/gmp/GMPProcessChild.h rename : content/media/gmp/GMPProcessParent.cpp => dom/media/gmp/GMPProcessParent.cpp rename : content/media/gmp/GMPProcessParent.h => dom/media/gmp/GMPProcessParent.h rename : content/media/gmp/GMPService.cpp => dom/media/gmp/GMPService.cpp rename : content/media/gmp/GMPService.h => dom/media/gmp/GMPService.h rename : content/media/gmp/GMPSharedMemManager.cpp => dom/media/gmp/GMPSharedMemManager.cpp rename : content/media/gmp/GMPSharedMemManager.h => dom/media/gmp/GMPSharedMemManager.h rename : content/media/gmp/GMPStorageChild.cpp => dom/media/gmp/GMPStorageChild.cpp rename : content/media/gmp/GMPStorageChild.h => dom/media/gmp/GMPStorageChild.h rename : content/media/gmp/GMPStorageParent.cpp => dom/media/gmp/GMPStorageParent.cpp rename : content/media/gmp/GMPStorageParent.h => dom/media/gmp/GMPStorageParent.h rename : content/media/gmp/GMPTimerChild.cpp => dom/media/gmp/GMPTimerChild.cpp rename : content/media/gmp/GMPTimerChild.h => dom/media/gmp/GMPTimerChild.h rename : content/media/gmp/GMPTimerParent.cpp => dom/media/gmp/GMPTimerParent.cpp rename : content/media/gmp/GMPTimerParent.h => dom/media/gmp/GMPTimerParent.h rename : content/media/gmp/GMPTypes.ipdlh => dom/media/gmp/GMPTypes.ipdlh rename : content/media/gmp/GMPVideoDecoderChild.cpp => dom/media/gmp/GMPVideoDecoderChild.cpp rename : content/media/gmp/GMPVideoDecoderChild.h => dom/media/gmp/GMPVideoDecoderChild.h rename : content/media/gmp/GMPVideoDecoderParent.cpp => dom/media/gmp/GMPVideoDecoderParent.cpp rename : content/media/gmp/GMPVideoDecoderParent.h => dom/media/gmp/GMPVideoDecoderParent.h rename : content/media/gmp/GMPVideoDecoderProxy.h => dom/media/gmp/GMPVideoDecoderProxy.h rename : content/media/gmp/GMPVideoEncodedFrameImpl.cpp => dom/media/gmp/GMPVideoEncodedFrameImpl.cpp rename : content/media/gmp/GMPVideoEncodedFrameImpl.h => dom/media/gmp/GMPVideoEncodedFrameImpl.h rename : content/media/gmp/GMPVideoEncoderChild.cpp => dom/media/gmp/GMPVideoEncoderChild.cpp rename : content/media/gmp/GMPVideoEncoderChild.h => dom/media/gmp/GMPVideoEncoderChild.h rename : content/media/gmp/GMPVideoEncoderParent.cpp => dom/media/gmp/GMPVideoEncoderParent.cpp rename : content/media/gmp/GMPVideoEncoderParent.h => dom/media/gmp/GMPVideoEncoderParent.h rename : content/media/gmp/GMPVideoEncoderProxy.h => dom/media/gmp/GMPVideoEncoderProxy.h rename : content/media/gmp/GMPVideoHost.cpp => dom/media/gmp/GMPVideoHost.cpp rename : content/media/gmp/GMPVideoHost.h => dom/media/gmp/GMPVideoHost.h rename : content/media/gmp/GMPVideoPlaneImpl.cpp => dom/media/gmp/GMPVideoPlaneImpl.cpp rename : content/media/gmp/GMPVideoPlaneImpl.h => dom/media/gmp/GMPVideoPlaneImpl.h rename : content/media/gmp/GMPVideoi420FrameImpl.cpp => dom/media/gmp/GMPVideoi420FrameImpl.cpp rename : content/media/gmp/GMPVideoi420FrameImpl.h => dom/media/gmp/GMPVideoi420FrameImpl.h rename : content/media/gmp/PGMP.ipdl => dom/media/gmp/PGMP.ipdl rename : content/media/gmp/PGMPAudioDecoder.ipdl => dom/media/gmp/PGMPAudioDecoder.ipdl rename : content/media/gmp/PGMPDecryptor.ipdl => dom/media/gmp/PGMPDecryptor.ipdl rename : content/media/gmp/PGMPStorage.ipdl => dom/media/gmp/PGMPStorage.ipdl rename : content/media/gmp/PGMPTimer.ipdl => dom/media/gmp/PGMPTimer.ipdl rename : content/media/gmp/PGMPVideoDecoder.ipdl => dom/media/gmp/PGMPVideoDecoder.ipdl rename : content/media/gmp/PGMPVideoEncoder.ipdl => dom/media/gmp/PGMPVideoEncoder.ipdl rename : content/media/gmp/README.txt => dom/media/gmp/README.txt rename : content/media/gmp/gmp-api/gmp-async-shutdown.h => dom/media/gmp/gmp-api/gmp-async-shutdown.h rename : content/media/gmp/gmp-api/gmp-audio-codec.h => dom/media/gmp/gmp-api/gmp-audio-codec.h rename : content/media/gmp/gmp-api/gmp-audio-decode.h => dom/media/gmp/gmp-api/gmp-audio-decode.h rename : content/media/gmp/gmp-api/gmp-audio-host.h => dom/media/gmp/gmp-api/gmp-audio-host.h rename : content/media/gmp/gmp-api/gmp-audio-samples.h => dom/media/gmp/gmp-api/gmp-audio-samples.h rename : content/media/gmp/gmp-api/gmp-decryption.h => dom/media/gmp/gmp-api/gmp-decryption.h rename : content/media/gmp/gmp-api/gmp-entrypoints.h => dom/media/gmp/gmp-api/gmp-entrypoints.h rename : content/media/gmp/gmp-api/gmp-errors.h => dom/media/gmp/gmp-api/gmp-errors.h rename : content/media/gmp/gmp-api/gmp-platform.h => dom/media/gmp/gmp-api/gmp-platform.h rename : content/media/gmp/gmp-api/gmp-storage.h => dom/media/gmp/gmp-api/gmp-storage.h rename : content/media/gmp/gmp-api/gmp-video-codec.h => dom/media/gmp/gmp-api/gmp-video-codec.h rename : content/media/gmp/gmp-api/gmp-video-decode.h => dom/media/gmp/gmp-api/gmp-video-decode.h rename : content/media/gmp/gmp-api/gmp-video-encode.h => dom/media/gmp/gmp-api/gmp-video-encode.h rename : content/media/gmp/gmp-api/gmp-video-frame-encoded.h => dom/media/gmp/gmp-api/gmp-video-frame-encoded.h rename : content/media/gmp/gmp-api/gmp-video-frame-i420.h => dom/media/gmp/gmp-api/gmp-video-frame-i420.h rename : content/media/gmp/gmp-api/gmp-video-frame.h => dom/media/gmp/gmp-api/gmp-video-frame.h rename : content/media/gmp/gmp-api/gmp-video-host.h => dom/media/gmp/gmp-api/gmp-video-host.h rename : content/media/gmp/gmp-api/gmp-video-plane.h => dom/media/gmp/gmp-api/gmp-video-plane.h rename : content/media/gmp/moz.build => dom/media/gmp/moz.build rename : content/media/gmp/mozIGeckoMediaPluginService.idl => dom/media/gmp/mozIGeckoMediaPluginService.idl rename : content/media/gmp/rlz/COPYING => dom/media/gmp/rlz/COPYING rename : content/media/gmp/rlz/README.mozilla => dom/media/gmp/rlz/README.mozilla rename : content/media/gmp/rlz/base/memory/scoped_ptr.h => dom/media/gmp/rlz/base/memory/scoped_ptr.h rename : content/media/gmp/rlz/base/string16.h => dom/media/gmp/rlz/base/string16.h rename : content/media/gmp/rlz/lib/assert.h => dom/media/gmp/rlz/lib/assert.h rename : content/media/gmp/rlz/lib/machine_id.h => dom/media/gmp/rlz/lib/machine_id.h rename : content/media/gmp/rlz/lib/string_utils.cc => dom/media/gmp/rlz/lib/string_utils.cc rename : content/media/gmp/rlz/lib/string_utils.h => dom/media/gmp/rlz/lib/string_utils.h rename : content/media/gmp/rlz/moz.build => dom/media/gmp/rlz/moz.build rename : content/media/gmp/rlz/win/lib/machine_id_win.cc => dom/media/gmp/rlz/win/lib/machine_id_win.cc rename : content/media/gstreamer/GStreamerAllocator.cpp => dom/media/gstreamer/GStreamerAllocator.cpp rename : content/media/gstreamer/GStreamerAllocator.h => dom/media/gstreamer/GStreamerAllocator.h rename : content/media/gstreamer/GStreamerDecoder.cpp => dom/media/gstreamer/GStreamerDecoder.cpp rename : content/media/gstreamer/GStreamerDecoder.h => dom/media/gstreamer/GStreamerDecoder.h rename : content/media/gstreamer/GStreamerFormatHelper.cpp => dom/media/gstreamer/GStreamerFormatHelper.cpp rename : content/media/gstreamer/GStreamerFormatHelper.h => dom/media/gstreamer/GStreamerFormatHelper.h rename : content/media/gstreamer/GStreamerFunctionList.h => dom/media/gstreamer/GStreamerFunctionList.h rename : content/media/gstreamer/GStreamerLoader.cpp => dom/media/gstreamer/GStreamerLoader.cpp rename : content/media/gstreamer/GStreamerLoader.h => dom/media/gstreamer/GStreamerLoader.h rename : content/media/gstreamer/GStreamerMozVideoBuffer.cpp => dom/media/gstreamer/GStreamerMozVideoBuffer.cpp rename : content/media/gstreamer/GStreamerMozVideoBuffer.h => dom/media/gstreamer/GStreamerMozVideoBuffer.h rename : content/media/gstreamer/GStreamerReader-0.10.cpp => dom/media/gstreamer/GStreamerReader-0.10.cpp rename : content/media/gstreamer/GStreamerReader.cpp => dom/media/gstreamer/GStreamerReader.cpp rename : content/media/gstreamer/GStreamerReader.h => dom/media/gstreamer/GStreamerReader.h rename : content/media/gstreamer/moz.build => dom/media/gstreamer/moz.build rename : content/media/gtest/MockMediaDecoderOwner.h => dom/media/gtest/MockMediaDecoderOwner.h rename : content/media/gtest/MockMediaResource.cpp => dom/media/gtest/MockMediaResource.cpp rename : content/media/gtest/MockMediaResource.h => dom/media/gtest/MockMediaResource.h rename : content/media/gtest/TestAudioCompactor.cpp => dom/media/gtest/TestAudioCompactor.cpp rename : content/media/gtest/TestGMPCrossOrigin.cpp => dom/media/gtest/TestGMPCrossOrigin.cpp rename : content/media/gtest/TestMP4Reader.cpp => dom/media/gtest/TestMP4Reader.cpp rename : content/media/gtest/TestTrackEncoder.cpp => dom/media/gtest/TestTrackEncoder.cpp rename : content/media/gtest/TestVideoSegment.cpp => dom/media/gtest/TestVideoSegment.cpp rename : content/media/gtest/TestVideoTrackEncoder.cpp => dom/media/gtest/TestVideoTrackEncoder.cpp rename : content/media/gtest/TestVorbisTrackEncoder.cpp => dom/media/gtest/TestVorbisTrackEncoder.cpp rename : content/media/gtest/TestWebMBuffered.cpp => dom/media/gtest/TestWebMBuffered.cpp rename : content/media/gtest/TestWebMWriter.cpp => dom/media/gtest/TestWebMWriter.cpp rename : content/media/gtest/mediasource_test.mp4 => dom/media/gtest/mediasource_test.mp4 rename : content/media/gtest/moz.build => dom/media/gtest/moz.build rename : content/media/gtest/test.webm => dom/media/gtest/test.webm rename : content/media/imagecapture/CaptureTask.cpp => dom/media/imagecapture/CaptureTask.cpp rename : content/media/imagecapture/CaptureTask.h => dom/media/imagecapture/CaptureTask.h rename : content/media/imagecapture/ImageCapture.cpp => dom/media/imagecapture/ImageCapture.cpp rename : content/media/imagecapture/ImageCapture.h => dom/media/imagecapture/ImageCapture.h rename : content/media/imagecapture/moz.build => dom/media/imagecapture/moz.build rename : content/media/mediasource/AsyncEventRunner.h => dom/media/mediasource/AsyncEventRunner.h rename : content/media/mediasource/ContainerParser.cpp => dom/media/mediasource/ContainerParser.cpp rename : content/media/mediasource/ContainerParser.h => dom/media/mediasource/ContainerParser.h rename : content/media/mediasource/MediaSource.cpp => dom/media/mediasource/MediaSource.cpp rename : content/media/mediasource/MediaSource.h => dom/media/mediasource/MediaSource.h rename : content/media/mediasource/MediaSourceDecoder.cpp => dom/media/mediasource/MediaSourceDecoder.cpp rename : content/media/mediasource/MediaSourceDecoder.h => dom/media/mediasource/MediaSourceDecoder.h rename : content/media/mediasource/MediaSourceReader.cpp => dom/media/mediasource/MediaSourceReader.cpp rename : content/media/mediasource/MediaSourceReader.h => dom/media/mediasource/MediaSourceReader.h rename : content/media/mediasource/MediaSourceResource.h => dom/media/mediasource/MediaSourceResource.h rename : content/media/mediasource/MediaSourceUtils.cpp => dom/media/mediasource/MediaSourceUtils.cpp rename : content/media/mediasource/MediaSourceUtils.h => dom/media/mediasource/MediaSourceUtils.h rename : content/media/mediasource/ResourceQueue.h => dom/media/mediasource/ResourceQueue.h rename : content/media/mediasource/SourceBuffer.cpp => dom/media/mediasource/SourceBuffer.cpp rename : content/media/mediasource/SourceBuffer.h => dom/media/mediasource/SourceBuffer.h rename : content/media/mediasource/SourceBufferDecoder.cpp => dom/media/mediasource/SourceBufferDecoder.cpp rename : content/media/mediasource/SourceBufferDecoder.h => dom/media/mediasource/SourceBufferDecoder.h rename : content/media/mediasource/SourceBufferList.cpp => dom/media/mediasource/SourceBufferList.cpp rename : content/media/mediasource/SourceBufferList.h => dom/media/mediasource/SourceBufferList.h rename : content/media/mediasource/SourceBufferResource.cpp => dom/media/mediasource/SourceBufferResource.cpp rename : content/media/mediasource/SourceBufferResource.h => dom/media/mediasource/SourceBufferResource.h rename : content/media/mediasource/TrackBuffer.cpp => dom/media/mediasource/TrackBuffer.cpp rename : content/media/mediasource/TrackBuffer.h => dom/media/mediasource/TrackBuffer.h rename : content/media/mediasource/moz.build => dom/media/mediasource/moz.build rename : content/media/mediasource/test/crashtests/1005366.html => dom/media/mediasource/test/crashtests/1005366.html rename : content/media/mediasource/test/crashtests/1059035.html => dom/media/mediasource/test/crashtests/1059035.html rename : content/media/mediasource/test/crashtests/926665.html => dom/media/mediasource/test/crashtests/926665.html rename : content/media/mediasource/test/crashtests/931388.html => dom/media/mediasource/test/crashtests/931388.html rename : content/media/mediasource/test/crashtests/crashtests.list => dom/media/mediasource/test/crashtests/crashtests.list rename : content/media/mediasource/test/mediasource.js => dom/media/mediasource/test/mediasource.js rename : content/media/mediasource/test/mochitest.ini => dom/media/mediasource/test/mochitest.ini rename : content/media/mediasource/test/seek.webm => dom/media/mediasource/test/seek.webm rename : content/media/mediasource/test/seek.webm^headers^ => dom/media/mediasource/test/seek.webm^headers^ rename : content/media/mediasource/test/seek_lowres.webm => dom/media/mediasource/test/seek_lowres.webm rename : content/media/mediasource/test/seek_lowres.webm^headers^ => dom/media/mediasource/test/seek_lowres.webm^headers^ rename : content/media/mediasource/test/test_BufferedSeek.html => dom/media/mediasource/test/test_BufferedSeek.html rename : content/media/mediasource/test/test_FrameSelection.html => dom/media/mediasource/test/test_FrameSelection.html rename : content/media/mediasource/test/test_HaveMetadataUnbufferedSeek.html => dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek.html rename : content/media/mediasource/test/test_MediaSource.html => dom/media/mediasource/test/test_MediaSource.html rename : content/media/mediasource/test/test_MediaSource_disabled.html => dom/media/mediasource/test/test_MediaSource_disabled.html rename : content/media/mediasource/test/test_SeekableAfterEndOfStream.html => dom/media/mediasource/test/test_SeekableAfterEndOfStream.html rename : content/media/mediasource/test/test_SeekableAfterEndOfStreamSplit.html => dom/media/mediasource/test/test_SeekableAfterEndOfStreamSplit.html rename : content/media/mediasource/test/test_SeekableBeforeEndOfStream.html => dom/media/mediasource/test/test_SeekableBeforeEndOfStream.html rename : content/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit.html => dom/media/mediasource/test/test_SeekableBeforeEndOfStreamSplit.html rename : content/media/mediasource/test/test_SplitAppend.html => dom/media/mediasource/test/test_SplitAppend.html rename : content/media/mediasource/test/test_SplitAppendDelay.html => dom/media/mediasource/test/test_SplitAppendDelay.html rename : content/media/nsIDocumentActivity.h => dom/media/nsIDocumentActivity.h rename : content/media/ogg/OggCodecState.cpp => dom/media/ogg/OggCodecState.cpp rename : content/media/ogg/OggCodecState.h => dom/media/ogg/OggCodecState.h rename : content/media/ogg/OggDecoder.cpp => dom/media/ogg/OggDecoder.cpp rename : content/media/ogg/OggDecoder.h => dom/media/ogg/OggDecoder.h rename : content/media/ogg/OggReader.cpp => dom/media/ogg/OggReader.cpp rename : content/media/ogg/OggReader.h => dom/media/ogg/OggReader.h rename : content/media/ogg/OggWriter.cpp => dom/media/ogg/OggWriter.cpp rename : content/media/ogg/OggWriter.h => dom/media/ogg/OggWriter.h rename : content/media/ogg/OpusParser.cpp => dom/media/ogg/OpusParser.cpp rename : content/media/ogg/OpusParser.h => dom/media/ogg/OpusParser.h rename : content/media/ogg/moz.build => dom/media/ogg/moz.build rename : content/media/omx/AudioOffloadPlayer.cpp => dom/media/omx/AudioOffloadPlayer.cpp rename : content/media/omx/AudioOffloadPlayer.h => dom/media/omx/AudioOffloadPlayer.h rename : content/media/omx/AudioOffloadPlayerBase.h => dom/media/omx/AudioOffloadPlayerBase.h rename : content/media/omx/AudioOutput.cpp => dom/media/omx/AudioOutput.cpp rename : content/media/omx/AudioOutput.h => dom/media/omx/AudioOutput.h rename : content/media/omx/AudioSink.h => dom/media/omx/AudioSink.h rename : content/media/omx/I420ColorConverterHelper.cpp => dom/media/omx/I420ColorConverterHelper.cpp rename : content/media/omx/I420ColorConverterHelper.h => dom/media/omx/I420ColorConverterHelper.h rename : content/media/omx/MPAPI.h => dom/media/omx/MPAPI.h rename : content/media/omx/MediaCodecDecoder.cpp => dom/media/omx/MediaCodecDecoder.cpp rename : content/media/omx/MediaCodecDecoder.h => dom/media/omx/MediaCodecDecoder.h rename : content/media/omx/MediaCodecProxy.cpp => dom/media/omx/MediaCodecProxy.cpp rename : content/media/omx/MediaCodecProxy.h => dom/media/omx/MediaCodecProxy.h rename : content/media/omx/MediaCodecReader.cpp => dom/media/omx/MediaCodecReader.cpp rename : content/media/omx/MediaCodecReader.h => dom/media/omx/MediaCodecReader.h rename : content/media/omx/MediaOmxCommonDecoder.cpp => dom/media/omx/MediaOmxCommonDecoder.cpp rename : content/media/omx/MediaOmxCommonDecoder.h => dom/media/omx/MediaOmxCommonDecoder.h rename : content/media/omx/MediaOmxCommonReader.cpp => dom/media/omx/MediaOmxCommonReader.cpp rename : content/media/omx/MediaOmxCommonReader.h => dom/media/omx/MediaOmxCommonReader.h rename : content/media/omx/MediaOmxDecoder.cpp => dom/media/omx/MediaOmxDecoder.cpp rename : content/media/omx/MediaOmxDecoder.h => dom/media/omx/MediaOmxDecoder.h rename : content/media/omx/MediaOmxReader.cpp => dom/media/omx/MediaOmxReader.cpp rename : content/media/omx/MediaOmxReader.h => dom/media/omx/MediaOmxReader.h rename : content/media/omx/MediaStreamSource.cpp => dom/media/omx/MediaStreamSource.cpp rename : content/media/omx/MediaStreamSource.h => dom/media/omx/MediaStreamSource.h rename : content/media/omx/OMXCodecDescriptorUtil.cpp => dom/media/omx/OMXCodecDescriptorUtil.cpp rename : content/media/omx/OMXCodecDescriptorUtil.h => dom/media/omx/OMXCodecDescriptorUtil.h rename : content/media/omx/OMXCodecProxy.cpp => dom/media/omx/OMXCodecProxy.cpp rename : content/media/omx/OMXCodecProxy.h => dom/media/omx/OMXCodecProxy.h rename : content/media/omx/OMXCodecWrapper.cpp => dom/media/omx/OMXCodecWrapper.cpp rename : content/media/omx/OMXCodecWrapper.h => dom/media/omx/OMXCodecWrapper.h rename : content/media/omx/OmxDecoder.cpp => dom/media/omx/OmxDecoder.cpp rename : content/media/omx/OmxDecoder.h => dom/media/omx/OmxDecoder.h rename : content/media/omx/RtspExtractor.cpp => dom/media/omx/RtspExtractor.cpp rename : content/media/omx/RtspExtractor.h => dom/media/omx/RtspExtractor.h rename : content/media/omx/RtspMediaCodecDecoder.cpp => dom/media/omx/RtspMediaCodecDecoder.cpp rename : content/media/omx/RtspMediaCodecDecoder.h => dom/media/omx/RtspMediaCodecDecoder.h rename : content/media/omx/RtspMediaCodecReader.cpp => dom/media/omx/RtspMediaCodecReader.cpp rename : content/media/omx/RtspMediaCodecReader.h => dom/media/omx/RtspMediaCodecReader.h rename : content/media/omx/RtspOmxDecoder.cpp => dom/media/omx/RtspOmxDecoder.cpp rename : content/media/omx/RtspOmxDecoder.h => dom/media/omx/RtspOmxDecoder.h rename : content/media/omx/RtspOmxReader.cpp => dom/media/omx/RtspOmxReader.cpp rename : content/media/omx/RtspOmxReader.h => dom/media/omx/RtspOmxReader.h rename : content/media/omx/mediaresourcemanager/IMediaResourceManagerClient.cpp => dom/media/omx/mediaresourcemanager/IMediaResourceManagerClient.cpp rename : content/media/omx/mediaresourcemanager/IMediaResourceManagerClient.h => dom/media/omx/mediaresourcemanager/IMediaResourceManagerClient.h rename : content/media/omx/mediaresourcemanager/IMediaResourceManagerDeathNotifier.cpp => dom/media/omx/mediaresourcemanager/IMediaResourceManagerDeathNotifier.cpp rename : content/media/omx/mediaresourcemanager/IMediaResourceManagerDeathNotifier.h => dom/media/omx/mediaresourcemanager/IMediaResourceManagerDeathNotifier.h rename : content/media/omx/mediaresourcemanager/IMediaResourceManagerService.cpp => dom/media/omx/mediaresourcemanager/IMediaResourceManagerService.cpp rename : content/media/omx/mediaresourcemanager/IMediaResourceManagerService.h => dom/media/omx/mediaresourcemanager/IMediaResourceManagerService.h rename : content/media/omx/mediaresourcemanager/MediaResourceHandler.cpp => dom/media/omx/mediaresourcemanager/MediaResourceHandler.cpp rename : content/media/omx/mediaresourcemanager/MediaResourceHandler.h => dom/media/omx/mediaresourcemanager/MediaResourceHandler.h rename : content/media/omx/mediaresourcemanager/MediaResourceManagerClient.cpp => dom/media/omx/mediaresourcemanager/MediaResourceManagerClient.cpp rename : content/media/omx/mediaresourcemanager/MediaResourceManagerClient.h => dom/media/omx/mediaresourcemanager/MediaResourceManagerClient.h rename : content/media/omx/mediaresourcemanager/MediaResourceManagerService.cpp => dom/media/omx/mediaresourcemanager/MediaResourceManagerService.cpp rename : content/media/omx/mediaresourcemanager/MediaResourceManagerService.h => dom/media/omx/mediaresourcemanager/MediaResourceManagerService.h rename : content/media/omx/mediaresourcemanager/moz.build => dom/media/omx/mediaresourcemanager/moz.build rename : content/media/omx/moz.build => dom/media/omx/moz.build rename : content/media/raw/RawDecoder.cpp => dom/media/raw/RawDecoder.cpp rename : content/media/raw/RawDecoder.h => dom/media/raw/RawDecoder.h rename : content/media/raw/RawReader.cpp => dom/media/raw/RawReader.cpp rename : content/media/raw/RawReader.h => dom/media/raw/RawReader.h rename : content/media/raw/RawStructs.h => dom/media/raw/RawStructs.h rename : content/media/raw/moz.build => dom/media/raw/moz.build rename : content/media/systemservices/LoadManager.cpp => dom/media/systemservices/LoadManager.cpp rename : content/media/systemservices/LoadManager.h => dom/media/systemservices/LoadManager.h rename : content/media/systemservices/LoadManagerFactory.cpp => dom/media/systemservices/LoadManagerFactory.cpp rename : content/media/systemservices/LoadManagerFactory.h => dom/media/systemservices/LoadManagerFactory.h rename : content/media/systemservices/LoadMonitor.cpp => dom/media/systemservices/LoadMonitor.cpp rename : content/media/systemservices/LoadMonitor.h => dom/media/systemservices/LoadMonitor.h rename : content/media/systemservices/OSXRunLoopSingleton.cpp => dom/media/systemservices/OSXRunLoopSingleton.cpp rename : content/media/systemservices/OSXRunLoopSingleton.h => dom/media/systemservices/OSXRunLoopSingleton.h rename : content/media/systemservices/OpenSLESProvider.cpp => dom/media/systemservices/OpenSLESProvider.cpp rename : content/media/systemservices/OpenSLESProvider.h => dom/media/systemservices/OpenSLESProvider.h rename : content/media/systemservices/moz.build => dom/media/systemservices/moz.build rename : content/media/test/320x240.ogv => dom/media/test/320x240.ogv rename : content/media/test/320x240.ogv^headers^ => dom/media/test/320x240.ogv^headers^ rename : content/media/test/448636.ogv => dom/media/test/448636.ogv rename : content/media/test/448636.ogv^headers^ => dom/media/test/448636.ogv^headers^ rename : content/media/test/VID_0001.ogg => dom/media/test/VID_0001.ogg rename : content/media/test/VID_0001.ogg^headers^ => dom/media/test/VID_0001.ogg^headers^ rename : content/media/test/allowed.sjs => dom/media/test/allowed.sjs rename : content/media/test/audio-gaps.ogg => dom/media/test/audio-gaps.ogg rename : content/media/test/audio-gaps.ogg^headers^ => dom/media/test/audio-gaps.ogg^headers^ rename : content/media/test/audio-overhang.ogg => dom/media/test/audio-overhang.ogg rename : content/media/test/audio-overhang.ogg^headers^ => dom/media/test/audio-overhang.ogg^headers^ rename : content/media/test/audio.wav => dom/media/test/audio.wav rename : content/media/test/audio.wav^headers^ => dom/media/test/audio.wav^headers^ rename : content/media/test/bad-signature.vtt => dom/media/test/bad-signature.vtt rename : content/media/test/badtags.ogg => dom/media/test/badtags.ogg rename : content/media/test/badtags.ogg^headers^ => dom/media/test/badtags.ogg^headers^ rename : content/media/test/basic.vtt => dom/media/test/basic.vtt rename : content/media/test/beta-phrasebook.ogg => dom/media/test/beta-phrasebook.ogg rename : content/media/test/beta-phrasebook.ogg^headers^ => dom/media/test/beta-phrasebook.ogg^headers^ rename : content/media/test/big.wav => dom/media/test/big.wav rename : content/media/test/big.wav^headers^ => dom/media/test/big.wav^headers^ rename : content/media/test/bogus.duh => dom/media/test/bogus.duh rename : content/media/test/bogus.ogv => dom/media/test/bogus.ogv rename : content/media/test/bogus.ogv^headers^ => dom/media/test/bogus.ogv^headers^ rename : content/media/test/bogus.wav => dom/media/test/bogus.wav rename : content/media/test/bogus.wav^headers^ => dom/media/test/bogus.wav^headers^ rename : content/media/test/bug1066943.webm => dom/media/test/bug1066943.webm rename : content/media/test/bug1066943.webm^headers^ => dom/media/test/bug1066943.webm^headers^ rename : content/media/test/bug461281.ogg => dom/media/test/bug461281.ogg rename : content/media/test/bug461281.ogg^headers^ => dom/media/test/bug461281.ogg^headers^ rename : content/media/test/bug482461-theora.ogv => dom/media/test/bug482461-theora.ogv rename : content/media/test/bug482461-theora.ogv^headers^ => dom/media/test/bug482461-theora.ogv^headers^ rename : content/media/test/bug482461.ogv => dom/media/test/bug482461.ogv rename : content/media/test/bug482461.ogv^headers^ => dom/media/test/bug482461.ogv^headers^ rename : content/media/test/bug495129.ogv => dom/media/test/bug495129.ogv rename : content/media/test/bug495129.ogv^headers^ => dom/media/test/bug495129.ogv^headers^ rename : content/media/test/bug495794.ogg => dom/media/test/bug495794.ogg rename : content/media/test/bug495794.ogg^headers^ => dom/media/test/bug495794.ogg^headers^ rename : content/media/test/bug498380.ogv => dom/media/test/bug498380.ogv rename : content/media/test/bug498380.ogv^headers^ => dom/media/test/bug498380.ogv^headers^ rename : content/media/test/bug498855-1.ogv => dom/media/test/bug498855-1.ogv rename : content/media/test/bug498855-1.ogv^headers^ => dom/media/test/bug498855-1.ogv^headers^ rename : content/media/test/bug498855-2.ogv => dom/media/test/bug498855-2.ogv rename : content/media/test/bug498855-2.ogv^headers^ => dom/media/test/bug498855-2.ogv^headers^ rename : content/media/test/bug498855-3.ogv => dom/media/test/bug498855-3.ogv rename : content/media/test/bug498855-3.ogv^headers^ => dom/media/test/bug498855-3.ogv^headers^ rename : content/media/test/bug499519.ogv => dom/media/test/bug499519.ogv rename : content/media/test/bug499519.ogv^headers^ => dom/media/test/bug499519.ogv^headers^ rename : content/media/test/bug500311.ogv => dom/media/test/bug500311.ogv rename : content/media/test/bug500311.ogv^headers^ => dom/media/test/bug500311.ogv^headers^ rename : content/media/test/bug501279.ogg => dom/media/test/bug501279.ogg rename : content/media/test/bug501279.ogg^headers^ => dom/media/test/bug501279.ogg^headers^ rename : content/media/test/bug504613.ogv => dom/media/test/bug504613.ogv rename : content/media/test/bug504613.ogv^headers^ => dom/media/test/bug504613.ogv^headers^ rename : content/media/test/bug504644.ogv => dom/media/test/bug504644.ogv rename : content/media/test/bug504644.ogv^headers^ => dom/media/test/bug504644.ogv^headers^ rename : content/media/test/bug504843.ogv => dom/media/test/bug504843.ogv rename : content/media/test/bug504843.ogv^headers^ => dom/media/test/bug504843.ogv^headers^ rename : content/media/test/bug506094.ogv => dom/media/test/bug506094.ogv rename : content/media/test/bug506094.ogv^headers^ => dom/media/test/bug506094.ogv^headers^ rename : content/media/test/bug516323.indexed.ogv => dom/media/test/bug516323.indexed.ogv rename : content/media/test/bug516323.indexed.ogv^headers^ => dom/media/test/bug516323.indexed.ogv^headers^ rename : content/media/test/bug516323.ogv => dom/media/test/bug516323.ogv rename : content/media/test/bug516323.ogv^headers^ => dom/media/test/bug516323.ogv^headers^ rename : content/media/test/bug520493.ogg => dom/media/test/bug520493.ogg rename : content/media/test/bug520493.ogg^headers^ => dom/media/test/bug520493.ogg^headers^ rename : content/media/test/bug520500.ogg => dom/media/test/bug520500.ogg rename : content/media/test/bug520500.ogg^headers^ => dom/media/test/bug520500.ogg^headers^ rename : content/media/test/bug520908.ogv => dom/media/test/bug520908.ogv rename : content/media/test/bug520908.ogv^headers^ => dom/media/test/bug520908.ogv^headers^ rename : content/media/test/bug523816.ogv => dom/media/test/bug523816.ogv rename : content/media/test/bug523816.ogv^headers^ => dom/media/test/bug523816.ogv^headers^ rename : content/media/test/bug533822.ogg => dom/media/test/bug533822.ogg rename : content/media/test/bug533822.ogg^headers^ => dom/media/test/bug533822.ogg^headers^ rename : content/media/test/bug556821.ogv => dom/media/test/bug556821.ogv rename : content/media/test/bug556821.ogv^headers^ => dom/media/test/bug556821.ogv^headers^ rename : content/media/test/bug557094.ogv => dom/media/test/bug557094.ogv rename : content/media/test/bug557094.ogv^headers^ => dom/media/test/bug557094.ogv^headers^ rename : content/media/test/bug580982.webm => dom/media/test/bug580982.webm rename : content/media/test/bug580982.webm^headers^ => dom/media/test/bug580982.webm^headers^ rename : content/media/test/bug603918.webm => dom/media/test/bug603918.webm rename : content/media/test/bug603918.webm^headers^ => dom/media/test/bug603918.webm^headers^ rename : content/media/test/bug604067.webm => dom/media/test/bug604067.webm rename : content/media/test/bug604067.webm^headers^ => dom/media/test/bug604067.webm^headers^ rename : content/media/test/bug883173.vtt => dom/media/test/bug883173.vtt rename : content/media/test/can_play_type_dash.js => dom/media/test/can_play_type_dash.js rename : content/media/test/can_play_type_ogg.js => dom/media/test/can_play_type_ogg.js rename : content/media/test/can_play_type_wave.js => dom/media/test/can_play_type_wave.js rename : content/media/test/can_play_type_webm.js => dom/media/test/can_play_type_webm.js rename : content/media/test/cancellable_request.sjs => dom/media/test/cancellable_request.sjs rename : content/media/test/chain.ogg => dom/media/test/chain.ogg rename : content/media/test/chain.ogg^headers^ => dom/media/test/chain.ogg^headers^ rename : content/media/test/chain.ogv => dom/media/test/chain.ogv rename : content/media/test/chain.ogv^headers^ => dom/media/test/chain.ogv^headers^ rename : content/media/test/chain.opus => dom/media/test/chain.opus rename : content/media/test/chain.opus^headers^ => dom/media/test/chain.opus^headers^ rename : content/media/test/chained-audio-video.ogg => dom/media/test/chained-audio-video.ogg rename : content/media/test/chained-audio-video.ogg^headers^ => dom/media/test/chained-audio-video.ogg^headers^ rename : content/media/test/chained-video.ogv => dom/media/test/chained-video.ogv rename : content/media/test/chained-video.ogv^headers^ => dom/media/test/chained-video.ogv^headers^ rename : content/media/test/chrome.ini => dom/media/test/chrome.ini rename : content/media/test/contentDuration1.sjs => dom/media/test/contentDuration1.sjs rename : content/media/test/contentDuration2.sjs => dom/media/test/contentDuration2.sjs rename : content/media/test/contentDuration3.sjs => dom/media/test/contentDuration3.sjs rename : content/media/test/contentDuration4.sjs => dom/media/test/contentDuration4.sjs rename : content/media/test/contentDuration5.sjs => dom/media/test/contentDuration5.sjs rename : content/media/test/contentDuration6.sjs => dom/media/test/contentDuration6.sjs rename : content/media/test/contentDuration7.sjs => dom/media/test/contentDuration7.sjs rename : content/media/test/contentType.sjs => dom/media/test/contentType.sjs rename : content/media/test/crashtests/0-timescale.html => dom/media/test/crashtests/0-timescale.html rename : content/media/test/crashtests/0-timescale.mp4 => dom/media/test/crashtests/0-timescale.mp4 rename : content/media/test/crashtests/1015662.html => dom/media/test/crashtests/1015662.html rename : content/media/test/crashtests/1028458.html => dom/media/test/crashtests/1028458.html rename : content/media/test/crashtests/1080986.html => dom/media/test/crashtests/1080986.html rename : content/media/test/crashtests/1080986.wav => dom/media/test/crashtests/1080986.wav rename : content/media/test/crashtests/459439-1.html => dom/media/test/crashtests/459439-1.html rename : content/media/test/crashtests/466607-1.html => dom/media/test/crashtests/466607-1.html rename : content/media/test/crashtests/466945-1.html => dom/media/test/crashtests/466945-1.html rename : content/media/test/crashtests/468763-1.html => dom/media/test/crashtests/468763-1.html rename : content/media/test/crashtests/474744-1.html => dom/media/test/crashtests/474744-1.html rename : content/media/test/crashtests/481136-1.html => dom/media/test/crashtests/481136-1.html rename : content/media/test/crashtests/492286-1.xhtml => dom/media/test/crashtests/492286-1.xhtml rename : content/media/test/crashtests/493915-1.html => dom/media/test/crashtests/493915-1.html rename : content/media/test/crashtests/495794-1.html => dom/media/test/crashtests/495794-1.html rename : content/media/test/crashtests/495794-1.ogg => dom/media/test/crashtests/495794-1.ogg rename : content/media/test/crashtests/576612-1.html => dom/media/test/crashtests/576612-1.html rename : content/media/test/crashtests/691096-1.html => dom/media/test/crashtests/691096-1.html rename : content/media/test/crashtests/752784-1.html => dom/media/test/crashtests/752784-1.html rename : content/media/test/crashtests/789075-1.html => dom/media/test/crashtests/789075-1.html rename : content/media/test/crashtests/789075.webm => dom/media/test/crashtests/789075.webm rename : content/media/test/crashtests/795892-1.html => dom/media/test/crashtests/795892-1.html rename : content/media/test/crashtests/844563.html => dom/media/test/crashtests/844563.html rename : content/media/test/crashtests/846612.html => dom/media/test/crashtests/846612.html rename : content/media/test/crashtests/852838.html => dom/media/test/crashtests/852838.html rename : content/media/test/crashtests/865537-1.html => dom/media/test/crashtests/865537-1.html rename : content/media/test/crashtests/868504.html => dom/media/test/crashtests/868504.html rename : content/media/test/crashtests/874869.html => dom/media/test/crashtests/874869.html rename : content/media/test/crashtests/874915.html => dom/media/test/crashtests/874915.html rename : content/media/test/crashtests/874934.html => dom/media/test/crashtests/874934.html rename : content/media/test/crashtests/874952.html => dom/media/test/crashtests/874952.html rename : content/media/test/crashtests/875144.html => dom/media/test/crashtests/875144.html rename : content/media/test/crashtests/875596.html => dom/media/test/crashtests/875596.html rename : content/media/test/crashtests/875911.html => dom/media/test/crashtests/875911.html rename : content/media/test/crashtests/876024-1.html => dom/media/test/crashtests/876024-1.html rename : content/media/test/crashtests/876024-2.html => dom/media/test/crashtests/876024-2.html rename : content/media/test/crashtests/876118.html => dom/media/test/crashtests/876118.html rename : content/media/test/crashtests/876207.html => dom/media/test/crashtests/876207.html rename : content/media/test/crashtests/876215.html => dom/media/test/crashtests/876215.html rename : content/media/test/crashtests/876249.html => dom/media/test/crashtests/876249.html rename : content/media/test/crashtests/876252.html => dom/media/test/crashtests/876252.html rename : content/media/test/crashtests/876834.html => dom/media/test/crashtests/876834.html rename : content/media/test/crashtests/877527.html => dom/media/test/crashtests/877527.html rename : content/media/test/crashtests/877820.html => dom/media/test/crashtests/877820.html rename : content/media/test/crashtests/878014.html => dom/media/test/crashtests/878014.html rename : content/media/test/crashtests/878328.html => dom/media/test/crashtests/878328.html rename : content/media/test/crashtests/878407.html => dom/media/test/crashtests/878407.html rename : content/media/test/crashtests/878478.html => dom/media/test/crashtests/878478.html rename : content/media/test/crashtests/880129.html => dom/media/test/crashtests/880129.html rename : content/media/test/crashtests/880202.html => dom/media/test/crashtests/880202.html rename : content/media/test/crashtests/880342-1.html => dom/media/test/crashtests/880342-1.html rename : content/media/test/crashtests/880342-2.html => dom/media/test/crashtests/880342-2.html rename : content/media/test/crashtests/880384.html => dom/media/test/crashtests/880384.html rename : content/media/test/crashtests/880404.html => dom/media/test/crashtests/880404.html rename : content/media/test/crashtests/880724.html => dom/media/test/crashtests/880724.html rename : content/media/test/crashtests/881775.html => dom/media/test/crashtests/881775.html rename : content/media/test/crashtests/882549.html => dom/media/test/crashtests/882549.html rename : content/media/test/crashtests/882956.html => dom/media/test/crashtests/882956.html rename : content/media/test/crashtests/884459.html => dom/media/test/crashtests/884459.html rename : content/media/test/crashtests/889042.html => dom/media/test/crashtests/889042.html rename : content/media/test/crashtests/894104.html => dom/media/test/crashtests/894104.html rename : content/media/test/crashtests/907986-1.html => dom/media/test/crashtests/907986-1.html rename : content/media/test/crashtests/907986-2.html => dom/media/test/crashtests/907986-2.html rename : content/media/test/crashtests/907986-3.html => dom/media/test/crashtests/907986-3.html rename : content/media/test/crashtests/907986-4.html => dom/media/test/crashtests/907986-4.html rename : content/media/test/crashtests/910171-1.html => dom/media/test/crashtests/910171-1.html rename : content/media/test/crashtests/920987.html => dom/media/test/crashtests/920987.html rename : content/media/test/crashtests/925619-1.html => dom/media/test/crashtests/925619-1.html rename : content/media/test/crashtests/925619-2.html => dom/media/test/crashtests/925619-2.html rename : content/media/test/crashtests/926619.html => dom/media/test/crashtests/926619.html rename : content/media/test/crashtests/933151.html => dom/media/test/crashtests/933151.html rename : content/media/test/crashtests/933156.html => dom/media/test/crashtests/933156.html rename : content/media/test/crashtests/944851.html => dom/media/test/crashtests/944851.html rename : content/media/test/crashtests/952756.html => dom/media/test/crashtests/952756.html rename : content/media/test/crashtests/966636.html => dom/media/test/crashtests/966636.html rename : content/media/test/crashtests/986901.html => dom/media/test/crashtests/986901.html rename : content/media/test/crashtests/990794.html => dom/media/test/crashtests/990794.html rename : content/media/test/crashtests/buffer-source-ended-1.html => dom/media/test/crashtests/buffer-source-ended-1.html rename : content/media/test/crashtests/cors.webm => dom/media/test/crashtests/cors.webm rename : content/media/test/crashtests/cors.webm^headers^ => dom/media/test/crashtests/cors.webm^headers^ rename : content/media/test/crashtests/crashtests.list => dom/media/test/crashtests/crashtests.list rename : content/media/test/crashtests/media-element-source-seek-1.html => dom/media/test/crashtests/media-element-source-seek-1.html rename : content/media/test/crashtests/offline-buffer-source-ended-1.html => dom/media/test/crashtests/offline-buffer-source-ended-1.html rename : content/media/test/crashtests/oscillator-ended-1.html => dom/media/test/crashtests/oscillator-ended-1.html rename : content/media/test/crashtests/oscillator-ended-2.html => dom/media/test/crashtests/oscillator-ended-2.html rename : content/media/test/crashtests/sound.ogg => dom/media/test/crashtests/sound.ogg rename : content/media/test/dash/dash-manifest-garbled-webm.mpd => dom/media/test/dash/dash-manifest-garbled-webm.mpd rename : content/media/test/dash/dash-manifest-garbled.mpd => dom/media/test/dash/dash-manifest-garbled.mpd rename : content/media/test/dash/dash-manifest-sjs.mpd => dom/media/test/dash/dash-manifest-sjs.mpd rename : content/media/test/dash/dash-manifest.mpd => dom/media/test/dash/dash-manifest.mpd rename : content/media/test/dash/dash-webm-audio-128k.webm => dom/media/test/dash/dash-webm-audio-128k.webm rename : content/media/test/dash/dash-webm-video-320x180.webm => dom/media/test/dash/dash-webm-video-320x180.webm rename : content/media/test/dash/dash-webm-video-428x240.webm => dom/media/test/dash/dash-webm-video-428x240.webm rename : content/media/test/dash/garbled.webm => dom/media/test/dash/garbled.webm rename : content/media/test/dash_detect_stream_switch.sjs => dom/media/test/dash_detect_stream_switch.sjs rename : content/media/test/detodos.opus => dom/media/test/detodos.opus rename : content/media/test/detodos.opus^headers^ => dom/media/test/detodos.opus^headers^ rename : content/media/test/detodos.webm => dom/media/test/detodos.webm rename : content/media/test/detodos.webm^headers^ => dom/media/test/detodos.webm^headers^ rename : content/media/test/dirac.ogg => dom/media/test/dirac.ogg rename : content/media/test/dirac.ogg^headers^ => dom/media/test/dirac.ogg^headers^ rename : content/media/test/dynamic_redirect.sjs => dom/media/test/dynamic_redirect.sjs rename : content/media/test/dynamic_resource.sjs => dom/media/test/dynamic_resource.sjs rename : content/media/test/file_access_controls.html => dom/media/test/file_access_controls.html rename : content/media/test/fragment_noplay.js => dom/media/test/fragment_noplay.js rename : content/media/test/fragment_play.js => dom/media/test/fragment_play.js rename : content/media/test/gizmo-frag-cenc.xml => dom/media/test/gizmo-frag-cenc.xml rename : content/media/test/gizmo-frag-cenc1.m4s => dom/media/test/gizmo-frag-cenc1.m4s rename : content/media/test/gizmo-frag-cenc2.m4s => dom/media/test/gizmo-frag-cenc2.m4s rename : content/media/test/gizmo-frag-cencinit.mp4 => dom/media/test/gizmo-frag-cencinit.mp4 rename : content/media/test/gizmo.mp4 => dom/media/test/gizmo.mp4 rename : content/media/test/gizmo.mp4^headers^ => dom/media/test/gizmo.mp4^headers^ rename : content/media/test/graph_latency.py => dom/media/test/graph_latency.py rename : content/media/test/huge-id3.mp3 => dom/media/test/huge-id3.mp3 rename : content/media/test/huge-id3.mp3^headers^ => dom/media/test/huge-id3.mp3^headers^ rename : content/media/test/id3tags.mp3 => dom/media/test/id3tags.mp3 rename : content/media/test/id3tags.mp3^headers^ => dom/media/test/id3tags.mp3^headers^ rename : content/media/test/invalid-cmap-s0c0.opus => dom/media/test/invalid-cmap-s0c0.opus rename : content/media/test/invalid-cmap-s0c0.opus^headers^ => dom/media/test/invalid-cmap-s0c0.opus^headers^ rename : content/media/test/invalid-cmap-s0c2.opus => dom/media/test/invalid-cmap-s0c2.opus rename : content/media/test/invalid-cmap-s0c2.opus^headers^ => dom/media/test/invalid-cmap-s0c2.opus^headers^ rename : content/media/test/invalid-cmap-s1c2.opus => dom/media/test/invalid-cmap-s1c2.opus rename : content/media/test/invalid-cmap-s1c2.opus^headers^ => dom/media/test/invalid-cmap-s1c2.opus^headers^ rename : content/media/test/invalid-cmap-short.opus => dom/media/test/invalid-cmap-short.opus rename : content/media/test/invalid-cmap-short.opus^headers^ => dom/media/test/invalid-cmap-short.opus^headers^ rename : content/media/test/invalid-discard_on_multi_blocks.webm => dom/media/test/invalid-discard_on_multi_blocks.webm rename : content/media/test/invalid-discard_on_multi_blocks.webm^headers^ => dom/media/test/invalid-discard_on_multi_blocks.webm^headers^ rename : content/media/test/invalid-excess_discard.webm => dom/media/test/invalid-excess_discard.webm rename : content/media/test/invalid-excess_discard.webm^headers^ => dom/media/test/invalid-excess_discard.webm^headers^ rename : content/media/test/invalid-excess_neg_discard.webm => dom/media/test/invalid-excess_neg_discard.webm rename : content/media/test/invalid-excess_neg_discard.webm^headers^ => dom/media/test/invalid-excess_neg_discard.webm^headers^ rename : content/media/test/invalid-m0c0.opus => dom/media/test/invalid-m0c0.opus rename : content/media/test/invalid-m0c0.opus^headers^ => dom/media/test/invalid-m0c0.opus^headers^ rename : content/media/test/invalid-m0c3.opus => dom/media/test/invalid-m0c3.opus rename : content/media/test/invalid-m0c3.opus^headers^ => dom/media/test/invalid-m0c3.opus^headers^ rename : content/media/test/invalid-m1c0.opus => dom/media/test/invalid-m1c0.opus rename : content/media/test/invalid-m1c0.opus^headers^ => dom/media/test/invalid-m1c0.opus^headers^ rename : content/media/test/invalid-m1c9.opus => dom/media/test/invalid-m1c9.opus rename : content/media/test/invalid-m1c9.opus^headers^ => dom/media/test/invalid-m1c9.opus^headers^ rename : content/media/test/invalid-m2c0.opus => dom/media/test/invalid-m2c0.opus rename : content/media/test/invalid-m2c0.opus^headers^ => dom/media/test/invalid-m2c0.opus^headers^ rename : content/media/test/invalid-m2c1.opus => dom/media/test/invalid-m2c1.opus rename : content/media/test/invalid-m2c1.opus^headers^ => dom/media/test/invalid-m2c1.opus^headers^ rename : content/media/test/invalid-neg_discard.webm => dom/media/test/invalid-neg_discard.webm rename : content/media/test/invalid-neg_discard.webm^headers^ => dom/media/test/invalid-neg_discard.webm^headers^ rename : content/media/test/invalid-preskip.webm => dom/media/test/invalid-preskip.webm rename : content/media/test/invalid-preskip.webm^headers^ => dom/media/test/invalid-preskip.webm^headers^ rename : content/media/test/long.vtt => dom/media/test/long.vtt rename : content/media/test/make-headers.sh => dom/media/test/make-headers.sh rename : content/media/test/manifest.js => dom/media/test/manifest.js rename : content/media/test/mochitest.ini => dom/media/test/mochitest.ini rename : content/media/test/multiple-bos-more-header-fileds.ogg => dom/media/test/multiple-bos-more-header-fileds.ogg rename : content/media/test/multiple-bos-more-header-fileds.ogg^headers^ => dom/media/test/multiple-bos-more-header-fileds.ogg^headers^ rename : content/media/test/multiple-bos.ogg => dom/media/test/multiple-bos.ogg rename : content/media/test/multiple-bos.ogg^headers^ => dom/media/test/multiple-bos.ogg^headers^ rename : content/media/test/no-cues.webm => dom/media/test/no-cues.webm rename : content/media/test/no-cues.webm^headers^ => dom/media/test/no-cues.webm^headers^ rename : content/media/test/noContentLength.sjs => dom/media/test/noContentLength.sjs rename : content/media/test/notags.mp3 => dom/media/test/notags.mp3 rename : content/media/test/notags.mp3^headers^ => dom/media/test/notags.mp3^headers^ rename : content/media/test/owl-funnier-id3.mp3 => dom/media/test/owl-funnier-id3.mp3 rename : content/media/test/owl-funnier-id3.mp3^headers^ => dom/media/test/owl-funnier-id3.mp3^headers^ rename : content/media/test/owl-funny-id3.mp3 => dom/media/test/owl-funny-id3.mp3 rename : content/media/test/owl-funny-id3.mp3^headers^ => dom/media/test/owl-funny-id3.mp3^headers^ rename : content/media/test/owl.mp3 => dom/media/test/owl.mp3 rename : content/media/test/owl.mp3^headers^ => dom/media/test/owl.mp3^headers^ rename : content/media/test/parser.vtt => dom/media/test/parser.vtt rename : content/media/test/pixel_aspect_ratio.mp4 => dom/media/test/pixel_aspect_ratio.mp4 rename : content/media/test/r11025_msadpcm_c1.wav => dom/media/test/r11025_msadpcm_c1.wav rename : content/media/test/r11025_msadpcm_c1.wav^headers^ => dom/media/test/r11025_msadpcm_c1.wav^headers^ rename : content/media/test/r11025_s16_c1.wav => dom/media/test/r11025_s16_c1.wav rename : content/media/test/r11025_s16_c1.wav^headers^ => dom/media/test/r11025_s16_c1.wav^headers^ rename : content/media/test/r11025_s16_c1_trailing.wav => dom/media/test/r11025_s16_c1_trailing.wav rename : content/media/test/r11025_s16_c1_trailing.wav^headers^ => dom/media/test/r11025_s16_c1_trailing.wav^headers^ rename : content/media/test/r11025_u8_c1.wav => dom/media/test/r11025_u8_c1.wav rename : content/media/test/r11025_u8_c1.wav^headers^ => dom/media/test/r11025_u8_c1.wav^headers^ rename : content/media/test/r11025_u8_c1_trunc.wav => dom/media/test/r11025_u8_c1_trunc.wav rename : content/media/test/r11025_u8_c1_trunc.wav^headers^ => dom/media/test/r11025_u8_c1_trunc.wav^headers^ rename : content/media/test/r16000_u8_c1_list.wav => dom/media/test/r16000_u8_c1_list.wav rename : content/media/test/r16000_u8_c1_list.wav^headers^ => dom/media/test/r16000_u8_c1_list.wav^headers^ rename : content/media/test/reactivate_helper.html => dom/media/test/reactivate_helper.html rename : content/media/test/redirect.sjs => dom/media/test/redirect.sjs rename : content/media/test/referer.sjs => dom/media/test/referer.sjs rename : content/media/test/region.vtt => dom/media/test/region.vtt rename : content/media/test/sample-fisbone-skeleton4.ogv => dom/media/test/sample-fisbone-skeleton4.ogv rename : content/media/test/sample-fisbone-skeleton4.ogv^headers^ => dom/media/test/sample-fisbone-skeleton4.ogv^headers^ rename : content/media/test/sample-fisbone-wrong-header.ogv => dom/media/test/sample-fisbone-wrong-header.ogv rename : content/media/test/sample-fisbone-wrong-header.ogv^headers^ => dom/media/test/sample-fisbone-wrong-header.ogv^headers^ rename : content/media/test/sample.3g2 => dom/media/test/sample.3g2 rename : content/media/test/sample.3gp => dom/media/test/sample.3gp rename : content/media/test/seek.ogv => dom/media/test/seek.ogv rename : content/media/test/seek.ogv^headers^ => dom/media/test/seek.ogv^headers^ rename : content/media/test/seek.webm => dom/media/test/seek.webm rename : content/media/test/seek.webm^headers^ => dom/media/test/seek.webm^headers^ rename : content/media/test/seek.yuv => dom/media/test/seek.yuv rename : content/media/test/seekLies.sjs => dom/media/test/seekLies.sjs rename : content/media/test/seek_support.js => dom/media/test/seek_support.js rename : content/media/test/seek_with_sound.ogg => dom/media/test/seek_with_sound.ogg rename : content/media/test/seek_with_sound.ogg^headers^ => dom/media/test/seek_with_sound.ogg^headers^ rename : content/media/test/short-cenc.mp4 => dom/media/test/short-cenc.mp4 rename : content/media/test/short-cenc.xml => dom/media/test/short-cenc.xml rename : content/media/test/short-video.ogv => dom/media/test/short-video.ogv rename : content/media/test/short-video.ogv^headers^ => dom/media/test/short-video.ogv^headers^ rename : content/media/test/short.mp4 => dom/media/test/short.mp4 rename : content/media/test/small-shot-mp3.mp4 => dom/media/test/small-shot-mp3.mp4 rename : content/media/test/small-shot-mp3.mp4^headers^ => dom/media/test/small-shot-mp3.mp4^headers^ rename : content/media/test/small-shot.m4a => dom/media/test/small-shot.m4a rename : content/media/test/small-shot.mp3 => dom/media/test/small-shot.mp3 rename : content/media/test/small-shot.mp3^headers^ => dom/media/test/small-shot.mp3^headers^ rename : content/media/test/small-shot.ogg => dom/media/test/small-shot.ogg rename : content/media/test/small-shot.ogg^headers^ => dom/media/test/small-shot.ogg^headers^ rename : content/media/test/sound.ogg => dom/media/test/sound.ogg rename : content/media/test/sound.ogg^headers^ => dom/media/test/sound.ogg^headers^ rename : content/media/test/spacestorm-1000Hz-100ms.ogg => dom/media/test/spacestorm-1000Hz-100ms.ogg rename : content/media/test/spacestorm-1000Hz-100ms.ogg^headers^ => dom/media/test/spacestorm-1000Hz-100ms.ogg^headers^ rename : content/media/test/split.webm => dom/media/test/split.webm rename : content/media/test/split.webm^headers^ => dom/media/test/split.webm^headers^ rename : content/media/test/street.mp4 => dom/media/test/street.mp4 rename : content/media/test/street.mp4^headers^ => dom/media/test/street.mp4^headers^ rename : content/media/test/test-1-mono.opus => dom/media/test/test-1-mono.opus rename : content/media/test/test-1-mono.opus^headers^ => dom/media/test/test-1-mono.opus^headers^ rename : content/media/test/test-2-stereo.opus => dom/media/test/test-2-stereo.opus rename : content/media/test/test-2-stereo.opus^headers^ => dom/media/test/test-2-stereo.opus^headers^ rename : content/media/test/test-3-LCR.opus => dom/media/test/test-3-LCR.opus rename : content/media/test/test-3-LCR.opus^headers^ => dom/media/test/test-3-LCR.opus^headers^ rename : content/media/test/test-4-quad.opus => dom/media/test/test-4-quad.opus rename : content/media/test/test-4-quad.opus^headers^ => dom/media/test/test-4-quad.opus^headers^ rename : content/media/test/test-5-5.0.opus => dom/media/test/test-5-5.0.opus rename : content/media/test/test-5-5.0.opus^headers^ => dom/media/test/test-5-5.0.opus^headers^ rename : content/media/test/test-6-5.1.opus => dom/media/test/test-6-5.1.opus rename : content/media/test/test-6-5.1.opus^headers^ => dom/media/test/test-6-5.1.opus^headers^ rename : content/media/test/test-7-6.1.opus => dom/media/test/test-7-6.1.opus rename : content/media/test/test-7-6.1.opus^headers^ => dom/media/test/test-7-6.1.opus^headers^ rename : content/media/test/test-8-7.1.opus => dom/media/test/test-8-7.1.opus rename : content/media/test/test-8-7.1.opus^headers^ => dom/media/test/test-8-7.1.opus^headers^ rename : content/media/test/test_VideoPlaybackQuality.html => dom/media/test/test_VideoPlaybackQuality.html rename : content/media/test/test_VideoPlaybackQuality_disabled.html => dom/media/test/test_VideoPlaybackQuality_disabled.html rename : content/media/test/test_access_control.html => dom/media/test/test_access_control.html rename : content/media/test/test_aspectratio_mp4.html => dom/media/test/test_aspectratio_mp4.html rename : content/media/test/test_audio1.html => dom/media/test/test_audio1.html rename : content/media/test/test_audio2.html => dom/media/test/test_audio2.html rename : content/media/test/test_audioDocumentTitle.html => dom/media/test/test_audioDocumentTitle.html rename : content/media/test/test_autoplay.html => dom/media/test/test_autoplay.html rename : content/media/test/test_autoplay_contentEditable.html => dom/media/test/test_autoplay_contentEditable.html rename : content/media/test/test_buffered.html => dom/media/test/test_buffered.html rename : content/media/test/test_bug1018933.html => dom/media/test/test_bug1018933.html rename : content/media/test/test_bug448534.html => dom/media/test/test_bug448534.html rename : content/media/test/test_bug463162.xhtml => dom/media/test/test_bug463162.xhtml rename : content/media/test/test_bug465498.html => dom/media/test/test_bug465498.html rename : content/media/test/test_bug493187.html => dom/media/test/test_bug493187.html rename : content/media/test/test_bug495145.html => dom/media/test/test_bug495145.html rename : content/media/test/test_bug495300.html => dom/media/test/test_bug495300.html rename : content/media/test/test_bug654550.html => dom/media/test/test_bug654550.html rename : content/media/test/test_bug686942.html => dom/media/test/test_bug686942.html rename : content/media/test/test_bug726904.html => dom/media/test/test_bug726904.html rename : content/media/test/test_bug874897.html => dom/media/test/test_bug874897.html rename : content/media/test/test_bug883173.html => dom/media/test/test_bug883173.html rename : content/media/test/test_bug895091.html => dom/media/test/test_bug895091.html rename : content/media/test/test_bug895305.html => dom/media/test/test_bug895305.html rename : content/media/test/test_bug919265.html => dom/media/test/test_bug919265.html rename : content/media/test/test_bug957847.html => dom/media/test/test_bug957847.html rename : content/media/test/test_can_play_type.html => dom/media/test/test_can_play_type.html rename : content/media/test/test_can_play_type_mpeg.html => dom/media/test/test_can_play_type_mpeg.html rename : content/media/test/test_can_play_type_no_ogg.html => dom/media/test/test_can_play_type_no_ogg.html rename : content/media/test/test_can_play_type_no_wave.html => dom/media/test/test_can_play_type_no_wave.html rename : content/media/test/test_can_play_type_no_webm.html => dom/media/test/test_can_play_type_no_webm.html rename : content/media/test/test_can_play_type_ogg.html => dom/media/test/test_can_play_type_ogg.html rename : content/media/test/test_can_play_type_wave.html => dom/media/test/test_can_play_type_wave.html rename : content/media/test/test_can_play_type_webm.html => dom/media/test/test_can_play_type_webm.html rename : content/media/test/test_chaining.html => dom/media/test/test_chaining.html rename : content/media/test/test_clone_media_element.html => dom/media/test/test_clone_media_element.html rename : content/media/test/test_closing_connections.html => dom/media/test/test_closing_connections.html rename : content/media/test/test_constants.html => dom/media/test/test_constants.html rename : content/media/test/test_contentDuration1.html => dom/media/test/test_contentDuration1.html rename : content/media/test/test_contentDuration2.html => dom/media/test/test_contentDuration2.html rename : content/media/test/test_contentDuration3.html => dom/media/test/test_contentDuration3.html rename : content/media/test/test_contentDuration4.html => dom/media/test/test_contentDuration4.html rename : content/media/test/test_contentDuration5.html => dom/media/test/test_contentDuration5.html rename : content/media/test/test_contentDuration6.html => dom/media/test/test_contentDuration6.html rename : content/media/test/test_contentDuration7.html => dom/media/test/test_contentDuration7.html rename : content/media/test/test_controls.html => dom/media/test/test_controls.html rename : content/media/test/test_currentTime.html => dom/media/test/test_currentTime.html rename : content/media/test/test_decode_error.html => dom/media/test/test_decode_error.html rename : content/media/test/test_decoder_disable.html => dom/media/test/test_decoder_disable.html rename : content/media/test/test_defaultMuted.html => dom/media/test/test_defaultMuted.html rename : content/media/test/test_delay_load.html => dom/media/test/test_delay_load.html rename : content/media/test/test_encryptedMediaExtensions.html => dom/media/test/test_encryptedMediaExtensions.html rename : content/media/test/test_error_in_video_document.html => dom/media/test/test_error_in_video_document.html rename : content/media/test/test_error_on_404.html => dom/media/test/test_error_on_404.html rename : content/media/test/test_fastSeek-forwards.html => dom/media/test/test_fastSeek-forwards.html rename : content/media/test/test_fastSeek.html => dom/media/test/test_fastSeek.html rename : content/media/test/test_fragment_noplay.html => dom/media/test/test_fragment_noplay.html rename : content/media/test/test_fragment_play.html => dom/media/test/test_fragment_play.html rename : content/media/test/test_imagecapture.html => dom/media/test/test_imagecapture.html rename : content/media/test/test_info_leak.html => dom/media/test/test_info_leak.html rename : content/media/test/test_invalid_reject.html => dom/media/test/test_invalid_reject.html rename : content/media/test/test_invalid_reject_play.html => dom/media/test/test_invalid_reject_play.html rename : content/media/test/test_invalid_seek.html => dom/media/test/test_invalid_seek.html rename : content/media/test/test_load.html => dom/media/test/test_load.html rename : content/media/test/test_load_candidates.html => dom/media/test/test_load_candidates.html rename : content/media/test/test_load_same_resource.html => dom/media/test/test_load_same_resource.html rename : content/media/test/test_load_source.html => dom/media/test/test_load_source.html rename : content/media/test/test_loop.html => dom/media/test/test_loop.html rename : content/media/test/test_media_selection.html => dom/media/test/test_media_selection.html rename : content/media/test/test_media_sniffer.html => dom/media/test/test_media_sniffer.html rename : content/media/test/test_mediarecorder_avoid_recursion.html => dom/media/test/test_mediarecorder_avoid_recursion.html rename : content/media/test/test_mediarecorder_creation.html => dom/media/test/test_mediarecorder_creation.html rename : content/media/test/test_mediarecorder_creation_fail.html => dom/media/test/test_mediarecorder_creation_fail.html rename : content/media/test/test_mediarecorder_getencodeddata.html => dom/media/test/test_mediarecorder_getencodeddata.html rename : content/media/test/test_mediarecorder_record_4ch_audiocontext.html => dom/media/test/test_mediarecorder_record_4ch_audiocontext.html rename : content/media/test/test_mediarecorder_record_audiocontext.html => dom/media/test/test_mediarecorder_record_audiocontext.html rename : content/media/test/test_mediarecorder_record_audiocontext_mlk.html => dom/media/test/test_mediarecorder_record_audiocontext_mlk.html rename : content/media/test/test_mediarecorder_record_audionode.html => dom/media/test/test_mediarecorder_record_audionode.html rename : content/media/test/test_mediarecorder_record_getdata_afterstart.html => dom/media/test/test_mediarecorder_record_getdata_afterstart.html rename : content/media/test/test_mediarecorder_record_gum_video_timeslice.html => dom/media/test/test_mediarecorder_record_gum_video_timeslice.html rename : content/media/test/test_mediarecorder_record_immediate_stop.html => dom/media/test/test_mediarecorder_record_immediate_stop.html rename : content/media/test/test_mediarecorder_record_no_timeslice.html => dom/media/test/test_mediarecorder_record_no_timeslice.html rename : content/media/test/test_mediarecorder_record_nosrc.html => dom/media/test/test_mediarecorder_record_nosrc.html rename : content/media/test/test_mediarecorder_record_session.html => dom/media/test/test_mediarecorder_record_session.html rename : content/media/test/test_mediarecorder_record_startstopstart.html => dom/media/test/test_mediarecorder_record_startstopstart.html rename : content/media/test/test_mediarecorder_record_stopms.html => dom/media/test/test_mediarecorder_record_stopms.html rename : content/media/test/test_mediarecorder_record_timeslice.html => dom/media/test/test_mediarecorder_record_timeslice.html rename : content/media/test/test_mediarecorder_reload_crash.html => dom/media/test/test_mediarecorder_reload_crash.html rename : content/media/test/test_mediarecorder_state_transition.html => dom/media/test/test_mediarecorder_state_transition.html rename : content/media/test/test_mediarecorder_unsupported_src.html => dom/media/test/test_mediarecorder_unsupported_src.html rename : content/media/test/test_mediatrack_consuming_mediaresource.html => dom/media/test/test_mediatrack_consuming_mediaresource.html rename : content/media/test/test_mediatrack_consuming_mediastream.html => dom/media/test/test_mediatrack_consuming_mediastream.html rename : content/media/test/test_mediatrack_events.html => dom/media/test/test_mediatrack_events.html rename : content/media/test/test_mediatrack_parsing_ogg.html => dom/media/test/test_mediatrack_parsing_ogg.html rename : content/media/test/test_mediatrack_replay_from_end.html => dom/media/test/test_mediatrack_replay_from_end.html rename : content/media/test/test_metadata.html => dom/media/test/test_metadata.html rename : content/media/test/test_mixed_principals.html => dom/media/test/test_mixed_principals.html rename : content/media/test/test_mozHasAudio.html => dom/media/test/test_mozHasAudio.html rename : content/media/test/test_networkState.html => dom/media/test/test_networkState.html rename : content/media/test/test_new_audio.html => dom/media/test/test_new_audio.html rename : content/media/test/test_no_load_event.html => dom/media/test/test_no_load_event.html rename : content/media/test/test_paused.html => dom/media/test/test_paused.html rename : content/media/test/test_paused_after_ended.html => dom/media/test/test_paused_after_ended.html rename : content/media/test/test_play_events.html => dom/media/test/test_play_events.html rename : content/media/test/test_play_events_2.html => dom/media/test/test_play_events_2.html rename : content/media/test/test_play_twice.html => dom/media/test/test_play_twice.html rename : content/media/test/test_playback.html => dom/media/test/test_playback.html rename : content/media/test/test_playback_errors.html => dom/media/test/test_playback_errors.html rename : content/media/test/test_playback_rate.html => dom/media/test/test_playback_rate.html rename : content/media/test/test_playback_rate_playpause.html => dom/media/test/test_playback_rate_playpause.html rename : content/media/test/test_played.html => dom/media/test/test_played.html rename : content/media/test/test_preload_actions.html => dom/media/test/test_preload_actions.html rename : content/media/test/test_preload_attribute.html => dom/media/test/test_preload_attribute.html rename : content/media/test/test_preload_suspend.html => dom/media/test/test_preload_suspend.html rename : content/media/test/test_progress.html => dom/media/test/test_progress.html rename : content/media/test/test_reactivate.html => dom/media/test/test_reactivate.html rename : content/media/test/test_readyState.html => dom/media/test/test_readyState.html rename : content/media/test/test_referer.html => dom/media/test/test_referer.html rename : content/media/test/test_replay_metadata.html => dom/media/test/test_replay_metadata.html rename : content/media/test/test_reset_events_async.html => dom/media/test/test_reset_events_async.html rename : content/media/test/test_reset_src.html => dom/media/test/test_reset_src.html rename : content/media/test/test_resume.html => dom/media/test/test_resume.html rename : content/media/test/test_seek-1.html => dom/media/test/test_seek-1.html rename : content/media/test/test_seek-10.html => dom/media/test/test_seek-10.html rename : content/media/test/test_seek-11.html => dom/media/test/test_seek-11.html rename : content/media/test/test_seek-12.html => dom/media/test/test_seek-12.html rename : content/media/test/test_seek-13.html => dom/media/test/test_seek-13.html rename : content/media/test/test_seek-2.html => dom/media/test/test_seek-2.html rename : content/media/test/test_seek-3.html => dom/media/test/test_seek-3.html rename : content/media/test/test_seek-4.html => dom/media/test/test_seek-4.html rename : content/media/test/test_seek-5.html => dom/media/test/test_seek-5.html rename : content/media/test/test_seek-6.html => dom/media/test/test_seek-6.html rename : content/media/test/test_seek-7.html => dom/media/test/test_seek-7.html rename : content/media/test/test_seek-8.html => dom/media/test/test_seek-8.html rename : content/media/test/test_seek-9.html => dom/media/test/test_seek-9.html rename : content/media/test/test_seekLies.html => dom/media/test/test_seekLies.html rename : content/media/test/test_seek_out_of_range.html => dom/media/test/test_seek_out_of_range.html rename : content/media/test/test_seekable1.html => dom/media/test/test_seekable1.html rename : content/media/test/test_seekable2.html => dom/media/test/test_seekable2.html rename : content/media/test/test_seekable3.html => dom/media/test/test_seekable3.html rename : content/media/test/test_source.html => dom/media/test/test_source.html rename : content/media/test/test_source_media.html => dom/media/test/test_source_media.html rename : content/media/test/test_source_null.html => dom/media/test/test_source_null.html rename : content/media/test/test_source_write.html => dom/media/test/test_source_write.html rename : content/media/test/test_standalone.html => dom/media/test/test_standalone.html rename : content/media/test/test_streams_autoplay.html => dom/media/test/test_streams_autoplay.html rename : content/media/test/test_streams_element_capture.html => dom/media/test/test_streams_element_capture.html rename : content/media/test/test_streams_element_capture_createObjectURL.html => dom/media/test/test_streams_element_capture_createObjectURL.html rename : content/media/test/test_streams_element_capture_playback.html => dom/media/test/test_streams_element_capture_playback.html rename : content/media/test/test_streams_element_capture_reset.html => dom/media/test/test_streams_element_capture_reset.html rename : content/media/test/test_streams_gc.html => dom/media/test/test_streams_gc.html rename : content/media/test/test_streams_srcObject.html => dom/media/test/test_streams_srcObject.html rename : content/media/test/test_streams_tracks.html => dom/media/test/test_streams_tracks.html rename : content/media/test/test_texttrack.html => dom/media/test/test_texttrack.html rename : content/media/test/test_texttrack_chrome.html => dom/media/test/test_texttrack_chrome.html rename : content/media/test/test_texttrackcue.html => dom/media/test/test_texttrackcue.html rename : content/media/test/test_texttrackcue_chrome.html => dom/media/test/test_texttrackcue_chrome.html rename : content/media/test/test_texttracklist.html => dom/media/test/test_texttracklist.html rename : content/media/test/test_texttracklist_chrome.html => dom/media/test/test_texttracklist_chrome.html rename : content/media/test/test_texttrackregion.html => dom/media/test/test_texttrackregion.html rename : content/media/test/test_timeupdate_small_files.html => dom/media/test/test_timeupdate_small_files.html rename : content/media/test/test_trackelementevent.html => dom/media/test/test_trackelementevent.html rename : content/media/test/test_trackevent.html => dom/media/test/test_trackevent.html rename : content/media/test/test_unseekable.html => dom/media/test/test_unseekable.html rename : content/media/test/test_videoDocumentTitle.html => dom/media/test/test_videoDocumentTitle.html rename : content/media/test/test_video_in_audio_element.html => dom/media/test/test_video_in_audio_element.html rename : content/media/test/test_video_to_canvas.html => dom/media/test/test_video_to_canvas.html rename : content/media/test/test_volume.html => dom/media/test/test_volume.html rename : content/media/test/test_vttparser.html => dom/media/test/test_vttparser.html rename : content/media/test/test_wav_ended1.html => dom/media/test/test_wav_ended1.html rename : content/media/test/test_wav_ended2.html => dom/media/test/test_wav_ended2.html rename : content/media/test/test_webvtt_disabled.html => dom/media/test/test_webvtt_disabled.html rename : content/media/test/variable-channel.ogg => dom/media/test/variable-channel.ogg rename : content/media/test/variable-channel.ogg^headers^ => dom/media/test/variable-channel.ogg^headers^ rename : content/media/test/variable-channel.opus => dom/media/test/variable-channel.opus rename : content/media/test/variable-channel.opus^headers^ => dom/media/test/variable-channel.opus^headers^ rename : content/media/test/variable-preskip.opus => dom/media/test/variable-preskip.opus rename : content/media/test/variable-preskip.opus^headers^ => dom/media/test/variable-preskip.opus^headers^ rename : content/media/test/variable-samplerate.ogg => dom/media/test/variable-samplerate.ogg rename : content/media/test/variable-samplerate.ogg^headers^ => dom/media/test/variable-samplerate.ogg^headers^ rename : content/media/test/variable-samplerate.opus => dom/media/test/variable-samplerate.opus rename : content/media/test/variable-samplerate.opus^headers^ => dom/media/test/variable-samplerate.opus^headers^ rename : content/media/test/vbr-head.mp3 => dom/media/test/vbr-head.mp3 rename : content/media/test/vbr-head.mp3^headers^ => dom/media/test/vbr-head.mp3^headers^ rename : content/media/test/vbr.mp3 => dom/media/test/vbr.mp3 rename : content/media/test/vbr.mp3^headers^ => dom/media/test/vbr.mp3^headers^ rename : content/media/test/video-overhang.ogg => dom/media/test/video-overhang.ogg rename : content/media/test/video-overhang.ogg^headers^ => dom/media/test/video-overhang.ogg^headers^ rename : content/media/test/vp9.webm => dom/media/test/vp9.webm rename : content/media/test/vp9.webm^headers^ => dom/media/test/vp9.webm^headers^ rename : content/media/test/vp9cake.webm => dom/media/test/vp9cake.webm rename : content/media/test/vp9cake.webm^headers^ => dom/media/test/vp9cake.webm^headers^ rename : content/media/test/wave_metadata.wav => dom/media/test/wave_metadata.wav rename : content/media/test/wave_metadata.wav^headers^ => dom/media/test/wave_metadata.wav^headers^ rename : content/media/test/wave_metadata_bad_len.wav => dom/media/test/wave_metadata_bad_len.wav rename : content/media/test/wave_metadata_bad_len.wav^headers^ => dom/media/test/wave_metadata_bad_len.wav^headers^ rename : content/media/test/wave_metadata_bad_no_null.wav => dom/media/test/wave_metadata_bad_no_null.wav rename : content/media/test/wave_metadata_bad_no_null.wav^headers^ => dom/media/test/wave_metadata_bad_no_null.wav^headers^ rename : content/media/test/wave_metadata_bad_utf8.wav => dom/media/test/wave_metadata_bad_utf8.wav rename : content/media/test/wave_metadata_bad_utf8.wav^headers^ => dom/media/test/wave_metadata_bad_utf8.wav^headers^ rename : content/media/test/wave_metadata_unknown_tag.wav => dom/media/test/wave_metadata_unknown_tag.wav rename : content/media/test/wave_metadata_unknown_tag.wav^headers^ => dom/media/test/wave_metadata_unknown_tag.wav^headers^ rename : content/media/test/wave_metadata_utf8.wav => dom/media/test/wave_metadata_utf8.wav rename : content/media/test/wave_metadata_utf8.wav^headers^ => dom/media/test/wave_metadata_utf8.wav^headers^ rename : content/media/test/wavedata_s16.wav => dom/media/test/wavedata_s16.wav rename : content/media/test/wavedata_s16.wav^headers^ => dom/media/test/wavedata_s16.wav^headers^ rename : content/media/test/wavedata_u8.wav => dom/media/test/wavedata_u8.wav rename : content/media/test/wavedata_u8.wav^headers^ => dom/media/test/wavedata_u8.wav^headers^ rename : content/media/wave/WaveDecoder.cpp => dom/media/wave/WaveDecoder.cpp rename : content/media/wave/WaveDecoder.h => dom/media/wave/WaveDecoder.h rename : content/media/wave/WaveReader.cpp => dom/media/wave/WaveReader.cpp rename : content/media/wave/WaveReader.h => dom/media/wave/WaveReader.h rename : content/media/wave/moz.build => dom/media/wave/moz.build rename : content/media/webaudio/AnalyserNode.cpp => dom/media/webaudio/AnalyserNode.cpp rename : content/media/webaudio/AnalyserNode.h => dom/media/webaudio/AnalyserNode.h rename : content/media/webaudio/AudioBuffer.cpp => dom/media/webaudio/AudioBuffer.cpp rename : content/media/webaudio/AudioBuffer.h => dom/media/webaudio/AudioBuffer.h rename : content/media/webaudio/AudioBufferSourceNode.cpp => dom/media/webaudio/AudioBufferSourceNode.cpp rename : content/media/webaudio/AudioBufferSourceNode.h => dom/media/webaudio/AudioBufferSourceNode.h rename : content/media/webaudio/AudioContext.cpp => dom/media/webaudio/AudioContext.cpp rename : content/media/webaudio/AudioContext.h => dom/media/webaudio/AudioContext.h rename : content/media/webaudio/AudioDestinationNode.cpp => dom/media/webaudio/AudioDestinationNode.cpp rename : content/media/webaudio/AudioDestinationNode.h => dom/media/webaudio/AudioDestinationNode.h rename : content/media/webaudio/AudioEventTimeline.h => dom/media/webaudio/AudioEventTimeline.h rename : content/media/webaudio/AudioListener.cpp => dom/media/webaudio/AudioListener.cpp rename : content/media/webaudio/AudioListener.h => dom/media/webaudio/AudioListener.h rename : content/media/webaudio/AudioNode.cpp => dom/media/webaudio/AudioNode.cpp rename : content/media/webaudio/AudioNode.h => dom/media/webaudio/AudioNode.h rename : content/media/webaudio/AudioNodeEngine.cpp => dom/media/webaudio/AudioNodeEngine.cpp rename : content/media/webaudio/AudioNodeEngine.h => dom/media/webaudio/AudioNodeEngine.h rename : content/media/webaudio/AudioNodeEngineNEON.cpp => dom/media/webaudio/AudioNodeEngineNEON.cpp rename : content/media/webaudio/AudioNodeEngineNEON.h => dom/media/webaudio/AudioNodeEngineNEON.h rename : content/media/webaudio/AudioNodeExternalInputStream.cpp => dom/media/webaudio/AudioNodeExternalInputStream.cpp rename : content/media/webaudio/AudioNodeExternalInputStream.h => dom/media/webaudio/AudioNodeExternalInputStream.h rename : content/media/webaudio/AudioNodeStream.cpp => dom/media/webaudio/AudioNodeStream.cpp rename : content/media/webaudio/AudioNodeStream.h => dom/media/webaudio/AudioNodeStream.h rename : content/media/webaudio/AudioParam.cpp => dom/media/webaudio/AudioParam.cpp rename : content/media/webaudio/AudioParam.h => dom/media/webaudio/AudioParam.h rename : content/media/webaudio/AudioParamTimeline.h => dom/media/webaudio/AudioParamTimeline.h rename : content/media/webaudio/AudioProcessingEvent.cpp => dom/media/webaudio/AudioProcessingEvent.cpp rename : content/media/webaudio/AudioProcessingEvent.h => dom/media/webaudio/AudioProcessingEvent.h rename : content/media/webaudio/BiquadFilterNode.cpp => dom/media/webaudio/BiquadFilterNode.cpp rename : content/media/webaudio/BiquadFilterNode.h => dom/media/webaudio/BiquadFilterNode.h rename : content/media/webaudio/BufferDecoder.cpp => dom/media/webaudio/BufferDecoder.cpp rename : content/media/webaudio/BufferDecoder.h => dom/media/webaudio/BufferDecoder.h rename : content/media/webaudio/ChannelMergerNode.cpp => dom/media/webaudio/ChannelMergerNode.cpp rename : content/media/webaudio/ChannelMergerNode.h => dom/media/webaudio/ChannelMergerNode.h rename : content/media/webaudio/ChannelSplitterNode.cpp => dom/media/webaudio/ChannelSplitterNode.cpp rename : content/media/webaudio/ChannelSplitterNode.h => dom/media/webaudio/ChannelSplitterNode.h rename : content/media/webaudio/ConvolverNode.cpp => dom/media/webaudio/ConvolverNode.cpp rename : content/media/webaudio/ConvolverNode.h => dom/media/webaudio/ConvolverNode.h rename : content/media/webaudio/DelayBuffer.cpp => dom/media/webaudio/DelayBuffer.cpp rename : content/media/webaudio/DelayBuffer.h => dom/media/webaudio/DelayBuffer.h rename : content/media/webaudio/DelayNode.cpp => dom/media/webaudio/DelayNode.cpp rename : content/media/webaudio/DelayNode.h => dom/media/webaudio/DelayNode.h rename : content/media/webaudio/DynamicsCompressorNode.cpp => dom/media/webaudio/DynamicsCompressorNode.cpp rename : content/media/webaudio/DynamicsCompressorNode.h => dom/media/webaudio/DynamicsCompressorNode.h rename : content/media/webaudio/FFTBlock.cpp => dom/media/webaudio/FFTBlock.cpp rename : content/media/webaudio/FFTBlock.h => dom/media/webaudio/FFTBlock.h rename : content/media/webaudio/GainNode.cpp => dom/media/webaudio/GainNode.cpp rename : content/media/webaudio/GainNode.h => dom/media/webaudio/GainNode.h rename : content/media/webaudio/MediaBufferDecoder.cpp => dom/media/webaudio/MediaBufferDecoder.cpp rename : content/media/webaudio/MediaBufferDecoder.h => dom/media/webaudio/MediaBufferDecoder.h rename : content/media/webaudio/MediaElementAudioSourceNode.cpp => dom/media/webaudio/MediaElementAudioSourceNode.cpp rename : content/media/webaudio/MediaElementAudioSourceNode.h => dom/media/webaudio/MediaElementAudioSourceNode.h rename : content/media/webaudio/MediaStreamAudioDestinationNode.cpp => dom/media/webaudio/MediaStreamAudioDestinationNode.cpp rename : content/media/webaudio/MediaStreamAudioDestinationNode.h => dom/media/webaudio/MediaStreamAudioDestinationNode.h rename : content/media/webaudio/MediaStreamAudioSourceNode.cpp => dom/media/webaudio/MediaStreamAudioSourceNode.cpp rename : content/media/webaudio/MediaStreamAudioSourceNode.h => dom/media/webaudio/MediaStreamAudioSourceNode.h rename : content/media/webaudio/OfflineAudioCompletionEvent.cpp => dom/media/webaudio/OfflineAudioCompletionEvent.cpp rename : content/media/webaudio/OfflineAudioCompletionEvent.h => dom/media/webaudio/OfflineAudioCompletionEvent.h rename : content/media/webaudio/OscillatorNode.cpp => dom/media/webaudio/OscillatorNode.cpp rename : content/media/webaudio/OscillatorNode.h => dom/media/webaudio/OscillatorNode.h rename : content/media/webaudio/PannerNode.cpp => dom/media/webaudio/PannerNode.cpp rename : content/media/webaudio/PannerNode.h => dom/media/webaudio/PannerNode.h rename : content/media/webaudio/PeriodicWave.cpp => dom/media/webaudio/PeriodicWave.cpp rename : content/media/webaudio/PeriodicWave.h => dom/media/webaudio/PeriodicWave.h rename : content/media/webaudio/PlayingRefChangeHandler.h => dom/media/webaudio/PlayingRefChangeHandler.h rename : content/media/webaudio/ReportDecodeResultTask.h => dom/media/webaudio/ReportDecodeResultTask.h rename : content/media/webaudio/ScriptProcessorNode.cpp => dom/media/webaudio/ScriptProcessorNode.cpp rename : content/media/webaudio/ScriptProcessorNode.h => dom/media/webaudio/ScriptProcessorNode.h rename : content/media/webaudio/ThreeDPoint.cpp => dom/media/webaudio/ThreeDPoint.cpp rename : content/media/webaudio/ThreeDPoint.h => dom/media/webaudio/ThreeDPoint.h rename : content/media/webaudio/WaveShaperNode.cpp => dom/media/webaudio/WaveShaperNode.cpp rename : content/media/webaudio/WaveShaperNode.h => dom/media/webaudio/WaveShaperNode.h rename : content/media/webaudio/WebAudioUtils.cpp => dom/media/webaudio/WebAudioUtils.cpp rename : content/media/webaudio/WebAudioUtils.h => dom/media/webaudio/WebAudioUtils.h rename : content/media/webaudio/blink/Biquad.cpp => dom/media/webaudio/blink/Biquad.cpp rename : content/media/webaudio/blink/Biquad.h => dom/media/webaudio/blink/Biquad.h rename : content/media/webaudio/blink/DenormalDisabler.h => dom/media/webaudio/blink/DenormalDisabler.h rename : content/media/webaudio/blink/DirectConvolver.cpp => dom/media/webaudio/blink/DirectConvolver.cpp rename : content/media/webaudio/blink/DirectConvolver.h => dom/media/webaudio/blink/DirectConvolver.h rename : content/media/webaudio/blink/DynamicsCompressor.cpp => dom/media/webaudio/blink/DynamicsCompressor.cpp rename : content/media/webaudio/blink/DynamicsCompressor.h => dom/media/webaudio/blink/DynamicsCompressor.h rename : content/media/webaudio/blink/DynamicsCompressorKernel.cpp => dom/media/webaudio/blink/DynamicsCompressorKernel.cpp rename : content/media/webaudio/blink/DynamicsCompressorKernel.h => dom/media/webaudio/blink/DynamicsCompressorKernel.h rename : content/media/webaudio/blink/FFTConvolver.cpp => dom/media/webaudio/blink/FFTConvolver.cpp rename : content/media/webaudio/blink/FFTConvolver.h => dom/media/webaudio/blink/FFTConvolver.h rename : content/media/webaudio/blink/HRTFDatabase.cpp => dom/media/webaudio/blink/HRTFDatabase.cpp rename : content/media/webaudio/blink/HRTFDatabase.h => dom/media/webaudio/blink/HRTFDatabase.h rename : content/media/webaudio/blink/HRTFDatabaseLoader.cpp => dom/media/webaudio/blink/HRTFDatabaseLoader.cpp rename : content/media/webaudio/blink/HRTFDatabaseLoader.h => dom/media/webaudio/blink/HRTFDatabaseLoader.h rename : content/media/webaudio/blink/HRTFElevation.cpp => dom/media/webaudio/blink/HRTFElevation.cpp rename : content/media/webaudio/blink/HRTFElevation.h => dom/media/webaudio/blink/HRTFElevation.h rename : content/media/webaudio/blink/HRTFKernel.cpp => dom/media/webaudio/blink/HRTFKernel.cpp rename : content/media/webaudio/blink/HRTFKernel.h => dom/media/webaudio/blink/HRTFKernel.h rename : content/media/webaudio/blink/HRTFPanner.cpp => dom/media/webaudio/blink/HRTFPanner.cpp rename : content/media/webaudio/blink/HRTFPanner.h => dom/media/webaudio/blink/HRTFPanner.h rename : content/media/webaudio/blink/IRC_Composite_C_R0195-incl.cpp => dom/media/webaudio/blink/IRC_Composite_C_R0195-incl.cpp rename : content/media/webaudio/blink/PeriodicWave.cpp => dom/media/webaudio/blink/PeriodicWave.cpp rename : content/media/webaudio/blink/PeriodicWave.h => dom/media/webaudio/blink/PeriodicWave.h rename : content/media/webaudio/blink/README => dom/media/webaudio/blink/README rename : content/media/webaudio/blink/Reverb.cpp => dom/media/webaudio/blink/Reverb.cpp rename : content/media/webaudio/blink/Reverb.h => dom/media/webaudio/blink/Reverb.h rename : content/media/webaudio/blink/ReverbAccumulationBuffer.cpp => dom/media/webaudio/blink/ReverbAccumulationBuffer.cpp rename : content/media/webaudio/blink/ReverbAccumulationBuffer.h => dom/media/webaudio/blink/ReverbAccumulationBuffer.h rename : content/media/webaudio/blink/ReverbConvolver.cpp => dom/media/webaudio/blink/ReverbConvolver.cpp rename : content/media/webaudio/blink/ReverbConvolver.h => dom/media/webaudio/blink/ReverbConvolver.h rename : content/media/webaudio/blink/ReverbConvolverStage.cpp => dom/media/webaudio/blink/ReverbConvolverStage.cpp rename : content/media/webaudio/blink/ReverbConvolverStage.h => dom/media/webaudio/blink/ReverbConvolverStage.h rename : content/media/webaudio/blink/ReverbInputBuffer.cpp => dom/media/webaudio/blink/ReverbInputBuffer.cpp rename : content/media/webaudio/blink/ReverbInputBuffer.h => dom/media/webaudio/blink/ReverbInputBuffer.h rename : content/media/webaudio/blink/ZeroPole.cpp => dom/media/webaudio/blink/ZeroPole.cpp rename : content/media/webaudio/blink/ZeroPole.h => dom/media/webaudio/blink/ZeroPole.h rename : content/media/webaudio/blink/moz.build => dom/media/webaudio/blink/moz.build rename : content/media/webaudio/compiledtest/TestAudioEventTimeline.cpp => dom/media/webaudio/compiledtest/TestAudioEventTimeline.cpp rename : content/media/webaudio/compiledtest/moz.build => dom/media/webaudio/compiledtest/moz.build rename : content/media/webaudio/moz.build => dom/media/webaudio/moz.build rename : content/media/webaudio/test/audio-expected.wav => dom/media/webaudio/test/audio-expected.wav rename : content/media/webaudio/test/audio-mono-expected-2.wav => dom/media/webaudio/test/audio-mono-expected-2.wav rename : content/media/webaudio/test/audio-mono-expected.wav => dom/media/webaudio/test/audio-mono-expected.wav rename : content/media/webaudio/test/audio-quad.wav => dom/media/webaudio/test/audio-quad.wav rename : content/media/webaudio/test/audio.ogv => dom/media/webaudio/test/audio.ogv rename : content/media/webaudio/test/audioBufferSourceNodeNeutered_worker.js => dom/media/webaudio/test/audioBufferSourceNodeNeutered_worker.js rename : content/media/webaudio/test/blink/README => dom/media/webaudio/test/blink/README rename : content/media/webaudio/test/blink/audio-testing.js => dom/media/webaudio/test/blink/audio-testing.js rename : content/media/webaudio/test/blink/convolution-testing.js => dom/media/webaudio/test/blink/convolution-testing.js rename : content/media/webaudio/test/blink/mochitest.ini => dom/media/webaudio/test/blink/mochitest.ini rename : content/media/webaudio/test/blink/panner-model-testing.js => dom/media/webaudio/test/blink/panner-model-testing.js rename : content/media/webaudio/test/browser.ini => dom/media/webaudio/test/browser.ini rename : content/media/webaudio/test/browser_mozAudioChannel.html => dom/media/webaudio/test/browser_mozAudioChannel.html rename : content/media/webaudio/test/browser_mozAudioChannel.js => dom/media/webaudio/test/browser_mozAudioChannel.js rename : content/media/webaudio/test/browser_mozAudioChannel_muted.html => dom/media/webaudio/test/browser_mozAudioChannel_muted.html rename : content/media/webaudio/test/browser_mozAudioChannel_muted.js => dom/media/webaudio/test/browser_mozAudioChannel_muted.js rename : content/media/webaudio/test/chrome.ini => dom/media/webaudio/test/chrome.ini rename : content/media/webaudio/test/invalid.txt => dom/media/webaudio/test/invalid.txt rename : content/media/webaudio/test/layouttest-glue.js => dom/media/webaudio/test/layouttest-glue.js rename : content/media/webaudio/test/mochitest.ini => dom/media/webaudio/test/mochitest.ini rename : content/media/webaudio/test/noaudio.webm => dom/media/webaudio/test/noaudio.webm rename : content/media/webaudio/test/small-shot-expected.wav => dom/media/webaudio/test/small-shot-expected.wav rename : content/media/webaudio/test/small-shot-mono-expected.wav => dom/media/webaudio/test/small-shot-mono-expected.wav rename : content/media/webaudio/test/small-shot.mp3 => dom/media/webaudio/test/small-shot.mp3 rename : content/media/webaudio/test/small-shot.ogg => dom/media/webaudio/test/small-shot.ogg rename : content/media/webaudio/test/test_AudioBuffer.html => dom/media/webaudio/test/test_AudioBuffer.html rename : content/media/webaudio/test/test_AudioContext.html => dom/media/webaudio/test/test_AudioContext.html rename : content/media/webaudio/test/test_AudioListener.html => dom/media/webaudio/test/test_AudioListener.html rename : content/media/webaudio/test/test_AudioNodeDevtoolsAPI.html => dom/media/webaudio/test/test_AudioNodeDevtoolsAPI.html rename : content/media/webaudio/test/test_OfflineAudioContext.html => dom/media/webaudio/test/test_OfflineAudioContext.html rename : content/media/webaudio/test/test_analyserNode.html => dom/media/webaudio/test/test_analyserNode.html rename : content/media/webaudio/test/test_analyserNodeOutput.html => dom/media/webaudio/test/test_analyserNodeOutput.html rename : content/media/webaudio/test/test_analyserNodePassThrough.html => dom/media/webaudio/test/test_analyserNodePassThrough.html rename : content/media/webaudio/test/test_audioBufferSourceNode.html => dom/media/webaudio/test/test_audioBufferSourceNode.html rename : content/media/webaudio/test/test_audioBufferSourceNodeEnded.html => dom/media/webaudio/test/test_audioBufferSourceNodeEnded.html rename : content/media/webaudio/test/test_audioBufferSourceNodeLazyLoopParam.html => dom/media/webaudio/test/test_audioBufferSourceNodeLazyLoopParam.html rename : content/media/webaudio/test/test_audioBufferSourceNodeLoop.html => dom/media/webaudio/test/test_audioBufferSourceNodeLoop.html rename : content/media/webaudio/test/test_audioBufferSourceNodeLoopStartEnd.html => dom/media/webaudio/test/test_audioBufferSourceNodeLoopStartEnd.html rename : content/media/webaudio/test/test_audioBufferSourceNodeLoopStartEndSame.html => dom/media/webaudio/test/test_audioBufferSourceNodeLoopStartEndSame.html rename : content/media/webaudio/test/test_audioBufferSourceNodeNeutered.html => dom/media/webaudio/test/test_audioBufferSourceNodeNeutered.html rename : content/media/webaudio/test/test_audioBufferSourceNodeNoStart.html => dom/media/webaudio/test/test_audioBufferSourceNodeNoStart.html rename : content/media/webaudio/test/test_audioBufferSourceNodeNullBuffer.html => dom/media/webaudio/test/test_audioBufferSourceNodeNullBuffer.html rename : content/media/webaudio/test/test_audioBufferSourceNodeOffset.html => dom/media/webaudio/test/test_audioBufferSourceNodeOffset.html rename : content/media/webaudio/test/test_audioBufferSourceNodePassThrough.html => dom/media/webaudio/test/test_audioBufferSourceNodePassThrough.html rename : content/media/webaudio/test/test_audioDestinationNode.html => dom/media/webaudio/test/test_audioDestinationNode.html rename : content/media/webaudio/test/test_audioParamExponentialRamp.html => dom/media/webaudio/test/test_audioParamExponentialRamp.html rename : content/media/webaudio/test/test_audioParamGain.html => dom/media/webaudio/test/test_audioParamGain.html rename : content/media/webaudio/test/test_audioParamLinearRamp.html => dom/media/webaudio/test/test_audioParamLinearRamp.html rename : content/media/webaudio/test/test_audioParamSetCurveAtTime.html => dom/media/webaudio/test/test_audioParamSetCurveAtTime.html rename : content/media/webaudio/test/test_audioParamSetCurveAtTimeZeroDuration.html => dom/media/webaudio/test/test_audioParamSetCurveAtTimeZeroDuration.html rename : content/media/webaudio/test/test_audioParamSetTargetAtTime.html => dom/media/webaudio/test/test_audioParamSetTargetAtTime.html rename : content/media/webaudio/test/test_audioParamSetValueAtTime.html => dom/media/webaudio/test/test_audioParamSetValueAtTime.html rename : content/media/webaudio/test/test_audioParamTimelineDestinationOffset.html => dom/media/webaudio/test/test_audioParamTimelineDestinationOffset.html rename : content/media/webaudio/test/test_badConnect.html => dom/media/webaudio/test/test_badConnect.html rename : content/media/webaudio/test/test_biquadFilterNode.html => dom/media/webaudio/test/test_biquadFilterNode.html rename : content/media/webaudio/test/test_biquadFilterNodePassThrough.html => dom/media/webaudio/test/test_biquadFilterNodePassThrough.html rename : content/media/webaudio/test/test_biquadFilterNodeWithGain.html => dom/media/webaudio/test/test_biquadFilterNodeWithGain.html rename : content/media/webaudio/test/test_bug1056032.html => dom/media/webaudio/test/test_bug1056032.html rename : content/media/webaudio/test/test_bug808374.html => dom/media/webaudio/test/test_bug808374.html rename : content/media/webaudio/test/test_bug827541.html => dom/media/webaudio/test/test_bug827541.html rename : content/media/webaudio/test/test_bug839753.html => dom/media/webaudio/test/test_bug839753.html rename : content/media/webaudio/test/test_bug845960.html => dom/media/webaudio/test/test_bug845960.html rename : content/media/webaudio/test/test_bug856771.html => dom/media/webaudio/test/test_bug856771.html rename : content/media/webaudio/test/test_bug866570.html => dom/media/webaudio/test/test_bug866570.html rename : content/media/webaudio/test/test_bug866737.html => dom/media/webaudio/test/test_bug866737.html rename : content/media/webaudio/test/test_bug867089.html => dom/media/webaudio/test/test_bug867089.html rename : content/media/webaudio/test/test_bug867104.html => dom/media/webaudio/test/test_bug867104.html rename : content/media/webaudio/test/test_bug867174.html => dom/media/webaudio/test/test_bug867174.html rename : content/media/webaudio/test/test_bug867203.html => dom/media/webaudio/test/test_bug867203.html rename : content/media/webaudio/test/test_bug875221.html => dom/media/webaudio/test/test_bug875221.html rename : content/media/webaudio/test/test_bug875402.html => dom/media/webaudio/test/test_bug875402.html rename : content/media/webaudio/test/test_bug894150.html => dom/media/webaudio/test/test_bug894150.html rename : content/media/webaudio/test/test_bug956489.html => dom/media/webaudio/test/test_bug956489.html rename : content/media/webaudio/test/test_bug964376.html => dom/media/webaudio/test/test_bug964376.html rename : content/media/webaudio/test/test_bug972678.html => dom/media/webaudio/test/test_bug972678.html rename : content/media/webaudio/test/test_channelMergerNode.html => dom/media/webaudio/test/test_channelMergerNode.html rename : content/media/webaudio/test/test_channelMergerNodeWithVolume.html => dom/media/webaudio/test/test_channelMergerNodeWithVolume.html rename : content/media/webaudio/test/test_channelSplitterNode.html => dom/media/webaudio/test/test_channelSplitterNode.html rename : content/media/webaudio/test/test_channelSplitterNodeWithVolume.html => dom/media/webaudio/test/test_channelSplitterNodeWithVolume.html rename : content/media/webaudio/test/test_convolverNode.html => dom/media/webaudio/test/test_convolverNode.html rename : content/media/webaudio/test/test_convolverNodeChannelCount.html => dom/media/webaudio/test/test_convolverNodeChannelCount.html rename : content/media/webaudio/test/test_convolverNodePassThrough.html => dom/media/webaudio/test/test_convolverNodePassThrough.html rename : content/media/webaudio/test/test_convolverNodeWithGain.html => dom/media/webaudio/test/test_convolverNodeWithGain.html rename : content/media/webaudio/test/test_convolverNode_mono_mono.html => dom/media/webaudio/test/test_convolverNode_mono_mono.html rename : content/media/webaudio/test/test_currentTime.html => dom/media/webaudio/test/test_currentTime.html rename : content/media/webaudio/test/test_decodeMultichannel.html => dom/media/webaudio/test/test_decodeMultichannel.html rename : content/media/webaudio/test/test_delayNode.html => dom/media/webaudio/test/test_delayNode.html rename : content/media/webaudio/test/test_delayNodeAtMax.html => dom/media/webaudio/test/test_delayNodeAtMax.html rename : content/media/webaudio/test/test_delayNodeChannelChanges.html => dom/media/webaudio/test/test_delayNodeChannelChanges.html rename : content/media/webaudio/test/test_delayNodeCycles.html => dom/media/webaudio/test/test_delayNodeCycles.html rename : content/media/webaudio/test/test_delayNodePassThrough.html => dom/media/webaudio/test/test_delayNodePassThrough.html rename : content/media/webaudio/test/test_delayNodeSmallMaxDelay.html => dom/media/webaudio/test/test_delayNodeSmallMaxDelay.html rename : content/media/webaudio/test/test_delayNodeTailIncrease.html => dom/media/webaudio/test/test_delayNodeTailIncrease.html rename : content/media/webaudio/test/test_delayNodeTailWithDisconnect.html => dom/media/webaudio/test/test_delayNodeTailWithDisconnect.html rename : content/media/webaudio/test/test_delayNodeTailWithGain.html => dom/media/webaudio/test/test_delayNodeTailWithGain.html rename : content/media/webaudio/test/test_delayNodeTailWithReconnect.html => dom/media/webaudio/test/test_delayNodeTailWithReconnect.html rename : content/media/webaudio/test/test_delayNodeWithGain.html => dom/media/webaudio/test/test_delayNodeWithGain.html rename : content/media/webaudio/test/test_dynamicsCompressorNode.html => dom/media/webaudio/test/test_dynamicsCompressorNode.html rename : content/media/webaudio/test/test_dynamicsCompressorNodePassThrough.html => dom/media/webaudio/test/test_dynamicsCompressorNodePassThrough.html rename : content/media/webaudio/test/test_gainNode.html => dom/media/webaudio/test/test_gainNode.html rename : content/media/webaudio/test/test_gainNodeInLoop.html => dom/media/webaudio/test/test_gainNodeInLoop.html rename : content/media/webaudio/test/test_gainNodePassThrough.html => dom/media/webaudio/test/test_gainNodePassThrough.html rename : content/media/webaudio/test/test_maxChannelCount.html => dom/media/webaudio/test/test_maxChannelCount.html rename : content/media/webaudio/test/test_mediaDecoding.html => dom/media/webaudio/test/test_mediaDecoding.html rename : content/media/webaudio/test/test_mediaElementAudioSourceNode.html => dom/media/webaudio/test/test_mediaElementAudioSourceNode.html rename : content/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html => dom/media/webaudio/test/test_mediaElementAudioSourceNodePassThrough.html rename : content/media/webaudio/test/test_mediaStreamAudioDestinationNode.html => dom/media/webaudio/test/test_mediaStreamAudioDestinationNode.html rename : content/media/webaudio/test/test_mediaStreamAudioSourceNode.html => dom/media/webaudio/test/test_mediaStreamAudioSourceNode.html rename : content/media/webaudio/test/test_mediaStreamAudioSourceNodeCrossOrigin.html => dom/media/webaudio/test/test_mediaStreamAudioSourceNodeCrossOrigin.html rename : content/media/webaudio/test/test_mediaStreamAudioSourceNodePassThrough.html => dom/media/webaudio/test/test_mediaStreamAudioSourceNodePassThrough.html rename : content/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html => dom/media/webaudio/test/test_mediaStreamAudioSourceNodeResampling.html rename : content/media/webaudio/test/test_mixingRules.html => dom/media/webaudio/test/test_mixingRules.html rename : content/media/webaudio/test/test_mozaudiochannel.html => dom/media/webaudio/test/test_mozaudiochannel.html rename : content/media/webaudio/test/test_nodeToParamConnection.html => dom/media/webaudio/test/test_nodeToParamConnection.html rename : content/media/webaudio/test/test_offlineDestinationChannelCountLess.html => dom/media/webaudio/test/test_offlineDestinationChannelCountLess.html rename : content/media/webaudio/test/test_offlineDestinationChannelCountMore.html => dom/media/webaudio/test/test_offlineDestinationChannelCountMore.html rename : content/media/webaudio/test/test_oscillatorNode.html => dom/media/webaudio/test/test_oscillatorNode.html rename : content/media/webaudio/test/test_oscillatorNode2.html => dom/media/webaudio/test/test_oscillatorNode2.html rename : content/media/webaudio/test/test_oscillatorNodePassThrough.html => dom/media/webaudio/test/test_oscillatorNodePassThrough.html rename : content/media/webaudio/test/test_oscillatorNodeStart.html => dom/media/webaudio/test/test_oscillatorNodeStart.html rename : content/media/webaudio/test/test_oscillatorTypeChange.html => dom/media/webaudio/test/test_oscillatorTypeChange.html rename : content/media/webaudio/test/test_pannerNode.html => dom/media/webaudio/test/test_pannerNode.html rename : content/media/webaudio/test/test_pannerNodeAbove.html => dom/media/webaudio/test/test_pannerNodeAbove.html rename : content/media/webaudio/test/test_pannerNodeChannelCount.html => dom/media/webaudio/test/test_pannerNodeChannelCount.html rename : content/media/webaudio/test/test_pannerNodeHRTFSymmetry.html => dom/media/webaudio/test/test_pannerNodeHRTFSymmetry.html rename : content/media/webaudio/test/test_pannerNodePassThrough.html => dom/media/webaudio/test/test_pannerNodePassThrough.html rename : content/media/webaudio/test/test_pannerNodeTail.html => dom/media/webaudio/test/test_pannerNodeTail.html rename : content/media/webaudio/test/test_pannerNode_equalPower.html => dom/media/webaudio/test/test_pannerNode_equalPower.html rename : content/media/webaudio/test/test_periodicWave.html => dom/media/webaudio/test/test_periodicWave.html rename : content/media/webaudio/test/test_scriptProcessorNode.html => dom/media/webaudio/test/test_scriptProcessorNode.html rename : content/media/webaudio/test/test_scriptProcessorNodeChannelCount.html => dom/media/webaudio/test/test_scriptProcessorNodeChannelCount.html rename : content/media/webaudio/test/test_scriptProcessorNodeNotConnected.html => dom/media/webaudio/test/test_scriptProcessorNodeNotConnected.html rename : content/media/webaudio/test/test_scriptProcessorNodePassThrough.html => dom/media/webaudio/test/test_scriptProcessorNodePassThrough.html rename : content/media/webaudio/test/test_scriptProcessorNodeZeroInputOutput.html => dom/media/webaudio/test/test_scriptProcessorNodeZeroInputOutput.html rename : content/media/webaudio/test/test_scriptProcessorNode_playbackTime1.html => dom/media/webaudio/test/test_scriptProcessorNode_playbackTime1.html rename : content/media/webaudio/test/test_singleSourceDest.html => dom/media/webaudio/test/test_singleSourceDest.html rename : content/media/webaudio/test/test_stereoPanningWithGain.html => dom/media/webaudio/test/test_stereoPanningWithGain.html rename : content/media/webaudio/test/test_waveDecoder.html => dom/media/webaudio/test/test_waveDecoder.html rename : content/media/webaudio/test/test_waveShaper.html => dom/media/webaudio/test/test_waveShaper.html rename : content/media/webaudio/test/test_waveShaperNoCurve.html => dom/media/webaudio/test/test_waveShaperNoCurve.html rename : content/media/webaudio/test/test_waveShaperPassThrough.html => dom/media/webaudio/test/test_waveShaperPassThrough.html rename : content/media/webaudio/test/test_waveShaperZeroLengthCurve.html => dom/media/webaudio/test/test_waveShaperZeroLengthCurve.html rename : content/media/webaudio/test/ting-44.1k-1ch.ogg => dom/media/webaudio/test/ting-44.1k-1ch.ogg rename : content/media/webaudio/test/ting-44.1k-1ch.wav => dom/media/webaudio/test/ting-44.1k-1ch.wav rename : content/media/webaudio/test/ting-44.1k-2ch.ogg => dom/media/webaudio/test/ting-44.1k-2ch.ogg rename : content/media/webaudio/test/ting-44.1k-2ch.wav => dom/media/webaudio/test/ting-44.1k-2ch.wav rename : content/media/webaudio/test/ting-48k-1ch.ogg => dom/media/webaudio/test/ting-48k-1ch.ogg rename : content/media/webaudio/test/ting-48k-1ch.wav => dom/media/webaudio/test/ting-48k-1ch.wav rename : content/media/webaudio/test/ting-48k-2ch.ogg => dom/media/webaudio/test/ting-48k-2ch.ogg rename : content/media/webaudio/test/ting-48k-2ch.wav => dom/media/webaudio/test/ting-48k-2ch.wav rename : content/media/webaudio/test/ting-dualchannel44.1.wav => dom/media/webaudio/test/ting-dualchannel44.1.wav rename : content/media/webaudio/test/ting-dualchannel48.wav => dom/media/webaudio/test/ting-dualchannel48.wav rename : content/media/webaudio/test/webaudio.js => dom/media/webaudio/test/webaudio.js rename : content/media/webm/EbmlComposer.cpp => dom/media/webm/EbmlComposer.cpp rename : content/media/webm/EbmlComposer.h => dom/media/webm/EbmlComposer.h rename : content/media/webm/WebMBufferedParser.cpp => dom/media/webm/WebMBufferedParser.cpp rename : content/media/webm/WebMBufferedParser.h => dom/media/webm/WebMBufferedParser.h rename : content/media/webm/WebMDecoder.cpp => dom/media/webm/WebMDecoder.cpp rename : content/media/webm/WebMDecoder.h => dom/media/webm/WebMDecoder.h rename : content/media/webm/WebMReader.cpp => dom/media/webm/WebMReader.cpp rename : content/media/webm/WebMReader.h => dom/media/webm/WebMReader.h rename : content/media/webm/WebMWriter.cpp => dom/media/webm/WebMWriter.cpp rename : content/media/webm/WebMWriter.h => dom/media/webm/WebMWriter.h rename : content/media/webm/moz.build => dom/media/webm/moz.build rename : content/media/webrtc/AudioOutputObserver.h => dom/media/webrtc/AudioOutputObserver.h rename : content/media/webrtc/MediaEngine.h => dom/media/webrtc/MediaEngine.h rename : content/media/webrtc/MediaEngineCameraVideoSource.cpp => dom/media/webrtc/MediaEngineCameraVideoSource.cpp rename : content/media/webrtc/MediaEngineCameraVideoSource.h => dom/media/webrtc/MediaEngineCameraVideoSource.h rename : content/media/webrtc/MediaEngineDefault.cpp => dom/media/webrtc/MediaEngineDefault.cpp rename : content/media/webrtc/MediaEngineDefault.h => dom/media/webrtc/MediaEngineDefault.h rename : content/media/webrtc/MediaEngineGonkVideoSource.cpp => dom/media/webrtc/MediaEngineGonkVideoSource.cpp rename : content/media/webrtc/MediaEngineGonkVideoSource.h => dom/media/webrtc/MediaEngineGonkVideoSource.h rename : content/media/webrtc/MediaEngineTabVideoSource.cpp => dom/media/webrtc/MediaEngineTabVideoSource.cpp rename : content/media/webrtc/MediaEngineTabVideoSource.h => dom/media/webrtc/MediaEngineTabVideoSource.h rename : content/media/webrtc/MediaEngineWebRTC.cpp => dom/media/webrtc/MediaEngineWebRTC.cpp rename : content/media/webrtc/MediaEngineWebRTC.h => dom/media/webrtc/MediaEngineWebRTC.h rename : content/media/webrtc/MediaEngineWebRTCAudio.cpp => dom/media/webrtc/MediaEngineWebRTCAudio.cpp rename : content/media/webrtc/MediaEngineWebRTCVideo.cpp => dom/media/webrtc/MediaEngineWebRTCVideo.cpp rename : content/media/webrtc/MediaTrackConstraints.h => dom/media/webrtc/MediaTrackConstraints.h rename : content/media/webrtc/PeerIdentity.cpp => dom/media/webrtc/PeerIdentity.cpp rename : content/media/webrtc/PeerIdentity.h => dom/media/webrtc/PeerIdentity.h rename : content/media/webrtc/moz.build => dom/media/webrtc/moz.build rename : content/media/webrtc/nsITabSource.idl => dom/media/webrtc/nsITabSource.idl rename : content/media/webspeech/moz.build => dom/media/webspeech/moz.build rename : content/media/webspeech/recognition/SpeechGrammar.cpp => dom/media/webspeech/recognition/SpeechGrammar.cpp rename : content/media/webspeech/recognition/SpeechGrammar.h => dom/media/webspeech/recognition/SpeechGrammar.h rename : content/media/webspeech/recognition/SpeechGrammarList.cpp => dom/media/webspeech/recognition/SpeechGrammarList.cpp rename : content/media/webspeech/recognition/SpeechGrammarList.h => dom/media/webspeech/recognition/SpeechGrammarList.h rename : content/media/webspeech/recognition/SpeechRecognition.cpp => dom/media/webspeech/recognition/SpeechRecognition.cpp rename : content/media/webspeech/recognition/SpeechRecognition.h => dom/media/webspeech/recognition/SpeechRecognition.h rename : content/media/webspeech/recognition/SpeechRecognitionAlternative.cpp => dom/media/webspeech/recognition/SpeechRecognitionAlternative.cpp rename : content/media/webspeech/recognition/SpeechRecognitionAlternative.h => dom/media/webspeech/recognition/SpeechRecognitionAlternative.h rename : content/media/webspeech/recognition/SpeechRecognitionResult.cpp => dom/media/webspeech/recognition/SpeechRecognitionResult.cpp rename : content/media/webspeech/recognition/SpeechRecognitionResult.h => dom/media/webspeech/recognition/SpeechRecognitionResult.h rename : content/media/webspeech/recognition/SpeechRecognitionResultList.cpp => dom/media/webspeech/recognition/SpeechRecognitionResultList.cpp rename : content/media/webspeech/recognition/SpeechRecognitionResultList.h => dom/media/webspeech/recognition/SpeechRecognitionResultList.h rename : content/media/webspeech/recognition/SpeechStreamListener.cpp => dom/media/webspeech/recognition/SpeechStreamListener.cpp rename : content/media/webspeech/recognition/SpeechStreamListener.h => dom/media/webspeech/recognition/SpeechStreamListener.h rename : content/media/webspeech/recognition/endpointer.cc => dom/media/webspeech/recognition/endpointer.cc rename : content/media/webspeech/recognition/endpointer.h => dom/media/webspeech/recognition/endpointer.h rename : content/media/webspeech/recognition/energy_endpointer.cc => dom/media/webspeech/recognition/energy_endpointer.cc rename : content/media/webspeech/recognition/energy_endpointer.h => dom/media/webspeech/recognition/energy_endpointer.h rename : content/media/webspeech/recognition/energy_endpointer_params.cc => dom/media/webspeech/recognition/energy_endpointer_params.cc rename : content/media/webspeech/recognition/energy_endpointer_params.h => dom/media/webspeech/recognition/energy_endpointer_params.h rename : content/media/webspeech/recognition/moz.build => dom/media/webspeech/recognition/moz.build rename : content/media/webspeech/recognition/nsISpeechRecognitionService.idl => dom/media/webspeech/recognition/nsISpeechRecognitionService.idl rename : content/media/webspeech/recognition/test/FakeSpeechRecognitionService.cpp => dom/media/webspeech/recognition/test/FakeSpeechRecognitionService.cpp rename : content/media/webspeech/recognition/test/FakeSpeechRecognitionService.h => dom/media/webspeech/recognition/test/FakeSpeechRecognitionService.h rename : content/media/webspeech/recognition/test/head.js => dom/media/webspeech/recognition/test/head.js rename : content/media/webspeech/recognition/test/hello.ogg => dom/media/webspeech/recognition/test/hello.ogg rename : content/media/webspeech/recognition/test/hello.ogg^headers^ => dom/media/webspeech/recognition/test/hello.ogg^headers^ rename : content/media/webspeech/recognition/test/mochitest.ini => dom/media/webspeech/recognition/test/mochitest.ini rename : content/media/webspeech/recognition/test/silence.ogg => dom/media/webspeech/recognition/test/silence.ogg rename : content/media/webspeech/recognition/test/silence.ogg^headers^ => dom/media/webspeech/recognition/test/silence.ogg^headers^ rename : content/media/webspeech/recognition/test/test_abort.html => dom/media/webspeech/recognition/test/test_abort.html rename : content/media/webspeech/recognition/test/test_audio_capture_error.html => dom/media/webspeech/recognition/test/test_audio_capture_error.html rename : content/media/webspeech/recognition/test/test_call_start_from_end_handler.html => dom/media/webspeech/recognition/test/test_call_start_from_end_handler.html rename : content/media/webspeech/recognition/test/test_nested_eventloop.html => dom/media/webspeech/recognition/test/test_nested_eventloop.html rename : content/media/webspeech/recognition/test/test_preference_enable.html => dom/media/webspeech/recognition/test/test_preference_enable.html rename : content/media/webspeech/recognition/test/test_recognition_service_error.html => dom/media/webspeech/recognition/test/test_recognition_service_error.html rename : content/media/webspeech/recognition/test/test_success_without_recognition_service.html => dom/media/webspeech/recognition/test/test_success_without_recognition_service.html rename : content/media/webspeech/recognition/test/test_timeout.html => dom/media/webspeech/recognition/test/test_timeout.html rename : content/media/webspeech/synth/SpeechSynthesis.cpp => dom/media/webspeech/synth/SpeechSynthesis.cpp rename : content/media/webspeech/synth/SpeechSynthesis.h => dom/media/webspeech/synth/SpeechSynthesis.h rename : content/media/webspeech/synth/SpeechSynthesisUtterance.cpp => dom/media/webspeech/synth/SpeechSynthesisUtterance.cpp rename : content/media/webspeech/synth/SpeechSynthesisUtterance.h => dom/media/webspeech/synth/SpeechSynthesisUtterance.h rename : content/media/webspeech/synth/SpeechSynthesisVoice.cpp => dom/media/webspeech/synth/SpeechSynthesisVoice.cpp rename : content/media/webspeech/synth/SpeechSynthesisVoice.h => dom/media/webspeech/synth/SpeechSynthesisVoice.h rename : content/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl => dom/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl rename : content/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl => dom/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl rename : content/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp => dom/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp rename : content/media/webspeech/synth/ipc/SpeechSynthesisChild.h => dom/media/webspeech/synth/ipc/SpeechSynthesisChild.h rename : content/media/webspeech/synth/ipc/SpeechSynthesisParent.cpp => dom/media/webspeech/synth/ipc/SpeechSynthesisParent.cpp rename : content/media/webspeech/synth/ipc/SpeechSynthesisParent.h => dom/media/webspeech/synth/ipc/SpeechSynthesisParent.h rename : content/media/webspeech/synth/ipc/test/file_ipc.html => dom/media/webspeech/synth/ipc/test/file_ipc.html rename : content/media/webspeech/synth/ipc/test/mochitest.ini => dom/media/webspeech/synth/ipc/test/mochitest.ini rename : content/media/webspeech/synth/ipc/test/test_ipc.html => dom/media/webspeech/synth/ipc/test/test_ipc.html rename : content/media/webspeech/synth/moz.build => dom/media/webspeech/synth/moz.build rename : content/media/webspeech/synth/nsISpeechService.idl => dom/media/webspeech/synth/nsISpeechService.idl rename : content/media/webspeech/synth/nsISynthVoiceRegistry.idl => dom/media/webspeech/synth/nsISynthVoiceRegistry.idl rename : content/media/webspeech/synth/nsSpeechTask.cpp => dom/media/webspeech/synth/nsSpeechTask.cpp rename : content/media/webspeech/synth/nsSpeechTask.h => dom/media/webspeech/synth/nsSpeechTask.h rename : content/media/webspeech/synth/nsSynthVoiceRegistry.cpp => dom/media/webspeech/synth/nsSynthVoiceRegistry.cpp rename : content/media/webspeech/synth/nsSynthVoiceRegistry.h => dom/media/webspeech/synth/nsSynthVoiceRegistry.h rename : content/media/webspeech/synth/pico/PicoModule.cpp => dom/media/webspeech/synth/pico/PicoModule.cpp rename : content/media/webspeech/synth/pico/moz.build => dom/media/webspeech/synth/pico/moz.build rename : content/media/webspeech/synth/pico/nsPicoService.cpp => dom/media/webspeech/synth/pico/nsPicoService.cpp rename : content/media/webspeech/synth/pico/nsPicoService.h => dom/media/webspeech/synth/pico/nsPicoService.h rename : content/media/webspeech/synth/test/common.js => dom/media/webspeech/synth/test/common.js rename : content/media/webspeech/synth/test/file_setup.html => dom/media/webspeech/synth/test/file_setup.html rename : content/media/webspeech/synth/test/file_speech_queue.html => dom/media/webspeech/synth/test/file_speech_queue.html rename : content/media/webspeech/synth/test/file_speech_simple.html => dom/media/webspeech/synth/test/file_speech_simple.html rename : content/media/webspeech/synth/test/mochitest.ini => dom/media/webspeech/synth/test/mochitest.ini rename : content/media/webspeech/synth/test/test_setup.html => dom/media/webspeech/synth/test/test_setup.html rename : content/media/webspeech/synth/test/test_speech_queue.html => dom/media/webspeech/synth/test/test_speech_queue.html rename : content/media/webspeech/synth/test/test_speech_simple.html => dom/media/webspeech/synth/test/test_speech_simple.html rename : content/media/webvtt/WebVTT.manifest => dom/media/webvtt/WebVTT.manifest rename : content/media/webvtt/WebVTTParserWrapper.js => dom/media/webvtt/WebVTTParserWrapper.js rename : content/media/webvtt/moz.build => dom/media/webvtt/moz.build rename : content/media/webvtt/nsIWebVTTListener.idl => dom/media/webvtt/nsIWebVTTListener.idl rename : content/media/webvtt/nsIWebVTTParserWrapper.idl => dom/media/webvtt/nsIWebVTTParserWrapper.idl rename : content/media/webvtt/package.json => dom/media/webvtt/package.json rename : content/media/webvtt/update-webvtt.js => dom/media/webvtt/update-webvtt.js rename : content/media/webvtt/vtt.jsm => dom/media/webvtt/vtt.jsm rename : content/media/wmf/DXVA2Manager.cpp => dom/media/wmf/DXVA2Manager.cpp rename : content/media/wmf/DXVA2Manager.h => dom/media/wmf/DXVA2Manager.h rename : content/media/wmf/WMF.h => dom/media/wmf/WMF.h rename : content/media/wmf/WMFByteStream.cpp => dom/media/wmf/WMFByteStream.cpp rename : content/media/wmf/WMFByteStream.h => dom/media/wmf/WMFByteStream.h rename : content/media/wmf/WMFDecoder.cpp => dom/media/wmf/WMFDecoder.cpp rename : content/media/wmf/WMFDecoder.h => dom/media/wmf/WMFDecoder.h rename : content/media/wmf/WMFReader.cpp => dom/media/wmf/WMFReader.cpp rename : content/media/wmf/WMFReader.h => dom/media/wmf/WMFReader.h rename : content/media/wmf/WMFSourceReaderCallback.cpp => dom/media/wmf/WMFSourceReaderCallback.cpp rename : content/media/wmf/WMFSourceReaderCallback.h => dom/media/wmf/WMFSourceReaderCallback.h rename : content/media/wmf/WMFUtils.cpp => dom/media/wmf/WMFUtils.cpp rename : content/media/wmf/WMFUtils.h => dom/media/wmf/WMFUtils.h rename : content/media/wmf/moz.build => dom/media/wmf/moz.build
2014-10-25 21:24:36 +04:00
#ifdef LOG
# undef LOG
#endif
mozilla::LazyLogModule gMediaRecorderLog("MediaRecorder");
#define LOG(type, msg) MOZ_LOG(gMediaRecorderLog, type, msg)
namespace mozilla {
namespace dom {
using namespace mozilla::media;
/* static */ StaticRefPtr<nsIAsyncShutdownBlocker>
gMediaRecorderShutdownBlocker;
static nsTHashtable<nsRefPtrHashKey<MediaRecorder::Session>> gSessions;
/**
* MediaRecorderReporter measures memory being used by the Media Recorder.
*
* It is a singleton reporter and the single class object lives as long as at
* least one Recorder is registered. In MediaRecorder, the reporter is
* unregistered when it is destroyed.
*/
class MediaRecorderReporter final : public nsIMemoryReporter {
public:
static void AddMediaRecorder(MediaRecorder* aRecorder) {
if (!sUniqueInstance) {
sUniqueInstance = MakeAndAddRef<MediaRecorderReporter>();
RegisterWeakAsyncMemoryReporter(sUniqueInstance);
}
sUniqueInstance->mRecorders.AppendElement(aRecorder);
}
static void RemoveMediaRecorder(MediaRecorder* aRecorder) {
if (!sUniqueInstance) {
return;
}
sUniqueInstance->mRecorders.RemoveElement(aRecorder);
if (sUniqueInstance->mRecorders.IsEmpty()) {
UnregisterWeakMemoryReporter(sUniqueInstance);
sUniqueInstance = nullptr;
}
}
NS_DECL_THREADSAFE_ISUPPORTS
MediaRecorderReporter() = default;
NS_IMETHOD
CollectReports(nsIHandleReportCallback* aHandleReport, nsISupports* aData,
bool aAnonymize) override {
nsTArray<RefPtr<MediaRecorder::SizeOfPromise>> promises;
for (const RefPtr<MediaRecorder>& recorder : mRecorders) {
promises.AppendElement(recorder->SizeOfExcludingThis(MallocSizeOf));
}
nsCOMPtr<nsIHandleReportCallback> handleReport = aHandleReport;
nsCOMPtr<nsISupports> data = aData;
MediaRecorder::SizeOfPromise::All(GetCurrentThreadSerialEventTarget(),
promises)
->Then(
GetCurrentThreadSerialEventTarget(), __func__,
[handleReport, data](const nsTArray<size_t>& sizes) {
nsCOMPtr<nsIMemoryReporterManager> manager =
do_GetService("@mozilla.org/memory-reporter-manager;1");
if (!manager) {
return;
}
size_t sum = 0;
for (const size_t& size : sizes) {
sum += size;
}
handleReport->Callback(
EmptyCString(), NS_LITERAL_CSTRING("explicit/media/recorder"),
KIND_HEAP, UNITS_BYTES, sum,
NS_LITERAL_CSTRING("Memory used by media recorder."), data);
manager->EndReport();
},
[](size_t) { MOZ_CRASH("Unexpected reject"); });
return NS_OK;
}
private:
MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf)
virtual ~MediaRecorderReporter() {
MOZ_ASSERT(mRecorders.IsEmpty(), "All recorders must have been removed");
}
static StaticRefPtr<MediaRecorderReporter> sUniqueInstance;
nsTArray<RefPtr<MediaRecorder>> mRecorders;
};
NS_IMPL_ISUPPORTS(MediaRecorderReporter, nsIMemoryReporter);
NS_IMPL_CYCLE_COLLECTION_CLASS(MediaRecorder)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(MediaRecorder,
DOMEventTargetHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDOMStream)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAudioNode)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSecurityDomException)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mUnknownDomException)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocument)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(MediaRecorder,
DOMEventTargetHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDOMStream)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAudioNode)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mSecurityDomException)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mUnknownDomException)
tmp->UnRegisterActivityObserver();
NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocument)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MediaRecorder)
NS_INTERFACE_MAP_ENTRY(nsIDocumentActivity)
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
NS_IMPL_ADDREF_INHERITED(MediaRecorder, DOMEventTargetHelper)
NS_IMPL_RELEASE_INHERITED(MediaRecorder, DOMEventTargetHelper)
/**
* Session is an object to represent a single recording event.
* In original design, all recording context is stored in MediaRecorder, which
* causes a problem if someone calls MediaRecorder::Stop and
* MediaRecorder::Start quickly. To prevent blocking main thread, media encoding
* is executed in a second thread, named as Read Thread. For the same reason, we
* do not wait Read Thread shutdown in MediaRecorder::Stop. If someone call
* MediaRecorder::Start before Read Thread shutdown, the same recording context
* in MediaRecorder might be access by two Reading Threads, which cause a
* problem. In the new design, we put recording context into Session object,
* including Read Thread. Each Session has its own recording context and Read
* Thread, problem is been resolved.
*
* Life cycle of a Session object.
* 1) Initialization Stage (in main thread)
* Setup media streams in MSG, and bind MediaEncoder with Source Stream when
* mStream is available. Resource allocation, such as encoded data cache buffer
* and MediaEncoder. Create read thread. Automatically switch to Extract stage
* in the end of this stage. 2) Extract Stage (in Read Thread) Pull encoded A/V
* frames from MediaEncoder, dispatch to OnDataAvailable handler. Unless a
* client calls Session::Stop, Session object keeps stay in this stage. 3)
* Destroy Stage (in main thread) Switch from Extract stage to Destroy stage by
* calling Session::Stop. Release session resource and remove associated streams
* from MSG.
*
* Lifetime of MediaRecorder and Session objects.
* 1) MediaRecorder creates a Session in MediaRecorder::Start function and holds
* a reference to Session. Then the Session registers itself to a
* ShutdownBlocker and also holds a reference to MediaRecorder.
* Therefore, the reference dependency in gecko is:
* ShutdownBlocker -> Session <-> MediaRecorder, note that there is a cycle
* reference between Session and MediaRecorder.
* 2) A Session is destroyed in DestroyRunnable after MediaRecorder::Stop being
* called _and_ all encoded media data been passed to OnDataAvailable handler.
* 3) MediaRecorder::Stop is called by user or the document is going to
* inactive or invisible.
*/
class MediaRecorder::Session : public PrincipalChangeObserver<MediaStreamTrack>,
public DOMMediaStream::TrackListener {
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(Session)
// Main thread task.
// Create a blob event and send back to client.
class PushBlobRunnable : public Runnable, public MutableBlobStorageCallback {
public:
// We need to always declare refcounting because
// MutableBlobStorageCallback has pure-virtual refcounting.
NS_DECL_ISUPPORTS_INHERITED
// aDestroyRunnable can be null. If it's not, it will be dispatched after
// the PushBlobRunnable::Run().
PushBlobRunnable(Session* aSession, Runnable* aDestroyRunnable)
: Runnable("dom::MediaRecorder::Session::PushBlobRunnable"),
mSession(aSession),
mDestroyRunnable(aDestroyRunnable) {}
NS_IMETHOD Run() override {
LOG(LogLevel::Debug, ("Session.PushBlobRunnable s=(%p)", mSession.get()));
MOZ_ASSERT(NS_IsMainThread());
mSession->GetBlobWhenReady(this);
return NS_OK;
}
void BlobStoreCompleted(MutableBlobStorage* aBlobStorage, Blob* aBlob,
nsresult aRv) override {
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaRecorder> recorder = mSession->mRecorder;
if (!recorder) {
return;
}
if (NS_FAILED(aRv)) {
mSession->DoSessionEndTask(aRv);
return;
}
nsresult rv = recorder->CreateAndDispatchBlobEvent(aBlob);
if (NS_FAILED(rv)) {
mSession->DoSessionEndTask(aRv);
}
if (mDestroyRunnable &&
NS_FAILED(NS_DispatchToMainThread(mDestroyRunnable.forget()))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread failed");
}
}
private:
~PushBlobRunnable() = default;
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<Session> mSession;
// The generation of the blob is async. In order to avoid dispatching the
// DestroyRunnable before pushing the blob event, we store the runnable
// here.
RefPtr<Runnable> mDestroyRunnable;
};
class StoreEncodedBufferRunnable final : public Runnable {
RefPtr<Session> mSession;
nsTArray<nsTArray<uint8_t>> mBuffer;
public:
StoreEncodedBufferRunnable(Session* aSession,
nsTArray<nsTArray<uint8_t>>&& aBuffer)
: Runnable("StoreEncodedBufferRunnable"),
mSession(aSession),
mBuffer(std::move(aBuffer)) {}
NS_IMETHOD
Run() override {
MOZ_ASSERT(NS_IsMainThread());
mSession->MaybeCreateMutableBlobStorage();
for (uint32_t i = 0; i < mBuffer.Length(); i++) {
if (mBuffer[i].IsEmpty()) {
continue;
}
nsresult rv = mSession->mMutableBlobStorage->Append(
mBuffer[i].Elements(), mBuffer[i].Length());
if (NS_WARN_IF(NS_FAILED(rv))) {
mSession->DoSessionEndTask(rv);
break;
}
}
return NS_OK;
}
};
// Notify encoder error, run in main thread task. (Bug 1095381)
class EncoderErrorNotifierRunnable : public Runnable {
public:
explicit EncoderErrorNotifierRunnable(Session* aSession)
: Runnable("dom::MediaRecorder::Session::EncoderErrorNotifierRunnable"),
mSession(aSession) {}
NS_IMETHOD Run() override {
LOG(LogLevel::Debug,
("Session.ErrorNotifyRunnable s=(%p)", mSession.get()));
MOZ_ASSERT(NS_IsMainThread());
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaRecorder> recorder = mSession->mRecorder;
if (!recorder) {
return NS_OK;
}
recorder->NotifyError(NS_ERROR_UNEXPECTED);
return NS_OK;
}
private:
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<Session> mSession;
};
// Fire a named event, run in main thread task.
class DispatchEventRunnable : public Runnable {
public:
explicit DispatchEventRunnable(Session* aSession,
const nsAString& aEventName)
: Runnable("dom::MediaRecorder::Session::DispatchEventRunnable"),
mSession(aSession),
mEventName(aEventName) {}
NS_IMETHOD Run() override {
LOG(LogLevel::Debug,
("Session.DispatchEventRunnable s=(%p) e=(%s)", mSession.get(),
NS_ConvertUTF16toUTF8(mEventName).get()));
MOZ_ASSERT(NS_IsMainThread());
NS_ENSURE_TRUE(mSession->mRecorder, NS_OK);
mSession->mRecorder->DispatchSimpleEvent(mEventName);
return NS_OK;
}
private:
RefPtr<Session> mSession;
nsString mEventName;
};
// Main thread task.
// To delete RecordingSession object.
class DestroyRunnable : public Runnable {
public:
explicit DestroyRunnable(Session* aSession)
: Runnable("dom::MediaRecorder::Session::DestroyRunnable"),
mSession(aSession) {}
explicit DestroyRunnable(already_AddRefed<Session> aSession)
: Runnable("dom::MediaRecorder::Session::DestroyRunnable"),
mSession(aSession) {}
NS_IMETHOD Run() override {
LOG(LogLevel::Debug,
("Session.DestroyRunnable session refcnt = (%d) s=(%p)",
static_cast<int>(mSession->mRefCnt), mSession.get()));
MOZ_ASSERT(NS_IsMainThread() && mSession);
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaRecorder> recorder = mSession->mRecorder;
if (!recorder) {
return NS_OK;
}
// SourceMediaStream is ended, and send out TRACK_EVENT_END notification.
// Read Thread will be terminate soon.
// We need to switch MediaRecorder to "Stop" state first to make sure
// MediaRecorder is not associated with this Session anymore, then, it's
// safe to delete this Session.
// Also avoid to run if this session already call stop before
if (mSession->mRunningState.isOk() &&
mSession->mRunningState.unwrap() != RunningState::Stopping &&
mSession->mRunningState.unwrap() != RunningState::Stopped) {
recorder->StopForSessionDestruction();
if (NS_FAILED(NS_DispatchToMainThread(
new DestroyRunnable(mSession.forget())))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread failed");
}
return NS_OK;
}
if (mSession->mRunningState.isOk()) {
mSession->mRunningState = RunningState::Stopped;
}
// Dispatch stop event and clear MIME type.
mSession->mMimeType = NS_LITERAL_STRING("");
recorder->SetMimeType(mSession->mMimeType);
recorder->DispatchSimpleEvent(NS_LITERAL_STRING("stop"));
RefPtr<Session> session = mSession.forget();
session->Shutdown()->Then(
GetCurrentThreadSerialEventTarget(), __func__,
[session]() {
gSessions.RemoveEntry(session);
if (gSessions.Count() == 0 && gMediaRecorderShutdownBlocker) {
// All sessions finished before shutdown, no need to keep the
// blocker.
RefPtr<nsIAsyncShutdownClient> barrier = GetShutdownBarrier();
barrier->RemoveBlocker(gMediaRecorderShutdownBlocker);
gMediaRecorderShutdownBlocker = nullptr;
}
},
[]() { MOZ_CRASH("Not reached"); });
return NS_OK;
}
private:
// Call mSession::Release automatically while DestroyRunnable be destroy.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<Session> mSession;
};
class EncoderListener : public MediaEncoderListener {
public:
EncoderListener(TaskQueue* aEncoderThread, Session* aSession)
: mEncoderThread(aEncoderThread), mSession(aSession) {}
void Forget() {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
mSession = nullptr;
}
void Initialized() override {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
if (mSession) {
mSession->MediaEncoderInitialized();
}
}
void DataAvailable() override {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
if (mSession) {
mSession->MediaEncoderDataAvailable();
}
}
void Error() override {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
if (mSession) {
mSession->MediaEncoderError();
}
}
void Shutdown() override {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
if (mSession) {
mSession->MediaEncoderShutdown();
}
}
protected:
RefPtr<TaskQueue> mEncoderThread;
RefPtr<Session> mSession;
};
friend class EncoderErrorNotifierRunnable;
friend class PushBlobRunnable;
friend class DestroyRunnable;
public:
Session(MediaRecorder* aRecorder, int32_t aTimeSlice)
: mRecorder(aRecorder),
mMediaStreamReady(false),
mTimeSlice(aTimeSlice),
mRunningState(RunningState::Idling) {
MOZ_ASSERT(NS_IsMainThread());
mMaxMemory = Preferences::GetUint("media.recorder.max_memory",
MAX_ALLOW_MEMORY_BUFFER);
mLastBlobTimeStamp = TimeStamp::Now();
}
void PrincipalChanged(MediaStreamTrack* aTrack) override {
NS_ASSERTION(mMediaStreamTracks.Contains(aTrack),
"Principal changed for unrecorded track");
if (!MediaStreamTracksPrincipalSubsumes()) {
DoSessionEndTask(NS_ERROR_DOM_SECURITY_ERR);
}
}
void NotifyTrackAdded(const RefPtr<MediaStreamTrack>& aTrack) override {
LOG(LogLevel::Warning,
("Session.NotifyTrackAdded %p Raising error due to track set change",
this));
if (mMediaStreamReady) {
DoSessionEndTask(NS_ERROR_ABORT);
}
NS_DispatchToMainThread(
NewRunnableMethod("MediaRecorder::Session::MediaStreamReady", this,
&Session::MediaStreamReady));
return;
}
void NotifyTrackRemoved(const RefPtr<MediaStreamTrack>& aTrack) override {
if (!mMediaStreamReady) {
// We haven't chosen the track set to record yet.
return;
}
if (aTrack->Ended()) {
// TrackEncoder will pickup tracks that end itself.
return;
}
MOZ_ASSERT(mEncoder);
if (mEncoder) {
mEncoder->RemoveMediaStreamTrack(aTrack);
}
LOG(LogLevel::Warning,
("Session.NotifyTrackRemoved %p Raising error due to track set change",
this));
DoSessionEndTask(NS_ERROR_ABORT);
}
void Start() {
LOG(LogLevel::Debug, ("Session.Start %p", this));
MOZ_ASSERT(NS_IsMainThread());
DOMMediaStream* domStream = mRecorder->Stream();
if (domStream) {
// The callback reports back when tracks are available and can be
// attached to MediaEncoder. This allows `recorder.start()` before any
// tracks are available. We have supported this historically and have
// mochitests assuming this behavior.
mMediaStream = domStream;
mMediaStream->RegisterTrackListener(this);
nsTArray<RefPtr<MediaStreamTrack>> tracks(2);
mMediaStream->GetTracks(tracks);
for (const auto& track : tracks) {
// Notify of existing tracks, as the stream doesn't do this by itself.
NotifyTrackAdded(track);
}
return;
}
if (mRecorder->mAudioNode) {
// Check that we may access the audio node's content.
if (!AudioNodePrincipalSubsumes()) {
LOG(LogLevel::Warning,
("Session.Start AudioNode principal check failed"));
DoSessionEndTask(NS_ERROR_DOM_SECURITY_ERR);
return;
}
TrackRate trackRate =
mRecorder->mAudioNode->Context()->Graph()->GraphRate();
// Web Audio node has only audio.
InitEncoder(ContainerWriter::CREATE_AUDIO_TRACK, trackRate);
return;
}
MOZ_ASSERT(false, "Unknown source");
}
void Stop() {
LOG(LogLevel::Debug, ("Session.Stop %p", this));
MOZ_ASSERT(NS_IsMainThread());
if (mEncoder) {
mEncoder->Stop();
}
if (mRunningState.isOk() &&
mRunningState.unwrap() == RunningState::Idling) {
LOG(LogLevel::Debug, ("Session.Stop Explicit end task %p", this));
// End the Session directly if there is no ExtractRunnable.
DoSessionEndTask(NS_OK);
} else if (mRunningState.isOk() &&
(mRunningState.unwrap() == RunningState::Starting ||
mRunningState.unwrap() == RunningState::Running)) {
mRunningState = RunningState::Stopping;
}
}
nsresult Pause() {
LOG(LogLevel::Debug, ("Session.Pause"));
MOZ_ASSERT(NS_IsMainThread());
if (!mEncoder) {
return NS_ERROR_FAILURE;
}
mEncoder->Suspend(TimeStamp::Now());
NS_DispatchToMainThread(
new DispatchEventRunnable(this, NS_LITERAL_STRING("pause")));
return NS_OK;
}
nsresult Resume() {
LOG(LogLevel::Debug, ("Session.Resume"));
MOZ_ASSERT(NS_IsMainThread());
if (!mEncoder) {
return NS_ERROR_FAILURE;
}
mEncoder->Resume(TimeStamp::Now());
NS_DispatchToMainThread(
new DispatchEventRunnable(this, NS_LITERAL_STRING("resume")));
return NS_OK;
}
nsresult RequestData() {
LOG(LogLevel::Debug, ("Session.RequestData"));
MOZ_ASSERT(NS_IsMainThread());
if (NS_FAILED(
NS_DispatchToMainThread(new PushBlobRunnable(this, nullptr)))) {
MOZ_ASSERT(false, "RequestData NS_DispatchToMainThread failed");
return NS_ERROR_FAILURE;
}
return NS_OK;
}
void MaybeCreateMutableBlobStorage() {
if (!mMutableBlobStorage) {
mMutableBlobStorage = new MutableBlobStorage(
MutableBlobStorage::eCouldBeInTemporaryFile, nullptr, mMaxMemory);
}
}
void GetBlobWhenReady(MutableBlobStorageCallback* aCallback) {
MOZ_ASSERT(NS_IsMainThread());
MaybeCreateMutableBlobStorage();
mMutableBlobStorage->GetBlobWhenReady(mRecorder->GetParentObject(),
NS_ConvertUTF16toUTF8(mMimeType),
aCallback);
mMutableBlobStorage = nullptr;
}
RefPtr<SizeOfPromise> SizeOfExcludingThis(
mozilla::MallocSizeOf aMallocSizeOf) {
MOZ_ASSERT(NS_IsMainThread());
size_t encodedBufferSize =
mMutableBlobStorage ? mMutableBlobStorage->SizeOfCurrentMemoryBuffer()
: 0;
if (!mEncoder) {
return SizeOfPromise::CreateAndResolve(encodedBufferSize, __func__);
}
auto& encoder = mEncoder;
return InvokeAsync(
mEncoderThread, __func__,
[encoder, encodedBufferSize, aMallocSizeOf]() {
return SizeOfPromise::CreateAndResolve(
encodedBufferSize + encoder->SizeOfExcludingThis(aMallocSizeOf),
__func__);
});
}
private:
// Only DestroyRunnable is allowed to delete Session object on main thread.
virtual ~Session() {
MOZ_ASSERT(NS_IsMainThread());
MOZ_ASSERT(mShutdownPromise);
LOG(LogLevel::Debug, ("Session.~Session (%p)", this));
}
// Pull encoded media data from MediaEncoder and put into MutableBlobStorage.
// Destroy this session object in the end of this function.
// If the bool aForceFlush is true, we will force to dispatch a
// PushBlobRunnable to main thread.
void Extract(bool aForceFlush, Runnable* aDestroyRunnable) {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
LOG(LogLevel::Debug, ("Session.Extract %p", this));
Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange. This patch makes the following changes to the macros. - Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was mostly misused. - Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is universally available now anyway. - Combines the first two string literal arguments of PROFILER_LABEL and PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for them to be separate, and it forced a '::' in the label, which isn't always appropriate. Also, the meaning of the "name_space" argument was interpreted in an interesting variety of ways. - Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make it clearer they construct RAII objects rather than just being function calls. (I myself have screwed up the scoping because of this in the past.) - Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so the caller doesn't need to. This makes a *lot* more of the uses fit onto a single line. The patch also makes the following changes to the macro uses (beyond those required by the changes described above). - Fixes a bunch of labels that had gotten out of sync with the name of the class and/or function that encloses them. - Removes a useless PROFILER_LABEL use within a trivial scope in EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving any useful purpose. It also serves as extra evidence that the AUTO_ prefix is a good idea. - Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is done within them, instead of at their callsites, because that's a more standard way of doing things. --HG-- extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
2017-06-22 10:08:53 +03:00
AUTO_PROFILER_LABEL("MediaRecorder::Session::Extract", OTHER);
// Pull encoded media data from MediaEncoder
nsTArray<nsTArray<uint8_t>> encodedBuf;
nsresult rv = mEncoder->GetEncodedData(&encodedBuf);
if (NS_FAILED(rv)) {
MOZ_RELEASE_ASSERT(encodedBuf.IsEmpty());
// Even if we failed to encode more data, it might be time to push a blob
// with already encoded data.
}
// Append pulled data into cache buffer.
NS_DispatchToMainThread(
new StoreEncodedBufferRunnable(this, std::move(encodedBuf)));
// Whether push encoded data back to onDataAvailable automatically or we
// need a flush.
bool pushBlob = aForceFlush;
if (!pushBlob && mTimeSlice > 0 &&
(TimeStamp::Now() - mLastBlobTimeStamp).ToMilliseconds() > mTimeSlice) {
pushBlob = true;
}
if (pushBlob) {
if (NS_FAILED(NS_DispatchToMainThread(
new PushBlobRunnable(this, aDestroyRunnable)))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread PushBlobRunnable failed");
} else {
mLastBlobTimeStamp = TimeStamp::Now();
}
} else if (aDestroyRunnable) {
if (NS_FAILED(NS_DispatchToMainThread(aDestroyRunnable))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread DestroyRunnable failed");
}
}
}
void MediaStreamReady() {
if (!mMediaStream) {
// Already shut down. This can happen because MediaStreamReady is async.
return;
}
if (mMediaStreamReady) {
return;
}
if (!mRunningState.isOk() ||
mRunningState.unwrap() != RunningState::Idling) {
return;
}
nsTArray<RefPtr<mozilla::dom::MediaStreamTrack>> tracks;
mMediaStream->GetTracks(tracks);
uint8_t trackTypes = 0;
int32_t audioTracks = 0;
int32_t videoTracks = 0;
for (auto& track : tracks) {
if (track->Ended()) {
continue;
}
ConnectMediaStreamTrack(*track);
if (track->AsAudioStreamTrack()) {
++audioTracks;
trackTypes |= ContainerWriter::CREATE_AUDIO_TRACK;
} else if (track->AsVideoStreamTrack()) {
++videoTracks;
trackTypes |= ContainerWriter::CREATE_VIDEO_TRACK;
} else {
MOZ_CRASH("Unexpected track type");
}
}
if (trackTypes == 0) {
MOZ_ASSERT(audioTracks == 0);
MOZ_ASSERT(videoTracks == 0);
return;
}
mMediaStreamReady = true;
if (audioTracks > 1 || videoTracks > 1) {
// When MediaRecorder supports multiple tracks, we should set up a single
// MediaInputPort from the input stream, and let main thread check
// track principals async later.
nsPIDOMWindowInner* window = mRecorder->GetParentObject();
Document* document = window ? window->GetExtantDoc() : nullptr;
nsContentUtils::ReportToConsole(nsIScriptError::errorFlag,
NS_LITERAL_CSTRING("Media"), document,
nsContentUtils::eDOM_PROPERTIES,
"MediaRecorderMultiTracksNotSupported");
DoSessionEndTask(NS_ERROR_ABORT);
return;
}
// Check that we may access the tracks' content.
if (!MediaStreamTracksPrincipalSubsumes()) {
LOG(LogLevel::Warning, ("Session.MediaTracksReady MediaStreamTracks "
"principal check failed"));
DoSessionEndTask(NS_ERROR_DOM_SECURITY_ERR);
return;
}
LOG(LogLevel::Debug,
("Session.MediaTracksReady track type = (%d)", trackTypes));
InitEncoder(trackTypes, mMediaStream->GraphRate());
}
void ConnectMediaStreamTrack(MediaStreamTrack& aTrack) {
for (auto& track : mMediaStreamTracks) {
if (track->AsAudioStreamTrack() && aTrack.AsAudioStreamTrack()) {
// We only allow one audio track. See bug 1276928.
return;
}
if (track->AsVideoStreamTrack() && aTrack.AsVideoStreamTrack()) {
// We only allow one video track. See bug 1276928.
return;
}
}
mMediaStreamTracks.AppendElement(&aTrack);
aTrack.AddPrincipalChangeObserver(this);
}
bool PrincipalSubsumes(nsIPrincipal* aPrincipal) {
if (!mRecorder->GetOwner()) return false;
nsCOMPtr<Document> doc = mRecorder->GetOwner()->GetExtantDoc();
if (!doc) {
return false;
}
if (!aPrincipal) {
return false;
}
bool subsumes;
if (NS_FAILED(doc->NodePrincipal()->Subsumes(aPrincipal, &subsumes))) {
return false;
}
return subsumes;
}
bool MediaStreamTracksPrincipalSubsumes() {
MOZ_ASSERT(mRecorder->mDOMStream);
nsCOMPtr<nsIPrincipal> principal = nullptr;
for (RefPtr<MediaStreamTrack>& track : mMediaStreamTracks) {
nsContentUtils::CombineResourcePrincipals(&principal,
track->GetPrincipal());
}
return PrincipalSubsumes(principal);
}
bool AudioNodePrincipalSubsumes() {
MOZ_ASSERT(mRecorder->mAudioNode);
Document* doc = mRecorder->mAudioNode->GetOwner()
? mRecorder->mAudioNode->GetOwner()->GetExtantDoc()
: nullptr;
nsCOMPtr<nsIPrincipal> principal = doc ? doc->NodePrincipal() : nullptr;
return PrincipalSubsumes(principal);
}
void InitEncoder(uint8_t aTrackTypes, TrackRate aTrackRate) {
LOG(LogLevel::Debug, ("Session.InitEncoder %p", this));
MOZ_ASSERT(NS_IsMainThread());
if (!mRunningState.isOk() ||
mRunningState.unwrap() != RunningState::Idling) {
MOZ_ASSERT_UNREACHABLE("Double-init");
return;
}
// Create a TaskQueue to read encode media data from MediaEncoder.
MOZ_RELEASE_ASSERT(!mEncoderThread);
RefPtr<SharedThreadPool> pool =
GetMediaThreadPool(MediaThreadType::WEBRTC_DECODER);
if (!pool) {
LOG(LogLevel::Debug, ("Session.InitEncoder %p Failed to create "
"MediaRecorderReadThread thread pool",
this));
DoSessionEndTask(NS_ERROR_FAILURE);
return;
}
mEncoderThread =
MakeAndAddRef<TaskQueue>(pool.forget(), "MediaRecorderReadThread");
if (!gMediaRecorderShutdownBlocker) {
// Add a shutdown blocker so mEncoderThread can be shutdown async.
class Blocker : public ShutdownBlocker {
public:
Blocker()
: ShutdownBlocker(
NS_LITERAL_STRING("MediaRecorder::Session: shutdown")) {}
NS_IMETHOD BlockShutdown(nsIAsyncShutdownClient*) override {
// Distribute the global async shutdown blocker in a ticket. If there
// are zero graphs then shutdown is unblocked when we go out of scope.
RefPtr<ShutdownTicket> ticket =
MakeAndAddRef<ShutdownTicket>(gMediaRecorderShutdownBlocker);
gMediaRecorderShutdownBlocker = nullptr;
nsTArray<RefPtr<ShutdownPromise>> promises(gSessions.Count());
for (auto iter = gSessions.Iter(); !iter.Done(); iter.Next()) {
promises.AppendElement(iter.Get()->GetKey()->Shutdown());
}
gSessions.Clear();
ShutdownPromise::All(GetCurrentThreadSerialEventTarget(), promises)
->Then(GetCurrentThreadSerialEventTarget(), __func__,
[ticket]() mutable {
MOZ_ASSERT(gSessions.Count() == 0);
// Unblock shutdown
ticket = nullptr;
},
[]() { MOZ_CRASH("Not reached"); });
return NS_OK;
}
};
gMediaRecorderShutdownBlocker = MakeAndAddRef<Blocker>();
RefPtr<nsIAsyncShutdownClient> barrier = GetShutdownBarrier();
nsresult rv = barrier->AddBlocker(
gMediaRecorderShutdownBlocker, NS_LITERAL_STRING(__FILE__), __LINE__,
NS_LITERAL_STRING("MediaRecorder::Session: shutdown"));
MOZ_RELEASE_ASSERT(NS_SUCCEEDED(rv));
}
gSessions.PutEntry(this);
uint32_t audioBitrate = mRecorder->GetAudioBitrate();
uint32_t videoBitrate = mRecorder->GetVideoBitrate();
uint32_t bitrate = mRecorder->GetBitrate();
if (bitrate > 0) {
// There's a total cap set. We have to make sure the type-specific limits
// are within range.
if ((aTrackTypes & ContainerWriter::CREATE_AUDIO_TRACK) &&
(aTrackTypes & ContainerWriter::CREATE_VIDEO_TRACK) &&
audioBitrate + videoBitrate > bitrate) {
LOG(LogLevel::Info, ("Session.InitEncoder Bitrates higher than total "
"cap. Recalculating."));
double factor =
bitrate / static_cast<double>(audioBitrate + videoBitrate);
audioBitrate = static_cast<uint32_t>(audioBitrate * factor);
videoBitrate = static_cast<uint32_t>(videoBitrate * factor);
} else if ((aTrackTypes & ContainerWriter::CREATE_AUDIO_TRACK) &&
!(aTrackTypes & ContainerWriter::CREATE_VIDEO_TRACK)) {
audioBitrate = std::min(audioBitrate, bitrate);
videoBitrate = 0;
} else if (!(aTrackTypes & ContainerWriter::CREATE_AUDIO_TRACK) &&
(aTrackTypes & ContainerWriter::CREATE_VIDEO_TRACK)) {
audioBitrate = 0;
videoBitrate = std::min(videoBitrate, bitrate);
}
MOZ_ASSERT(audioBitrate + videoBitrate <= bitrate);
}
// Allocate encoder and bind with union stream.
// At this stage, the API doesn't allow UA to choose the output mimeType
// format.
mEncoder = MediaEncoder::CreateEncoder(
mEncoderThread, NS_LITERAL_STRING(""), audioBitrate, videoBitrate,
aTrackTypes, aTrackRate);
if (!mEncoder) {
LOG(LogLevel::Error, ("Session.InitEncoder !mEncoder %p", this));
DoSessionEndTask(NS_ERROR_ABORT);
return;
}
mEncoderListener = MakeAndAddRef<EncoderListener>(mEncoderThread, this);
nsresult rv =
mEncoderThread->Dispatch(NewRunnableMethod<RefPtr<EncoderListener>>(
"mozilla::MediaEncoder::RegisterListener", mEncoder,
&MediaEncoder::RegisterListener, mEncoderListener));
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv));
Unused << rv;
if (mRecorder->mAudioNode) {
mEncoder->ConnectAudioNode(mRecorder->mAudioNode,
mRecorder->mAudioNodeOutput);
}
for (auto& track : mMediaStreamTracks) {
mEncoder->ConnectMediaStreamTrack(track);
}
// If user defines timeslice interval for video blobs we have to set
// appropriate video keyframe interval defined in milliseconds.
mEncoder->SetVideoKeyFrameInterval(mTimeSlice);
// Set mRunningState to Running so that ExtractRunnable/DestroyRunnable will
// take the responsibility to end the session.
mRunningState = RunningState::Starting;
}
// application should get blob and onstop event
void DoSessionEndTask(nsresult rv) {
MOZ_ASSERT(NS_IsMainThread());
if (mRunningState.isErr()) {
// We have already ended with an error.
return;
}
if (mRunningState.isOk() &&
mRunningState.unwrap() == RunningState::Stopped) {
// We have already ended gracefully.
return;
}
if (mRunningState.isOk() &&
(mRunningState.unwrap() == RunningState::Idling ||
mRunningState.unwrap() == RunningState::Starting)) {
NS_DispatchToMainThread(
new DispatchEventRunnable(this, NS_LITERAL_STRING("start")));
}
if (rv == NS_OK) {
mRunningState = RunningState::Stopped;
} else {
mRunningState = Err(rv);
}
if (NS_FAILED(rv)) {
mRecorder->ForceInactive();
NS_DispatchToMainThread(NewRunnableMethod<nsresult>(
"dom::MediaRecorder::NotifyError", mRecorder,
&MediaRecorder::NotifyError, rv));
}
RefPtr<Runnable> destroyRunnable = new DestroyRunnable(this);
if (rv != NS_ERROR_DOM_SECURITY_ERR) {
// Don't push a blob if there was a security error.
if (NS_FAILED(NS_DispatchToMainThread(
new PushBlobRunnable(this, destroyRunnable)))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread PushBlobRunnable failed");
}
} else {
if (NS_FAILED(NS_DispatchToMainThread(destroyRunnable))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread DestroyRunnable failed");
}
}
}
void MediaEncoderInitialized() {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
// Pull encoded metadata from MediaEncoder
nsTArray<nsTArray<uint8_t>> encodedBuf;
nsString mime;
nsresult rv = mEncoder->GetEncodedMetadata(&encodedBuf, mime);
if (NS_FAILED(rv)) {
MOZ_ASSERT(false);
return;
}
// Append pulled data into cache buffer.
NS_DispatchToMainThread(
new StoreEncodedBufferRunnable(this, std::move(encodedBuf)));
RefPtr<Session> self = this;
NS_DispatchToMainThread(NewRunnableFrom([self, mime]() {
if (!self->mRecorder) {
MOZ_ASSERT_UNREACHABLE("Recorder should be live");
return NS_OK;
}
if (self->mRunningState.isOk()) {
auto state = self->mRunningState.unwrap();
if (state == RunningState::Starting ||
state == RunningState::Stopping) {
if (state == RunningState::Starting) {
// We set it to Running in the runnable since we can only assign
// mRunningState on main thread. We set it before running the start
// event runnable since that dispatches synchronously (and may cause
// js calls to methods depending on mRunningState).
self->mRunningState = RunningState::Running;
}
self->mMimeType = mime;
self->mRecorder->SetMimeType(self->mMimeType);
auto startEvent = MakeRefPtr<DispatchEventRunnable>(
self, NS_LITERAL_STRING("start"));
startEvent->Run();
}
}
return NS_OK;
}));
}
void MediaEncoderDataAvailable() {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
Extract(false, nullptr);
}
void MediaEncoderError() {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
NS_DispatchToMainThread(NewRunnableMethod<nsresult>(
"dom::MediaRecorder::Session::DoSessionEndTask", this,
&Session::DoSessionEndTask, NS_ERROR_FAILURE));
}
void MediaEncoderShutdown() {
MOZ_ASSERT(mEncoderThread->IsCurrentThreadIn());
MOZ_ASSERT(mEncoder->IsShutdown());
// For the stop event. Let's the creation of the blob to dispatch this
// runnable.
RefPtr<Runnable> destroyRunnable = new DestroyRunnable(this);
// Forces the last blob even if it's not time for it yet.
Extract(true, destroyRunnable);
// Clean up.
mEncoderListener->Forget();
DebugOnly<bool> unregistered =
mEncoder->UnregisterListener(mEncoderListener);
MOZ_ASSERT(unregistered);
}
RefPtr<ShutdownPromise> Shutdown() {
MOZ_ASSERT(NS_IsMainThread());
LOG(LogLevel::Debug, ("Session Shutdown %p", this));
if (mShutdownPromise) {
return mShutdownPromise;
}
mShutdownPromise = ShutdownPromise::CreateAndResolve(true, __func__);
RefPtr<Session> self = this;
if (mEncoder) {
auto& encoder = mEncoder;
encoder->Cancel();
MOZ_RELEASE_ASSERT(mEncoderListener);
auto& encoderListener = mEncoderListener;
mShutdownPromise = mShutdownPromise->Then(
mEncoderThread, __func__,
[encoder, encoderListener]() {
encoder->UnregisterListener(encoderListener);
encoderListener->Forget();
return ShutdownPromise::CreateAndResolve(true, __func__);
},
[]() {
MOZ_ASSERT_UNREACHABLE("Unexpected reject");
return ShutdownPromise::CreateAndReject(false, __func__);
});
}
// Remove main thread state.
if (mMediaStream) {
mMediaStream->UnregisterTrackListener(this);
mMediaStream = nullptr;
}
{
auto tracks(std::move(mMediaStreamTracks));
for (RefPtr<MediaStreamTrack>& track : tracks) {
track->RemovePrincipalChangeObserver(this);
}
}
// Break the cycle reference between Session and MediaRecorder.
if (mRecorder) {
mShutdownPromise = mShutdownPromise->Then(
GetCurrentThreadSerialEventTarget(), __func__,
[self]() {
self->mRecorder->RemoveSession(self);
self->mRecorder = nullptr;
return ShutdownPromise::CreateAndResolve(true, __func__);
},
[]() {
MOZ_ASSERT_UNREACHABLE("Unexpected reject");
return ShutdownPromise::CreateAndReject(false, __func__);
});
}
if (mEncoderThread) {
RefPtr<TaskQueue>& encoderThread = mEncoderThread;
mShutdownPromise = mShutdownPromise->Then(
GetCurrentThreadSerialEventTarget(), __func__,
[encoderThread]() { return encoderThread->BeginShutdown(); },
[]() {
MOZ_ASSERT_UNREACHABLE("Unexpected reject");
return ShutdownPromise::CreateAndReject(false, __func__);
});
}
return mShutdownPromise;
}
private:
enum class RunningState {
Idling, // Session has been created
Starting, // MediaEncoder started, waiting for data
Running, // MediaEncoder has produced data
Stopping, // Stop() has been called
Stopped, // Session has stopped without any error
};
// Hold reference to MediaRecorder that ensure MediaRecorder is alive
// if there is an active session. Access ONLY on main thread.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaRecorder> mRecorder;
// Stream currently recorded.
RefPtr<DOMMediaStream> mMediaStream;
// True after we have decided on the track set to use for the recording.
bool mMediaStreamReady;
// Tracks currently recorded. This should be a subset of mMediaStream's track
// set.
nsTArray<RefPtr<MediaStreamTrack>> mMediaStreamTracks;
// Runnable thread for reading data from MediaEncoder.
RefPtr<TaskQueue> mEncoderThread;
// MediaEncoder pipeline.
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaEncoder> mEncoder;
// Listener through which MediaEncoder signals us.
RefPtr<EncoderListener> mEncoderListener;
// Set in Shutdown() and resolved when shutdown is complete.
RefPtr<ShutdownPromise> mShutdownPromise;
// A buffer to cache encoded media data.
RefPtr<MutableBlobStorage> mMutableBlobStorage;
// Max memory to use for the MutableBlobStorage.
uint64_t mMaxMemory;
// Current session mimeType
nsString mMimeType;
// Timestamp of the last fired dataavailable event.
TimeStamp mLastBlobTimeStamp;
// The interval of passing encoded data from MutableBlobStorage to
// onDataAvailable handler. "mTimeSlice < 0" means Session object does not
// push encoded data to onDataAvailable, instead, it passive wait the client
// side pull encoded data by calling requestData API.
const int32_t mTimeSlice;
// The session's current main thread state. The error type gets setwhen ending
// a recording with an error. An NS_OK error is invalid.
// Main thread only.
Result<RunningState, nsresult> mRunningState;
};
NS_IMPL_ISUPPORTS_INHERITED0(MediaRecorder::Session::PushBlobRunnable, Runnable)
MediaRecorder::~MediaRecorder() {
LOG(LogLevel::Debug, ("~MediaRecorder (%p)", this));
UnRegisterActivityObserver();
}
MediaRecorder::MediaRecorder(DOMMediaStream& aSourceMediaStream,
nsPIDOMWindowInner* aOwnerWindow)
: DOMEventTargetHelper(aOwnerWindow),
mAudioNodeOutput(0),
mState(RecordingState::Inactive),
mAudioBitsPerSecond(0),
mVideoBitsPerSecond(0),
mBitsPerSecond(0) {
MOZ_ASSERT(aOwnerWindow);
mDOMStream = &aSourceMediaStream;
RegisterActivityObserver();
}
MediaRecorder::MediaRecorder(AudioNode& aSrcAudioNode, uint32_t aSrcOutput,
nsPIDOMWindowInner* aOwnerWindow)
: DOMEventTargetHelper(aOwnerWindow),
mAudioNodeOutput(aSrcOutput),
mState(RecordingState::Inactive),
mAudioBitsPerSecond(0),
mVideoBitsPerSecond(0),
mBitsPerSecond(0) {
MOZ_ASSERT(aOwnerWindow);
mAudioNode = &aSrcAudioNode;
RegisterActivityObserver();
}
void MediaRecorder::RegisterActivityObserver() {
if (nsPIDOMWindowInner* window = GetOwner()) {
mDocument = window->GetExtantDoc();
if (mDocument) {
mDocument->RegisterActivityObserver(
NS_ISUPPORTS_CAST(nsIDocumentActivity*, this));
}
}
}
void MediaRecorder::UnRegisterActivityObserver() {
if (mDocument) {
mDocument->UnregisterActivityObserver(
NS_ISUPPORTS_CAST(nsIDocumentActivity*, this));
}
}
void MediaRecorder::SetMimeType(const nsString& aMimeType) {
mMimeType = aMimeType;
}
void MediaRecorder::GetMimeType(nsString& aMimeType) { aMimeType = mMimeType; }
void MediaRecorder::Start(const Optional<int32_t>& aTimeSlice,
ErrorResult& aResult) {
LOG(LogLevel::Debug, ("MediaRecorder.Start %p", this));
InitializeDomExceptions();
if (mState != RecordingState::Inactive) {
aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
nsTArray<RefPtr<MediaStreamTrack>> tracks;
if (mDOMStream) {
mDOMStream->GetTracks(tracks);
}
if (!tracks.IsEmpty()) {
// If there are tracks already available that we're not allowed
// to record, we should throw a security error.
bool subsumes = false;
nsPIDOMWindowInner* window;
Document* doc;
if (!(window = GetOwner()) || !(doc = window->GetExtantDoc()) ||
NS_FAILED(doc->NodePrincipal()->Subsumes(mDOMStream->GetPrincipal(),
&subsumes)) ||
!subsumes) {
aResult.Throw(NS_ERROR_DOM_SECURITY_ERR);
return;
}
}
int32_t timeSlice = 0;
if (aTimeSlice.WasPassed()) {
if (aTimeSlice.Value() < 0) {
aResult.Throw(NS_ERROR_INVALID_ARG);
return;
}
timeSlice = aTimeSlice.Value();
}
MediaRecorderReporter::AddMediaRecorder(this);
mState = RecordingState::Recording;
// Start a session.
mSessions.AppendElement();
mSessions.LastElement() = new Session(this, timeSlice);
mSessions.LastElement()->Start();
mStartTime = TimeStamp::Now();
Telemetry::ScalarAdd(Telemetry::ScalarID::MEDIARECORDER_RECORDING_COUNT, 1);
}
void MediaRecorder::Stop(ErrorResult& aResult) {
LOG(LogLevel::Debug, ("MediaRecorder.Stop %p", this));
MediaRecorderReporter::RemoveMediaRecorder(this);
if (mState == RecordingState::Inactive) {
return;
}
mState = RecordingState::Inactive;
MOZ_ASSERT(mSessions.Length() > 0);
mSessions.LastElement()->Stop();
}
void MediaRecorder::Pause(ErrorResult& aResult) {
LOG(LogLevel::Debug, ("MediaRecorder.Pause %p", this));
if (mState == RecordingState::Inactive) {
aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
if (mState == RecordingState::Paused) {
return;
}
MOZ_ASSERT(mSessions.Length() > 0);
nsresult rv = mSessions.LastElement()->Pause();
if (NS_FAILED(rv)) {
NotifyError(rv);
return;
}
mState = RecordingState::Paused;
}
void MediaRecorder::Resume(ErrorResult& aResult) {
LOG(LogLevel::Debug, ("MediaRecorder.Resume %p", this));
if (mState == RecordingState::Inactive) {
aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
if (mState == RecordingState::Recording) {
return;
}
MOZ_ASSERT(mSessions.Length() > 0);
nsresult rv = mSessions.LastElement()->Resume();
if (NS_FAILED(rv)) {
NotifyError(rv);
return;
}
mState = RecordingState::Recording;
}
void MediaRecorder::RequestData(ErrorResult& aResult) {
if (mState == RecordingState::Inactive) {
aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
return;
}
MOZ_ASSERT(mSessions.Length() > 0);
nsresult rv = mSessions.LastElement()->RequestData();
if (NS_FAILED(rv)) {
NotifyError(rv);
}
}
Bug 1117172 part 3. Change the wrappercached WrapObject methods to allow passing in aGivenProto. r=peterv The only manual changes here are to BindingUtils.h, BindingUtils.cpp, Codegen.py, Element.cpp, IDBFileRequest.cpp, IDBObjectStore.cpp, dom/workers/Navigator.cpp, WorkerPrivate.cpp, DeviceStorageRequestChild.cpp, Notification.cpp, nsGlobalWindow.cpp, MessagePort.cpp, nsJSEnvironment.cpp, Sandbox.cpp, XPCConvert.cpp, ExportHelpers.cpp, and DataStoreService.cpp. The rest of this diff was generated by running the following commands: find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObjectInternal\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapNode\((?:aCx|cx|aContext|aCtx|js))\)/\1, aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(WrapObject\(JSContext *\* *(?:aCx|cx|aContext|aCtx|js))\)/\1, JS::Handle<JSObject*> aGivenProto)/g' find . -name "*.h" -o -name "*.cpp" | xargs perl -pi -e 'BEGIN { $/ = undef } s/(Binding(?:_workers)?::Wrap\((?:aCx|cx|aContext|aCtx|js), [^,)]+)\)/\1, aGivenProto)/g'
2015-03-19 17:13:33 +03:00
JSObject* MediaRecorder::WrapObject(JSContext* aCx,
JS::Handle<JSObject*> aGivenProto) {
return MediaRecorder_Binding::Wrap(aCx, this, aGivenProto);
}
/* static */
already_AddRefed<MediaRecorder> MediaRecorder::Constructor(
const GlobalObject& aGlobal, DOMMediaStream& aStream,
const MediaRecorderOptions& aInitDict, ErrorResult& aRv) {
nsCOMPtr<nsPIDOMWindowInner> ownerWindow =
do_QueryInterface(aGlobal.GetAsSupports());
if (!ownerWindow) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
if (!IsTypeSupported(aInitDict.mMimeType)) {
aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
return nullptr;
}
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaRecorder> object = new MediaRecorder(aStream, ownerWindow);
object->SetOptions(aInitDict);
return object.forget();
}
/* static */
already_AddRefed<MediaRecorder> MediaRecorder::Constructor(
const GlobalObject& aGlobal, AudioNode& aSrcAudioNode, uint32_t aSrcOutput,
const MediaRecorderOptions& aInitDict, ErrorResult& aRv) {
// Allow recording from audio node only when pref is on.
if (!Preferences::GetBool("media.recorder.audio_node.enabled", false)) {
// Pretending that this constructor is not defined.
NS_NAMED_LITERAL_STRING(argStr, "Argument 1 of MediaRecorder.constructor");
NS_NAMED_LITERAL_STRING(typeStr, "MediaStream");
aRv.ThrowTypeError<MSG_DOES_NOT_IMPLEMENT_INTERFACE>(argStr, typeStr);
return nullptr;
}
nsCOMPtr<nsPIDOMWindowInner> ownerWindow =
do_QueryInterface(aGlobal.GetAsSupports());
if (!ownerWindow) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
// aSrcOutput doesn't matter to destination node because it has no output.
if (aSrcAudioNode.NumberOfOutputs() > 0 &&
aSrcOutput >= aSrcAudioNode.NumberOfOutputs()) {
aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
return nullptr;
}
if (!IsTypeSupported(aInitDict.mMimeType)) {
aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
return nullptr;
}
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<MediaRecorder> object =
new MediaRecorder(aSrcAudioNode, aSrcOutput, ownerWindow);
object->SetOptions(aInitDict);
return object.forget();
}
void MediaRecorder::SetOptions(const MediaRecorderOptions& aInitDict) {
SetMimeType(aInitDict.mMimeType);
mAudioBitsPerSecond = aInitDict.mAudioBitsPerSecond.WasPassed()
? aInitDict.mAudioBitsPerSecond.Value()
: 0;
mVideoBitsPerSecond = aInitDict.mVideoBitsPerSecond.WasPassed()
? aInitDict.mVideoBitsPerSecond.Value()
: 0;
mBitsPerSecond = aInitDict.mBitsPerSecond.WasPassed()
? aInitDict.mBitsPerSecond.Value()
: 0;
// We're not handling dynamic changes yet. Eventually we'll handle
// setting audio, video and/or total -- and anything that isn't set,
// we'll derive. Calculated versions require querying bitrates after
// the encoder is Init()ed. This happens only after data is
// available and thus requires dynamic changes.
//
// Until dynamic changes are supported, I prefer to be safe and err
// slightly high
if (aInitDict.mBitsPerSecond.WasPassed() &&
!aInitDict.mVideoBitsPerSecond.WasPassed()) {
mVideoBitsPerSecond = mBitsPerSecond;
}
}
static char const* const gWebMVideoEncoderCodecs[4] = {
"opus",
"vp8",
"vp8.0",
// no VP9 yet
nullptr,
};
static char const* const gWebMAudioEncoderCodecs[4] = {
"opus",
nullptr,
};
static char const* const gOggAudioEncoderCodecs[2] = {
"opus",
// we could support vorbis here too, but don't
nullptr,
};
template <class String>
static bool CodecListContains(char const* const* aCodecs,
const String& aCodec) {
for (int32_t i = 0; aCodecs[i]; ++i) {
if (aCodec.EqualsASCII(aCodecs[i])) return true;
}
return false;
}
/* static */
bool MediaRecorder::IsTypeSupported(GlobalObject& aGlobal,
const nsAString& aMIMEType) {
return IsTypeSupported(aMIMEType);
}
/* static */
bool MediaRecorder::IsTypeSupported(const nsAString& aMIMEType) {
char const* const* codeclist = nullptr;
if (aMIMEType.IsEmpty()) {
return true;
}
nsContentTypeParser parser(aMIMEType);
nsAutoString mimeType;
nsresult rv = parser.GetType(mimeType);
if (NS_FAILED(rv)) {
return false;
}
// effectively a 'switch (mimeType) {'
if (mimeType.EqualsLiteral(AUDIO_OGG)) {
if (MediaDecoder::IsOggEnabled() && MediaDecoder::IsOpusEnabled()) {
codeclist = gOggAudioEncoderCodecs;
}
}
#ifdef MOZ_WEBM_ENCODER
else if ((mimeType.EqualsLiteral(VIDEO_WEBM) ||
mimeType.EqualsLiteral(AUDIO_WEBM)) &&
MediaEncoder::IsWebMEncoderEnabled()) {
if (mimeType.EqualsLiteral(AUDIO_WEBM)) {
codeclist = gWebMAudioEncoderCodecs;
} else {
codeclist = gWebMVideoEncoderCodecs;
}
}
#endif
// codecs don't matter if we don't support the container
if (!codeclist) {
return false;
}
// now filter on codecs, and if needed rescind support
nsAutoString codecstring;
rv = parser.GetParameter("codecs", codecstring);
nsTArray<nsString> codecs;
if (!ParseCodecsString(codecstring, codecs)) {
return false;
}
for (const nsString& codec : codecs) {
if (!CodecListContains(codeclist, codec)) {
// Totally unsupported codec
return false;
}
}
return true;
}
nsresult MediaRecorder::CreateAndDispatchBlobEvent(Blob* aBlob) {
MOZ_ASSERT(NS_IsMainThread(), "Not running on main thread");
BlobEventInit init;
init.mBubbles = false;
init.mCancelable = false;
init.mData = aBlob;
Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi --HG-- rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 08:24:48 +03:00
RefPtr<BlobEvent> event =
BlobEvent::Constructor(this, NS_LITERAL_STRING("dataavailable"), init);
event->SetTrusted(true);
ErrorResult rv;
DispatchEvent(*event, rv);
return rv.StealNSResult();
}
void MediaRecorder::DispatchSimpleEvent(const nsAString& aStr) {
MOZ_ASSERT(NS_IsMainThread(), "Not running on main thread");
nsresult rv = CheckInnerWindowCorrectness();
if (NS_FAILED(rv)) {
return;
}
rv = DOMEventTargetHelper::DispatchTrustedEvent(aStr);
if (NS_FAILED(rv)) {
LOG(LogLevel::Error,
("MediaRecorder.DispatchSimpleEvent: DispatchTrustedEvent failed %p",
this));
NS_ERROR("Failed to dispatch the event!!!");
}
}
void MediaRecorder::NotifyError(nsresult aRv) {
MOZ_ASSERT(NS_IsMainThread(), "Not running on main thread");
nsresult rv = CheckInnerWindowCorrectness();
if (NS_FAILED(rv)) {
return;
}
MediaRecorderErrorEventInit init;
init.mBubbles = false;
init.mCancelable = false;
// These DOMExceptions have been created earlier so they can contain stack
// traces. We attach the appropriate one here to be fired. We should have
// exceptions here, but defensively check.
switch (aRv) {
case NS_ERROR_DOM_SECURITY_ERR:
if (!mSecurityDomException) {
LOG(LogLevel::Debug, ("MediaRecorder.NotifyError: "
"mSecurityDomException was not initialized"));
mSecurityDomException = DOMException::Create(NS_ERROR_DOM_SECURITY_ERR);
}
init.mError = mSecurityDomException.forget();
break;
default:
if (!mUnknownDomException) {
LOG(LogLevel::Debug, ("MediaRecorder.NotifyError: "
"mUnknownDomException was not initialized"));
mUnknownDomException = DOMException::Create(NS_ERROR_DOM_UNKNOWN_ERR);
}
LOG(LogLevel::Debug, ("MediaRecorder.NotifyError: "
"mUnknownDomException being fired for aRv: %X",
uint32_t(aRv)));
init.mError = mUnknownDomException.forget();
}
RefPtr<MediaRecorderErrorEvent> event = MediaRecorderErrorEvent::Constructor(
this, NS_LITERAL_STRING("error"), init);
event->SetTrusted(true);
IgnoredErrorResult res;
DispatchEvent(*event, res);
if (res.Failed()) {
NS_ERROR("Failed to dispatch the error event!!!");
}
}
void MediaRecorder::RemoveSession(Session* aSession) {
LOG(LogLevel::Debug, ("MediaRecorder.RemoveSession (%p)", aSession));
mSessions.RemoveElement(aSession);
}
void MediaRecorder::NotifyOwnerDocumentActivityChanged() {
nsPIDOMWindowInner* window = GetOwner();
NS_ENSURE_TRUE_VOID(window);
Document* doc = window->GetExtantDoc();
NS_ENSURE_TRUE_VOID(doc);
bool inFrameSwap = false;
if (nsDocShell* docShell = static_cast<nsDocShell*>(doc->GetDocShell())) {
inFrameSwap = docShell->InFrameSwap();
}
LOG(LogLevel::Debug, ("MediaRecorder %p NotifyOwnerDocumentActivityChanged "
"IsActive=%d, "
"IsVisible=%d, "
"InFrameSwap=%d",
this, doc->IsActive(), doc->IsVisible(), inFrameSwap));
if (!doc->IsActive() || !(inFrameSwap || doc->IsVisible())) {
// Stop the session.
ErrorResult result;
Stop(result);
result.SuppressException();
}
}
void MediaRecorder::ForceInactive() {
LOG(LogLevel::Debug, ("MediaRecorder.ForceInactive %p", this));
mState = RecordingState::Inactive;
}
void MediaRecorder::StopForSessionDestruction() {
LOG(LogLevel::Debug, ("MediaRecorder.StopForSessionDestruction %p", this));
MediaRecorderReporter::RemoveMediaRecorder(this);
// We do not perform a mState != RecordingState::Recording) check here as
// we may already be inactive due to ForceInactive().
mState = RecordingState::Inactive;
MOZ_ASSERT(mSessions.Length() > 0);
mSessions.LastElement()->Stop();
// This is a coarse calculation and does not reflect the duration of the
// final recording for reasons such as pauses. However it allows us an idea
// of how long people are running their recorders for.
TimeDuration timeDelta = TimeStamp::Now() - mStartTime;
Telemetry::Accumulate(Telemetry::MEDIA_RECORDER_RECORDING_DURATION,
timeDelta.ToSeconds());
}
void MediaRecorder::InitializeDomExceptions() {
mSecurityDomException = DOMException::Create(NS_ERROR_DOM_SECURITY_ERR);
mUnknownDomException = DOMException::Create(NS_ERROR_DOM_UNKNOWN_ERR);
}
RefPtr<MediaRecorder::SizeOfPromise> MediaRecorder::SizeOfExcludingThis(
mozilla::MallocSizeOf aMallocSizeOf) {
MOZ_ASSERT(NS_IsMainThread());
// The return type of a chained MozPromise cannot be changed, so we create a
// holder for our desired return type and resolve that from All()->Then().
auto holder = MakeRefPtr<Refcountable<MozPromiseHolder<SizeOfPromise>>>();
RefPtr<SizeOfPromise> promise = holder->Ensure(__func__);
nsTArray<RefPtr<SizeOfPromise>> promises(mSessions.Length());
for (const RefPtr<Session>& session : mSessions) {
promises.AppendElement(session->SizeOfExcludingThis(aMallocSizeOf));
}
SizeOfPromise::All(GetCurrentThreadSerialEventTarget(), promises)
->Then(GetCurrentThreadSerialEventTarget(), __func__,
[holder](const nsTArray<size_t>& sizes) {
size_t total = 0;
for (const size_t& size : sizes) {
total += size;
}
holder->Resolve(total, __func__);
},
[]() { MOZ_CRASH("Unexpected reject"); });
return promise;
}
StaticRefPtr<MediaRecorderReporter> MediaRecorderReporter::sUniqueInstance;
} // namespace dom
} // namespace mozilla