Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(416)

Unified Diff: media/filters/ffmpeg_glue.cc

Issue 2668813002: Remove LazyInstance usage from media/ (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698