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

Unified Diff: media/video/capture/mac/avfoundation_glue.mm

Issue 137903003: AVFoundation NSString*, cache them in the AVFoundationInternal LazyInstance. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/video/capture/mac/avfoundation_glue.mm
diff --git a/media/video/capture/mac/avfoundation_glue.mm b/media/video/capture/mac/avfoundation_glue.mm
index 4f7de4d480cea1a52f62ba1f7a2711b91c46bade..0355c8b0d006b8de1b7f330595d1649af0897607 100644
--- a/media/video/capture/mac/avfoundation_glue.mm
+++ b/media/video/capture/mac/avfoundation_glue.mm
@@ -28,13 +28,103 @@ class AVFoundationInternal {
CHECK(path);
library_handle_ = dlopen(path, RTLD_LAZY | RTLD_LOCAL);
CHECK(library_handle_) << dlerror();
+
+ AVCaptureDeviceWasConnectedNotification_ = *reinterpret_cast<NSString**>(
tommi (sloooow) - chröme 2014/01/14 15:08:49 There's lot of code duplication here. What about
+ dlsym(library_handle_, "AVCaptureDeviceWasConnectedNotification"));
+ DCHECK(AVCaptureDeviceWasConnectedNotification_) << dlerror();
+ AVCaptureDeviceWasDisconnectedNotification_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureDeviceWasDisconnectedNotification"));
+ DCHECK(AVCaptureDeviceWasDisconnectedNotification_) << dlerror();
+
+ AVMediaTypeVideo_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVMediaTypeVideo"));
+ DCHECK(AVMediaTypeVideo_) << dlerror();
+ AVMediaTypeAudio_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVMediaTypeAudio"));
+ DCHECK(AVMediaTypeAudio_) << dlerror();
+ AVMediaTypeMuxed_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVMediaTypeMuxed"));
+ DCHECK(AVMediaTypeMuxed_) << dlerror();
+
+ AVCaptureSessionRuntimeErrorNotification_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureSessionRuntimeErrorNotification"));
+ DCHECK(AVCaptureSessionRuntimeErrorNotification_) << dlerror();
+ AVCaptureSessionDidStopRunningNotification_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureSessionDidStopRunningNotification"));
+ DCHECK(AVCaptureSessionDidStopRunningNotification_) << dlerror();
+ AVCaptureSessionErrorKey_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureSessionErrorKey"));
+ DCHECK(AVCaptureSessionErrorKey_) << dlerror();
+
+ AVCaptureSessionPreset320x240_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureSessionPreset320x240"));
+ DCHECK(AVCaptureSessionPreset320x240_) << dlerror();
+ AVCaptureSessionPreset640x480_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureSessionPreset640x480"));
+ DCHECK(AVCaptureSessionPreset640x480_) << dlerror();
+ AVCaptureSessionPreset1280x720_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVCaptureSessionPreset1280x720"));
+ DCHECK(AVCaptureSessionPreset1280x720_) << dlerror();
+
+ AVVideoScalingModeKey_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVVideoScalingModeKey"));
+ DCHECK(AVVideoScalingModeKey_) << dlerror();
+ AVVideoScalingModeResizeAspect_ = *reinterpret_cast<NSString**>(
+ dlsym(library_handle_, "AVVideoScalingModeResizeAspect"));
+ DCHECK(AVVideoScalingModeResizeAspect_) << dlerror();
}
+
NSBundle* bundle() const { return bundle_; }
void* library_handle() const { return library_handle_; }
+ NSString* AVCaptureDeviceWasConnectedNotification() const {
+ return AVCaptureDeviceWasConnectedNotification_;
+ }
+ NSString* AVCaptureDeviceWasDisconnectedNotification() const {
+ return AVCaptureDeviceWasDisconnectedNotification_;
+ }
+ NSString* AVMediaTypeVideo() const { return AVMediaTypeVideo_; }
+ NSString* AVMediaTypeAudio() const { return AVMediaTypeAudio_; }
+ NSString* AVMediaTypeMuxed() const { return AVMediaTypeMuxed_; }
+ NSString* AVCaptureSessionRuntimeErrorNotification() const {
+ return AVCaptureSessionRuntimeErrorNotification_;
+ }
+ NSString* AVCaptureSessionDidStopRunningNotification() const {
+ return AVCaptureSessionDidStopRunningNotification_;
+ }
+ NSString* AVCaptureSessionErrorKey() const {
+ return AVCaptureSessionErrorKey_;
+ }
+ NSString* AVCaptureSessionPreset320x240() const {
+ return AVCaptureSessionPreset320x240_;
+ }
+ NSString* AVCaptureSessionPreset640x480() const {
+ return AVCaptureSessionPreset640x480_;
+ }
+ NSString* AVCaptureSessionPreset1280x720() const {
+ return AVCaptureSessionPreset1280x720_;
+ }
+ NSString* AVVideoScalingModeKey() const { return AVVideoScalingModeKey_; }
+ NSString* AVVideoScalingModeResizeAspect() const {
+ return AVVideoScalingModeResizeAspect_;
+ }
+
private:
NSBundle* bundle_;
void* library_handle_;
+ NSString* AVCaptureDeviceWasConnectedNotification_;
tommi (sloooow) - chröme 2014/01/14 15:08:49 Since these names don't adhere to the style guide,
+ NSString* AVCaptureDeviceWasDisconnectedNotification_;
+ NSString* AVMediaTypeVideo_;
+ NSString* AVMediaTypeAudio_;
+ NSString* AVMediaTypeMuxed_;
+ NSString* AVCaptureSessionRuntimeErrorNotification_;
+ NSString* AVCaptureSessionDidStopRunningNotification_;
+ NSString* AVCaptureSessionErrorKey_;
+ NSString* AVCaptureSessionPreset320x240_;
+ NSString* AVCaptureSessionPreset640x480_;
+ NSString* AVCaptureSessionPreset1280x720_;
+ NSString* AVVideoScalingModeKey_;
+ NSString* AVVideoScalingModeResizeAspect_;
DISALLOW_COPY_AND_ASSIGN(AVFoundationInternal);
};
@@ -44,18 +134,6 @@ class AVFoundationInternal {
static base::LazyInstance<AVFoundationInternal> g_avfoundation_handle =
LAZY_INSTANCE_INITIALIZER;
-namespace media {
-
-// TODO(mcasas):http://crbug.com/323536 cache the string pointers.
-static NSString* ReadNSStringPtr(const char* symbol) {
- NSString** string_pointer = reinterpret_cast<NSString**>(
- dlsym(AVFoundationGlue::AVFoundationLibraryHandle(), symbol));
- DCHECK(string_pointer) << dlerror();
- return *string_pointer;
-}
-
-} // namespace media
-
bool AVFoundationGlue::IsAVFoundationSupported() {
if (!base::mac::IsOSLionOrLater())
return false;
@@ -75,55 +153,57 @@ void* AVFoundationGlue::AVFoundationLibraryHandle() {
}
NSString* AVFoundationGlue::AVCaptureDeviceWasConnectedNotification() {
- return media::ReadNSStringPtr("AVCaptureDeviceWasConnectedNotification");
+ return g_avfoundation_handle.Get().AVCaptureDeviceWasConnectedNotification();
}
NSString* AVFoundationGlue::AVCaptureDeviceWasDisconnectedNotification() {
- return media::ReadNSStringPtr("AVCaptureDeviceWasDisconnectedNotification");
+ return
+ g_avfoundation_handle.Get().AVCaptureDeviceWasDisconnectedNotification();
}
NSString* AVFoundationGlue::AVMediaTypeVideo() {
- return media::ReadNSStringPtr("AVMediaTypeVideo");
+ return g_avfoundation_handle.Get().AVMediaTypeVideo();
}
NSString* AVFoundationGlue::AVMediaTypeAudio() {
- return media::ReadNSStringPtr("AVMediaTypeAudio");
+ return g_avfoundation_handle.Get().AVMediaTypeAudio();
}
NSString* AVFoundationGlue::AVMediaTypeMuxed() {
- return media::ReadNSStringPtr("AVMediaTypeMuxed");
+ return g_avfoundation_handle.Get().AVMediaTypeMuxed();
}
NSString* AVFoundationGlue::AVCaptureSessionRuntimeErrorNotification() {
- return media::ReadNSStringPtr("AVCaptureSessionRuntimeErrorNotification");
+ return g_avfoundation_handle.Get().AVCaptureSessionRuntimeErrorNotification();
}
NSString* AVFoundationGlue::AVCaptureSessionDidStopRunningNotification() {
- return media::ReadNSStringPtr("AVCaptureSessionDidStopRunningNotification");
+ return
+ g_avfoundation_handle.Get().AVCaptureSessionDidStopRunningNotification();
}
NSString* AVFoundationGlue::AVCaptureSessionErrorKey() {
- return media::ReadNSStringPtr("AVCaptureSessionErrorKey");
+ return g_avfoundation_handle.Get().AVCaptureSessionErrorKey();
}
NSString* AVFoundationGlue::AVCaptureSessionPreset320x240() {
- return media::ReadNSStringPtr("AVCaptureSessionPreset320x240");
+ return g_avfoundation_handle.Get().AVCaptureSessionPreset320x240();
}
NSString* AVFoundationGlue::AVCaptureSessionPreset640x480() {
- return media::ReadNSStringPtr("AVCaptureSessionPreset640x480");
+ return g_avfoundation_handle.Get().AVCaptureSessionPreset640x480();
}
NSString* AVFoundationGlue::AVCaptureSessionPreset1280x720() {
- return media::ReadNSStringPtr("AVCaptureSessionPreset1280x720");
+ return g_avfoundation_handle.Get().AVCaptureSessionPreset1280x720();
}
NSString* AVFoundationGlue::AVVideoScalingModeKey() {
- return media::ReadNSStringPtr("AVVideoScalingModeKey");
+ return g_avfoundation_handle.Get().AVVideoScalingModeKey();
}
NSString* AVFoundationGlue::AVVideoScalingModeResizeAspect() {
- return media::ReadNSStringPtr("AVVideoScalingModeResizeAspect");
+ return g_avfoundation_handle.Get().AVVideoScalingModeResizeAspect();
}
Class AVFoundationGlue::AVCaptureSessionClass() {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698