diff --git a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm index 7b38ec047c..b1fcd1b8a6 100644 --- a/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm +++ b/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodecH264.mm @@ -181,6 +181,10 @@ class H264VideoToolboxDecodeCompleteCallback : public webrtc::DecodedImageCallba high:kHighH264QpThreshold]; } +- (NSString *)implementationName { + return @"VideoToolbox"; +} + @end // Decoder. @@ -247,6 +251,10 @@ class H264VideoToolboxDecodeCompleteCallback : public webrtc::DecodedImageCallba image, missingFrames, header.release(), &codecSpecificInfo, renderTimeMs); } +- (NSString *)implementationName { + return @"VideoToolbox"; +} + @end // Encoder factory. diff --git a/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm index c6e11c8415..f6e6ff55ac 100644 --- a/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm +++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.mm @@ -10,6 +10,7 @@ #include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_decoder_factory.h" +#import "NSString+StdString.h" #import "RTCVideoCodec+Private.h" #import "WebRTC/RTCVideoCodec.h" #import "WebRTC/RTCVideoCodecFactory.h" @@ -30,7 +31,8 @@ namespace webrtc { namespace { class ObjCVideoDecoder : public VideoDecoder { public: - ObjCVideoDecoder(id decoder) : decoder_(decoder) {} + ObjCVideoDecoder(id decoder) + : decoder_(decoder), implementation_name_([decoder implementationName].stdString) {} ~ObjCVideoDecoder() { [decoder_ destroy]; } int32_t InitDecode(const VideoCodec *codec_settings, int32_t number_of_cores) { @@ -85,8 +87,11 @@ class ObjCVideoDecoder : public VideoDecoder { int32_t Release() { return [decoder_ releaseDecoder]; } + const char *ImplementationName() const { return implementation_name_.c_str(); } + private: id decoder_; + const std::string implementation_name_; }; } // namespace diff --git a/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.mm b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.mm index 0472fc07ae..ecdc716d85 100644 --- a/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.mm +++ b/webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.mm @@ -10,6 +10,9 @@ #include "webrtc/sdk/objc/Framework/Classes/VideoToolbox/objc_video_encoder_factory.h" +#include + +#import "NSString+StdString.h" #import "RTCVideoCodec+Private.h" #import "WebRTC/RTCVideoCodec.h" #import "WebRTC/RTCVideoCodecFactory.h" @@ -32,7 +35,8 @@ namespace webrtc { namespace { class ObjCVideoEncoder : public VideoEncoder { public: - ObjCVideoEncoder(id encoder) : encoder_(encoder) {} + ObjCVideoEncoder(id encoder) + : encoder_(encoder), implementation_name_([encoder implementationName].stdString) {} ~ObjCVideoEncoder() { [encoder_ destroy]; } int32_t InitEncode(const VideoCodec *codec_settings, @@ -118,8 +122,11 @@ class ObjCVideoEncoder : public VideoEncoder { ScalingSettings(false /* enabled */); } + const char *ImplementationName() const { return implementation_name_.c_str(); } + private: id encoder_; + const std::string implementation_name_; }; } // namespace diff --git a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h index a57e3e1077..a5214ea6c8 100644 --- a/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h +++ b/webrtc/sdk/objc/Framework/Headers/WebRTC/RTCVideoCodec.h @@ -128,14 +128,13 @@ RTC_EXPORT codecSpecificInfo:(id)info frameTypes:(NSArray *)frameTypes; - (BOOL)setBitrate:(uint32_t)bitrateKbit framerate:(uint32_t)framerate; +- (NSString *)implementationName; /** Returns QP scaling settings for encoder. The quality scaler adjusts the resolution in order to * keep the QP from the encoded images within the given range. Returning nil from this function * disables quality scaling. */ - (RTCVideoEncoderQpThresholds *)scalingSettings; -// TODO(andersc): Add implementationName method. - @end /** Protocol for decoder implementations. */ @@ -152,8 +151,7 @@ RTC_EXPORT fragmentationHeader:(RTCRtpFragmentationHeader *)fragmentationHeader codecSpecificInfo:(__nullable id)info renderTimeMs:(int64_t)renderTimeMs; - -// TODO(andersc): Add implementationName method. +- (NSString *)implementationName; @end