From 81bc523f5d7eab43796373954b2aaf17fa65ad35 Mon Sep 17 00:00:00 2001 From: andersc Date: Fri, 18 Aug 2017 06:34:09 -0700 Subject: [PATCH] Make a friendlier RTCVideoCodecInfo initializer for when only name and parameters are interesting. Since this is used by users when implementing injectable Obj-C video codecs, the API where the unused payload is required is unnecessarily confusing. Also make the codec parameters optional. BUG=None Review-Url: https://codereview.webrtc.org/3001183002 Cr-Commit-Position: refs/heads/master@{#19411} --- .../PeerConnection/RTCVideoCodec+Private.h | 3 +++ .../Classes/PeerConnection/RTCVideoCodec.mm | 19 ++++++++++++++----- .../PeerConnection/RTCVideoCodecH264.mm | 10 +++------- .../Framework/Headers/WebRTC/RTCVideoCodec.h | 8 +++++--- .../objc_video_decoder_factory_tests.mm | 3 +-- .../objc_video_encoder_factory_tests.mm | 3 +-- 6 files changed, 27 insertions(+), 19 deletions(-) diff --git a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h index 269e505780..e783126d89 100644 --- a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h +++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec+Private.h @@ -49,6 +49,9 @@ NS_ASSUME_NONNULL_BEGIN @interface RTCVideoCodecInfo () - (instancetype)initWithNativeVideoCodec:(cricket::VideoCodec)videoCodec; +- (instancetype)initWithPayload:(NSInteger)payload + name:(NSString *)name + parameters:(NSDictionary *)parameters; - (cricket::VideoCodec)nativeVideoCodec; @end diff --git a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm index 1be33f0a8f..4936568dd1 100644 --- a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm +++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm @@ -20,13 +20,12 @@ @synthesize name = _name; @synthesize parameters = _parameters; -- (instancetype)initWithPayload:(NSInteger)payload - name:(NSString *)name - parameters:(NSDictionary *)parameters { +- (instancetype)initWithName:(NSString *)name + parameters:(nullable NSDictionary *)parameters { if (self = [super init]) { - _payload = payload; + _payload = 0; _name = name; - _parameters = parameters; + _parameters = (parameters ? parameters : @{}); } return self; @@ -43,6 +42,16 @@ parameters:params]; } +- (instancetype)initWithPayload:(NSInteger)payload + name:(NSString *)name + parameters:(NSDictionary *)parameters { + if (self = [self initWithName:name parameters:parameters]) { + _payload = payload; + } + + return self; +} + - (cricket::VideoCodec)nativeVideoCodec { cricket::VideoCodec codec([NSString stdStringForString:_name]); for (NSString *paramKey in _parameters.allKeys) { diff --git a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm index 3b03bf4e63..341363e942 100644 --- a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm +++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm @@ -58,9 +58,7 @@ bool IsHighProfileEnabled() { @"packetization-mode" : @"1", }; RTCVideoCodecInfo *constrainedHighInfo = - [[RTCVideoCodecInfo alloc] initWithPayload:0 - name:codecName - parameters:constrainedHighParams]; + [[RTCVideoCodecInfo alloc] initWithName:codecName parameters:constrainedHighParams]; [codecs addObject:constrainedHighInfo]; } @@ -70,9 +68,7 @@ bool IsHighProfileEnabled() { @"packetization-mode" : @"1", }; RTCVideoCodecInfo *constrainedBaselineInfo = - [[RTCVideoCodecInfo alloc] initWithPayload:0 - name:codecName - parameters:constrainedBaselineParams]; + [[RTCVideoCodecInfo alloc] initWithName:codecName parameters:constrainedBaselineParams]; [codecs addObject:constrainedBaselineInfo]; return [codecs copy]; @@ -93,7 +89,7 @@ bool IsHighProfileEnabled() { - (NSArray *)supportedCodecs { NSString *codecName = [NSString stringWithUTF8String:cricket::kH264CodecName]; - return @[ [[RTCVideoCodecInfo alloc] initWithPayload:0 name:codecName parameters:@{}] ]; + return @[ [[RTCVideoCodecInfo alloc] initWithName:codecName parameters:nil] ]; } @end diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h index c18fa783cf..657ec0ca6a 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h @@ -100,9 +100,11 @@ typedef NS_ENUM(NSUInteger, RTCVideoCodecMode) { RTC_EXPORT @interface RTCVideoCodecInfo : NSObject -- (instancetype)initWithPayload:(NSInteger)payload - name:(NSString *)name - parameters:(NSDictionary *)parameters; +- (instancetype)init NS_UNAVAILABLE; + +- (instancetype)initWithName:(NSString *)name + parameters:(nullable NSDictionary *)parameters + NS_DESIGNATED_INITIALIZER; @property(nonatomic, readonly) NSInteger payload; @property(nonatomic, readonly) NSString *name; diff --git a/webrtc/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm b/webrtc/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm index c7b1b5fb76..3b1eb0571b 100644 --- a/webrtc/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm +++ b/webrtc/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm @@ -33,8 +33,7 @@ id CreateDecoderFactoryReturning(int return_code) { OCMStub([decoderMock releaseDecoder]).andReturn(return_code); id decoderFactoryMock = OCMProtocolMock(@protocol(RTCVideoDecoderFactory)); - RTCVideoCodecInfo *supported = - [[RTCVideoCodecInfo alloc] initWithPayload:0 name:@"H264" parameters:@{}]; + RTCVideoCodecInfo *supported = [[RTCVideoCodecInfo alloc] initWithName:@"H264" parameters:nil]; OCMStub([decoderFactoryMock supportedCodecs]).andReturn(@[ supported ]); OCMStub([decoderFactoryMock createDecoder:[OCMArg any]]).andReturn(decoderMock); return decoderFactoryMock; diff --git a/webrtc/sdk/objc/Framework/UnitTests/objc_video_encoder_factory_tests.mm b/webrtc/sdk/objc/Framework/UnitTests/objc_video_encoder_factory_tests.mm index d5941e7abe..ed29bc2658 100644 --- a/webrtc/sdk/objc/Framework/UnitTests/objc_video_encoder_factory_tests.mm +++ b/webrtc/sdk/objc/Framework/UnitTests/objc_video_encoder_factory_tests.mm @@ -32,8 +32,7 @@ id CreateEncoderFactoryReturning(int return_code) { OCMStub([encoderMock setBitrate:0 framerate:0]).andReturn(return_code); id encoderFactoryMock = OCMProtocolMock(@protocol(RTCVideoEncoderFactory)); - RTCVideoCodecInfo *supported = - [[RTCVideoCodecInfo alloc] initWithPayload:0 name:@"H264" parameters:@{}]; + RTCVideoCodecInfo *supported = [[RTCVideoCodecInfo alloc] initWithName:@"H264" parameters:nil]; OCMStub([encoderFactoryMock supportedCodecs]).andReturn(@[ supported ]); OCMStub([encoderFactoryMock createEncoder:[OCMArg any]]).andReturn(encoderMock); return encoderFactoryMock;