From 61a01af454181a88aaf75ef68a919c48b446aeed Mon Sep 17 00:00:00 2001 From: Byoungchan Lee Date: Mon, 11 Apr 2022 21:56:36 +0900 Subject: [PATCH] Implement OnResolutionChange to objc RTCVideoEncoderSelector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:12406 Change-Id: I3335d895ecd207ba9de92397cffa3b80799df4ad Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258700 Reviewed-by: Kári Helgason Commit-Queue: Daniel.L (Byoungchan) Lee Cr-Commit-Position: refs/heads/main@{#36589} --- sdk/objc/base/RTCVideoEncoderFactory.h | 3 +++ sdk/objc/native/src/objc_video_encoder_factory.mm | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/sdk/objc/base/RTCVideoEncoderFactory.h b/sdk/objc/base/RTCVideoEncoderFactory.h index b115b2ad39..a73cd77990 100644 --- a/sdk/objc/base/RTCVideoEncoderFactory.h +++ b/sdk/objc/base/RTCVideoEncoderFactory.h @@ -27,6 +27,9 @@ RTC_OBJC_EXPORT - (nullable RTC_OBJC_TYPE(RTCVideoCodecInfo) *)encoderForBitrate:(NSInteger)bitrate; - (nullable RTC_OBJC_TYPE(RTCVideoCodecInfo) *)encoderForBrokenEncoder; +@optional +- (nullable RTC_OBJC_TYPE(RTCVideoCodecInfo) *)encoderForResolutionChangeBySize:(CGSize)size; + @end /** RTCVideoEncoderFactory is an Objective-C version of webrtc::VideoEncoderFactory. diff --git a/sdk/objc/native/src/objc_video_encoder_factory.mm b/sdk/objc/native/src/objc_video_encoder_factory.mm index f04aa89917..d4ea79cc88 100644 --- a/sdk/objc/native/src/objc_video_encoder_factory.mm +++ b/sdk/objc/native/src/objc_video_encoder_factory.mm @@ -134,6 +134,17 @@ class ObjcVideoEncoderSelector : public VideoEncoderFactory::EncoderSelectorInte return absl::nullopt; } + absl::optional OnResolutionChange(const RenderResolution &resolution) override { + if ([selector_ respondsToSelector:@selector(encoderForResolutionChangeBySize:)]) { + RTC_OBJC_TYPE(RTCVideoCodecInfo) *info = [selector_ + encoderForResolutionChangeBySize:CGSizeMake(resolution.Width(), resolution.Height())]; + if (info) { + return [info nativeSdpVideoFormat]; + } + } + return absl::nullopt; + } + private: id selector_; };