gecko/dom/media/MediaResource.cpp
Birunthan Mohanathas 09e204851c 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 20:24:36 +03:00

1681 lines
52 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 "mozilla/DebugOnly.h"
#include "MediaResource.h"
#include "RtspMediaResource.h"
#include "mozilla/Mutex.h"
#include "nsDebug.h"
#include "MediaDecoder.h"
#include "nsNetUtil.h"
#include "nsThreadUtils.h"
#include "nsIFile.h"
#include "nsIFileChannel.h"
#include "nsIHttpChannel.h"
#include "nsISeekableStream.h"
#include "nsIInputStream.h"
#include "nsIRequestObserver.h"
#include "nsIStreamListener.h"
#include "nsIScriptSecurityManager.h"
#include "nsCrossSiteListenerProxy.h"
#include "mozilla/dom/HTMLMediaElement.h"
#include "nsError.h"
#include "nsICachingChannel.h"
#include "nsIAsyncVerifyRedirectCallback.h"
#include "nsContentUtils.h"
#include "nsHostObjectProtocolHandler.h"
#include <algorithm>
#include "nsProxyRelease.h"
#include "nsIContentPolicy.h"
#ifdef PR_LOGGING
PRLogModuleInfo* gMediaResourceLog;
#define RESOURCE_LOG(msg, ...) PR_LOG(gMediaResourceLog, PR_LOG_DEBUG, \
(msg, ##__VA_ARGS__))
// Debug logging macro with object pointer and class name.
#define CMLOG(msg, ...) \
RESOURCE_LOG("%p [ChannelMediaResource]: " msg, this, ##__VA_ARGS__)
#else
#define RESOURCE_LOG(msg, ...)
#define CMLOG(msg, ...)
#endif
static const uint32_t HTTP_OK_CODE = 200;
static const uint32_t HTTP_PARTIAL_RESPONSE_CODE = 206;
namespace mozilla {
void
MediaResource::Destroy()
{
// If we're being destroyed on a non-main thread, we AddRef again and
// use a proxy to release the MediaResource on the main thread, where
// the MediaResource is deleted. This ensures we only delete the
// MediaResource on the main thread.
if (!NS_IsMainThread()) {
nsCOMPtr<nsIThread> mainThread = do_GetMainThread();
NS_ENSURE_TRUE_VOID(mainThread);
nsRefPtr<MediaResource> doomed(this);
if (NS_FAILED(NS_ProxyRelease(mainThread, doomed, true))) {
NS_WARNING("Failed to proxy release to main thread!");
}
} else {
delete this;
}
}
NS_IMPL_ADDREF(MediaResource)
NS_IMPL_RELEASE_WITH_DESTROY(MediaResource, Destroy())
NS_IMPL_QUERY_INTERFACE0(MediaResource)
ChannelMediaResource::ChannelMediaResource(MediaDecoder* aDecoder,
nsIChannel* aChannel,
nsIURI* aURI,
const nsACString& aContentType)
: BaseMediaResource(aDecoder, aChannel, aURI, aContentType),
mOffset(0), mSuspendCount(0),
mReopenOnError(false), mIgnoreClose(false),
mCacheStream(MOZ_THIS_IN_INITIALIZER_LIST()),
mLock("ChannelMediaResource.mLock"),
mIgnoreResume(false),
mIsTransportSeekable(true)
{
#ifdef PR_LOGGING
if (!gMediaResourceLog) {
gMediaResourceLog = PR_NewLogModule("MediaResource");
}
#endif
}
ChannelMediaResource::~ChannelMediaResource()
{
if (mListener) {
// Kill its reference to us since we're going away
mListener->Revoke();
}
}
// ChannelMediaResource::Listener just observes the channel and
// forwards notifications to the ChannelMediaResource. We use multiple
// listener objects so that when we open a new stream for a seek we can
// disconnect the old listener from the ChannelMediaResource and hook up
// a new listener, so notifications from the old channel are discarded
// and don't confuse us.
NS_IMPL_ISUPPORTS(ChannelMediaResource::Listener,
nsIRequestObserver, nsIStreamListener, nsIChannelEventSink,
nsIInterfaceRequestor)
nsresult
ChannelMediaResource::Listener::OnStartRequest(nsIRequest* aRequest,
nsISupports* aContext)
{
if (!mResource)
return NS_OK;
return mResource->OnStartRequest(aRequest);
}
nsresult
ChannelMediaResource::Listener::OnStopRequest(nsIRequest* aRequest,
nsISupports* aContext,
nsresult aStatus)
{
if (!mResource)
return NS_OK;
return mResource->OnStopRequest(aRequest, aStatus);
}
nsresult
ChannelMediaResource::Listener::OnDataAvailable(nsIRequest* aRequest,
nsISupports* aContext,
nsIInputStream* aStream,
uint64_t aOffset,
uint32_t aCount)
{
if (!mResource)
return NS_OK;
return mResource->OnDataAvailable(aRequest, aStream, aCount);
}
nsresult
ChannelMediaResource::Listener::AsyncOnChannelRedirect(nsIChannel* aOldChannel,
nsIChannel* aNewChannel,
uint32_t aFlags,
nsIAsyncVerifyRedirectCallback* cb)
{
nsresult rv = NS_OK;
if (mResource)
rv = mResource->OnChannelRedirect(aOldChannel, aNewChannel, aFlags);
if (NS_FAILED(rv))
return rv;
cb->OnRedirectVerifyCallback(NS_OK);
return NS_OK;
}
nsresult
ChannelMediaResource::Listener::GetInterface(const nsIID & aIID, void **aResult)
{
return QueryInterface(aIID, aResult);
}
nsresult
ChannelMediaResource::OnStartRequest(nsIRequest* aRequest)
{
NS_ASSERTION(mChannel.get() == aRequest, "Wrong channel!");
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
NS_ENSURE_TRUE(owner, NS_ERROR_FAILURE);
dom::HTMLMediaElement* element = owner->GetMediaElement();
NS_ENSURE_TRUE(element, NS_ERROR_FAILURE);
nsresult status;
nsresult rv = aRequest->GetStatus(&status);
NS_ENSURE_SUCCESS(rv, rv);
if (status == NS_BINDING_ABORTED) {
// Request was aborted before we had a chance to receive any data, or
// even an OnStartRequest(). Close the channel. This is important, as
// we don't want to mess up our state, as if we're cloned that would
// cause the clone to copy incorrect metadata (like whether we're
// infinite for example).
CloseChannel();
return status;
}
if (element->ShouldCheckAllowOrigin()) {
// If the request was cancelled by nsCORSListenerProxy due to failing
// the CORS security check, send an error through to the media element.
if (status == NS_ERROR_DOM_BAD_URI) {
mDecoder->NetworkError();
return NS_ERROR_DOM_BAD_URI;
}
}
nsCOMPtr<nsIHttpChannel> hc = do_QueryInterface(aRequest);
bool seekable = false;
if (hc) {
uint32_t responseStatus = 0;
hc->GetResponseStatus(&responseStatus);
bool succeeded = false;
hc->GetRequestSucceeded(&succeeded);
if (!succeeded && NS_SUCCEEDED(status)) {
// HTTP-level error (e.g. 4xx); treat this as a fatal network-level error.
// We might get this on a seek.
// (Note that lower-level errors indicated by NS_FAILED(status) are
// handled in OnStopRequest.)
// A 416 error should treated as EOF here... it's possible
// that we don't get Content-Length, we read N bytes, then we
// suspend and resume, the resume reopens the channel and we seek to
// offset N, but there are no more bytes, so we get a 416
// "Requested Range Not Satisfiable".
if (responseStatus == HTTP_REQUESTED_RANGE_NOT_SATISFIABLE_CODE) {
// OnStopRequest will not be fired, so we need to do some of its
// work here.
mCacheStream.NotifyDataEnded(status);
} else {
mDecoder->NetworkError();
}
// This disconnects our listener so we don't get any more data. We
// certainly don't want an error page to end up in our cache!
CloseChannel();
return NS_OK;
}
nsAutoCString ranges;
hc->GetResponseHeader(NS_LITERAL_CSTRING("Accept-Ranges"),
ranges);
bool acceptsRanges = ranges.EqualsLiteral("bytes");
// True if this channel will not return an unbounded amount of data
bool dataIsBounded = false;
int64_t contentLength = -1;
hc->GetContentLength(&contentLength);
if (contentLength >= 0 && responseStatus == HTTP_OK_CODE) {
// "OK" status means Content-Length is for the whole resource.
// Since that's bounded, we know we have a finite-length resource.
dataIsBounded = true;
}
if (mOffset == 0) {
// Look for duration headers from known Ogg content systems.
// In the case of multiple options for obtaining the duration
// the order of precedence is:
// 1) The Media resource metadata if possible (done by the decoder itself).
// 2) Content-Duration message header.
// 3) X-AMZ-Meta-Content-Duration.
// 4) X-Content-Duration.
// 5) Perform a seek in the decoder to find the value.
nsAutoCString durationText;
nsresult ec = NS_OK;
rv = hc->GetResponseHeader(NS_LITERAL_CSTRING("Content-Duration"), durationText);
if (NS_FAILED(rv)) {
rv = hc->GetResponseHeader(NS_LITERAL_CSTRING("X-AMZ-Meta-Content-Duration"), durationText);
}
if (NS_FAILED(rv)) {
rv = hc->GetResponseHeader(NS_LITERAL_CSTRING("X-Content-Duration"), durationText);
}
// If there is a Content-Duration header with a valid value, record
// the duration.
if (NS_SUCCEEDED(rv)) {
double duration = durationText.ToDouble(&ec);
if (ec == NS_OK && duration >= 0) {
mDecoder->SetDuration(duration);
// We know the resource must be bounded.
dataIsBounded = true;
}
}
}
// Assume Range requests have a bounded upper limit unless the
// Content-Range header tells us otherwise.
bool boundedSeekLimit = true;
// Check response code for byte-range requests (seeking, chunk requests).
if (!mByteRange.IsNull() && (responseStatus == HTTP_PARTIAL_RESPONSE_CODE)) {
// Parse Content-Range header.
int64_t rangeStart = 0;
int64_t rangeEnd = 0;
int64_t rangeTotal = 0;
rv = ParseContentRangeHeader(hc, rangeStart, rangeEnd, rangeTotal);
if (NS_FAILED(rv)) {
// Content-Range header text should be parse-able.
CMLOG("Error processing \'Content-Range' for "
"HTTP_PARTIAL_RESPONSE_CODE: rv[%x] channel[%p] decoder[%p]",
rv, hc.get(), mDecoder);
mDecoder->NetworkError();
CloseChannel();
return NS_OK;
}
// Give some warnings if the ranges are unexpected.
// XXX These could be error conditions.
NS_WARN_IF_FALSE(mByteRange.mStart == rangeStart,
"response range start does not match request");
NS_WARN_IF_FALSE(mOffset == rangeStart,
"response range start does not match current offset");
NS_WARN_IF_FALSE(mByteRange.mEnd == rangeEnd,
"response range end does not match request");
// Notify media cache about the length and start offset of data received.
// Note: If aRangeTotal == -1, then the total bytes is unknown at this stage.
// For now, tell the decoder that the stream is infinite.
if (rangeTotal == -1) {
boundedSeekLimit = false;
} else {
mCacheStream.NotifyDataLength(rangeTotal);
}
mCacheStream.NotifyDataStarted(rangeStart);
mOffset = rangeStart;
// We received 'Content-Range', so the server accepts range requests.
acceptsRanges = true;
} else if (((mOffset > 0) || !mByteRange.IsNull())
&& (responseStatus == HTTP_OK_CODE)) {
// If we get an OK response but we were seeking, or requesting a byte
// range, then we have to assume that seeking doesn't work. We also need
// to tell the cache that it's getting data for the start of the stream.
mCacheStream.NotifyDataStarted(0);
mOffset = 0;
// The server claimed it supported range requests. It lied.
acceptsRanges = false;
} else if (mOffset == 0 &&
(responseStatus == HTTP_OK_CODE ||
responseStatus == HTTP_PARTIAL_RESPONSE_CODE)) {
if (contentLength >= 0) {
mCacheStream.NotifyDataLength(contentLength);
}
}
// XXX we probably should examine the Content-Range header in case
// the server gave us a range which is not quite what we asked for
// If we get an HTTP_OK_CODE response to our byte range request,
// and the server isn't sending Accept-Ranges:bytes then we don't
// support seeking.
seekable =
responseStatus == HTTP_PARTIAL_RESPONSE_CODE || acceptsRanges;
if (seekable && boundedSeekLimit) {
// If range requests are supported, and we did not see an unbounded
// upper range limit, we assume the resource is bounded.
dataIsBounded = true;
}
mDecoder->SetInfinite(!dataIsBounded);
}
mCacheStream.SetTransportSeekable(seekable);
{
MutexAutoLock lock(mLock);
mIsTransportSeekable = seekable;
mChannelStatistics->Start();
}
mReopenOnError = false;
mIgnoreClose = false;
if (mSuspendCount > 0) {
// Re-suspend the channel if it needs to be suspended
// No need to call PossiblySuspend here since the channel is
// definitely in the right state for us in OnStartRequest.
mChannel->Suspend();
mIgnoreResume = false;
}
// Fires an initial progress event and sets up the stall counter so stall events
// fire if no download occurs within the required time frame.
mDecoder->Progress(false);
return NS_OK;
}
bool
ChannelMediaResource::IsTransportSeekable()
{
MutexAutoLock lock(mLock);
return mIsTransportSeekable;
}
nsresult
ChannelMediaResource::ParseContentRangeHeader(nsIHttpChannel * aHttpChan,
int64_t& aRangeStart,
int64_t& aRangeEnd,
int64_t& aRangeTotal)
{
NS_ENSURE_ARG(aHttpChan);
nsAutoCString rangeStr;
nsresult rv = aHttpChan->GetResponseHeader(NS_LITERAL_CSTRING("Content-Range"),
rangeStr);
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_FALSE(rangeStr.IsEmpty(), NS_ERROR_ILLEGAL_VALUE);
// Parse the range header: e.g. Content-Range: bytes 7000-7999/8000.
int32_t spacePos = rangeStr.Find(NS_LITERAL_CSTRING(" "));
int32_t dashPos = rangeStr.Find(NS_LITERAL_CSTRING("-"), true, spacePos);
int32_t slashPos = rangeStr.Find(NS_LITERAL_CSTRING("/"), true, dashPos);
nsAutoCString aRangeStartText;
rangeStr.Mid(aRangeStartText, spacePos+1, dashPos-(spacePos+1));
aRangeStart = aRangeStartText.ToInteger64(&rv);
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(0 <= aRangeStart, NS_ERROR_ILLEGAL_VALUE);
nsAutoCString aRangeEndText;
rangeStr.Mid(aRangeEndText, dashPos+1, slashPos-(dashPos+1));
aRangeEnd = aRangeEndText.ToInteger64(&rv);
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_TRUE(aRangeStart < aRangeEnd, NS_ERROR_ILLEGAL_VALUE);
nsAutoCString aRangeTotalText;
rangeStr.Right(aRangeTotalText, rangeStr.Length()-(slashPos+1));
if (aRangeTotalText[0] == '*') {
aRangeTotal = -1;
} else {
aRangeTotal = aRangeTotalText.ToInteger64(&rv);
NS_ENSURE_TRUE(aRangeEnd < aRangeTotal, NS_ERROR_ILLEGAL_VALUE);
NS_ENSURE_SUCCESS(rv, rv);
}
CMLOG("Received bytes [%lld] to [%lld] of [%lld] for decoder[%p]",
aRangeStart, aRangeEnd, aRangeTotal, mDecoder);
return NS_OK;
}
nsresult
ChannelMediaResource::OnStopRequest(nsIRequest* aRequest, nsresult aStatus)
{
NS_ASSERTION(mChannel.get() == aRequest, "Wrong channel!");
NS_ASSERTION(mSuspendCount == 0,
"How can OnStopRequest fire while we're suspended?");
{
MutexAutoLock lock(mLock);
mChannelStatistics->Stop();
}
// Note that aStatus might have succeeded --- this might be a normal close
// --- even in situations where the server cut us off because we were
// suspended. So we need to "reopen on error" in that case too. The only
// cases where we don't need to reopen are when *we* closed the stream.
// But don't reopen if we need to seek and we don't think we can... that would
// cause us to just re-read the stream, which would be really bad.
if (mReopenOnError &&
aStatus != NS_ERROR_PARSED_DATA_CACHED && aStatus != NS_BINDING_ABORTED &&
(mOffset == 0 || mCacheStream.IsTransportSeekable())) {
// If the stream did close normally, then if the server is seekable we'll
// just seek to the end of the resource and get an HTTP 416 error because
// there's nothing there, so this isn't bad.
nsresult rv = CacheClientSeek(mOffset, false);
if (NS_SUCCEEDED(rv))
return rv;
// If the reopen/reseek fails, just fall through and treat this
// error as fatal.
}
if (!mIgnoreClose) {
mCacheStream.NotifyDataEnded(aStatus);
// Move this request back into the foreground. This is necessary for
// requests owned by video documents to ensure the load group fires
// OnStopRequest when restoring from session history.
nsLoadFlags loadFlags;
DebugOnly<nsresult> rv = mChannel->GetLoadFlags(&loadFlags);
NS_ASSERTION(NS_SUCCEEDED(rv), "GetLoadFlags() failed!");
if (loadFlags & nsIRequest::LOAD_BACKGROUND) {
ModifyLoadFlags(loadFlags & ~nsIRequest::LOAD_BACKGROUND);
}
}
return NS_OK;
}
nsresult
ChannelMediaResource::OnChannelRedirect(nsIChannel* aOld, nsIChannel* aNew,
uint32_t aFlags)
{
mChannel = aNew;
return SetupChannelHeaders();
}
struct CopySegmentClosure {
nsCOMPtr<nsIPrincipal> mPrincipal;
ChannelMediaResource* mResource;
};
NS_METHOD
ChannelMediaResource::CopySegmentToCache(nsIInputStream *aInStream,
void *aClosure,
const char *aFromSegment,
uint32_t aToOffset,
uint32_t aCount,
uint32_t *aWriteCount)
{
CopySegmentClosure* closure = static_cast<CopySegmentClosure*>(aClosure);
closure->mResource->mDecoder->NotifyDataArrived(aFromSegment, aCount, closure->mResource->mOffset);
// Keep track of where we're up to.
RESOURCE_LOG("%p [ChannelMediaResource]: CopySegmentToCache at mOffset [%lld] add "
"[%d] bytes for decoder[%p]",
closure->mResource, closure->mResource->mOffset, aCount,
closure->mResource->mDecoder);
closure->mResource->mOffset += aCount;
closure->mResource->mCacheStream.NotifyDataReceived(aCount, aFromSegment,
closure->mPrincipal);
*aWriteCount = aCount;
return NS_OK;
}
nsresult
ChannelMediaResource::OnDataAvailable(nsIRequest* aRequest,
nsIInputStream* aStream,
uint32_t aCount)
{
NS_ASSERTION(mChannel.get() == aRequest, "Wrong channel!");
{
MutexAutoLock lock(mLock);
mChannelStatistics->AddBytes(aCount);
}
CopySegmentClosure closure;
nsIScriptSecurityManager* secMan = nsContentUtils::GetSecurityManager();
if (secMan && mChannel) {
secMan->GetChannelResultPrincipal(mChannel, getter_AddRefs(closure.mPrincipal));
}
closure.mResource = this;
uint32_t count = aCount;
while (count > 0) {
uint32_t read;
nsresult rv = aStream->ReadSegments(CopySegmentToCache, &closure, count,
&read);
if (NS_FAILED(rv))
return rv;
NS_ASSERTION(read > 0, "Read 0 bytes while data was available?");
count -= read;
}
return NS_OK;
}
nsresult ChannelMediaResource::Open(nsIStreamListener **aStreamListener)
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
if (!mChannelStatistics) {
mChannelStatistics = new MediaChannelStatistics();
}
nsresult rv = mCacheStream.Init();
if (NS_FAILED(rv))
return rv;
NS_ASSERTION(mOffset == 0, "Who set mOffset already?");
if (!mChannel) {
// When we're a clone, the decoder might ask us to Open even though
// we haven't established an mChannel (because we might not need one)
NS_ASSERTION(!aStreamListener,
"Should have already been given a channel if we're to return a stream listener");
return NS_OK;
}
return OpenChannel(aStreamListener);
}
nsresult ChannelMediaResource::OpenChannel(nsIStreamListener** aStreamListener)
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
NS_ENSURE_TRUE(mChannel, NS_ERROR_NULL_POINTER);
NS_ASSERTION(!mListener, "Listener should have been removed by now");
if (aStreamListener) {
*aStreamListener = nullptr;
}
if (mByteRange.IsNull()) {
// We're not making a byte range request, so set the content length,
// if it's available as an HTTP header. This ensures that MediaResource
// wrapping objects for platform libraries that expect to know
// the length of a resource can get it before OnStartRequest() fires.
nsCOMPtr<nsIHttpChannel> hc = do_QueryInterface(mChannel);
if (hc) {
int64_t cl = -1;
if (NS_SUCCEEDED(hc->GetContentLength(&cl)) && cl != -1) {
mCacheStream.NotifyDataLength(cl);
}
}
}
mListener = new Listener(this);
NS_ENSURE_TRUE(mListener, NS_ERROR_OUT_OF_MEMORY);
if (aStreamListener) {
*aStreamListener = mListener;
NS_ADDREF(*aStreamListener);
} else {
nsresult rv = mChannel->SetNotificationCallbacks(mListener.get());
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIStreamListener> listener = mListener.get();
// Ensure that if we're loading cross domain, that the server is sending
// an authorizing Access-Control header.
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
NS_ENSURE_TRUE(owner, NS_ERROR_FAILURE);
dom::HTMLMediaElement* element = owner->GetMediaElement();
NS_ENSURE_TRUE(element, NS_ERROR_FAILURE);
if (element->ShouldCheckAllowOrigin()) {
nsRefPtr<nsCORSListenerProxy> crossSiteListener =
new nsCORSListenerProxy(mListener,
element->NodePrincipal(),
false);
NS_ENSURE_TRUE(crossSiteListener, NS_ERROR_OUT_OF_MEMORY);
rv = crossSiteListener->Init(mChannel);
NS_ENSURE_SUCCESS(rv, rv);
listener = crossSiteListener;
} else {
rv = nsContentUtils::GetSecurityManager()->
CheckLoadURIWithPrincipal(element->NodePrincipal(),
mURI,
nsIScriptSecurityManager::STANDARD);
NS_ENSURE_SUCCESS(rv, rv);
}
rv = SetupChannelHeaders();
NS_ENSURE_SUCCESS(rv, rv);
rv = mChannel->AsyncOpen(listener, nullptr);
NS_ENSURE_SUCCESS(rv, rv);
// Tell the media element that we are fetching data from a channel.
element->DownloadResumed(true);
}
return NS_OK;
}
nsresult ChannelMediaResource::SetupChannelHeaders()
{
// Always use a byte range request even if we're reading from the start
// of the resource.
// This enables us to detect if the stream supports byte range
// requests, and therefore seeking, early.
nsCOMPtr<nsIHttpChannel> hc = do_QueryInterface(mChannel);
if (hc) {
// Use |mByteRange| for a specific chunk, or |mOffset| if seeking in a
// complete file download.
nsAutoCString rangeString("bytes=");
if (!mByteRange.IsNull()) {
rangeString.AppendInt(mByteRange.mStart);
mOffset = mByteRange.mStart;
} else {
rangeString.AppendInt(mOffset);
}
rangeString.Append('-');
if (!mByteRange.IsNull()) {
rangeString.AppendInt(mByteRange.mEnd);
}
nsresult rv = hc->SetRequestHeader(NS_LITERAL_CSTRING("Range"), rangeString, false);
NS_ENSURE_SUCCESS(rv, rv);
// Send Accept header for video and audio types only (Bug 489071)
NS_ASSERTION(NS_IsMainThread(), "Don't call on non-main thread");
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
NS_ENSURE_TRUE(owner, NS_ERROR_FAILURE);
dom::HTMLMediaElement* element = owner->GetMediaElement();
NS_ENSURE_TRUE(element, NS_ERROR_FAILURE);
element->SetRequestHeaders(hc);
} else {
NS_ASSERTION(mOffset == 0, "Don't know how to seek on this channel type");
return NS_ERROR_FAILURE;
}
return NS_OK;
}
nsresult ChannelMediaResource::Close()
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
mCacheStream.Close();
CloseChannel();
return NS_OK;
}
already_AddRefed<nsIPrincipal> ChannelMediaResource::GetCurrentPrincipal()
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
nsCOMPtr<nsIPrincipal> principal = mCacheStream.GetCurrentPrincipal();
return principal.forget();
}
bool ChannelMediaResource::CanClone()
{
return mCacheStream.IsAvailableForSharing();
}
already_AddRefed<MediaResource> ChannelMediaResource::CloneData(MediaDecoder* aDecoder)
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
NS_ASSERTION(mCacheStream.IsAvailableForSharing(), "Stream can't be cloned");
nsRefPtr<ChannelMediaResource> resource =
new ChannelMediaResource(aDecoder,
nullptr,
mURI,
GetContentType());
if (resource) {
// Initially the clone is treated as suspended by the cache, because
// we don't have a channel. If the cache needs to read data from the clone
// it will call CacheClientResume (or CacheClientSeek with aResume true)
// which will recreate the channel. This way, if all of the media data
// is already in the cache we don't create an unnecessary HTTP channel
// and perform a useless HTTP transaction.
resource->mSuspendCount = 1;
resource->mCacheStream.InitAsClone(&mCacheStream);
resource->mChannelStatistics = new MediaChannelStatistics(mChannelStatistics);
resource->mChannelStatistics->Stop();
}
return resource.forget();
}
void ChannelMediaResource::CloseChannel()
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
{
MutexAutoLock lock(mLock);
mChannelStatistics->Stop();
}
if (mListener) {
mListener->Revoke();
mListener = nullptr;
}
if (mChannel) {
if (mSuspendCount > 0) {
// Resume the channel before we cancel it
PossiblyResume();
}
// The status we use here won't be passed to the decoder, since
// we've already revoked the listener. It can however be passed
// to nsDocumentViewer::LoadComplete if our channel is the one
// that kicked off creation of a video document. We don't want that
// document load to think there was an error.
// NS_ERROR_PARSED_DATA_CACHED is the best thing we have for that
// at the moment.
mChannel->Cancel(NS_ERROR_PARSED_DATA_CACHED);
mChannel = nullptr;
}
}
nsresult ChannelMediaResource::ReadFromCache(char* aBuffer,
int64_t aOffset,
uint32_t aCount)
{
return mCacheStream.ReadFromCache(aBuffer, aOffset, aCount);
}
nsresult ChannelMediaResource::Read(char* aBuffer,
uint32_t aCount,
uint32_t* aBytes)
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
int64_t offset = mCacheStream.Tell();
nsresult rv = mCacheStream.Read(aBuffer, aCount, aBytes);
if (NS_SUCCEEDED(rv)) {
DispatchBytesConsumed(*aBytes, offset);
}
return rv;
}
nsresult ChannelMediaResource::ReadAt(int64_t aOffset,
char* aBuffer,
uint32_t aCount,
uint32_t* aBytes)
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
nsresult rv = mCacheStream.ReadAt(aOffset, aBuffer, aCount, aBytes);
if (NS_SUCCEEDED(rv)) {
DispatchBytesConsumed(*aBytes, aOffset);
}
return rv;
}
nsresult ChannelMediaResource::Seek(int32_t aWhence, int64_t aOffset)
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
CMLOG("Seek requested for aOffset [%lld] for decoder [%p]",
aOffset, mDecoder);
return mCacheStream.Seek(aWhence, aOffset);
}
int64_t ChannelMediaResource::Tell()
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
return mCacheStream.Tell();
}
nsresult ChannelMediaResource::GetCachedRanges(nsTArray<MediaByteRange>& aRanges)
{
return mCacheStream.GetCachedRanges(aRanges);
}
void ChannelMediaResource::Suspend(bool aCloseImmediately)
{
NS_ASSERTION(NS_IsMainThread(), "Don't call on non-main thread");
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
if (!owner) {
// Shutting down; do nothing.
return;
}
dom::HTMLMediaElement* element = owner->GetMediaElement();
if (!element) {
// Shutting down; do nothing.
return;
}
if (mChannel) {
if (aCloseImmediately && mCacheStream.IsTransportSeekable()) {
// Kill off our channel right now, but don't tell anyone about it.
mIgnoreClose = true;
CloseChannel();
element->DownloadSuspended();
} else if (mSuspendCount == 0) {
{
MutexAutoLock lock(mLock);
mChannelStatistics->Stop();
}
PossiblySuspend();
element->DownloadSuspended();
}
}
++mSuspendCount;
}
void ChannelMediaResource::Resume()
{
NS_ASSERTION(NS_IsMainThread(), "Don't call on non-main thread");
NS_ASSERTION(mSuspendCount > 0, "Too many resumes!");
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
if (!owner) {
// Shutting down; do nothing.
return;
}
dom::HTMLMediaElement* element = owner->GetMediaElement();
if (!element) {
// Shutting down; do nothing.
return;
}
NS_ASSERTION(mSuspendCount > 0, "Resume without previous Suspend!");
--mSuspendCount;
if (mSuspendCount == 0) {
if (mChannel) {
// Just wake up our existing channel
{
MutexAutoLock lock(mLock);
mChannelStatistics->Start();
}
// if an error occurs after Resume, assume it's because the server
// timed out the connection and we should reopen it.
mReopenOnError = true;
PossiblyResume();
element->DownloadResumed();
} else {
int64_t totalLength = mCacheStream.GetLength();
// If mOffset is at the end of the stream, then we shouldn't try to
// seek to it. The seek will fail and be wasted anyway. We can leave
// the channel dead; if the media cache wants to read some other data
// in the future, it will call CacheClientSeek itself which will reopen the
// channel.
if (totalLength < 0 || mOffset < totalLength) {
// There is (or may be) data to read at mOffset, so start reading it.
// Need to recreate the channel.
CacheClientSeek(mOffset, false);
element->DownloadResumed();
} else {
// The channel remains dead. Do not notify DownloadResumed() which
// will leave the media element in NETWORK_LOADING state.
}
}
}
}
nsresult
ChannelMediaResource::RecreateChannel()
{
nsLoadFlags loadFlags =
nsICachingChannel::LOAD_BYPASS_LOCAL_CACHE_IF_BUSY |
(mLoadInBackground ? nsIRequest::LOAD_BACKGROUND : 0);
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
if (!owner) {
// The decoder is being shut down, so don't bother opening a new channel
return NS_OK;
}
dom::HTMLMediaElement* element = owner->GetMediaElement();
if (!element) {
// The decoder is being shut down, so don't bother opening a new channel
return NS_OK;
}
nsCOMPtr<nsILoadGroup> loadGroup = element->GetDocumentLoadGroup();
NS_ENSURE_TRUE(loadGroup, NS_ERROR_NULL_POINTER);
nsresult rv = NS_NewChannel(getter_AddRefs(mChannel),
mURI,
element,
nsILoadInfo::SEC_NORMAL,
nsIContentPolicy::TYPE_MEDIA,
loadGroup,
nullptr, // aCallbacks
loadFlags);
NS_ENSURE_SUCCESS(rv, rv);
// We have cached the Content-Type, which should not change. Give a hint to
// the channel to avoid a sniffing failure, which would be expected because we
// are probably seeking in the middle of the bitstream, and sniffing relies
// on the presence of a magic number at the beginning of the stream.
NS_ASSERTION(!GetContentType().IsEmpty(),
"When recreating a channel, we should know the Content-Type.");
mChannel->SetContentType(GetContentType());
// Tell the cache to reset the download status when the channel is reopened.
mCacheStream.NotifyChannelRecreated();
return rv;
}
void
ChannelMediaResource::DoNotifyDataReceived()
{
mDataReceivedEvent.Revoke();
mDecoder->NotifyBytesDownloaded();
}
void
ChannelMediaResource::CacheClientNotifyDataReceived()
{
NS_ASSERTION(NS_IsMainThread(), "Don't call on non-main thread");
// NOTE: this can be called with the media cache lock held, so don't
// block or do anything which might try to acquire a lock!
if (mDataReceivedEvent.IsPending())
return;
mDataReceivedEvent =
NS_NewNonOwningRunnableMethod(this, &ChannelMediaResource::DoNotifyDataReceived);
NS_DispatchToMainThread(mDataReceivedEvent.get());
}
class DataEnded : public nsRunnable {
public:
DataEnded(MediaDecoder* aDecoder, nsresult aStatus) :
mDecoder(aDecoder), mStatus(aStatus) {}
NS_IMETHOD Run() {
mDecoder->NotifyDownloadEnded(mStatus);
if (NS_SUCCEEDED(mStatus)) {
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
if (owner) {
dom::HTMLMediaElement* element = owner->GetMediaElement();
if (element) {
element->DownloadSuspended();
}
}
// NotifySuspendedStatusChanged will tell the element that download
// has been suspended "by the cache", which is true since we never download
// anything. The element can then transition to HAVE_ENOUGH_DATA.
mDecoder->NotifySuspendedStatusChanged();
}
return NS_OK;
}
private:
nsRefPtr<MediaDecoder> mDecoder;
nsresult mStatus;
};
void
ChannelMediaResource::CacheClientNotifyDataEnded(nsresult aStatus)
{
MOZ_ASSERT(NS_IsMainThread());
// NOTE: this can be called with the media cache lock held, so don't
// block or do anything which might try to acquire a lock!
nsCOMPtr<nsIRunnable> event = new DataEnded(mDecoder, aStatus);
NS_DispatchToCurrentThread(event);
}
void
ChannelMediaResource::CacheClientNotifyPrincipalChanged()
{
NS_ASSERTION(NS_IsMainThread(), "Don't call on non-main thread");
mDecoder->NotifyPrincipalChanged();
}
nsresult
ChannelMediaResource::CacheClientSeek(int64_t aOffset, bool aResume)
{
NS_ASSERTION(NS_IsMainThread(), "Don't call on non-main thread");
CMLOG("CacheClientSeek requested for aOffset [%lld] for decoder [%p]",
aOffset, mDecoder);
CloseChannel();
if (aResume) {
NS_ASSERTION(mSuspendCount > 0, "Too many resumes!");
// No need to mess with the channel, since we're making a new one
--mSuspendCount;
}
mOffset = aOffset;
if (mSuspendCount > 0) {
// Close the existing channel to force the channel to be recreated at
// the correct offset upon resume.
if (mChannel) {
mIgnoreClose = true;
CloseChannel();
}
return NS_OK;
}
nsresult rv = RecreateChannel();
NS_ENSURE_SUCCESS(rv, rv);
return OpenChannel(nullptr);
}
void
ChannelMediaResource::FlushCache()
{
NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
// Ensure that data in the cache's partial block is written to disk.
mCacheStream.FlushPartialBlock();
}
void
ChannelMediaResource::NotifyLastByteRange()
{
NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
// Tell media cache that the last data has been downloaded.
// Note: subsequent seeks will require re-opening the channel etc.
mCacheStream.NotifyDataEnded(NS_OK);
}
nsresult
ChannelMediaResource::CacheClientSuspend()
{
Suspend(false);
mDecoder->NotifySuspendedStatusChanged();
return NS_OK;
}
nsresult
ChannelMediaResource::CacheClientResume()
{
Resume();
mDecoder->NotifySuspendedStatusChanged();
return NS_OK;
}
int64_t
ChannelMediaResource::GetNextCachedData(int64_t aOffset)
{
return mCacheStream.GetNextCachedData(aOffset);
}
int64_t
ChannelMediaResource::GetCachedDataEnd(int64_t aOffset)
{
return mCacheStream.GetCachedDataEnd(aOffset);
}
bool
ChannelMediaResource::IsDataCachedToEndOfResource(int64_t aOffset)
{
return mCacheStream.IsDataCachedToEndOfStream(aOffset);
}
void
ChannelMediaResource::EnsureCacheUpToDate()
{
mCacheStream.EnsureCacheUpdate();
}
bool
ChannelMediaResource::IsSuspendedByCache()
{
return mCacheStream.AreAllStreamsForResourceSuspended();
}
bool
ChannelMediaResource::IsSuspended()
{
MutexAutoLock lock(mLock);
return mSuspendCount > 0;
}
void
ChannelMediaResource::SetReadMode(MediaCacheStream::ReadMode aMode)
{
mCacheStream.SetReadMode(aMode);
}
void
ChannelMediaResource::SetPlaybackRate(uint32_t aBytesPerSecond)
{
mCacheStream.SetPlaybackRate(aBytesPerSecond);
}
void
ChannelMediaResource::Pin()
{
mCacheStream.Pin();
}
void
ChannelMediaResource::Unpin()
{
mCacheStream.Unpin();
}
double
ChannelMediaResource::GetDownloadRate(bool* aIsReliable)
{
MutexAutoLock lock(mLock);
return mChannelStatistics->GetRate(aIsReliable);
}
int64_t
ChannelMediaResource::GetLength()
{
return mCacheStream.GetLength();
}
void
ChannelMediaResource::PossiblySuspend()
{
bool isPending = false;
nsresult rv = mChannel->IsPending(&isPending);
if (NS_SUCCEEDED(rv) && isPending) {
mChannel->Suspend();
mIgnoreResume = false;
} else {
mIgnoreResume = true;
}
}
void
ChannelMediaResource::PossiblyResume()
{
if (!mIgnoreResume) {
mChannel->Resume();
} else {
mIgnoreResume = false;
}
}
class FileMediaResource : public BaseMediaResource
{
public:
FileMediaResource(MediaDecoder* aDecoder,
nsIChannel* aChannel,
nsIURI* aURI,
const nsACString& aContentType) :
BaseMediaResource(aDecoder, aChannel, aURI, aContentType),
mSize(-1),
mLock("FileMediaResource.mLock"),
mSizeInitialized(false)
{
}
~FileMediaResource()
{
}
// Main thread
virtual nsresult Open(nsIStreamListener** aStreamListener);
virtual nsresult Close();
virtual void Suspend(bool aCloseImmediately) {}
virtual void Resume() {}
virtual already_AddRefed<nsIPrincipal> GetCurrentPrincipal();
virtual bool CanClone();
virtual already_AddRefed<MediaResource> CloneData(MediaDecoder* aDecoder);
virtual nsresult ReadFromCache(char* aBuffer, int64_t aOffset, uint32_t aCount);
// These methods are called off the main thread.
// Other thread
virtual void SetReadMode(MediaCacheStream::ReadMode aMode) {}
virtual void SetPlaybackRate(uint32_t aBytesPerSecond) {}
virtual nsresult Read(char* aBuffer, uint32_t aCount, uint32_t* aBytes);
virtual nsresult ReadAt(int64_t aOffset, char* aBuffer,
uint32_t aCount, uint32_t* aBytes);
virtual nsresult Seek(int32_t aWhence, int64_t aOffset);
virtual int64_t Tell();
// Any thread
virtual void Pin() {}
virtual void Unpin() {}
virtual double GetDownloadRate(bool* aIsReliable)
{
// The data's all already here
*aIsReliable = true;
return 100*1024*1024; // arbitray, use 100MB/s
}
virtual int64_t GetLength() {
MutexAutoLock lock(mLock);
EnsureSizeInitialized();
return mSizeInitialized ? mSize : 0;
}
virtual int64_t GetNextCachedData(int64_t aOffset)
{
MutexAutoLock lock(mLock);
EnsureSizeInitialized();
return (aOffset < mSize) ? aOffset : -1;
}
virtual int64_t GetCachedDataEnd(int64_t aOffset) {
MutexAutoLock lock(mLock);
EnsureSizeInitialized();
return std::max(aOffset, mSize);
}
virtual bool IsDataCachedToEndOfResource(int64_t aOffset) { return true; }
virtual bool IsSuspendedByCache() { return true; }
virtual bool IsSuspended() { return true; }
virtual bool IsTransportSeekable() MOZ_OVERRIDE { return true; }
nsresult GetCachedRanges(nsTArray<MediaByteRange>& aRanges);
virtual size_t SizeOfExcludingThis(
MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE
{
// Might be useful to track in the future:
// - mInput
return BaseMediaResource::SizeOfExcludingThis(aMallocSizeOf);
}
virtual size_t SizeOfIncludingThis(
MallocSizeOf aMallocSizeOf) const MOZ_OVERRIDE
{
return aMallocSizeOf(this) + SizeOfExcludingThis(aMallocSizeOf);
}
protected:
// These Unsafe variants of Read and Seek perform their operations
// without acquiring mLock. The caller must obtain the lock before
// calling. The implmentation of Read, Seek and ReadAt obtains the
// lock before calling these Unsafe variants to read or seek.
nsresult UnsafeRead(char* aBuffer, uint32_t aCount, uint32_t* aBytes);
nsresult UnsafeSeek(int32_t aWhence, int64_t aOffset);
private:
// Ensures mSize is initialized, if it can be.
// mLock must be held when this is called, and mInput must be non-null.
void EnsureSizeInitialized();
// The file size, or -1 if not known. Immutable after Open().
// Can be used from any thread.
int64_t mSize;
// This lock handles synchronisation between calls to Close() and
// the Read, Seek, etc calls. Close must not be called while a
// Read or Seek is in progress since it resets various internal
// values to null.
// This lock protects mSeekable, mInput, mSize, and mSizeInitialized.
Mutex mLock;
// Seekable stream interface to file. This can be used from any
// thread.
nsCOMPtr<nsISeekableStream> mSeekable;
// Input stream for the media data. This can be used from any
// thread.
nsCOMPtr<nsIInputStream> mInput;
// Whether we've attempted to initialize mSize. Note that mSize can be -1
// when mSizeInitialized is true if we tried and failed to get the size
// of the file.
bool mSizeInitialized;
};
void FileMediaResource::EnsureSizeInitialized()
{
mLock.AssertCurrentThreadOwns();
NS_ASSERTION(mInput, "Must have file input stream");
if (mSizeInitialized) {
return;
}
mSizeInitialized = true;
// Get the file size and inform the decoder.
uint64_t size;
nsresult res = mInput->Available(&size);
if (NS_SUCCEEDED(res) && size <= INT64_MAX) {
mSize = (int64_t)size;
nsCOMPtr<nsIRunnable> event = new DataEnded(mDecoder, NS_OK);
NS_DispatchToMainThread(event);
}
}
nsresult FileMediaResource::GetCachedRanges(nsTArray<MediaByteRange>& aRanges)
{
MutexAutoLock lock(mLock);
EnsureSizeInitialized();
if (mSize == -1) {
return NS_ERROR_FAILURE;
}
aRanges.AppendElement(MediaByteRange(0, mSize));
return NS_OK;
}
nsresult FileMediaResource::Open(nsIStreamListener** aStreamListener)
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
if (aStreamListener) {
*aStreamListener = nullptr;
}
nsresult rv = NS_OK;
if (aStreamListener) {
// The channel is already open. We need a synchronous stream that
// implements nsISeekableStream, so we have to find the underlying
// file and reopen it
nsCOMPtr<nsIFileChannel> fc(do_QueryInterface(mChannel));
if (fc) {
nsCOMPtr<nsIFile> file;
rv = fc->GetFile(getter_AddRefs(file));
NS_ENSURE_SUCCESS(rv, rv);
rv = NS_NewLocalFileInputStream(getter_AddRefs(mInput), file);
} else if (IsBlobURI(mURI)) {
rv = NS_GetStreamForBlobURI(mURI, getter_AddRefs(mInput));
}
} else {
// Ensure that we never load a local file from some page on a
// web server.
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
NS_ENSURE_TRUE(owner, NS_ERROR_FAILURE);
dom::HTMLMediaElement* element = owner->GetMediaElement();
NS_ENSURE_TRUE(element, NS_ERROR_FAILURE);
rv = nsContentUtils::GetSecurityManager()->
CheckLoadURIWithPrincipal(element->NodePrincipal(),
mURI,
nsIScriptSecurityManager::STANDARD);
NS_ENSURE_SUCCESS(rv, rv);
rv = mChannel->Open(getter_AddRefs(mInput));
}
NS_ENSURE_SUCCESS(rv, rv);
mSeekable = do_QueryInterface(mInput);
if (!mSeekable) {
// XXX The file may just be a .url or similar
// shortcut that points to a Web site. We need to fix this by
// doing an async open and waiting until we locate the real resource,
// then using that (if it's still a file!).
return NS_ERROR_FAILURE;
}
return NS_OK;
}
nsresult FileMediaResource::Close()
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
// Since mChennel is only accessed by main thread, there is no necessary to
// take the lock.
if (mChannel) {
mChannel->Cancel(NS_ERROR_PARSED_DATA_CACHED);
mChannel = nullptr;
}
return NS_OK;
}
already_AddRefed<nsIPrincipal> FileMediaResource::GetCurrentPrincipal()
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
nsCOMPtr<nsIPrincipal> principal;
nsIScriptSecurityManager* secMan = nsContentUtils::GetSecurityManager();
if (!secMan || !mChannel)
return nullptr;
secMan->GetChannelResultPrincipal(mChannel, getter_AddRefs(principal));
return principal.forget();
}
bool FileMediaResource::CanClone()
{
return true;
}
already_AddRefed<MediaResource> FileMediaResource::CloneData(MediaDecoder* aDecoder)
{
NS_ASSERTION(NS_IsMainThread(), "Only call on main thread");
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
if (!owner) {
// The decoder is being shut down, so we can't clone
return nullptr;
}
dom::HTMLMediaElement* element = owner->GetMediaElement();
if (!element) {
// The decoder is being shut down, so we can't clone
return nullptr;
}
nsCOMPtr<nsILoadGroup> loadGroup = element->GetDocumentLoadGroup();
NS_ENSURE_TRUE(loadGroup, nullptr);
nsCOMPtr<nsIChannel> channel;
nsresult rv =
NS_NewChannel(getter_AddRefs(channel),
mURI,
element,
nsILoadInfo::SEC_NORMAL,
nsIContentPolicy::TYPE_MEDIA,
loadGroup);
if (NS_FAILED(rv))
return nullptr;
nsRefPtr<MediaResource> resource(new FileMediaResource(aDecoder, channel, mURI, GetContentType()));
return resource.forget();
}
nsresult FileMediaResource::ReadFromCache(char* aBuffer, int64_t aOffset, uint32_t aCount)
{
MutexAutoLock lock(mLock);
EnsureSizeInitialized();
int64_t offset = 0;
nsresult res = mSeekable->Tell(&offset);
NS_ENSURE_SUCCESS(res,res);
res = mSeekable->Seek(nsISeekableStream::NS_SEEK_SET, aOffset);
NS_ENSURE_SUCCESS(res,res);
uint32_t bytesRead = 0;
do {
uint32_t x = 0;
uint32_t bytesToRead = aCount - bytesRead;
res = mInput->Read(aBuffer, bytesToRead, &x);
bytesRead += x;
} while (bytesRead != aCount && res == NS_OK);
// Reset read head to original position so we don't disturb any other
// reading thread.
nsresult seekres = mSeekable->Seek(nsISeekableStream::NS_SEEK_SET, offset);
// If a read failed in the loop above, we want to return its failure code.
NS_ENSURE_SUCCESS(res,res);
// Else we succeed if the reset-seek succeeds.
return seekres;
}
nsresult FileMediaResource::Read(char* aBuffer, uint32_t aCount, uint32_t* aBytes)
{
nsresult rv;
int64_t offset = 0;
{
MutexAutoLock lock(mLock);
mSeekable->Tell(&offset);
rv = UnsafeRead(aBuffer, aCount, aBytes);
}
if (NS_SUCCEEDED(rv)) {
DispatchBytesConsumed(*aBytes, offset);
}
return rv;
}
nsresult FileMediaResource::UnsafeRead(char* aBuffer, uint32_t aCount, uint32_t* aBytes)
{
EnsureSizeInitialized();
return mInput->Read(aBuffer, aCount, aBytes);
}
nsresult FileMediaResource::ReadAt(int64_t aOffset, char* aBuffer,
uint32_t aCount, uint32_t* aBytes)
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
nsresult rv;
{
MutexAutoLock lock(mLock);
rv = UnsafeSeek(nsISeekableStream::NS_SEEK_SET, aOffset);
if (NS_FAILED(rv)) return rv;
rv = UnsafeRead(aBuffer, aCount, aBytes);
}
if (NS_SUCCEEDED(rv)) {
DispatchBytesConsumed(*aBytes, aOffset);
}
return rv;
}
nsresult FileMediaResource::Seek(int32_t aWhence, int64_t aOffset)
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
MutexAutoLock lock(mLock);
return UnsafeSeek(aWhence, aOffset);
}
nsresult FileMediaResource::UnsafeSeek(int32_t aWhence, int64_t aOffset)
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
if (!mSeekable)
return NS_ERROR_FAILURE;
EnsureSizeInitialized();
return mSeekable->Seek(aWhence, aOffset);
}
int64_t FileMediaResource::Tell()
{
NS_ASSERTION(!NS_IsMainThread(), "Don't call on main thread");
MutexAutoLock lock(mLock);
EnsureSizeInitialized();
int64_t offset = 0;
// Return mSize as offset (end of stream) in case of error
if (!mSeekable || NS_FAILED(mSeekable->Tell(&offset)))
return mSize;
return offset;
}
already_AddRefed<MediaResource>
MediaResource::Create(MediaDecoder* aDecoder, nsIChannel* aChannel)
{
NS_ASSERTION(NS_IsMainThread(),
"MediaResource::Open called on non-main thread");
// If the channel was redirected, we want the post-redirect URI;
// but if the URI scheme was expanded, say from chrome: to jar:file:,
// we want the original URI.
nsCOMPtr<nsIURI> uri;
nsresult rv = NS_GetFinalChannelURI(aChannel, getter_AddRefs(uri));
NS_ENSURE_SUCCESS(rv, nullptr);
nsAutoCString contentType;
aChannel->GetContentType(contentType);
nsCOMPtr<nsIFileChannel> fc = do_QueryInterface(aChannel);
nsRefPtr<MediaResource> resource;
if (fc || IsBlobURI(uri)) {
resource = new FileMediaResource(aDecoder, aChannel, uri, contentType);
} else if (IsRtspURI(uri)) {
resource = new RtspMediaResource(aDecoder, aChannel, uri, contentType);
} else {
resource = new ChannelMediaResource(aDecoder, aChannel, uri, contentType);
}
return resource.forget();
}
void BaseMediaResource::MoveLoadsToBackground() {
NS_ASSERTION(!mLoadInBackground, "Why are you calling this more than once?");
mLoadInBackground = true;
if (!mChannel) {
// No channel, resource is probably already loaded.
return;
}
MediaDecoderOwner* owner = mDecoder->GetMediaOwner();
if (!owner) {
NS_WARNING("Null owner in MediaResource::MoveLoadsToBackground()");
return;
}
dom::HTMLMediaElement* element = owner->GetMediaElement();
if (!element) {
NS_WARNING("Null element in MediaResource::MoveLoadsToBackground()");
return;
}
bool isPending = false;
if (NS_SUCCEEDED(mChannel->IsPending(&isPending)) &&
isPending) {
nsLoadFlags loadFlags;
DebugOnly<nsresult> rv = mChannel->GetLoadFlags(&loadFlags);
NS_ASSERTION(NS_SUCCEEDED(rv), "GetLoadFlags() failed!");
loadFlags |= nsIRequest::LOAD_BACKGROUND;
ModifyLoadFlags(loadFlags);
}
}
void BaseMediaResource::ModifyLoadFlags(nsLoadFlags aFlags)
{
nsCOMPtr<nsILoadGroup> loadGroup;
DebugOnly<nsresult> rv = mChannel->GetLoadGroup(getter_AddRefs(loadGroup));
NS_ASSERTION(NS_SUCCEEDED(rv), "GetLoadGroup() failed!");
nsresult status;
mChannel->GetStatus(&status);
// Note: if (NS_FAILED(status)), the channel won't be in the load group.
if (loadGroup &&
NS_SUCCEEDED(status)) {
rv = loadGroup->RemoveRequest(mChannel, nullptr, status);
NS_ASSERTION(NS_SUCCEEDED(rv), "RemoveRequest() failed!");
}
rv = mChannel->SetLoadFlags(aFlags);
NS_ASSERTION(NS_SUCCEEDED(rv), "SetLoadFlags() failed!");
if (loadGroup &&
NS_SUCCEEDED(status)) {
rv = loadGroup->AddRequest(mChannel, nullptr);
NS_ASSERTION(NS_SUCCEEDED(rv), "AddRequest() failed!");
}
}
class DispatchBytesConsumedEvent : public nsRunnable {
public:
DispatchBytesConsumedEvent(MediaDecoder* aDecoder,
int64_t aNumBytes,
int64_t aOffset)
: mDecoder(aDecoder),
mNumBytes(aNumBytes),
mOffset(aOffset)
{
MOZ_COUNT_CTOR(DispatchBytesConsumedEvent);
}
protected:
~DispatchBytesConsumedEvent()
{
MOZ_COUNT_DTOR(DispatchBytesConsumedEvent);
}
public:
NS_IMETHOD Run() {
mDecoder->NotifyBytesConsumed(mNumBytes, mOffset);
// Drop ref to decoder on main thread, just in case this reference
// ends up being the last owning reference somehow.
mDecoder = nullptr;
return NS_OK;
}
RefPtr<MediaDecoder> mDecoder;
int64_t mNumBytes;
int64_t mOffset;
};
void BaseMediaResource::DispatchBytesConsumed(int64_t aNumBytes, int64_t aOffset)
{
if (aNumBytes <= 0) {
return;
}
RefPtr<nsIRunnable> event(new DispatchBytesConsumedEvent(mDecoder, aNumBytes, aOffset));
NS_DispatchToMainThread(event);
}
} // namespace mozilla