Reland "Inform VideoEncoder of negotiated capabilities"
This is a reland of 11dfff0878c949f2e19d95a0ddc209cdad94b3b4 Now that I am sure that WebRTC code is not calling the obsolete versions, I will just remove the NOT_REACHED and call the new version from the old ones, so as not to trip up downstream projects. Original change's description: > Inform VideoEncoder of negotiated capabilities > > After this CL lands, an announcement will be made to > discuss-webrtc about the deprecation of one version > of InitEncode(). > > Bug: webrtc:10720 > Change-Id: Ib992af0272bbb16ae16ef7e69491f365702d179e > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140884 > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> > Reviewed-by: Sami Kalliomäki <sakal@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Commit-Queue: Elad Alon <eladalon@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#28224} TBR=sakal@webrtc.org,kwiberg@webrtc.org,sprang@webrtc.org Bug: webrtc:10720 Change-Id: I46c69e45c190805c07f7e51acbe277d7eebd1600 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/141412 Commit-Queue: Elad Alon <eladalon@webrtc.org> Reviewed-by: Elad Alon <eladalon@webrtc.org> Cr-Commit-Position: refs/heads/master@{#28236}
This commit is contained in:
@ -41,12 +41,11 @@ class ObjCVideoEncoder : public VideoEncoder {
|
||||
ObjCVideoEncoder(id<RTCVideoEncoder> encoder)
|
||||
: encoder_(encoder), implementation_name_([encoder implementationName].stdString) {}
|
||||
|
||||
int32_t InitEncode(const VideoCodec *codec_settings,
|
||||
int32_t number_of_cores,
|
||||
size_t max_payload_size) override {
|
||||
int32_t InitEncode(const VideoCodec *codec_settings, const Settings &encoder_settings) override {
|
||||
RTCVideoEncoderSettings *settings =
|
||||
[[RTCVideoEncoderSettings alloc] initWithNativeVideoCodec:codec_settings];
|
||||
return [encoder_ startEncodeWithSettings:settings numberOfCores:number_of_cores];
|
||||
return [encoder_ startEncodeWithSettings:settings
|
||||
numberOfCores:encoder_settings.number_of_cores];
|
||||
}
|
||||
|
||||
int32_t RegisterEncodeCompleteCallback(EncodedImageCallback *callback) override {
|
||||
|
||||
@ -13,12 +13,12 @@
|
||||
|
||||
#include "sdk/objc/native/src/objc_video_encoder_factory.h"
|
||||
|
||||
#include "api/video_codecs/sdp_video_format.h"
|
||||
#include "api/video_codecs/video_encoder.h"
|
||||
#import "base/RTCVideoEncoder.h"
|
||||
#import "base/RTCVideoEncoderFactory.h"
|
||||
#import "base/RTCVideoFrameBuffer.h"
|
||||
#import "components/video_frame_buffer/RTCCVPixelBuffer.h"
|
||||
|
||||
#include "api/video_codecs/sdp_video_format.h"
|
||||
#include "modules/include/module_common_types.h"
|
||||
#include "modules/video_coding/include/video_codec_interface.h"
|
||||
#include "modules/video_coding/include/video_error_codes.h"
|
||||
@ -61,14 +61,18 @@ TEST(ObjCVideoEncoderFactoryTest, InitEncodeReturnsOKOnSuccess) {
|
||||
std::unique_ptr<webrtc::VideoEncoder> encoder = GetObjCEncoder(CreateOKEncoderFactory());
|
||||
|
||||
auto* settings = new webrtc::VideoCodec();
|
||||
EXPECT_EQ(encoder->InitEncode(settings, 1, 0), WEBRTC_VIDEO_CODEC_OK);
|
||||
const webrtc::VideoEncoder::Capabilities kCapabilities(false);
|
||||
EXPECT_EQ(encoder->InitEncode(settings, webrtc::VideoEncoder::Settings(kCapabilities, 1, 0)),
|
||||
WEBRTC_VIDEO_CODEC_OK);
|
||||
}
|
||||
|
||||
TEST(ObjCVideoEncoderFactoryTest, InitEncodeReturnsErrorOnFail) {
|
||||
std::unique_ptr<webrtc::VideoEncoder> encoder = GetObjCEncoder(CreateErrorEncoderFactory());
|
||||
|
||||
auto* settings = new webrtc::VideoCodec();
|
||||
EXPECT_EQ(encoder->InitEncode(settings, 1, 0), WEBRTC_VIDEO_CODEC_ERROR);
|
||||
const webrtc::VideoEncoder::Capabilities kCapabilities(false);
|
||||
EXPECT_EQ(encoder->InitEncode(settings, webrtc::VideoEncoder::Settings(kCapabilities, 1, 0)),
|
||||
WEBRTC_VIDEO_CODEC_ERROR);
|
||||
}
|
||||
|
||||
TEST(ObjCVideoEncoderFactoryTest, EncodeReturnsOKOnSuccess) {
|
||||
|
||||
Reference in New Issue
Block a user