Index: media/base/mac/videotoolbox_glue.mm |
diff --git a/media/base/mac/videotoolbox_glue.mm b/media/base/mac/videotoolbox_glue.mm |
deleted file mode 100644 |
index ad2fd23f333159357734535019af5c519e96dc54..0000000000000000000000000000000000000000 |
--- a/media/base/mac/videotoolbox_glue.mm |
+++ /dev/null |
@@ -1,242 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "media/base/mac/videotoolbox_glue.h" |
- |
-#include <dlfcn.h> |
-#import <Foundation/Foundation.h> |
- |
-#include "base/lazy_instance.h" |
-#include "base/macros.h" |
- |
-// This class stores VideoToolbox library symbol pointers. |
-struct VideoToolboxGlue::Library { |
- typedef OSStatus (*VTCompressionSessionCreateMethod)( |
- CFAllocatorRef, |
- int32_t, |
- int32_t, |
- CoreMediaGlue::CMVideoCodecType, |
- CFDictionaryRef, |
- CFDictionaryRef, |
- CFAllocatorRef, |
- VTCompressionOutputCallback, |
- void*, |
- VTCompressionSessionRef*); |
- typedef OSStatus (*VTCompressionSessionEncodeFrameMethod)( |
- VTCompressionSessionRef, |
- CVImageBufferRef, |
- CoreMediaGlue::CMTime, |
- CoreMediaGlue::CMTime, |
- CFDictionaryRef, |
- void*, |
- VTEncodeInfoFlags*); |
- typedef CVPixelBufferPoolRef (*VTCompressionSessionGetPixelBufferPoolMethod)( |
- VTCompressionSessionRef); |
- typedef void (*VTCompressionSessionInvalidateMethod)(VTCompressionSessionRef); |
- typedef OSStatus (*VTCompressionSessionCompleteFramesMethod)( |
- VTCompressionSessionRef, |
- CoreMediaGlue::CMTime); |
- typedef OSStatus (*VTSessionSetPropertyMethod)(VTSessionRef, |
- CFStringRef, |
- CFTypeRef); |
- |
- VTCompressionSessionCreateMethod VTCompressionSessionCreate; |
- VTCompressionSessionEncodeFrameMethod VTCompressionSessionEncodeFrame; |
- VTCompressionSessionGetPixelBufferPoolMethod |
- VTCompressionSessionGetPixelBufferPool; |
- VTCompressionSessionInvalidateMethod VTCompressionSessionInvalidate; |
- VTCompressionSessionCompleteFramesMethod VTCompressionSessionCompleteFrames; |
- VTSessionSetPropertyMethod VTSessionSetProperty; |
- |
- CFStringRef* kVTCompressionPropertyKey_AllowFrameReordering; |
- CFStringRef* kVTCompressionPropertyKey_AverageBitRate; |
- CFStringRef* kVTCompressionPropertyKey_ColorPrimaries; |
- CFStringRef* kVTCompressionPropertyKey_DataRateLimits; |
- CFStringRef* kVTCompressionPropertyKey_ExpectedFrameRate; |
- CFStringRef* kVTCompressionPropertyKey_MaxFrameDelayCount; |
- CFStringRef* kVTCompressionPropertyKey_MaxKeyFrameInterval; |
- CFStringRef* kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration; |
- CFStringRef* kVTCompressionPropertyKey_ProfileLevel; |
- CFStringRef* kVTCompressionPropertyKey_RealTime; |
- CFStringRef* kVTCompressionPropertyKey_TransferFunction; |
- CFStringRef* kVTCompressionPropertyKey_YCbCrMatrix; |
- CFStringRef* kVTEncodeFrameOptionKey_ForceKeyFrame; |
- CFStringRef* kVTProfileLevel_H264_Baseline_AutoLevel; |
- CFStringRef* kVTProfileLevel_H264_Main_AutoLevel; |
- CFStringRef* kVTProfileLevel_H264_Extended_AutoLevel; |
- CFStringRef* kVTProfileLevel_H264_High_AutoLevel; |
- CFStringRef* |
- kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder; |
- CFStringRef* |
- kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder; |
-}; |
- |
-// Lazy-instance responsible for loading VideoToolbox. |
-class VideoToolboxGlue::Loader { |
- public: |
- Loader() { |
- NSBundle* bundle = [NSBundle |
- bundleWithPath:@"/System/Library/Frameworks/VideoToolbox.framework"]; |
- const char* path = [[bundle executablePath] fileSystemRepresentation]; |
- if (!path) |
- return; |
- |
- handle_ = dlopen(path, RTLD_LAZY | RTLD_LOCAL); |
- if (!handle_) |
- return; |
- |
-#define LOAD_SYMBOL(SYMBOL) \ |
- if (!LoadSymbol(#SYMBOL, reinterpret_cast<void**>(&library_.SYMBOL))) \ |
- return; |
- |
- LOAD_SYMBOL(VTCompressionSessionCreate) |
- LOAD_SYMBOL(VTCompressionSessionEncodeFrame) |
- LOAD_SYMBOL(VTCompressionSessionGetPixelBufferPool) |
- LOAD_SYMBOL(VTCompressionSessionInvalidate) |
- LOAD_SYMBOL(VTCompressionSessionCompleteFrames) |
- LOAD_SYMBOL(VTSessionSetProperty) |
- |
- LOAD_SYMBOL(kVTCompressionPropertyKey_AllowFrameReordering) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_AverageBitRate) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_ColorPrimaries) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_DataRateLimits) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_ExpectedFrameRate) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_MaxFrameDelayCount) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_MaxKeyFrameInterval) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_ProfileLevel) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_RealTime) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_TransferFunction) |
- LOAD_SYMBOL(kVTCompressionPropertyKey_YCbCrMatrix) |
- LOAD_SYMBOL(kVTEncodeFrameOptionKey_ForceKeyFrame); |
- LOAD_SYMBOL(kVTProfileLevel_H264_Baseline_AutoLevel) |
- LOAD_SYMBOL(kVTProfileLevel_H264_Main_AutoLevel) |
- LOAD_SYMBOL(kVTProfileLevel_H264_Extended_AutoLevel) |
- LOAD_SYMBOL(kVTProfileLevel_H264_High_AutoLevel) |
- LOAD_SYMBOL( |
- kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder) |
- LOAD_SYMBOL( |
- kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder) |
- |
-#undef LOAD_SYMBOL |
- |
- glue_.library_ = &library_; |
- } |
- |
- const VideoToolboxGlue* glue() const { |
- return (glue_.library_) ? &glue_ : NULL; |
- } |
- |
- private: |
- bool LoadSymbol(const char* name, void** symbol_out) { |
- *symbol_out = dlsym(handle_, name); |
- return *symbol_out != NULL; |
- } |
- |
- Library library_; |
- VideoToolboxGlue glue_; |
- void* handle_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Loader); |
-}; |
- |
-static base::LazyInstance<VideoToolboxGlue::Loader> g_videotoolbox_loader = |
- LAZY_INSTANCE_INITIALIZER; |
- |
-// static |
-const VideoToolboxGlue* VideoToolboxGlue::Get() { |
- return g_videotoolbox_loader.Get().glue(); |
-} |
- |
-VideoToolboxGlue::VideoToolboxGlue() : library_(NULL) { |
-} |
- |
-OSStatus VideoToolboxGlue::VTCompressionSessionCreate( |
- CFAllocatorRef allocator, |
- int32_t width, |
- int32_t height, |
- CoreMediaGlue::CMVideoCodecType codecType, |
- CFDictionaryRef encoderSpecification, |
- CFDictionaryRef sourceImageBufferAttributes, |
- CFAllocatorRef compressedDataAllocator, |
- VTCompressionOutputCallback outputCallback, |
- void* outputCallbackRefCon, |
- VTCompressionSessionRef* compressionSessionOut) const { |
- return library_->VTCompressionSessionCreate(allocator, |
- width, |
- height, |
- codecType, |
- encoderSpecification, |
- sourceImageBufferAttributes, |
- compressedDataAllocator, |
- outputCallback, |
- outputCallbackRefCon, |
- compressionSessionOut); |
-} |
- |
-OSStatus VideoToolboxGlue::VTCompressionSessionEncodeFrame( |
- VTCompressionSessionRef session, |
- CVImageBufferRef imageBuffer, |
- CoreMediaGlue::CMTime presentationTimeStamp, |
- CoreMediaGlue::CMTime duration, |
- CFDictionaryRef frameProperties, |
- void* sourceFrameRefCon, |
- VTEncodeInfoFlags* infoFlagsOut) const { |
- return library_->VTCompressionSessionEncodeFrame(session, |
- imageBuffer, |
- presentationTimeStamp, |
- duration, |
- frameProperties, |
- sourceFrameRefCon, |
- infoFlagsOut); |
-} |
- |
-CVPixelBufferPoolRef VideoToolboxGlue::VTCompressionSessionGetPixelBufferPool( |
- VTCompressionSessionRef session) const { |
- return library_->VTCompressionSessionGetPixelBufferPool(session); |
-} |
- |
-void VideoToolboxGlue::VTCompressionSessionInvalidate( |
- VTCompressionSessionRef session) const { |
- library_->VTCompressionSessionInvalidate(session); |
-} |
- |
-OSStatus VideoToolboxGlue::VTCompressionSessionCompleteFrames( |
- VTCompressionSessionRef session, |
- CoreMediaGlue::CMTime completeUntilPresentationTimeStamp) const { |
- return library_->VTCompressionSessionCompleteFrames( |
- session, completeUntilPresentationTimeStamp); |
-} |
- |
-OSStatus VideoToolboxGlue::VTSessionSetProperty(VTSessionRef session, |
- CFStringRef propertyKey, |
- CFTypeRef propertyValue) const { |
- return library_->VTSessionSetProperty(session, propertyKey, propertyValue); |
-} |
- |
-#define KEY_ACCESSOR(KEY) \ |
- CFStringRef VideoToolboxGlue::KEY() const { return *library_->KEY; } |
- |
-KEY_ACCESSOR(kVTCompressionPropertyKey_AllowFrameReordering) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_AverageBitRate) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_ColorPrimaries) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_DataRateLimits) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_ExpectedFrameRate) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_MaxFrameDelayCount) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_MaxKeyFrameInterval) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_MaxKeyFrameIntervalDuration) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_ProfileLevel) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_RealTime) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_TransferFunction) |
-KEY_ACCESSOR(kVTCompressionPropertyKey_YCbCrMatrix) |
-KEY_ACCESSOR(kVTEncodeFrameOptionKey_ForceKeyFrame) |
-KEY_ACCESSOR(kVTProfileLevel_H264_Baseline_AutoLevel) |
-KEY_ACCESSOR(kVTProfileLevel_H264_Main_AutoLevel) |
-KEY_ACCESSOR(kVTProfileLevel_H264_Extended_AutoLevel) |
-KEY_ACCESSOR(kVTProfileLevel_H264_High_AutoLevel) |
-KEY_ACCESSOR(kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder) |
-KEY_ACCESSOR( |
- kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder) |
- |
-#undef KEY_ACCESSOR |