gecko-dev/dom/media/platforms/PlatformDecoderModule.h
Jean-Yves Avenard 998eafdaa3 Bug 1163458: Part1. Move PlatformDecoderModule outside fmp4. r=kentukyfriedtakahe
--HG--
rename : dom/media/fmp4/PlatformDecoderModule.cpp => dom/media/platforms/PlatformDecoderModule.cpp
rename : dom/media/fmp4/PlatformDecoderModule.h => dom/media/platforms/PlatformDecoderModule.h
rename : dom/media/fmp4/SharedDecoderManager.cpp => dom/media/platforms/SharedDecoderManager.cpp
rename : dom/media/fmp4/SharedDecoderManager.h => dom/media/platforms/SharedDecoderManager.h
rename : dom/media/fmp4/BlankDecoderModule.cpp => dom/media/platforms/agnostic/BlankDecoderModule.cpp
rename : dom/media/fmp4/eme/EMEAudioDecoder.cpp => dom/media/platforms/agnostic/eme/EMEAudioDecoder.cpp
rename : dom/media/fmp4/eme/EMEAudioDecoder.h => dom/media/platforms/agnostic/eme/EMEAudioDecoder.h
rename : dom/media/fmp4/eme/EMEDecoderModule.cpp => dom/media/platforms/agnostic/eme/EMEDecoderModule.cpp
rename : dom/media/fmp4/eme/EMEDecoderModule.h => dom/media/platforms/agnostic/eme/EMEDecoderModule.h
rename : dom/media/fmp4/eme/EMEVideoDecoder.cpp => dom/media/platforms/agnostic/eme/EMEVideoDecoder.cpp
rename : dom/media/fmp4/eme/EMEVideoDecoder.h => dom/media/platforms/agnostic/eme/EMEVideoDecoder.h
rename : dom/media/fmp4/eme/SamplesWaitingForKey.cpp => dom/media/platforms/agnostic/eme/SamplesWaitingForKey.cpp
rename : dom/media/fmp4/eme/SamplesWaitingForKey.h => dom/media/platforms/agnostic/eme/SamplesWaitingForKey.h
rename : dom/media/fmp4/eme/moz.build => dom/media/platforms/agnostic/eme/moz.build
rename : dom/media/fmp4/gmp/GMPAudioDecoder.cpp => dom/media/platforms/agnostic/gmp/GMPAudioDecoder.cpp
rename : dom/media/fmp4/gmp/GMPAudioDecoder.h => dom/media/platforms/agnostic/gmp/GMPAudioDecoder.h
rename : dom/media/fmp4/gmp/GMPDecoderModule.cpp => dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
rename : dom/media/fmp4/gmp/GMPDecoderModule.h => dom/media/platforms/agnostic/gmp/GMPDecoderModule.h
rename : dom/media/fmp4/gmp/GMPVideoDecoder.cpp => dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
rename : dom/media/fmp4/gmp/GMPVideoDecoder.h => dom/media/platforms/agnostic/gmp/GMPVideoDecoder.h
rename : dom/media/fmp4/gmp/MediaDataDecoderProxy.cpp => dom/media/platforms/agnostic/gmp/MediaDataDecoderProxy.cpp
rename : dom/media/fmp4/gmp/MediaDataDecoderProxy.h => dom/media/platforms/agnostic/gmp/MediaDataDecoderProxy.h
rename : dom/media/fmp4/gmp/moz.build => dom/media/platforms/agnostic/gmp/moz.build
rename : dom/media/fmp4/android/AndroidDecoderModule.cpp => dom/media/platforms/android/AndroidDecoderModule.cpp
rename : dom/media/fmp4/android/AndroidDecoderModule.h => dom/media/platforms/android/AndroidDecoderModule.h
rename : dom/media/fmp4/apple/AppleATDecoder.cpp => dom/media/platforms/apple/AppleATDecoder.cpp
rename : dom/media/fmp4/apple/AppleATDecoder.h => dom/media/platforms/apple/AppleATDecoder.h
rename : dom/media/fmp4/apple/AppleCMFunctions.h => dom/media/platforms/apple/AppleCMFunctions.h
rename : dom/media/fmp4/apple/AppleCMLinker.cpp => dom/media/platforms/apple/AppleCMLinker.cpp
rename : dom/media/fmp4/apple/AppleCMLinker.h => dom/media/platforms/apple/AppleCMLinker.h
rename : dom/media/fmp4/apple/AppleDecoderModule.cpp => dom/media/platforms/apple/AppleDecoderModule.cpp
rename : dom/media/fmp4/apple/AppleDecoderModule.h => dom/media/platforms/apple/AppleDecoderModule.h
rename : dom/media/fmp4/apple/AppleUtils.h => dom/media/platforms/apple/AppleUtils.h
rename : dom/media/fmp4/apple/AppleVDADecoder.cpp => dom/media/platforms/apple/AppleVDADecoder.cpp
rename : dom/media/fmp4/apple/AppleVDADecoder.h => dom/media/platforms/apple/AppleVDADecoder.h
rename : dom/media/fmp4/apple/AppleVDAFunctions.h => dom/media/platforms/apple/AppleVDAFunctions.h
rename : dom/media/fmp4/apple/AppleVDALinker.cpp => dom/media/platforms/apple/AppleVDALinker.cpp
rename : dom/media/fmp4/apple/AppleVDALinker.h => dom/media/platforms/apple/AppleVDALinker.h
rename : dom/media/fmp4/apple/AppleVTDecoder.cpp => dom/media/platforms/apple/AppleVTDecoder.cpp
rename : dom/media/fmp4/apple/AppleVTDecoder.h => dom/media/platforms/apple/AppleVTDecoder.h
rename : dom/media/fmp4/apple/AppleVTFunctions.h => dom/media/platforms/apple/AppleVTFunctions.h
rename : dom/media/fmp4/apple/AppleVTLinker.cpp => dom/media/platforms/apple/AppleVTLinker.cpp
rename : dom/media/fmp4/apple/AppleVTLinker.h => dom/media/platforms/apple/AppleVTLinker.h
rename : dom/media/fmp4/apple/ReorderQueue.h => dom/media/platforms/apple/ReorderQueue.h
rename : dom/media/fmp4/apple/VideoDecodeAcceleration/VDADecoder.h => dom/media/platforms/apple/VideoDecodeAcceleration/VDADecoder.h
rename : dom/media/fmp4/apple/VideoToolbox/VideoToolbox.h => dom/media/platforms/apple/VideoToolbox/VideoToolbox.h
rename : dom/media/fmp4/ffmpeg/FFmpegAudioDecoder.cpp => dom/media/platforms/ffmpeg/FFmpegAudioDecoder.cpp
rename : dom/media/fmp4/ffmpeg/FFmpegAudioDecoder.h => dom/media/platforms/ffmpeg/FFmpegAudioDecoder.h
rename : dom/media/fmp4/ffmpeg/FFmpegDataDecoder.cpp => dom/media/platforms/ffmpeg/FFmpegDataDecoder.cpp
rename : dom/media/fmp4/ffmpeg/FFmpegDataDecoder.h => dom/media/platforms/ffmpeg/FFmpegDataDecoder.h
rename : dom/media/fmp4/ffmpeg/FFmpegDecoderModule.cpp => dom/media/platforms/ffmpeg/FFmpegDecoderModule.cpp
rename : dom/media/fmp4/ffmpeg/FFmpegDecoderModule.h => dom/media/platforms/ffmpeg/FFmpegDecoderModule.h
rename : dom/media/fmp4/ffmpeg/FFmpegFunctionList.h => dom/media/platforms/ffmpeg/FFmpegFunctionList.h
rename : dom/media/fmp4/ffmpeg/FFmpegH264Decoder.cpp => dom/media/platforms/ffmpeg/FFmpegH264Decoder.cpp
rename : dom/media/fmp4/ffmpeg/FFmpegH264Decoder.h => dom/media/platforms/ffmpeg/FFmpegH264Decoder.h
rename : dom/media/fmp4/ffmpeg/FFmpegLibs.h => dom/media/platforms/ffmpeg/FFmpegLibs.h
rename : dom/media/fmp4/ffmpeg/FFmpegLog.cpp => dom/media/platforms/ffmpeg/FFmpegLog.cpp
rename : dom/media/fmp4/ffmpeg/FFmpegLog.h => dom/media/platforms/ffmpeg/FFmpegLog.h
rename : dom/media/fmp4/ffmpeg/FFmpegRuntimeLinker.cpp => dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
rename : dom/media/fmp4/ffmpeg/FFmpegRuntimeLinker.h => dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.h
rename : dom/media/fmp4/ffmpeg/README_mozilla => dom/media/platforms/ffmpeg/README_mozilla
rename : dom/media/fmp4/ffmpeg/libav53/include/COPYING.LGPLv2.1 => dom/media/platforms/ffmpeg/libav53/include/COPYING.LGPLv2.1
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/avcodec.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/avcodec.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/avfft.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/avfft.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/dxva2.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/dxva2.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/old_codec_ids.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/old_codec_ids.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/opt.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/opt.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/vaapi.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/vaapi.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/vda.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/vda.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/vdpau.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/vdpau.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/version.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/version.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavcodec/xvmc.h => dom/media/platforms/ffmpeg/libav53/include/libavcodec/xvmc.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavformat/avformat.h => dom/media/platforms/ffmpeg/libav53/include/libavformat/avformat.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavformat/avio.h => dom/media/platforms/ffmpeg/libav53/include/libavformat/avio.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavformat/version.h => dom/media/platforms/ffmpeg/libav53/include/libavformat/version.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/adler32.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/adler32.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/aes.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/aes.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/attributes.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/attributes.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/audio_fifo.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/audio_fifo.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/audioconvert.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/audioconvert.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/avassert.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/avassert.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/avconfig.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/avconfig.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/avstring.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/avstring.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/avutil.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/avutil.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/base64.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/base64.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/blowfish.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/blowfish.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/bprint.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/bprint.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/bswap.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/bswap.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/common.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/common.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/cpu.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/cpu.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/crc.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/crc.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/dict.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/dict.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/error.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/error.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/eval.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/eval.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/fifo.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/fifo.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/file.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/file.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/imgutils.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/imgutils.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/intfloat.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/intfloat.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/intfloat_readwrite.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/intfloat_readwrite.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/intreadwrite.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/intreadwrite.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/lfg.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/lfg.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/log.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/log.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/lzo.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/lzo.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/mathematics.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/mathematics.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/md5.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/md5.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/mem.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/mem.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/old_pix_fmts.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/old_pix_fmts.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/opt.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/opt.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/parseutils.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/parseutils.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/pixdesc.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/pixdesc.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/pixfmt.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/pixfmt.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/random_seed.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/random_seed.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/rational.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/rational.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/samplefmt.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/samplefmt.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/sha.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/sha.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/time.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/time.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/timecode.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/timecode.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/timestamp.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/timestamp.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/version.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/version.h
rename : dom/media/fmp4/ffmpeg/libav53/include/libavutil/xtea.h => dom/media/platforms/ffmpeg/libav53/include/libavutil/xtea.h
rename : dom/media/fmp4/ffmpeg/libav53/moz.build => dom/media/platforms/ffmpeg/libav53/moz.build
rename : dom/media/fmp4/ffmpeg/libav54/include/COPYING.LGPLv2.1 => dom/media/platforms/ffmpeg/libav54/include/COPYING.LGPLv2.1
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/avcodec.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/avcodec.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/avfft.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/avfft.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/dxva2.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/dxva2.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/old_codec_ids.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/old_codec_ids.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/vaapi.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/vaapi.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/vda.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/vda.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/vdpau.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/vdpau.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/version.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/version.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavcodec/xvmc.h => dom/media/platforms/ffmpeg/libav54/include/libavcodec/xvmc.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavformat/avformat.h => dom/media/platforms/ffmpeg/libav54/include/libavformat/avformat.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavformat/avio.h => dom/media/platforms/ffmpeg/libav54/include/libavformat/avio.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavformat/version.h => dom/media/platforms/ffmpeg/libav54/include/libavformat/version.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/adler32.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/adler32.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/aes.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/aes.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/attributes.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/attributes.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/audio_fifo.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/audio_fifo.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/audioconvert.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/audioconvert.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/avassert.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/avassert.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/avconfig.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/avconfig.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/avstring.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/avstring.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/avutil.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/avutil.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/base64.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/base64.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/blowfish.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/blowfish.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/bswap.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/bswap.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/channel_layout.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/channel_layout.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/common.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/common.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/cpu.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/cpu.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/crc.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/crc.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/dict.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/dict.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/error.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/error.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/eval.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/eval.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/fifo.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/fifo.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/file.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/file.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/imgutils.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/imgutils.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/intfloat.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/intfloat.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/intfloat_readwrite.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/intfloat_readwrite.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/intreadwrite.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/intreadwrite.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/lfg.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/lfg.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/log.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/log.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/lzo.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/lzo.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/mathematics.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/mathematics.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/md5.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/md5.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/mem.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/mem.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/old_pix_fmts.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/old_pix_fmts.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/opt.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/opt.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/parseutils.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/parseutils.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/pixdesc.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/pixdesc.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/pixfmt.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/pixfmt.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/random_seed.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/random_seed.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/rational.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/rational.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/samplefmt.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/samplefmt.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/sha.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/sha.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/time.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/time.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/version.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/version.h
rename : dom/media/fmp4/ffmpeg/libav54/include/libavutil/xtea.h => dom/media/platforms/ffmpeg/libav54/include/libavutil/xtea.h
rename : dom/media/fmp4/ffmpeg/libav54/moz.build => dom/media/platforms/ffmpeg/libav54/moz.build
rename : dom/media/fmp4/ffmpeg/libav55/include/COPYING.LGPLv2.1 => dom/media/platforms/ffmpeg/libav55/include/COPYING.LGPLv2.1
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/avcodec.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/avcodec.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/avfft.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/avfft.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/dxva2.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/dxva2.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/vaapi.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/vaapi.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/vda.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/vda.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/vdpau.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/vdpau.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/version.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/version.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavcodec/xvmc.h => dom/media/platforms/ffmpeg/libav55/include/libavcodec/xvmc.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavformat/avformat.h => dom/media/platforms/ffmpeg/libav55/include/libavformat/avformat.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavformat/avio.h => dom/media/platforms/ffmpeg/libav55/include/libavformat/avio.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavformat/version.h => dom/media/platforms/ffmpeg/libav55/include/libavformat/version.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/adler32.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/adler32.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/aes.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/aes.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/attributes.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/attributes.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/audio_fifo.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/audio_fifo.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/audioconvert.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/audioconvert.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/avassert.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/avassert.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/avconfig.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/avconfig.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/avstring.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/avstring.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/avutil.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/avutil.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/base64.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/base64.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/blowfish.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/blowfish.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/bswap.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/bswap.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/buffer.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/buffer.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/channel_layout.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/channel_layout.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/common.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/common.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/cpu.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/cpu.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/crc.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/crc.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/dict.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/dict.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/downmix_info.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/downmix_info.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/error.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/error.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/eval.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/eval.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/fifo.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/fifo.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/file.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/file.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/frame.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/frame.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/hmac.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/hmac.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/imgutils.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/imgutils.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/intfloat.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/intfloat.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/intreadwrite.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/intreadwrite.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/lfg.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/lfg.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/log.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/log.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/lzo.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/lzo.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/macros.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/macros.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/mathematics.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/mathematics.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/md5.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/md5.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/mem.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/mem.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/old_pix_fmts.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/old_pix_fmts.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/opt.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/opt.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/parseutils.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/parseutils.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/pixdesc.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/pixdesc.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/pixfmt.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/pixfmt.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/random_seed.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/random_seed.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/rational.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/rational.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/samplefmt.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/samplefmt.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/sha.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/sha.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/stereo3d.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/stereo3d.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/time.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/time.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/version.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/version.h
rename : dom/media/fmp4/ffmpeg/libav55/include/libavutil/xtea.h => dom/media/platforms/ffmpeg/libav55/include/libavutil/xtea.h
rename : dom/media/fmp4/ffmpeg/libav55/moz.build => dom/media/platforms/ffmpeg/libav55/moz.build
rename : dom/media/fmp4/gonk/GonkAudioDecoderManager.cpp => dom/media/platforms/gonk/GonkAudioDecoderManager.cpp
rename : dom/media/fmp4/gonk/GonkAudioDecoderManager.h => dom/media/platforms/gonk/GonkAudioDecoderManager.h
rename : dom/media/fmp4/gonk/GonkDecoderModule.cpp => dom/media/platforms/gonk/GonkDecoderModule.cpp
rename : dom/media/fmp4/gonk/GonkDecoderModule.h => dom/media/platforms/gonk/GonkDecoderModule.h
rename : dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp => dom/media/platforms/gonk/GonkMediaDataDecoder.cpp
rename : dom/media/fmp4/gonk/GonkMediaDataDecoder.h => dom/media/platforms/gonk/GonkMediaDataDecoder.h
rename : dom/media/fmp4/gonk/GonkVideoDecoderManager.cpp => dom/media/platforms/gonk/GonkVideoDecoderManager.cpp
rename : dom/media/fmp4/gonk/GonkVideoDecoderManager.h => dom/media/platforms/gonk/GonkVideoDecoderManager.h
rename : dom/media/fmp4/gonk/moz.build => dom/media/platforms/gonk/moz.build
rename : dom/media/fmp4/moz.build => dom/media/platforms/moz.build
rename : dom/media/fmp4/wmf/MFTDecoder.cpp => dom/media/platforms/wmf/MFTDecoder.cpp
rename : dom/media/fmp4/wmf/MFTDecoder.h => dom/media/platforms/wmf/MFTDecoder.h
rename : dom/media/fmp4/wmf/WMFAudioMFTManager.cpp => dom/media/platforms/wmf/WMFAudioMFTManager.cpp
rename : dom/media/fmp4/wmf/WMFAudioMFTManager.h => dom/media/platforms/wmf/WMFAudioMFTManager.h
rename : dom/media/fmp4/wmf/WMFDecoderModule.cpp => dom/media/platforms/wmf/WMFDecoderModule.cpp
rename : dom/media/fmp4/wmf/WMFDecoderModule.h => dom/media/platforms/wmf/WMFDecoderModule.h
rename : dom/media/fmp4/wmf/WMFMediaDataDecoder.cpp => dom/media/platforms/wmf/WMFMediaDataDecoder.cpp
rename : dom/media/fmp4/wmf/WMFMediaDataDecoder.h => dom/media/platforms/wmf/WMFMediaDataDecoder.h
rename : dom/media/fmp4/wmf/WMFVideoMFTManager.cpp => dom/media/platforms/wmf/WMFVideoMFTManager.cpp
rename : dom/media/fmp4/wmf/WMFVideoMFTManager.h => dom/media/platforms/wmf/WMFVideoMFTManager.h
rename : dom/media/fmp4/wmf/moz.build => dom/media/platforms/wmf/moz.build
rename : dom/media/fmp4/wrappers/H264Converter.cpp => dom/media/platforms/wrappers/H264Converter.cpp
rename : dom/media/fmp4/wrappers/H264Converter.h => dom/media/platforms/wrappers/H264Converter.h
2015-05-18 15:42:32 +10:00

268 lines
11 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/. */
#if !defined(PlatformDecoderModule_h_)
#define PlatformDecoderModule_h_
#include "MediaDecoderReader.h"
#include "mozilla/layers/LayersTypes.h"
#include "nsTArray.h"
#include "mozilla/RefPtr.h"
#include <queue>
namespace mozilla {
class TrackInfo;
class AudioInfo;
class VideoInfo;
class MediaRawData;
namespace layers {
class ImageContainer;
}
class MediaDataDecoder;
class MediaDataDecoderCallback;
class FlushableMediaTaskQueue;
class CDMProxy;
typedef int64_t Microseconds;
// The PlatformDecoderModule interface is used by the MP4Reader to abstract
// access to the H264 and Audio (AAC/MP3) decoders provided by various platforms.
// It may be extended to support other codecs in future. Each platform (Windows,
// MacOSX, Linux, B2G etc) must implement a PlatformDecoderModule to provide
// access to its decoders in order to get decompressed H.264/AAC from the
// MP4Reader.
//
// Video decoding is asynchronous, and should be performed on the task queue
// provided if the underlying platform isn't already exposing an async API.
//
// Platforms that don't have a corresponding PlatformDecoderModule won't be
// able to play the H.264/AAC data output by the MP4Reader. In practice this
// means that we won't have fragmented MP4 supported in Media Source
// Extensions.
//
// A cross-platform decoder module that discards input and produces "blank"
// output samples exists for testing, and is created when the pref
// "media.fragmented-mp4.use-blank-decoder" is true.
class PlatformDecoderModule {
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(PlatformDecoderModule)
// Call on the main thread to initialize the static state
// needed by Create().
static void Init();
// Factory method that creates the appropriate PlatformDecoderModule for
// the platform we're running on. Caller is responsible for deleting this
// instance. It's expected that there will be multiple
// PlatformDecoderModules alive at the same time. There is one
// PlatformDecoderModule created per MP4Reader.
// This is called on the decode task queue.
static already_AddRefed<PlatformDecoderModule> Create();
// As Create() but do not initialize the created PlatformDecoderModule.
static already_AddRefed<PlatformDecoderModule> CreatePDM();
// Perform any per-instance initialization.
// This is called on the decode task queue.
virtual nsresult Startup() { return NS_OK; };
#ifdef MOZ_EME
// Creates a PlatformDecoderModule that uses a CDMProxy to decrypt or
// decrypt-and-decode EME encrypted content. If the CDM only decrypts and
// does not decode, we create a PDM and use that to create MediaDataDecoders
// that we use on on aTaskQueue to decode the decrypted stream.
// This is called on the decode task queue.
static already_AddRefed<PlatformDecoderModule>
CreateCDMWrapper(CDMProxy* aProxy,
bool aHasAudio,
bool aHasVideo);
#endif
// Creates a decoder.
// See CreateVideoDecoder and CreateAudioDecoder for implementation details.
virtual already_AddRefed<MediaDataDecoder>
CreateDecoder(const TrackInfo& aConfig,
FlushableMediaTaskQueue* aTaskQueue,
MediaDataDecoderCallback* aCallback,
layers::LayersBackend aLayersBackend = layers::LayersBackend::LAYERS_NONE,
layers::ImageContainer* aImageContainer = nullptr);
// An audio decoder module must support AAC by default.
// A video decoder must support H264 by default.
// If more codecs are to be supported, SupportsMimeType will have
// to be extended
virtual bool SupportsMimeType(const nsACString& aMimeType);
enum ConversionRequired {
kNeedNone,
kNeedAVCC,
kNeedAnnexB,
};
// Indicates that the decoder requires a specific format.
// The PlatformDecoderModule will convert the demuxed data accordingly before
// feeding it to MediaDataDecoder::Input.
virtual ConversionRequired DecoderNeedsConversion(const TrackInfo& aConfig) const = 0;
virtual void DisableHardwareAcceleration() {}
virtual bool SupportsSharedDecoders(const VideoInfo& aConfig) const {
return true;
}
protected:
PlatformDecoderModule() {}
virtual ~PlatformDecoderModule() {}
friend class H264Converter;
// Creates a Video decoder. The layers backend is passed in so that
// decoders can determine whether hardware accelerated decoding can be used.
// Asynchronous decoding of video should be done in runnables dispatched
// to aVideoTaskQueue. If the task queue isn't needed, the decoder should
// not hold a reference to it.
// Output and errors should be returned to the reader via aCallback.
// On Windows the task queue's threads in have MSCOM initialized with
// COINIT_MULTITHREADED.
// Returns nullptr if the decoder can't be created.
// It is safe to store a reference to aConfig.
// This is called on the decode task queue.
virtual already_AddRefed<MediaDataDecoder>
CreateVideoDecoder(const VideoInfo& aConfig,
layers::LayersBackend aLayersBackend,
layers::ImageContainer* aImageContainer,
FlushableMediaTaskQueue* aVideoTaskQueue,
MediaDataDecoderCallback* aCallback) = 0;
// Creates an Audio decoder with the specified properties.
// Asynchronous decoding of audio should be done in runnables dispatched to
// aAudioTaskQueue. If the task queue isn't needed, the decoder should
// not hold a reference to it.
// Output and errors should be returned to the reader via aCallback.
// Returns nullptr if the decoder can't be created.
// On Windows the task queue's threads in have MSCOM initialized with
// COINIT_MULTITHREADED.
// It is safe to store a reference to aConfig.
// This is called on the decode task queue.
virtual already_AddRefed<MediaDataDecoder>
CreateAudioDecoder(const AudioInfo& aConfig,
FlushableMediaTaskQueue* aAudioTaskQueue,
MediaDataDecoderCallback* aCallback) = 0;
// Caches pref media.fragmented-mp4.use-blank-decoder
static bool sUseBlankDecoder;
static bool sFFmpegDecoderEnabled;
static bool sGonkDecoderEnabled;
static bool sAndroidMCDecoderPreferred;
static bool sAndroidMCDecoderEnabled;
static bool sGMPDecoderEnabled;
};
// A callback used by MediaDataDecoder to return output/errors to the
// MP4Reader. Implementation is threadsafe, and can be called on any thread.
class MediaDataDecoderCallback {
public:
virtual ~MediaDataDecoderCallback() {}
// Called by MediaDataDecoder when a sample has been decoded.
virtual void Output(MediaData* aData) = 0;
// Denotes an error in the decoding process. The reader will stop calling
// the decoder.
virtual void Error() = 0;
// Denotes that the last input sample has been inserted into the decoder,
// and no more output can be produced unless more input is sent.
virtual void InputExhausted() = 0;
virtual void DrainComplete() = 0;
virtual void ReleaseMediaResources() {};
virtual bool OnReaderTaskQueue() = 0;
};
// MediaDataDecoder is the interface exposed by decoders created by the
// PlatformDecoderModule's Create*Decoder() functions. The type of
// media data that the decoder accepts as valid input and produces as
// output is determined when the MediaDataDecoder is created.
//
// Unless otherwise noted, all functions are only called on the decode task
// queue. An exception is the MediaDataDecoder in
// MP4Reader::IsVideoAccelerated() for which all calls (Init(),
// IsHardwareAccelerated(), and Shutdown()) are from the main thread.
//
// Don't block inside these functions, unless it's explicitly noted that you
// should (like in Flush()).
//
// Decoding is done asynchronously. Any async work can be done on the
// MediaTaskQueue passed into the PlatformDecoderModules's Create*Decoder()
// function. This may not be necessary for platforms with async APIs
// for decoding.
class MediaDataDecoder {
protected:
virtual ~MediaDataDecoder() {};
public:
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaDataDecoder)
// Initialize the decoder. The decoder should be ready to decode after
// this returns. The decoder should do any initialization here, rather
// than in its constructor or PlatformDecoderModule::Create*Decoder(),
// so that if the MP4Reader needs to shutdown during initialization,
// it can call Shutdown() to cancel this operation. Any initialization
// that requires blocking the calling thread in this function *must*
// be done here so that it can be canceled by calling Shutdown()!
virtual nsresult Init() = 0;
// Inserts a sample into the decoder's decode pipeline.
virtual nsresult Input(MediaRawData* aSample) = 0;
// Causes all samples in the decoding pipeline to be discarded. When
// this function returns, the decoder must be ready to accept new input
// for decoding. This function is called when the demuxer seeks, before
// decoding resumes after the seek.
// While the reader calls Flush(), it ignores all output sent to it;
// it is safe (but pointless) to send output while Flush is called.
// The MP4Reader will not call Input() while it's calling Flush().
virtual nsresult Flush() = 0;
// Causes all complete samples in the pipeline that can be decoded to be
// output. If the decoder can't produce samples from the current output,
// it drops the input samples. The decoder may be holding onto samples
// that are required to decode samples that it expects to get in future.
// This is called when the demuxer reaches end of stream.
// The MP4Reader will not call Input() while it's calling Drain().
// This function is asynchronous. The MediaDataDecoder must call
// MediaDataDecoderCallback::DrainComplete() once all remaining
// samples have been output.
virtual nsresult Drain() = 0;
// Cancels all init/input/drain operations, and shuts down the
// decoder. The platform decoder should clean up any resources it's using
// and release memory etc. Shutdown() must block until the decoder has
// completed shutdown. The reader calls Flush() before calling Shutdown().
// The reader will delete the decoder once Shutdown() returns.
// The MediaDataDecoderCallback *must* not be called after Shutdown() has
// returned.
virtual nsresult Shutdown() = 0;
// Called from the state machine task queue or main thread.
virtual bool IsHardwareAccelerated() const { return false; }
// ConfigurationChanged will be called to inform the video or audio decoder
// that the format of the next input sample is about to change.
// If video decoder, aConfig will be a VideoInfo object.
// If audio decoder, aConfig will be a AudioInfo object.
virtual nsresult ConfigurationChanged(const TrackInfo& aConfig)
{
return NS_OK;
}
};
} // namespace mozilla
#endif