mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
09e204851c
--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
1803 lines
49 KiB
C++
1803 lines
49 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 "MediaCodecReader.h"
|
|
|
|
#include <OMX_IVCommon.h>
|
|
|
|
#include <gui/Surface.h>
|
|
#include <ICrypto.h>
|
|
|
|
#include <stagefright/foundation/ABuffer.h>
|
|
#include <stagefright/foundation/ADebug.h>
|
|
#include <stagefright/foundation/ALooper.h>
|
|
#include <stagefright/foundation/AMessage.h>
|
|
#include <stagefright/MediaBuffer.h>
|
|
#include <stagefright/MediaCodec.h>
|
|
#include <stagefright/MediaDefs.h>
|
|
#include <stagefright/MediaExtractor.h>
|
|
#include <stagefright/MediaSource.h>
|
|
#include <stagefright/MetaData.h>
|
|
#include <stagefright/Utils.h>
|
|
|
|
#include "mozilla/TimeStamp.h"
|
|
|
|
#include "gfx2DGlue.h"
|
|
|
|
#include "MediaStreamSource.h"
|
|
#include "MediaTaskQueue.h"
|
|
#include "MP3FrameParser.h"
|
|
#include "nsThreadUtils.h"
|
|
#include "ImageContainer.h"
|
|
#include "SharedThreadPool.h"
|
|
#include "VideoFrameContainer.h"
|
|
|
|
using namespace android;
|
|
|
|
namespace mozilla {
|
|
|
|
enum {
|
|
kNotifyCodecReserved = 'core',
|
|
kNotifyCodecCanceled = 'coca',
|
|
};
|
|
|
|
static const int64_t sInvalidDurationUs = INT64_C(-1);
|
|
static const int64_t sInvalidTimestampUs = INT64_C(-1);
|
|
|
|
// Try not to spend more than this much time (in seconds) in a single call
|
|
// to GetCodecOutputData.
|
|
static const double sMaxAudioDecodeDurationS = 0.1;
|
|
static const double sMaxVideoDecodeDurationS = 0.1;
|
|
|
|
static CheckedUint32 sInvalidInputIndex = INT32_C(-1);
|
|
|
|
inline bool
|
|
IsValidDurationUs(int64_t aDuration)
|
|
{
|
|
return aDuration >= INT64_C(0);
|
|
}
|
|
|
|
inline bool
|
|
IsValidTimestampUs(int64_t aTimestamp)
|
|
{
|
|
return aTimestamp >= INT64_C(0);
|
|
}
|
|
|
|
MediaCodecReader::MessageHandler::MessageHandler(MediaCodecReader* aReader)
|
|
: mReader(aReader)
|
|
{
|
|
}
|
|
|
|
MediaCodecReader::MessageHandler::~MessageHandler()
|
|
{
|
|
mReader = nullptr;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::MessageHandler::onMessageReceived(
|
|
const sp<AMessage>& aMessage)
|
|
{
|
|
if (mReader) {
|
|
mReader->onMessageReceived(aMessage);
|
|
}
|
|
}
|
|
|
|
MediaCodecReader::VideoResourceListener::VideoResourceListener(
|
|
MediaCodecReader* aReader)
|
|
: mReader(aReader)
|
|
{
|
|
}
|
|
|
|
MediaCodecReader::VideoResourceListener::~VideoResourceListener()
|
|
{
|
|
mReader = nullptr;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::VideoResourceListener::codecReserved()
|
|
{
|
|
if (mReader) {
|
|
mReader->codecReserved(mReader->mVideoTrack);
|
|
}
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::VideoResourceListener::codecCanceled()
|
|
{
|
|
if (mReader) {
|
|
mReader->codecCanceled(mReader->mVideoTrack);
|
|
}
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::TrackInputCopier::Copy(MediaBuffer* aSourceBuffer,
|
|
sp<ABuffer> aCodecBuffer)
|
|
{
|
|
if (aSourceBuffer == nullptr ||
|
|
aCodecBuffer == nullptr ||
|
|
aSourceBuffer->range_length() > aCodecBuffer->capacity()) {
|
|
return false;
|
|
}
|
|
|
|
aCodecBuffer->setRange(0, aSourceBuffer->range_length());
|
|
memcpy(aCodecBuffer->data(),
|
|
(uint8_t*)aSourceBuffer->data() + aSourceBuffer->range_offset(),
|
|
aSourceBuffer->range_length());
|
|
|
|
return true;
|
|
}
|
|
|
|
MediaCodecReader::Track::Track()
|
|
: mSourceIsStopped(true)
|
|
, mDurationLock("MediaCodecReader::Track::mDurationLock")
|
|
, mDurationUs(INT64_C(0))
|
|
, mInputIndex(sInvalidInputIndex)
|
|
, mInputEndOfStream(false)
|
|
, mOutputEndOfStream(false)
|
|
, mSeekTimeUs(sInvalidTimestampUs)
|
|
, mFlushed(false)
|
|
, mDiscontinuity(false)
|
|
, mTaskQueue(nullptr)
|
|
{
|
|
}
|
|
|
|
// Append the value of |kKeyValidSamples| to the end of each vorbis buffer.
|
|
// https://github.com/mozilla-b2g/platform_frameworks_av/blob/master/media/libstagefright/OMXCodec.cpp#L3128
|
|
// https://github.com/mozilla-b2g/platform_frameworks_av/blob/master/media/libstagefright/NuMediaExtractor.cpp#L472
|
|
bool
|
|
MediaCodecReader::VorbisInputCopier::Copy(MediaBuffer* aSourceBuffer,
|
|
sp<ABuffer> aCodecBuffer)
|
|
{
|
|
if (aSourceBuffer == nullptr ||
|
|
aCodecBuffer == nullptr ||
|
|
aSourceBuffer->range_length() + sizeof(int32_t) > aCodecBuffer->capacity()) {
|
|
return false;
|
|
}
|
|
|
|
int32_t numPageSamples = 0;
|
|
if (!aSourceBuffer->meta_data()->findInt32(kKeyValidSamples, &numPageSamples)) {
|
|
numPageSamples = -1;
|
|
}
|
|
|
|
aCodecBuffer->setRange(0, aSourceBuffer->range_length() + sizeof(int32_t));
|
|
memcpy(aCodecBuffer->data(),
|
|
(uint8_t*)aSourceBuffer->data() + aSourceBuffer->range_offset(),
|
|
aSourceBuffer->range_length());
|
|
memcpy(aCodecBuffer->data() + aSourceBuffer->range_length(),
|
|
&numPageSamples, sizeof(numPageSamples));
|
|
|
|
return true;
|
|
}
|
|
|
|
MediaCodecReader::AudioTrack::AudioTrack()
|
|
{
|
|
}
|
|
|
|
MediaCodecReader::VideoTrack::VideoTrack()
|
|
: mWidth(0)
|
|
, mHeight(0)
|
|
, mStride(0)
|
|
, mSliceHeight(0)
|
|
, mColorFormat(0)
|
|
, mRotation(0)
|
|
{
|
|
}
|
|
|
|
MediaCodecReader::CodecBufferInfo::CodecBufferInfo()
|
|
: mIndex(0)
|
|
, mOffset(0)
|
|
, mSize(0)
|
|
, mTimeUs(0)
|
|
, mFlags(0)
|
|
{
|
|
}
|
|
|
|
MediaCodecReader::SignalObject::SignalObject(const char* aName)
|
|
: mMonitor(aName)
|
|
, mSignaled(false)
|
|
{
|
|
}
|
|
|
|
MediaCodecReader::SignalObject::~SignalObject()
|
|
{
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::SignalObject::Wait()
|
|
{
|
|
MonitorAutoLock al(mMonitor);
|
|
if (!mSignaled) {
|
|
mMonitor.Wait();
|
|
}
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::SignalObject::Signal()
|
|
{
|
|
MonitorAutoLock al(mMonitor);
|
|
mSignaled = true;
|
|
mMonitor.Notify();
|
|
}
|
|
|
|
MediaCodecReader::ParseCachedDataRunnable::ParseCachedDataRunnable(nsRefPtr<MediaCodecReader> aReader,
|
|
const char* aBuffer,
|
|
uint32_t aLength,
|
|
int64_t aOffset,
|
|
nsRefPtr<SignalObject> aSignal)
|
|
: mReader(aReader)
|
|
, mBuffer(aBuffer)
|
|
, mLength(aLength)
|
|
, mOffset(aOffset)
|
|
, mSignal(aSignal)
|
|
{
|
|
MOZ_ASSERT(mReader, "Should have a valid MediaCodecReader.");
|
|
MOZ_ASSERT(mBuffer, "Should have a valid buffer.");
|
|
MOZ_ASSERT(mOffset >= INT64_C(0), "Should have a valid offset.");
|
|
}
|
|
|
|
NS_IMETHODIMP
|
|
MediaCodecReader::ParseCachedDataRunnable::Run()
|
|
{
|
|
NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
|
|
|
|
if (mReader->ParseDataSegment(mBuffer, mLength, mOffset)) {
|
|
MonitorAutoLock monLock(mReader->mParserMonitor);
|
|
if (mReader->mNextParserPosition >= mOffset + mLength &&
|
|
mReader->mParsedDataLength < mOffset + mLength) {
|
|
mReader->mParsedDataLength = mOffset + mLength;
|
|
}
|
|
}
|
|
|
|
if (mSignal != nullptr) {
|
|
mSignal->Signal();
|
|
}
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
MediaCodecReader::ProcessCachedDataTask::ProcessCachedDataTask(nsRefPtr<MediaCodecReader> aReader,
|
|
int64_t aOffset)
|
|
: mReader(aReader)
|
|
, mOffset(aOffset)
|
|
{
|
|
MOZ_ASSERT(mReader, "Should have a valid MediaCodecReader.");
|
|
MOZ_ASSERT(mOffset >= INT64_C(0), "Should have a valid offset.");
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::ProcessCachedDataTask::Run()
|
|
{
|
|
mReader->ProcessCachedData(mOffset, nullptr);
|
|
nsRefPtr<ReferenceKeeperRunnable<MediaCodecReader>> runnable(
|
|
new ReferenceKeeperRunnable<MediaCodecReader>(mReader));
|
|
mReader = nullptr;
|
|
NS_DispatchToMainThread(runnable.get());
|
|
}
|
|
|
|
MediaCodecReader::MediaCodecReader(AbstractMediaDecoder* aDecoder)
|
|
: MediaOmxCommonReader(aDecoder)
|
|
, mColorConverterBufferSize(0)
|
|
, mExtractor(nullptr)
|
|
, mParserMonitor("MediaCodecReader::mParserMonitor")
|
|
, mParseDataFromCache(true)
|
|
, mNextParserPosition(INT64_C(0))
|
|
, mParsedDataLength(INT64_C(0))
|
|
, mIsWaitingResources(false)
|
|
{
|
|
mHandler = new MessageHandler(this);
|
|
mVideoListener = new VideoResourceListener(this);
|
|
}
|
|
|
|
MediaCodecReader::~MediaCodecReader()
|
|
{
|
|
MOZ_ASSERT(NS_IsMainThread(), "Should be on main thread.");
|
|
}
|
|
|
|
nsresult
|
|
MediaCodecReader::Init(MediaDecoderReader* aCloneDonor)
|
|
{
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::IsWaitingMediaResources()
|
|
{
|
|
return mIsWaitingResources;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::UpdateIsWaitingMediaResources()
|
|
{
|
|
mIsWaitingResources = (mVideoTrack.mCodec != nullptr) &&
|
|
(!mVideoTrack.mCodec->allocated());
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::IsDormantNeeded()
|
|
{
|
|
return mVideoTrack.mSource != nullptr;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::ReleaseMediaResources()
|
|
{
|
|
// Stop the mSource because we are in the dormant state and the stop function
|
|
// will rewind the mSource to the beginning of the stream.
|
|
if (mVideoTrack.mSource != nullptr) {
|
|
mVideoTrack.mSource->stop();
|
|
mVideoTrack.mSourceIsStopped = true;
|
|
}
|
|
if (mAudioTrack.mSource != nullptr) {
|
|
mAudioTrack.mSource->stop();
|
|
mAudioTrack.mSourceIsStopped = true;
|
|
}
|
|
ReleaseCriticalResources();
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::Shutdown()
|
|
{
|
|
ReleaseResources();
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DispatchAudioTask()
|
|
{
|
|
if (mAudioTrack.mTaskQueue && mAudioTrack.mTaskQueue->IsEmpty()) {
|
|
RefPtr<nsIRunnable> task =
|
|
NS_NewRunnableMethod(this,
|
|
&MediaCodecReader::DecodeAudioDataTask);
|
|
mAudioTrack.mTaskQueue->Dispatch(task);
|
|
}
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DispatchVideoTask(int64_t aTimeThreshold)
|
|
{
|
|
if (mVideoTrack.mTaskQueue && mVideoTrack.mTaskQueue->IsEmpty()) {
|
|
RefPtr<nsIRunnable> task =
|
|
NS_NewRunnableMethodWithArg<int64_t>(this,
|
|
&MediaCodecReader::DecodeVideoFrameTask,
|
|
aTimeThreshold);
|
|
mVideoTrack.mTaskQueue->Dispatch(task);
|
|
}
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::RequestAudioData()
|
|
{
|
|
MOZ_ASSERT(GetTaskQueue()->IsCurrentThreadIn());
|
|
MOZ_ASSERT(HasAudio());
|
|
if (CheckAudioResources()) {
|
|
DispatchAudioTask();
|
|
}
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::RequestVideoData(bool aSkipToNextKeyframe,
|
|
int64_t aTimeThreshold)
|
|
{
|
|
MOZ_ASSERT(GetTaskQueue()->IsCurrentThreadIn());
|
|
MOZ_ASSERT(HasVideo());
|
|
|
|
int64_t threshold = sInvalidTimestampUs;
|
|
if (aSkipToNextKeyframe && IsValidTimestampUs(aTimeThreshold)) {
|
|
mVideoTrack.mTaskQueue->Flush();
|
|
threshold = aTimeThreshold;
|
|
}
|
|
if (CheckVideoResources()) {
|
|
DispatchVideoTask(threshold);
|
|
}
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::DecodeAudioDataSync()
|
|
{
|
|
if (mAudioTrack.mCodec == nullptr || !mAudioTrack.mCodec->allocated() ||
|
|
mAudioTrack.mOutputEndOfStream) {
|
|
return false;
|
|
}
|
|
|
|
// Get one audio output data from MediaCodec
|
|
CodecBufferInfo bufferInfo;
|
|
status_t status;
|
|
TimeStamp timeout = TimeStamp::Now() +
|
|
TimeDuration::FromSeconds(sMaxAudioDecodeDurationS);
|
|
while (true) {
|
|
// Try to fill more input buffers and then get one output buffer.
|
|
// FIXME: use callback from MediaCodec
|
|
FillCodecInputData(mAudioTrack);
|
|
|
|
status = GetCodecOutputData(mAudioTrack, bufferInfo, sInvalidTimestampUs,
|
|
timeout);
|
|
if (status == OK || status == ERROR_END_OF_STREAM) {
|
|
break;
|
|
} else if (status == -EAGAIN) {
|
|
if (TimeStamp::Now() > timeout) {
|
|
// Don't let this loop run for too long. Try it again later.
|
|
if (CheckAudioResources()) {
|
|
DispatchAudioTask();
|
|
}
|
|
return true;
|
|
}
|
|
continue; // Try it again now.
|
|
} else if (status == INFO_FORMAT_CHANGED) {
|
|
if (UpdateAudioInfo()) {
|
|
continue; // Try it again now.
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
bool result = false;
|
|
if (bufferInfo.mBuffer != nullptr && bufferInfo.mSize > 0 &&
|
|
bufferInfo.mBuffer->data() != nullptr) {
|
|
// This is the approximate byte position in the stream.
|
|
int64_t pos = mDecoder->GetResource()->Tell();
|
|
|
|
uint32_t frames = bufferInfo.mSize /
|
|
(mInfo.mAudio.mChannels * sizeof(AudioDataValue));
|
|
|
|
result = mAudioCompactor.Push(
|
|
pos,
|
|
bufferInfo.mTimeUs,
|
|
mInfo.mAudio.mRate,
|
|
frames,
|
|
mInfo.mAudio.mChannels,
|
|
AudioCompactor::NativeCopy(
|
|
bufferInfo.mBuffer->data() + bufferInfo.mOffset,
|
|
bufferInfo.mSize,
|
|
mInfo.mAudio.mChannels));
|
|
}
|
|
|
|
if ((bufferInfo.mFlags & MediaCodec::BUFFER_FLAG_EOS) ||
|
|
(status == ERROR_END_OF_STREAM)) {
|
|
AudioQueue().Finish();
|
|
}
|
|
mAudioTrack.mCodec->releaseOutputBuffer(bufferInfo.mIndex);
|
|
|
|
return result;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::DecodeAudioDataTask()
|
|
{
|
|
bool result = DecodeAudioDataSync();
|
|
if (AudioQueue().GetSize() > 0) {
|
|
AudioData* a = AudioQueue().PopFront();
|
|
if (a) {
|
|
if (mAudioTrack.mDiscontinuity) {
|
|
a->mDiscontinuity = true;
|
|
mAudioTrack.mDiscontinuity = false;
|
|
}
|
|
GetCallback()->OnAudioDecoded(a);
|
|
}
|
|
}
|
|
if (AudioQueue().AtEndOfStream()) {
|
|
GetCallback()->OnAudioEOS();
|
|
}
|
|
return result;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::DecodeVideoFrameTask(int64_t aTimeThreshold)
|
|
{
|
|
bool result = DecodeVideoFrameSync(aTimeThreshold);
|
|
if (VideoQueue().GetSize() > 0) {
|
|
VideoData* v = VideoQueue().PopFront();
|
|
if (v) {
|
|
if (mVideoTrack.mDiscontinuity) {
|
|
v->mDiscontinuity = true;
|
|
mVideoTrack.mDiscontinuity = false;
|
|
}
|
|
GetCallback()->OnVideoDecoded(v);
|
|
}
|
|
}
|
|
if (VideoQueue().AtEndOfStream()) {
|
|
GetCallback()->OnVideoEOS();
|
|
}
|
|
return result;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::HasAudio()
|
|
{
|
|
return mInfo.mAudio.mHasAudio;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::HasVideo()
|
|
{
|
|
return mInfo.mVideo.mHasVideo;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::NotifyDataArrived(const char* aBuffer,
|
|
uint32_t aLength,
|
|
int64_t aOffset)
|
|
{
|
|
MonitorAutoLock monLock(mParserMonitor);
|
|
if (mNextParserPosition == mParsedDataLength &&
|
|
mNextParserPosition >= aOffset &&
|
|
mNextParserPosition <= aOffset + aLength) {
|
|
// No pending parsing runnable currently. And available data are adjacent to
|
|
// parsed data.
|
|
int64_t shift = mNextParserPosition - aOffset;
|
|
const char* buffer = aBuffer + shift;
|
|
uint32_t length = aLength - shift;
|
|
int64_t offset = mNextParserPosition;
|
|
if (length > 0) {
|
|
MonitorAutoUnlock monUnlock(mParserMonitor);
|
|
ParseDataSegment(buffer, length, offset);
|
|
}
|
|
mParseDataFromCache = false;
|
|
mParsedDataLength = offset + length;
|
|
mNextParserPosition = mParsedDataLength;
|
|
}
|
|
}
|
|
|
|
int64_t
|
|
MediaCodecReader::ProcessCachedData(int64_t aOffset,
|
|
nsRefPtr<SignalObject> aSignal)
|
|
{
|
|
// We read data in chunks of 32 KiB. We can reduce this
|
|
// value if media, such as sdcards, is too slow.
|
|
// Because of SD card's slowness, need to keep sReadSize to small size.
|
|
// See Bug 914870.
|
|
static const int64_t sReadSize = 32 * 1024;
|
|
|
|
MOZ_ASSERT(!NS_IsMainThread(), "Should not be on main thread.");
|
|
|
|
{
|
|
MonitorAutoLock monLock(mParserMonitor);
|
|
if (!mParseDataFromCache) {
|
|
// Skip cache processing since data can be continuously be parsed by
|
|
// ParseDataSegment() from NotifyDataArrived() directly.
|
|
return INT64_C(0);
|
|
}
|
|
}
|
|
|
|
MediaResource *resource = mDecoder->GetResource();
|
|
MOZ_ASSERT(resource);
|
|
|
|
int64_t resourceLength = resource->GetCachedDataEnd(0);
|
|
NS_ENSURE_TRUE(resourceLength >= 0, INT64_C(-1));
|
|
|
|
if (aOffset >= resourceLength) {
|
|
return INT64_C(0); // Cache is empty, nothing to do
|
|
}
|
|
|
|
int64_t bufferLength = std::min<int64_t>(resourceLength - aOffset, sReadSize);
|
|
|
|
nsAutoArrayPtr<char> buffer(new char[bufferLength]);
|
|
|
|
nsresult rv = resource->ReadFromCache(buffer.get(), aOffset, bufferLength);
|
|
NS_ENSURE_SUCCESS(rv, INT64_C(-1));
|
|
|
|
MonitorAutoLock monLock(mParserMonitor);
|
|
if (mParseDataFromCache) {
|
|
nsRefPtr<ParseCachedDataRunnable> runnable(
|
|
new ParseCachedDataRunnable(this,
|
|
buffer.forget(),
|
|
bufferLength,
|
|
aOffset,
|
|
aSignal));
|
|
|
|
rv = NS_DispatchToMainThread(runnable.get());
|
|
NS_ENSURE_SUCCESS(rv, INT64_C(-1));
|
|
|
|
mNextParserPosition = aOffset + bufferLength;
|
|
if (mNextParserPosition < resource->GetCachedDataEnd(0)) {
|
|
// We cannot read data in the main thread because it
|
|
// might block for too long. Instead we post an IO task
|
|
// to the IO thread if there is more data available.
|
|
XRE_GetIOMessageLoop()->PostTask(FROM_HERE,
|
|
new ProcessCachedDataTask(this, mNextParserPosition));
|
|
}
|
|
}
|
|
|
|
return bufferLength;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::ParseDataSegment(const char* aBuffer,
|
|
uint32_t aLength,
|
|
int64_t aOffset)
|
|
{
|
|
NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
|
|
|
|
int64_t duration = INT64_C(-1);
|
|
|
|
{
|
|
MonitorAutoLock monLock(mParserMonitor);
|
|
|
|
// currently only mp3 files are supported for incremental parsing
|
|
if (mMP3FrameParser == nullptr) {
|
|
return false;
|
|
}
|
|
|
|
if (!mMP3FrameParser->IsMP3()) {
|
|
return true; // NO-OP
|
|
}
|
|
|
|
mMP3FrameParser->Parse(aBuffer, aLength, aOffset);
|
|
|
|
duration = mMP3FrameParser->GetDuration();
|
|
}
|
|
|
|
bool durationUpdateRequired = false;
|
|
|
|
{
|
|
MutexAutoLock al(mAudioTrack.mDurationLock);
|
|
if (duration > mAudioTrack.mDurationUs) {
|
|
mAudioTrack.mDurationUs = duration;
|
|
durationUpdateRequired = true;
|
|
}
|
|
}
|
|
|
|
if (durationUpdateRequired && HasVideo()) {
|
|
MutexAutoLock al(mVideoTrack.mDurationLock);
|
|
durationUpdateRequired = duration > mVideoTrack.mDurationUs;
|
|
}
|
|
|
|
if (durationUpdateRequired) {
|
|
MOZ_ASSERT(mDecoder);
|
|
ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
|
|
mDecoder->UpdateEstimatedMediaDuration(duration);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::PreReadMetadata()
|
|
{
|
|
UpdateIsWaitingMediaResources();
|
|
}
|
|
|
|
|
|
nsresult
|
|
MediaCodecReader::ReadMetadata(MediaInfo* aInfo,
|
|
MetadataTags** aTags)
|
|
{
|
|
MOZ_ASSERT(mDecoder->OnDecodeThread(), "Should be on decode thread.");
|
|
|
|
if (!ReallocateResources()) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
if (!TriggerIncrementalParser()) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
// Bug 1050667, both MediaDecoderStateMachine and MediaCodecReader
|
|
// relies on IsWaitingMediaResources() function. And the waiting state will be
|
|
// changed by binder thread, so we store the waiting state in a cache value to
|
|
// make them in the same waiting state.
|
|
UpdateIsWaitingMediaResources();
|
|
if (IsWaitingMediaResources()) {
|
|
return NS_OK;
|
|
}
|
|
|
|
// TODO: start streaming
|
|
|
|
if (!UpdateDuration()) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
if (!UpdateAudioInfo()) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
if (!UpdateVideoInfo()) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
|
|
// Set the total duration (the max of the audio and video track).
|
|
int64_t audioDuration = INT64_C(-1);
|
|
{
|
|
MutexAutoLock al(mAudioTrack.mDurationLock);
|
|
audioDuration = mAudioTrack.mDurationUs;
|
|
}
|
|
int64_t videoDuration = INT64_C(-1);
|
|
{
|
|
MutexAutoLock al(mVideoTrack.mDurationLock);
|
|
videoDuration = mVideoTrack.mDurationUs;
|
|
}
|
|
int64_t duration = audioDuration > videoDuration ? audioDuration : videoDuration;
|
|
if (duration >= INT64_C(0)) {
|
|
ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
|
|
mDecoder->SetMediaDuration(duration);
|
|
}
|
|
|
|
// Video track's frame sizes will not overflow. Activate the video track.
|
|
VideoFrameContainer* container = mDecoder->GetVideoFrameContainer();
|
|
if (container) {
|
|
container->SetCurrentFrame(
|
|
gfxIntSize(mInfo.mVideo.mDisplay.width, mInfo.mVideo.mDisplay.height),
|
|
nullptr,
|
|
mozilla::TimeStamp::Now());
|
|
}
|
|
|
|
*aInfo = mInfo;
|
|
*aTags = nullptr;
|
|
|
|
#ifdef MOZ_AUDIO_OFFLOAD
|
|
CheckAudioOffload();
|
|
#endif
|
|
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
MediaCodecReader::ResetDecode()
|
|
{
|
|
if (CheckAudioResources()) {
|
|
mAudioTrack.mTaskQueue->Flush();
|
|
FlushCodecData(mAudioTrack);
|
|
mAudioTrack.mDiscontinuity = true;
|
|
}
|
|
if (CheckVideoResources()) {
|
|
mVideoTrack.mTaskQueue->Flush();
|
|
FlushCodecData(mVideoTrack);
|
|
mVideoTrack.mDiscontinuity = true;
|
|
}
|
|
|
|
return MediaDecoderReader::ResetDecode();
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::DecodeVideoFrameSync(int64_t aTimeThreshold)
|
|
{
|
|
if (mVideoTrack.mCodec == nullptr || !mVideoTrack.mCodec->allocated() ||
|
|
mVideoTrack.mOutputEndOfStream) {
|
|
return false;
|
|
}
|
|
|
|
// Get one video output data from MediaCodec
|
|
CodecBufferInfo bufferInfo;
|
|
status_t status;
|
|
TimeStamp timeout = TimeStamp::Now() +
|
|
TimeDuration::FromSeconds(sMaxVideoDecodeDurationS);
|
|
while (true) {
|
|
// Try to fill more input buffers and then get one output buffer.
|
|
// FIXME: use callback from MediaCodec
|
|
FillCodecInputData(mVideoTrack);
|
|
|
|
status = GetCodecOutputData(mVideoTrack, bufferInfo, aTimeThreshold,
|
|
timeout);
|
|
if (status == OK || status == ERROR_END_OF_STREAM) {
|
|
break;
|
|
} else if (status == -EAGAIN) {
|
|
if (TimeStamp::Now() > timeout) {
|
|
// Don't let this loop run for too long. Try it again later.
|
|
if (CheckVideoResources()) {
|
|
DispatchVideoTask(aTimeThreshold);
|
|
}
|
|
return true;
|
|
}
|
|
continue; // Try it again now.
|
|
} else if (status == INFO_FORMAT_CHANGED) {
|
|
if (UpdateVideoInfo()) {
|
|
continue; // Try it again now.
|
|
} else {
|
|
return false;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
bool result = false;
|
|
if (bufferInfo.mBuffer != nullptr && bufferInfo.mSize > 0 &&
|
|
bufferInfo.mBuffer->data() != nullptr) {
|
|
uint8_t* yuv420p_buffer = bufferInfo.mBuffer->data();
|
|
int32_t stride = mVideoTrack.mStride;
|
|
int32_t slice_height = mVideoTrack.mSliceHeight;
|
|
|
|
// Converts to OMX_COLOR_FormatYUV420Planar
|
|
if (mVideoTrack.mColorFormat != OMX_COLOR_FormatYUV420Planar) {
|
|
ARect crop;
|
|
crop.top = 0;
|
|
crop.bottom = mVideoTrack.mHeight;
|
|
crop.left = 0;
|
|
crop.right = mVideoTrack.mWidth;
|
|
|
|
yuv420p_buffer = GetColorConverterBuffer(mVideoTrack.mWidth,
|
|
mVideoTrack.mHeight);
|
|
if (mColorConverter.convertDecoderOutputToI420(
|
|
bufferInfo.mBuffer->data(), mVideoTrack.mWidth, mVideoTrack.mHeight,
|
|
crop, yuv420p_buffer) != OK) {
|
|
mVideoTrack.mCodec->releaseOutputBuffer(bufferInfo.mIndex);
|
|
NS_WARNING("Unable to convert color format");
|
|
return false;
|
|
}
|
|
|
|
stride = mVideoTrack.mWidth;
|
|
slice_height = mVideoTrack.mHeight;
|
|
}
|
|
|
|
size_t yuv420p_y_size = stride * slice_height;
|
|
size_t yuv420p_u_size = ((stride + 1) / 2) * ((slice_height + 1) / 2);
|
|
uint8_t* yuv420p_y = yuv420p_buffer;
|
|
uint8_t* yuv420p_u = yuv420p_y + yuv420p_y_size;
|
|
uint8_t* yuv420p_v = yuv420p_u + yuv420p_u_size;
|
|
|
|
// This is the approximate byte position in the stream.
|
|
int64_t pos = mDecoder->GetResource()->Tell();
|
|
|
|
VideoData::YCbCrBuffer b;
|
|
b.mPlanes[0].mData = yuv420p_y;
|
|
b.mPlanes[0].mWidth = mVideoTrack.mWidth;
|
|
b.mPlanes[0].mHeight = mVideoTrack.mHeight;
|
|
b.mPlanes[0].mStride = stride;
|
|
b.mPlanes[0].mOffset = 0;
|
|
b.mPlanes[0].mSkip = 0;
|
|
|
|
b.mPlanes[1].mData = yuv420p_u;
|
|
b.mPlanes[1].mWidth = (mVideoTrack.mWidth + 1) / 2;
|
|
b.mPlanes[1].mHeight = (mVideoTrack.mHeight + 1) / 2;
|
|
b.mPlanes[1].mStride = (stride + 1) / 2;
|
|
b.mPlanes[1].mOffset = 0;
|
|
b.mPlanes[1].mSkip = 0;
|
|
|
|
b.mPlanes[2].mData = yuv420p_v;
|
|
b.mPlanes[2].mWidth =(mVideoTrack.mWidth + 1) / 2;
|
|
b.mPlanes[2].mHeight = (mVideoTrack.mHeight + 1) / 2;
|
|
b.mPlanes[2].mStride = (stride + 1) / 2;
|
|
b.mPlanes[2].mOffset = 0;
|
|
b.mPlanes[2].mSkip = 0;
|
|
|
|
VideoData *v = VideoData::Create(
|
|
mInfo.mVideo,
|
|
mDecoder->GetImageContainer(),
|
|
pos,
|
|
bufferInfo.mTimeUs,
|
|
1, // We don't know the duration.
|
|
b,
|
|
bufferInfo.mFlags & MediaCodec::BUFFER_FLAG_SYNCFRAME,
|
|
-1,
|
|
mVideoTrack.mRelativePictureRect);
|
|
|
|
if (v) {
|
|
result = true;
|
|
VideoQueue().Push(v);
|
|
} else {
|
|
NS_WARNING("Unable to create VideoData");
|
|
}
|
|
}
|
|
|
|
if ((bufferInfo.mFlags & MediaCodec::BUFFER_FLAG_EOS) ||
|
|
(status == ERROR_END_OF_STREAM)) {
|
|
VideoQueue().Finish();
|
|
}
|
|
mVideoTrack.mCodec->releaseOutputBuffer(bufferInfo.mIndex);
|
|
|
|
return result;
|
|
}
|
|
|
|
nsresult
|
|
MediaCodecReader::Seek(int64_t aTime,
|
|
int64_t aStartTime,
|
|
int64_t aEndTime,
|
|
int64_t aCurrentTime)
|
|
{
|
|
MOZ_ASSERT(mDecoder->OnDecodeThread(), "Should be on decode thread.");
|
|
|
|
mVideoTrack.mSeekTimeUs = aTime;
|
|
mAudioTrack.mSeekTimeUs = aTime;
|
|
mVideoTrack.mInputEndOfStream = false;
|
|
mVideoTrack.mOutputEndOfStream = false;
|
|
mAudioTrack.mInputEndOfStream = false;
|
|
mAudioTrack.mOutputEndOfStream = false;
|
|
mAudioTrack.mFlushed = false;
|
|
mVideoTrack.mFlushed = false;
|
|
|
|
if (CheckVideoResources()) {
|
|
VideoFrameContainer* videoframe = mDecoder->GetVideoFrameContainer();
|
|
if (videoframe) {
|
|
layers::ImageContainer* image = videoframe->GetImageContainer();
|
|
if (image) {
|
|
image->ClearAllImagesExceptFront();
|
|
}
|
|
}
|
|
|
|
MediaBuffer* source_buffer = nullptr;
|
|
MediaSource::ReadOptions options;
|
|
int64_t timestamp = sInvalidTimestampUs;
|
|
options.setSeekTo(aTime, MediaSource::ReadOptions::SEEK_PREVIOUS_SYNC);
|
|
if (mVideoTrack.mSource->read(&source_buffer, &options) != OK ||
|
|
source_buffer == nullptr) {
|
|
return NS_ERROR_FAILURE;
|
|
}
|
|
sp<MetaData> format = source_buffer->meta_data();
|
|
if (format != nullptr) {
|
|
if (format->findInt64(kKeyTime, ×tamp) &&
|
|
IsValidTimestampUs(timestamp)) {
|
|
mVideoTrack.mSeekTimeUs = timestamp;
|
|
mAudioTrack.mSeekTimeUs = timestamp;
|
|
}
|
|
format = nullptr;
|
|
}
|
|
source_buffer->release();
|
|
|
|
MOZ_ASSERT(mVideoTrack.mTaskQueue->IsEmpty());
|
|
DispatchVideoTask(mVideoTrack.mSeekTimeUs);
|
|
|
|
if (CheckAudioResources()) {
|
|
MOZ_ASSERT(mAudioTrack.mTaskQueue->IsEmpty());
|
|
DispatchAudioTask();
|
|
}
|
|
} else if (CheckAudioResources()) {// Audio only
|
|
MOZ_ASSERT(mAudioTrack.mTaskQueue->IsEmpty());
|
|
DispatchAudioTask();
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::IsMediaSeekable()
|
|
{
|
|
// Check the MediaExtract flag if the source is seekable.
|
|
return (mExtractor != nullptr) &&
|
|
(mExtractor->flags() & MediaExtractor::CAN_SEEK);
|
|
}
|
|
|
|
sp<MediaSource>
|
|
MediaCodecReader::GetAudioOffloadTrack()
|
|
{
|
|
return mAudioOffloadTrack.mSource;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::ReallocateResources()
|
|
{
|
|
if (CreateLooper() &&
|
|
CreateExtractor() &&
|
|
CreateMediaSources() &&
|
|
CreateMediaCodecs() &&
|
|
CreateTaskQueues()) {
|
|
return true;
|
|
}
|
|
|
|
ReleaseResources();
|
|
return false;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::ReleaseCriticalResources()
|
|
{
|
|
ResetDecode();
|
|
// Before freeing a video codec, all video buffers needed to be released
|
|
// even from graphics pipeline.
|
|
VideoFrameContainer* videoframe = mDecoder->GetVideoFrameContainer();
|
|
if (videoframe) {
|
|
videoframe->ClearCurrentFrame();
|
|
}
|
|
|
|
DestroyMediaCodecs();
|
|
|
|
ClearColorConverterBuffer();
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::ReleaseResources()
|
|
{
|
|
ReleaseCriticalResources();
|
|
DestroyMediaSources();
|
|
DestroyExtractor();
|
|
DestroyLooper();
|
|
ShutdownTaskQueues();
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::CreateLooper()
|
|
{
|
|
if (mLooper != nullptr) {
|
|
return true;
|
|
}
|
|
|
|
// Create ALooper
|
|
mLooper = new ALooper;
|
|
mLooper->setName("MediaCodecReader");
|
|
|
|
// Register AMessage handler to ALooper.
|
|
mLooper->registerHandler(mHandler);
|
|
|
|
// Start ALooper thread.
|
|
if (mLooper->start() != OK) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DestroyLooper()
|
|
{
|
|
if (mLooper == nullptr) {
|
|
return;
|
|
}
|
|
|
|
// Unregister AMessage handler from ALooper.
|
|
if (mHandler != nullptr) {
|
|
mLooper->unregisterHandler(mHandler->id());
|
|
}
|
|
|
|
// Stop ALooper thread.
|
|
mLooper->stop();
|
|
|
|
// Clear ALooper
|
|
mLooper = nullptr;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::CreateExtractor()
|
|
{
|
|
if (mExtractor != nullptr) {
|
|
return true;
|
|
}
|
|
|
|
//register sniffers, if they are not registered in this process.
|
|
DataSource::RegisterDefaultSniffers();
|
|
|
|
if (mExtractor == nullptr) {
|
|
sp<DataSource> dataSource = new MediaStreamSource(mDecoder->GetResource());
|
|
|
|
if (dataSource->initCheck() != OK) {
|
|
return false;
|
|
}
|
|
|
|
mExtractor = MediaExtractor::Create(dataSource);
|
|
}
|
|
|
|
return mExtractor != nullptr;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DestroyExtractor()
|
|
{
|
|
mExtractor = nullptr;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::CreateMediaSources()
|
|
{
|
|
if (mExtractor == nullptr) {
|
|
return false;
|
|
}
|
|
|
|
mMetaData = mExtractor->getMetaData();
|
|
|
|
const ssize_t invalidTrackIndex = -1;
|
|
ssize_t audioTrackIndex = invalidTrackIndex;
|
|
ssize_t videoTrackIndex = invalidTrackIndex;
|
|
|
|
for (size_t i = 0; i < mExtractor->countTracks(); ++i) {
|
|
sp<MetaData> trackFormat = mExtractor->getTrackMetaData(i);
|
|
|
|
const char* mime;
|
|
if (!trackFormat->findCString(kKeyMIMEType, &mime)) {
|
|
continue;
|
|
}
|
|
|
|
if (audioTrackIndex == invalidTrackIndex &&
|
|
!strncasecmp(mime, "audio/", 6)) {
|
|
audioTrackIndex = i;
|
|
} else if (videoTrackIndex == invalidTrackIndex &&
|
|
!strncasecmp(mime, "video/", 6)) {
|
|
videoTrackIndex = i;
|
|
}
|
|
}
|
|
|
|
if (audioTrackIndex == invalidTrackIndex &&
|
|
videoTrackIndex == invalidTrackIndex) {
|
|
NS_WARNING("OMX decoder could not find audio or video tracks");
|
|
return false;
|
|
}
|
|
|
|
if (audioTrackIndex != invalidTrackIndex && mAudioTrack.mSource == nullptr) {
|
|
sp<MediaSource> audioSource = mExtractor->getTrack(audioTrackIndex);
|
|
if (audioSource != nullptr && audioSource->start() == OK) {
|
|
mAudioTrack.mSource = audioSource;
|
|
mAudioTrack.mSourceIsStopped = false;
|
|
}
|
|
// Get one another track instance for audio offload playback.
|
|
mAudioOffloadTrack.mSource = mExtractor->getTrack(audioTrackIndex);
|
|
}
|
|
|
|
if (videoTrackIndex != invalidTrackIndex && mVideoTrack.mSource == nullptr) {
|
|
sp<MediaSource> videoSource = mExtractor->getTrack(videoTrackIndex);
|
|
if (videoSource != nullptr && videoSource->start() == OK) {
|
|
mVideoTrack.mSource = videoSource;
|
|
mVideoTrack.mSourceIsStopped = false;
|
|
}
|
|
}
|
|
|
|
return
|
|
(audioTrackIndex == invalidTrackIndex || mAudioTrack.mSource != nullptr) &&
|
|
(videoTrackIndex == invalidTrackIndex || mVideoTrack.mSource != nullptr);
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DestroyMediaSources()
|
|
{
|
|
mAudioTrack.mSource = nullptr;
|
|
mVideoTrack.mSource = nullptr;
|
|
mAudioOffloadTrack.mSource = nullptr;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::ShutdownTaskQueues()
|
|
{
|
|
if(mAudioTrack.mTaskQueue) {
|
|
mAudioTrack.mTaskQueue->Shutdown();
|
|
mAudioTrack.mTaskQueue = nullptr;
|
|
}
|
|
if(mVideoTrack.mTaskQueue) {
|
|
mVideoTrack.mTaskQueue->Shutdown();
|
|
mVideoTrack.mTaskQueue = nullptr;
|
|
}
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::CreateTaskQueues()
|
|
{
|
|
if (mAudioTrack.mSource != nullptr && mAudioTrack.mCodec != nullptr &&
|
|
!mAudioTrack.mTaskQueue) {
|
|
mAudioTrack.mTaskQueue = new MediaTaskQueue(
|
|
SharedThreadPool::Get(NS_LITERAL_CSTRING("MediaCodecReader Audio"), 1));
|
|
NS_ENSURE_TRUE(mAudioTrack.mTaskQueue, false);
|
|
}
|
|
if (mVideoTrack.mSource != nullptr && mVideoTrack.mCodec != nullptr &&
|
|
!mVideoTrack.mTaskQueue) {
|
|
mVideoTrack.mTaskQueue = new MediaTaskQueue(
|
|
SharedThreadPool::Get(NS_LITERAL_CSTRING("MediaCodecReader Video"), 1));
|
|
NS_ENSURE_TRUE(mVideoTrack.mTaskQueue, false);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::CreateMediaCodecs()
|
|
{
|
|
if (CreateMediaCodec(mLooper, mAudioTrack, false, nullptr) &&
|
|
CreateMediaCodec(mLooper, mVideoTrack, true, mVideoListener)) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::CreateMediaCodec(sp<ALooper>& aLooper,
|
|
Track& aTrack,
|
|
bool aAsync,
|
|
wp<MediaCodecProxy::CodecResourceListener> aListener)
|
|
{
|
|
if (aTrack.mSource != nullptr && aTrack.mCodec == nullptr) {
|
|
sp<MetaData> sourceFormat = aTrack.mSource->getFormat();
|
|
|
|
const char* mime;
|
|
if (sourceFormat->findCString(kKeyMIMEType, &mime)) {
|
|
aTrack.mCodec = MediaCodecProxy::CreateByType(aLooper, mime, false, aAsync, aListener);
|
|
}
|
|
|
|
if (aTrack.mCodec == nullptr) {
|
|
NS_WARNING("Couldn't create MediaCodecProxy");
|
|
return false;
|
|
}
|
|
|
|
if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_VORBIS)) {
|
|
aTrack.mInputCopier = new VorbisInputCopier;
|
|
} else {
|
|
aTrack.mInputCopier = new TrackInputCopier;
|
|
}
|
|
|
|
if (!aAsync) {
|
|
// Pending configure() and start() to codecReserved() if the creation
|
|
// should be asynchronous.
|
|
if (!aTrack.mCodec->allocated() || !ConfigureMediaCodec(aTrack)){
|
|
NS_WARNING("Couldn't create and configure MediaCodec synchronously");
|
|
aTrack.mCodec = nullptr;
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::ConfigureMediaCodec(Track& aTrack)
|
|
{
|
|
if (aTrack.mSource != nullptr && aTrack.mCodec != nullptr) {
|
|
if (!aTrack.mCodec->allocated()) {
|
|
return false;
|
|
}
|
|
|
|
sp<MetaData> sourceFormat = aTrack.mSource->getFormat();
|
|
sp<AMessage> codecFormat;
|
|
convertMetaDataToMessage(sourceFormat, &codecFormat);
|
|
|
|
bool allpass = true;
|
|
if (allpass && aTrack.mCodec->configure(codecFormat, nullptr, nullptr, 0) != OK) {
|
|
NS_WARNING("Couldn't configure MediaCodec");
|
|
allpass = false;
|
|
}
|
|
if (allpass && aTrack.mCodec->start() != OK) {
|
|
NS_WARNING("Couldn't start MediaCodec");
|
|
allpass = false;
|
|
}
|
|
if (allpass && aTrack.mCodec->getInputBuffers(&aTrack.mInputBuffers) != OK) {
|
|
NS_WARNING("Couldn't get input buffers from MediaCodec");
|
|
allpass = false;
|
|
}
|
|
if (allpass && aTrack.mCodec->getOutputBuffers(&aTrack.mOutputBuffers) != OK) {
|
|
NS_WARNING("Couldn't get output buffers from MediaCodec");
|
|
allpass = false;
|
|
}
|
|
if (!allpass) {
|
|
aTrack.mCodec = nullptr;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DestroyMediaCodecs()
|
|
{
|
|
DestroyMediaCodecs(mAudioTrack);
|
|
DestroyMediaCodecs(mVideoTrack);
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::DestroyMediaCodecs(Track& aTrack)
|
|
{
|
|
aTrack.mCodec = nullptr;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::TriggerIncrementalParser()
|
|
{
|
|
if (mMetaData == nullptr) {
|
|
return false;
|
|
}
|
|
|
|
int64_t duration = INT64_C(-1);
|
|
|
|
{
|
|
MonitorAutoLock monLock(mParserMonitor);
|
|
|
|
// only support incremental parsing for mp3 currently.
|
|
if (mMP3FrameParser != nullptr) {
|
|
return true;
|
|
}
|
|
|
|
mParseDataFromCache = true;
|
|
mNextParserPosition = INT64_C(0);
|
|
mParsedDataLength = INT64_C(0);
|
|
|
|
// MP3 file duration
|
|
mMP3FrameParser = new MP3FrameParser(mDecoder->GetResource()->GetLength());
|
|
const char* mime = nullptr;
|
|
if (mMetaData->findCString(kKeyMIMEType, &mime) &&
|
|
!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_MPEG)) {
|
|
{
|
|
MonitorAutoUnlock monUnlock(mParserMonitor);
|
|
// trigger parsing logic and wait for finishing parsing data in the beginning.
|
|
nsRefPtr<SignalObject> signalObject = new SignalObject("MediaCodecReader::UpdateDuration()");
|
|
if (ProcessCachedData(INT64_C(0), signalObject) > INT64_C(0)) {
|
|
signalObject->Wait();
|
|
}
|
|
}
|
|
duration = mMP3FrameParser->GetDuration();
|
|
}
|
|
}
|
|
|
|
{
|
|
MutexAutoLock al(mAudioTrack.mDurationLock);
|
|
if (duration > mAudioTrack.mDurationUs) {
|
|
mAudioTrack.mDurationUs = duration;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::UpdateDuration()
|
|
{
|
|
// read audio duration
|
|
if (mAudioTrack.mSource != nullptr) {
|
|
sp<MetaData> audioFormat = mAudioTrack.mSource->getFormat();
|
|
if (audioFormat != nullptr) {
|
|
int64_t duration = INT64_C(0);
|
|
if (audioFormat->findInt64(kKeyDuration, &duration)) {
|
|
MutexAutoLock al(mAudioTrack.mDurationLock);
|
|
if (duration > mAudioTrack.mDurationUs) {
|
|
mAudioTrack.mDurationUs = duration;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// read video duration
|
|
if (mVideoTrack.mSource != nullptr) {
|
|
sp<MetaData> videoFormat = mVideoTrack.mSource->getFormat();
|
|
if (videoFormat != nullptr) {
|
|
int64_t duration = INT64_C(0);
|
|
if (videoFormat->findInt64(kKeyDuration, &duration)) {
|
|
MutexAutoLock al(mVideoTrack.mDurationLock);
|
|
if (duration > mVideoTrack.mDurationUs) {
|
|
mVideoTrack.mDurationUs = duration;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::UpdateAudioInfo()
|
|
{
|
|
if (mAudioTrack.mSource == nullptr && mAudioTrack.mCodec == nullptr) {
|
|
// No needs to update AudioInfo if no audio streams.
|
|
return true;
|
|
}
|
|
|
|
if (mAudioTrack.mSource == nullptr || mAudioTrack.mCodec == nullptr ||
|
|
!mAudioTrack.mCodec->allocated()) {
|
|
// Something wrong.
|
|
MOZ_ASSERT(mAudioTrack.mSource != nullptr, "mAudioTrack.mSource should not be nullptr");
|
|
MOZ_ASSERT(mAudioTrack.mCodec != nullptr, "mAudioTrack.mCodec should not be nullptr");
|
|
MOZ_ASSERT(mAudioTrack.mCodec->allocated(), "mAudioTrack.mCodec->allocated() should not be false");
|
|
return false;
|
|
}
|
|
|
|
// read audio metadata from MediaSource
|
|
sp<MetaData> audioSourceFormat = mAudioTrack.mSource->getFormat();
|
|
if (audioSourceFormat == nullptr) {
|
|
return false;
|
|
}
|
|
|
|
// ensure audio metadata from MediaCodec has been parsed
|
|
if (!EnsureCodecFormatParsed(mAudioTrack)){
|
|
return false;
|
|
}
|
|
|
|
// read audio metadata from MediaCodec
|
|
sp<AMessage> audioCodecFormat;
|
|
if (mAudioTrack.mCodec->getOutputFormat(&audioCodecFormat) != OK ||
|
|
audioCodecFormat == nullptr) {
|
|
return false;
|
|
}
|
|
|
|
AString codec_mime;
|
|
int32_t codec_channel_count = 0;
|
|
int32_t codec_sample_rate = 0;
|
|
if (!audioCodecFormat->findString("mime", &codec_mime) ||
|
|
!audioCodecFormat->findInt32("channel-count", &codec_channel_count) ||
|
|
!audioCodecFormat->findInt32("sample-rate", &codec_sample_rate)) {
|
|
return false;
|
|
}
|
|
|
|
// Update AudioInfo
|
|
mInfo.mAudio.mHasAudio = true;
|
|
mInfo.mAudio.mChannels = codec_channel_count;
|
|
mInfo.mAudio.mRate = codec_sample_rate;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::UpdateVideoInfo()
|
|
{
|
|
if (mVideoTrack.mSource == nullptr && mVideoTrack.mCodec == nullptr) {
|
|
// No needs to update VideoInfo if no video streams.
|
|
return true;
|
|
}
|
|
|
|
if (mVideoTrack.mSource == nullptr || mVideoTrack.mCodec == nullptr ||
|
|
!mVideoTrack.mCodec->allocated()) {
|
|
// Something wrong.
|
|
MOZ_ASSERT(mVideoTrack.mSource != nullptr, "mVideoTrack.mSource should not be nullptr");
|
|
MOZ_ASSERT(mVideoTrack.mCodec != nullptr, "mVideoTrack.mCodec should not be nullptr");
|
|
MOZ_ASSERT(mVideoTrack.mCodec->allocated(), "mVideoTrack.mCodec->allocated() should not be false");
|
|
return false;
|
|
}
|
|
|
|
// read video metadata from MediaSource
|
|
sp<MetaData> videoSourceFormat = mVideoTrack.mSource->getFormat();
|
|
if (videoSourceFormat == nullptr) {
|
|
return false;
|
|
}
|
|
int32_t container_width = 0;
|
|
int32_t container_height = 0;
|
|
int32_t container_rotation = 0;
|
|
if (!videoSourceFormat->findInt32(kKeyWidth, &container_width) ||
|
|
!videoSourceFormat->findInt32(kKeyHeight, &container_height)) {
|
|
return false;
|
|
}
|
|
mVideoTrack.mFrameSize = nsIntSize(container_width, container_height);
|
|
if (videoSourceFormat->findInt32(kKeyRotation, &container_rotation)) {
|
|
mVideoTrack.mRotation = container_rotation;
|
|
}
|
|
|
|
// ensure video metadata from MediaCodec has been parsed
|
|
if (!EnsureCodecFormatParsed(mVideoTrack)){
|
|
return false;
|
|
}
|
|
|
|
// read video metadata from MediaCodec
|
|
sp<AMessage> videoCodecFormat;
|
|
if (mVideoTrack.mCodec->getOutputFormat(&videoCodecFormat) != OK ||
|
|
videoCodecFormat == nullptr) {
|
|
return false;
|
|
}
|
|
AString codec_mime;
|
|
int32_t codec_width = 0;
|
|
int32_t codec_height = 0;
|
|
int32_t codec_stride = 0;
|
|
int32_t codec_slice_height = 0;
|
|
int32_t codec_color_format = 0;
|
|
int32_t codec_crop_left = 0;
|
|
int32_t codec_crop_top = 0;
|
|
int32_t codec_crop_right = 0;
|
|
int32_t codec_crop_bottom = 0;
|
|
if (!videoCodecFormat->findString("mime", &codec_mime) ||
|
|
!videoCodecFormat->findInt32("width", &codec_width) ||
|
|
!videoCodecFormat->findInt32("height", &codec_height) ||
|
|
!videoCodecFormat->findInt32("stride", &codec_stride) ||
|
|
!videoCodecFormat->findInt32("slice-height", &codec_slice_height) ||
|
|
!videoCodecFormat->findInt32("color-format", &codec_color_format) ||
|
|
!videoCodecFormat->findRect("crop", &codec_crop_left, &codec_crop_top,
|
|
&codec_crop_right, &codec_crop_bottom)) {
|
|
return false;
|
|
}
|
|
|
|
mVideoTrack.mWidth = codec_width;
|
|
mVideoTrack.mHeight = codec_height;
|
|
mVideoTrack.mStride = codec_stride;
|
|
mVideoTrack.mSliceHeight = codec_slice_height;
|
|
mVideoTrack.mColorFormat = codec_color_format;
|
|
|
|
// Validate the container-reported frame and pictureRect sizes. This ensures
|
|
// that our video frame creation code doesn't overflow.
|
|
int32_t display_width = codec_crop_right - codec_crop_left + 1;
|
|
int32_t display_height = codec_crop_bottom - codec_crop_top + 1;
|
|
nsIntRect picture_rect(0, 0, mVideoTrack.mWidth, mVideoTrack.mHeight);
|
|
nsIntSize display_size(display_width, display_height);
|
|
if (!IsValidVideoRegion(mVideoTrack.mFrameSize, picture_rect, display_size)) {
|
|
return false;
|
|
}
|
|
|
|
// Relative picture size
|
|
gfx::IntRect relative_picture_rect = gfx::ToIntRect(picture_rect);
|
|
if (mVideoTrack.mWidth != mVideoTrack.mFrameSize.width ||
|
|
mVideoTrack.mHeight != mVideoTrack.mFrameSize.height) {
|
|
// Frame size is different from what the container reports. This is legal,
|
|
// and we will preserve the ratio of the crop rectangle as it
|
|
// was reported relative to the picture size reported by the container.
|
|
relative_picture_rect.x = (picture_rect.x * mVideoTrack.mWidth) /
|
|
mVideoTrack.mFrameSize.width;
|
|
relative_picture_rect.y = (picture_rect.y * mVideoTrack.mHeight) /
|
|
mVideoTrack.mFrameSize.height;
|
|
relative_picture_rect.width = (picture_rect.width * mVideoTrack.mWidth) /
|
|
mVideoTrack.mFrameSize.width;
|
|
relative_picture_rect.height = (picture_rect.height * mVideoTrack.mHeight) /
|
|
mVideoTrack.mFrameSize.height;
|
|
}
|
|
|
|
// Update VideoInfo
|
|
mInfo.mVideo.mHasVideo = true;
|
|
mVideoTrack.mPictureRect = picture_rect;
|
|
mInfo.mVideo.mDisplay = display_size;
|
|
mVideoTrack.mRelativePictureRect = relative_picture_rect;
|
|
|
|
return true;
|
|
}
|
|
|
|
status_t
|
|
MediaCodecReader::FlushCodecData(Track& aTrack)
|
|
{
|
|
if (aTrack.mSource == nullptr || aTrack.mCodec == nullptr ||
|
|
!aTrack.mCodec->allocated()) {
|
|
return UNKNOWN_ERROR;
|
|
}
|
|
|
|
status_t status = aTrack.mCodec->flush();
|
|
aTrack.mFlushed = (status == OK);
|
|
if (aTrack.mFlushed) {
|
|
aTrack.mInputIndex = sInvalidInputIndex;
|
|
}
|
|
|
|
return status;
|
|
}
|
|
|
|
// Keep filling data if there are available buffers.
|
|
// FIXME: change to non-blocking read
|
|
status_t
|
|
MediaCodecReader::FillCodecInputData(Track& aTrack)
|
|
{
|
|
if (aTrack.mSource == nullptr || aTrack.mCodec == nullptr ||
|
|
!aTrack.mCodec->allocated()) {
|
|
return UNKNOWN_ERROR;
|
|
}
|
|
|
|
if (aTrack.mInputEndOfStream) {
|
|
return ERROR_END_OF_STREAM;
|
|
}
|
|
|
|
if (IsValidTimestampUs(aTrack.mSeekTimeUs) && !aTrack.mFlushed) {
|
|
FlushCodecData(aTrack);
|
|
}
|
|
|
|
size_t index = 0;
|
|
while (aTrack.mInputIndex.isValid() ||
|
|
aTrack.mCodec->dequeueInputBuffer(&index) == OK) {
|
|
if (!aTrack.mInputIndex.isValid()) {
|
|
aTrack.mInputIndex = index;
|
|
}
|
|
MOZ_ASSERT(aTrack.mInputIndex.isValid(), "aElement.mInputIndex should be valid");
|
|
|
|
// Start the mSource before we read it.
|
|
if (aTrack.mSourceIsStopped) {
|
|
if (aTrack.mSource->start() == OK) {
|
|
aTrack.mSourceIsStopped = false;
|
|
} else {
|
|
return UNKNOWN_ERROR;
|
|
}
|
|
}
|
|
MediaBuffer* source_buffer = nullptr;
|
|
status_t status = OK;
|
|
if (IsValidTimestampUs(aTrack.mSeekTimeUs)) {
|
|
MediaSource::ReadOptions options;
|
|
options.setSeekTo(aTrack.mSeekTimeUs);
|
|
status = aTrack.mSource->read(&source_buffer, &options);
|
|
} else {
|
|
status = aTrack.mSource->read(&source_buffer);
|
|
}
|
|
|
|
// read() fails
|
|
if (status == INFO_FORMAT_CHANGED) {
|
|
return INFO_FORMAT_CHANGED;
|
|
} else if (status == ERROR_END_OF_STREAM) {
|
|
aTrack.mInputEndOfStream = true;
|
|
aTrack.mCodec->queueInputBuffer(aTrack.mInputIndex.value(),
|
|
0, 0, 0,
|
|
MediaCodec::BUFFER_FLAG_EOS);
|
|
return ERROR_END_OF_STREAM;
|
|
} else if (status == -ETIMEDOUT) {
|
|
return OK; // try it later
|
|
} else if (status != OK) {
|
|
return status;
|
|
} else if (source_buffer == nullptr) {
|
|
return UNKNOWN_ERROR;
|
|
}
|
|
|
|
// read() successes
|
|
aTrack.mInputEndOfStream = false;
|
|
aTrack.mSeekTimeUs = sInvalidTimestampUs;
|
|
|
|
sp<ABuffer> input_buffer = nullptr;
|
|
if (aTrack.mInputIndex.value() < aTrack.mInputBuffers.size()) {
|
|
input_buffer = aTrack.mInputBuffers[aTrack.mInputIndex.value()];
|
|
}
|
|
if (input_buffer != nullptr &&
|
|
aTrack.mInputCopier != nullptr &&
|
|
aTrack.mInputCopier->Copy(source_buffer, input_buffer)) {
|
|
int64_t timestamp = sInvalidTimestampUs;
|
|
sp<MetaData> codec_format = source_buffer->meta_data();
|
|
if (codec_format != nullptr) {
|
|
codec_format->findInt64(kKeyTime, ×tamp);
|
|
}
|
|
|
|
status = aTrack.mCodec->queueInputBuffer(
|
|
aTrack.mInputIndex.value(), input_buffer->offset(),
|
|
input_buffer->size(), timestamp, 0);
|
|
if (status == OK) {
|
|
aTrack.mInputIndex = sInvalidInputIndex;
|
|
}
|
|
}
|
|
source_buffer->release();
|
|
|
|
if (status != OK) {
|
|
return status;
|
|
}
|
|
}
|
|
|
|
return OK;
|
|
}
|
|
|
|
status_t
|
|
MediaCodecReader::GetCodecOutputData(Track& aTrack,
|
|
CodecBufferInfo& aBuffer,
|
|
int64_t aThreshold,
|
|
const TimeStamp& aTimeout)
|
|
{
|
|
// Read next frame.
|
|
CodecBufferInfo info;
|
|
status_t status = OK;
|
|
while (status == OK || status == INFO_OUTPUT_BUFFERS_CHANGED ||
|
|
status == -EAGAIN) {
|
|
|
|
int64_t duration = (int64_t)(aTimeout - TimeStamp::Now()).ToMicroseconds();
|
|
if (!IsValidDurationUs(duration)) {
|
|
return -EAGAIN;
|
|
}
|
|
|
|
status = aTrack.mCodec->dequeueOutputBuffer(&info.mIndex, &info.mOffset,
|
|
&info.mSize, &info.mTimeUs, &info.mFlags, duration);
|
|
// Check EOS first.
|
|
if (status == ERROR_END_OF_STREAM ||
|
|
(info.mFlags & MediaCodec::BUFFER_FLAG_EOS)) {
|
|
aBuffer = info;
|
|
aBuffer.mBuffer = aTrack.mOutputBuffers[info.mIndex];
|
|
aTrack.mOutputEndOfStream = true;
|
|
return ERROR_END_OF_STREAM;
|
|
}
|
|
|
|
if (status == OK) {
|
|
if (!IsValidTimestampUs(aThreshold) || info.mTimeUs >= aThreshold) {
|
|
// Get a valid output buffer.
|
|
break;
|
|
} else {
|
|
aTrack.mCodec->releaseOutputBuffer(info.mIndex);
|
|
}
|
|
} else if (status == INFO_OUTPUT_BUFFERS_CHANGED) {
|
|
// Update output buffers of MediaCodec.
|
|
if (aTrack.mCodec->getOutputBuffers(&aTrack.mOutputBuffers) != OK) {
|
|
NS_WARNING("Couldn't get output buffers from MediaCodec");
|
|
aTrack.mCodec = nullptr;
|
|
return UNKNOWN_ERROR;
|
|
}
|
|
}
|
|
|
|
if (TimeStamp::Now() > aTimeout) {
|
|
// Don't let this loop run for too long. Try it again later.
|
|
return -EAGAIN;
|
|
}
|
|
}
|
|
|
|
if (status != OK) {
|
|
// Something wrong.
|
|
return status;
|
|
}
|
|
|
|
if (info.mIndex >= aTrack.mOutputBuffers.size()) {
|
|
NS_WARNING("Couldn't get proper index of output buffers from MediaCodec");
|
|
aTrack.mCodec->releaseOutputBuffer(info.mIndex);
|
|
return UNKNOWN_ERROR;
|
|
}
|
|
|
|
aBuffer = info;
|
|
aBuffer.mBuffer = aTrack.mOutputBuffers[info.mIndex];
|
|
|
|
return OK;
|
|
}
|
|
|
|
bool
|
|
MediaCodecReader::EnsureCodecFormatParsed(Track& aTrack)
|
|
{
|
|
if (aTrack.mSource == nullptr || aTrack.mCodec == nullptr ||
|
|
!aTrack.mCodec->allocated()) {
|
|
return false;
|
|
}
|
|
|
|
sp<AMessage> format;
|
|
if (aTrack.mCodec->getOutputFormat(&format) == OK) {
|
|
return true;
|
|
}
|
|
|
|
status_t status = OK;
|
|
size_t index = 0;
|
|
size_t offset = 0;
|
|
size_t size = 0;
|
|
int64_t timeUs = INT64_C(0);
|
|
uint32_t flags = 0;
|
|
while ((status = aTrack.mCodec->dequeueOutputBuffer(&index, &offset, &size,
|
|
&timeUs, &flags)) != INFO_FORMAT_CHANGED) {
|
|
if (status == OK) {
|
|
aTrack.mCodec->releaseOutputBuffer(index);
|
|
}
|
|
status = FillCodecInputData(aTrack);
|
|
if (status == INFO_FORMAT_CHANGED) {
|
|
break;
|
|
} else if (status != OK) {
|
|
return false;
|
|
}
|
|
}
|
|
return aTrack.mCodec->getOutputFormat(&format) == OK;
|
|
}
|
|
|
|
uint8_t*
|
|
MediaCodecReader::GetColorConverterBuffer(int32_t aWidth, int32_t aHeight)
|
|
{
|
|
// Allocate a temporary YUV420Planer buffer.
|
|
size_t yuv420p_y_size = aWidth * aHeight;
|
|
size_t yuv420p_u_size = ((aWidth + 1) / 2) * ((aHeight + 1) / 2);
|
|
size_t yuv420p_v_size = yuv420p_u_size;
|
|
size_t yuv420p_size = yuv420p_y_size + yuv420p_u_size + yuv420p_v_size;
|
|
if (mColorConverterBufferSize != yuv420p_size) {
|
|
mColorConverterBuffer = nullptr; // release the previous buffer first
|
|
mColorConverterBuffer = new uint8_t[yuv420p_size];
|
|
mColorConverterBufferSize = yuv420p_size;
|
|
}
|
|
return mColorConverterBuffer.get();
|
|
}
|
|
|
|
void
|
|
MediaCodecReader::ClearColorConverterBuffer()
|
|
{
|
|
mColorConverterBuffer = nullptr;
|
|
mColorConverterBufferSize = 0;
|
|
}
|
|
|
|
// Called on MediaCodecReader::mLooper thread.
|
|
void
|
|
MediaCodecReader::onMessageReceived(const sp<AMessage>& aMessage)
|
|
{
|
|
switch (aMessage->what()) {
|
|
|
|
case kNotifyCodecReserved:
|
|
{
|
|
// Our decode may have acquired the hardware resource that it needs
|
|
// to start. Notify the state machine to resume loading metadata.
|
|
mDecoder->NotifyWaitingForResourcesStatusChanged();
|
|
break;
|
|
}
|
|
|
|
case kNotifyCodecCanceled:
|
|
{
|
|
ReleaseCriticalResources();
|
|
break;
|
|
}
|
|
|
|
default:
|
|
TRESPASS();
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Called on Binder thread.
|
|
void
|
|
MediaCodecReader::codecReserved(Track& aTrack)
|
|
{
|
|
if (!ConfigureMediaCodec(aTrack)) {
|
|
DestroyMediaCodecs(aTrack);
|
|
return;
|
|
}
|
|
|
|
if (mHandler != nullptr) {
|
|
// post kNotifyCodecReserved to MediaCodecReader::mLooper thread.
|
|
sp<AMessage> notify = new AMessage(kNotifyCodecReserved, mHandler->id());
|
|
notify->post();
|
|
}
|
|
}
|
|
|
|
// Called on Binder thread.
|
|
void
|
|
MediaCodecReader::codecCanceled(Track& aTrack)
|
|
{
|
|
DestroyMediaCodecs(aTrack);
|
|
|
|
if (mHandler != nullptr) {
|
|
// post kNotifyCodecCanceled to MediaCodecReader::mLooper thread.
|
|
sp<AMessage> notify = new AMessage(kNotifyCodecCanceled, mHandler->id());
|
|
notify->post();
|
|
}
|
|
}
|
|
|
|
} // namespace mozilla
|