Fri, 16 Jan 2015 04:50:19 +0100
Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include "PlatformDecoderModule.h"
8 #ifdef XP_WIN
9 #include "WMFDecoderModule.h"
10 #endif
11 #ifdef MOZ_FFMPEG
12 #include "FFmpegDecoderModule.h"
13 #endif
14 #include "mozilla/Preferences.h"
16 namespace mozilla {
18 extern PlatformDecoderModule* CreateBlankDecoderModule();
20 bool PlatformDecoderModule::sUseBlankDecoder = false;
21 bool PlatformDecoderModule::sFFmpegDecoderEnabled = false;
23 /* static */
24 void
25 PlatformDecoderModule::Init()
26 {
27 MOZ_ASSERT(NS_IsMainThread());
28 static bool alreadyInitialized = false;
29 if (alreadyInitialized) {
30 return;
31 }
32 alreadyInitialized = true;
34 Preferences::AddBoolVarCache(&sUseBlankDecoder,
35 "media.fragmented-mp4.use-blank-decoder");
36 Preferences::AddBoolVarCache(&sFFmpegDecoderEnabled,
37 "media.fragmented-mp4.ffmpeg.enabled", false);
39 #ifdef XP_WIN
40 WMFDecoderModule::Init();
41 #endif
42 }
44 /* static */
45 PlatformDecoderModule*
46 PlatformDecoderModule::Create()
47 {
48 if (sUseBlankDecoder) {
49 return CreateBlankDecoderModule();
50 }
51 #ifdef XP_WIN
52 nsAutoPtr<WMFDecoderModule> m(new WMFDecoderModule());
53 if (NS_SUCCEEDED(m->Startup())) {
54 return m.forget();
55 }
56 #endif
57 #ifdef MOZ_FFMPEG
58 if (sFFmpegDecoderEnabled) {
59 return new FFmpegDecoderModule();
60 }
61 #endif
62 return nullptr;
63 }
65 } // namespace mozilla