New interface EncodedImageBufferInterface, replacing use of CopyOnWriteBuffer

Bug: webrtc:9378
Change-Id: I62b7adbd9dd539c545b5b1b1520721482a4623c4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138820
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28317}
This commit is contained in:
Niels Möller
2019-06-18 15:56:56 +02:00
committed by Commit Bot
parent 0894f0fd76
commit 4d504c76cb
27 changed files with 215 additions and 134 deletions

View File

@ -14,15 +14,17 @@
#include "rtc_base/numerics/safe_conversions.h"
// A simple wrapper around rtc::CopyOnWriteBuffer to make it usable with
// associated objects.
@interface RTCWrappedCOWBuffer : NSObject
@property(nonatomic) rtc::CopyOnWriteBuffer buffer;
- (instancetype)initWithCOWBuffer:(rtc::CopyOnWriteBuffer)buffer;
// A simple wrapper around webrtc::EncodedImageBufferInterface to make it usable with associated
// objects.
@interface RTCWrappedEncodedImageBuffer : NSObject
@property(nonatomic) rtc::scoped_refptr<webrtc::EncodedImageBufferInterface> buffer;
- (instancetype)initWithEncodedImageBuffer:
(rtc::scoped_refptr<webrtc::EncodedImageBufferInterface>)buffer;
@end
@implementation RTCWrappedCOWBuffer
@implementation RTCWrappedEncodedImageBuffer
@synthesize buffer = _buffer;
- (instancetype)initWithCOWBuffer:(rtc::CopyOnWriteBuffer)buffer {
- (instancetype)initWithEncodedImageBuffer:
(rtc::scoped_refptr<webrtc::EncodedImageBufferInterface>)buffer {
self = [super init];
if (self) {
_buffer = buffer;
@ -33,16 +35,18 @@
@implementation RTCEncodedImage (Private)
- (rtc::CopyOnWriteBuffer)encodedData {
RTCWrappedCOWBuffer *wrappedBuffer = objc_getAssociatedObject(self, @selector(encodedData));
- (rtc::scoped_refptr<webrtc::EncodedImageBufferInterface>)encodedData {
RTCWrappedEncodedImageBuffer *wrappedBuffer =
objc_getAssociatedObject(self, @selector(encodedData));
return wrappedBuffer.buffer;
}
- (void)setEncodedData:(rtc::CopyOnWriteBuffer)buffer {
return objc_setAssociatedObject(self,
@selector(encodedData),
[[RTCWrappedCOWBuffer alloc] initWithCOWBuffer:buffer],
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
- (void)setEncodedData:(rtc::scoped_refptr<webrtc::EncodedImageBufferInterface>)buffer {
return objc_setAssociatedObject(
self,
@selector(encodedData),
[[RTCWrappedEncodedImageBuffer alloc] initWithEncodedImageBuffer:buffer],
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (instancetype)initWithNativeEncodedImage:(const webrtc::EncodedImage &)encodedImage {