Chromium Code Reviews| Index: media/filters/ffmpeg_glue.cc |
| diff --git a/media/filters/ffmpeg_glue.cc b/media/filters/ffmpeg_glue.cc |
| index f6d939d9eb5f12e2b243aa799ea678dfe52c00d6..eb2713369ec9944a3328d1d7ed71b47c35a30490 100644 |
| --- a/media/filters/ffmpeg_glue.cc |
| +++ b/media/filters/ffmpeg_glue.cc |
| @@ -4,7 +4,6 @@ |
| #include "media/filters/ffmpeg_glue.h" |
| -#include "base/lazy_instance.h" |
| #include "base/logging.h" |
| #include "base/macros.h" |
| #include "base/metrics/histogram_macros.h" |
| @@ -87,40 +86,20 @@ static int LockManagerOperation(void** lock, enum AVLockOp op) { |
| return 1; |
| } |
| -// FFmpeg must only be initialized once, so use a LazyInstance to ensure this. |
| -class FFmpegInitializer { |
| - public: |
| - bool initialized() { return initialized_; } |
| +// FFmpeg must only be initialized once per process. |
| +static bool InitializeInternal() { |
| + // Register our protocol glue code with FFmpeg. |
| + if (av_lockmgr_register(&LockManagerOperation) != 0) |
| + return false; |
| - private: |
| - friend struct base::DefaultLazyInstanceTraits<FFmpegInitializer>; |
| - |
| - FFmpegInitializer() |
| - : initialized_(false) { |
| - // Register our protocol glue code with FFmpeg. |
| - if (av_lockmgr_register(&LockManagerOperation) != 0) |
| - return; |
| - |
| - // Now register the rest of FFmpeg. |
| - av_register_all(); |
| - |
| - initialized_ = true; |
| - } |
| - |
| - ~FFmpegInitializer() { |
| - NOTREACHED() << "FFmpegInitializer should be leaky!"; |
| - } |
| - |
| - bool initialized_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(FFmpegInitializer); |
| -}; |
| + // Now register the rest of FFmpeg. |
| + av_register_all(); |
| + return true; |
| +} |
| -static base::LazyInstance<FFmpegInitializer>::Leaky g_lazy_instance = |
| - LAZY_INSTANCE_INITIALIZER; |
| void FFmpegGlue::InitializeFFmpeg() { |
| - // Get() will invoke the FFmpegInitializer constructor once. |
| - CHECK(g_lazy_instance.Get().initialized()); |
| + static bool initialized = InitializeInternal(); |
|
scottmg
2017/01/31 21:10:34
Could consider inlining the Internal() function he
Mark Mentovai
2017/01/31 21:33:56
You can eliminate InitializeInternal() by writing
DaleCurtis
2017/01/31 22:04:33
Thanks, done!
|
| + CHECK(initialized); |
| } |
| FFmpegGlue::FFmpegGlue(FFmpegURLProtocol* protocol) |