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]