From 2a1bbc342219db86a908824cd5ce3e71fc706d27 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Wed, 4 Apr 2018 12:49:43 +0200 Subject: [PATCH] ObjC: Deprecate codec settings parameter in startDecode method. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This parameter is being removed from the C++ API, remove it from the ObjC API also. It was never used for anything by the H264 decoder. Bug: webrtc:9107 Change-Id: I5222eac932a4e7d4129d803f8126b5e8d0b027b6 Reviewed-on: https://webrtc-review.googlesource.com/66740 Reviewed-by: Kári Helgason Commit-Queue: Anders Carlsson Cr-Commit-Position: refs/heads/master@{#22730} --- .../PeerConnection/RTCWrappedNativeVideoDecoder.mm | 5 +++++ .../Classes/VideoToolbox/RTCVideoDecoderH264.mm | 4 ++++ sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h | 7 ++++++- .../Native/src/objc_video_decoder_factory.mm | 12 +++++++++--- .../UnitTests/objc_video_decoder_factory_tests.mm | 3 +-- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/sdk/objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoDecoder.mm b/sdk/objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoDecoder.mm index 7529ebf028..79c942a129 100644 --- a/sdk/objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoDecoder.mm +++ b/sdk/objc/Framework/Classes/PeerConnection/RTCWrappedNativeVideoDecoder.mm @@ -35,6 +35,11 @@ RTC_NOTREACHED(); } +- (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores { + RTC_NOTREACHED(); + return 0; +} + - (NSInteger)startDecodeWithSettings:(RTCVideoEncoderSettings *)settings numberOfCores:(int)numberOfCores { RTC_NOTREACHED(); diff --git a/sdk/objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm b/sdk/objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm index b5b4cc9971..8460228a76 100644 --- a/sdk/objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm +++ b/sdk/objc/Framework/Classes/VideoToolbox/RTCVideoDecoderH264.mm @@ -92,6 +92,10 @@ void decompressionOutputCallback(void *decoderRef, [self setVideoFormat:nullptr]; } +- (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores { + return WEBRTC_VIDEO_CODEC_OK; +} + - (NSInteger)startDecodeWithSettings:(RTCVideoEncoderSettings *)settings numberOfCores:(int)numberOfCores { return WEBRTC_VIDEO_CODEC_OK; diff --git a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h index 470eb02326..e9dd234c34 100644 --- a/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h +++ b/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h @@ -166,7 +166,8 @@ RTC_EXPORT - (void)setCallback:(RTCVideoDecoderCallback)callback; - (NSInteger)startDecodeWithSettings:(RTCVideoEncoderSettings *)settings - numberOfCores:(int)numberOfCores; + numberOfCores:(int)numberOfCores + DEPRECATED_MSG_ATTRIBUTE("use startDecodeWithNumberOfCores: instead"); - (NSInteger)releaseDecoder; - (NSInteger)decode:(RTCEncodedImage *)encodedImage missingFrames:(BOOL)missingFrames @@ -175,6 +176,10 @@ RTC_EXPORT renderTimeMs:(int64_t)renderTimeMs; - (NSString *)implementationName; +// TODO(andersc): Make non-optional when `startDecodeWithSettings:numberOfCores:` is removed. +@optional +- (NSInteger)startDecodeWithNumberOfCores:(int)numberOfCores; + @end NS_ASSUME_NONNULL_END diff --git a/sdk/objc/Framework/Native/src/objc_video_decoder_factory.mm b/sdk/objc/Framework/Native/src/objc_video_decoder_factory.mm index 0525fae4eb..a4047afa59 100644 --- a/sdk/objc/Framework/Native/src/objc_video_decoder_factory.mm +++ b/sdk/objc/Framework/Native/src/objc_video_decoder_factory.mm @@ -37,9 +37,15 @@ class ObjCVideoDecoder : public VideoDecoder { : decoder_(decoder), implementation_name_([decoder implementationName].stdString) {} int32_t InitDecode(const VideoCodec *codec_settings, int32_t number_of_cores) { - RTCVideoEncoderSettings *settings = - [[RTCVideoEncoderSettings alloc] initWithNativeVideoCodec:codec_settings]; - return [decoder_ startDecodeWithSettings:settings numberOfCores:number_of_cores]; + if ([decoder_ respondsToSelector:@selector(startDecodeWithNumberOfCores:)]) { + return [decoder_ startDecodeWithNumberOfCores:number_of_cores]; + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + RTCVideoEncoderSettings *settings = [[RTCVideoEncoderSettings alloc] init]; + return [decoder_ startDecodeWithSettings:settings numberOfCores:number_of_cores]; +#pragma clang diagnostic pop + } } int32_t Decode(const EncodedImage &input_image, diff --git a/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm b/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm index 67916ebc16..dadd7b17c1 100644 --- a/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm +++ b/sdk/objc/Framework/UnitTests/objc_video_decoder_factory_tests.mm @@ -23,8 +23,7 @@ id CreateDecoderFactoryReturning(int return_code) { id decoderMock = OCMProtocolMock(@protocol(RTCVideoDecoder)); - OCMStub([decoderMock startDecodeWithSettings:[OCMArg any] numberOfCores:1]) - .andReturn(return_code); + OCMStub([decoderMock startDecodeWithNumberOfCores:1]).andReturn(return_code); OCMStub([decoderMock decode:[OCMArg any] missingFrames:NO fragmentationHeader:[OCMArg any]