1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/media/fmp4/PlatformDecoderModule.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,65 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* vim:set ts=2 sw=2 sts=2 et cindent: */ 1.6 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 +#include "PlatformDecoderModule.h" 1.11 +#ifdef XP_WIN 1.12 +#include "WMFDecoderModule.h" 1.13 +#endif 1.14 +#ifdef MOZ_FFMPEG 1.15 +#include "FFmpegDecoderModule.h" 1.16 +#endif 1.17 +#include "mozilla/Preferences.h" 1.18 + 1.19 +namespace mozilla { 1.20 + 1.21 +extern PlatformDecoderModule* CreateBlankDecoderModule(); 1.22 + 1.23 +bool PlatformDecoderModule::sUseBlankDecoder = false; 1.24 +bool PlatformDecoderModule::sFFmpegDecoderEnabled = false; 1.25 + 1.26 +/* static */ 1.27 +void 1.28 +PlatformDecoderModule::Init() 1.29 +{ 1.30 + MOZ_ASSERT(NS_IsMainThread()); 1.31 + static bool alreadyInitialized = false; 1.32 + if (alreadyInitialized) { 1.33 + return; 1.34 + } 1.35 + alreadyInitialized = true; 1.36 + 1.37 + Preferences::AddBoolVarCache(&sUseBlankDecoder, 1.38 + "media.fragmented-mp4.use-blank-decoder"); 1.39 + Preferences::AddBoolVarCache(&sFFmpegDecoderEnabled, 1.40 + "media.fragmented-mp4.ffmpeg.enabled", false); 1.41 + 1.42 +#ifdef XP_WIN 1.43 + WMFDecoderModule::Init(); 1.44 +#endif 1.45 +} 1.46 + 1.47 +/* static */ 1.48 +PlatformDecoderModule* 1.49 +PlatformDecoderModule::Create() 1.50 +{ 1.51 + if (sUseBlankDecoder) { 1.52 + return CreateBlankDecoderModule(); 1.53 + } 1.54 +#ifdef XP_WIN 1.55 + nsAutoPtr<WMFDecoderModule> m(new WMFDecoderModule()); 1.56 + if (NS_SUCCEEDED(m->Startup())) { 1.57 + return m.forget(); 1.58 + } 1.59 +#endif 1.60 +#ifdef MOZ_FFMPEG 1.61 + if (sFFmpegDecoderEnabled) { 1.62 + return new FFmpegDecoderModule(); 1.63 + } 1.64 +#endif 1.65 + return nullptr; 1.66 +} 1.67 + 1.68 +} // namespace mozilla