ObjC: Implement HW codecs in ObjC instead of C++
The current ObjC HW encoder is implemented as a C++ webrtc::VideoEncoder. We then wrap it two times in the following way: webrtc::VideoEncoder -> RTCVideoEncoder -> webrtc::VideoEncoder. This was originally done to minimize the code diff when landing the injectable encoder. This CL removes the first wrapping and implements the ObjC HW encoder as a RTCVideoEncoder directly. Similarly, the decoder is implemented as a RTCVideoDecoder directly. Based on andersc@ CL: https://codereview.webrtc.org/2978623002/. BUG=webrtc:7924 Review-Url: https://codereview.webrtc.org/2987413002 Cr-Commit-Position: refs/heads/master@{#19255}
This commit is contained in:
47
webrtc/sdk/objc/Framework/Classes/VideoToolbox/helpers.h
Normal file
47
webrtc/sdk/objc/Framework/Classes/VideoToolbox/helpers.h
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_HELPERS_H_
|
||||
#define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_HELPERS_H_
|
||||
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#include <VideoToolbox/VideoToolbox.h>
|
||||
#include <string>
|
||||
|
||||
// Convenience function for creating a dictionary.
|
||||
inline CFDictionaryRef CreateCFTypeDictionary(CFTypeRef* keys,
|
||||
CFTypeRef* values,
|
||||
size_t size) {
|
||||
return CFDictionaryCreate(kCFAllocatorDefault, keys, values, size,
|
||||
&kCFTypeDictionaryKeyCallBacks,
|
||||
&kCFTypeDictionaryValueCallBacks);
|
||||
}
|
||||
|
||||
// Copies characters from a CFStringRef into a std::string.
|
||||
std::string CFStringToString(const CFStringRef cf_string);
|
||||
|
||||
// Convenience function for setting a VT property.
|
||||
void SetVTSessionProperty(VTSessionRef session, CFStringRef key, int32_t value);
|
||||
|
||||
// Convenience function for setting a VT property.
|
||||
void SetVTSessionProperty(VTSessionRef session,
|
||||
CFStringRef key,
|
||||
uint32_t value);
|
||||
|
||||
// Convenience function for setting a VT property.
|
||||
void SetVTSessionProperty(VTSessionRef session, CFStringRef key, bool value);
|
||||
|
||||
// Convenience function for setting a VT property.
|
||||
void SetVTSessionProperty(VTSessionRef session,
|
||||
CFStringRef key,
|
||||
CFStringRef value);
|
||||
|
||||
#endif // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_VIDEOTOOLBOX_HELPERS_H_
|
||||
Reference in New Issue
Block a user