diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc index 53bba59e5a..d7be8b3f61 100644 --- a/video/rtp_video_stream_receiver.cc +++ b/video/rtp_video_stream_receiver.cc @@ -358,7 +358,7 @@ RtpVideoStreamReceiver::~RtpVideoStreamReceiver() { void RtpVideoStreamReceiver::AddReceiveCodec( uint8_t payload_type, - const VideoCodec& video_codec, + VideoCodecType codec_type, const std::map& codec_params, bool raw_payload) { if (codec_params.count(cricket::kH264FmtpSpsPpsIdrInKeyframe) || @@ -367,9 +367,8 @@ void RtpVideoStreamReceiver::AddReceiveCodec( packet_buffer_.ForceSpsPpsIdrIsH264Keyframe(); } payload_type_map_.emplace( - payload_type, raw_payload - ? std::make_unique() - : CreateVideoRtpDepacketizer(video_codec.codecType)); + payload_type, raw_payload ? std::make_unique() + : CreateVideoRtpDepacketizer(codec_type)); pt_codec_params_.emplace(payload_type, codec_params); } diff --git a/video/rtp_video_stream_receiver.h b/video/rtp_video_stream_receiver.h index 5e63755ab1..2df76b3846 100644 --- a/video/rtp_video_stream_receiver.h +++ b/video/rtp_video_stream_receiver.h @@ -18,12 +18,14 @@ #include #include +#include "absl/base/attributes.h" #include "absl/types/optional.h" #include "api/array_view.h" #include "api/crypto/frame_decryptor_interface.h" #include "api/sequence_checker.h" #include "api/units/timestamp.h" #include "api/video/color_space.h" +#include "api/video/video_codec_type.h" #include "api/video_codecs/video_codec.h" #include "call/rtp_packet_sink_interface.h" #include "call/syncable.h" @@ -125,10 +127,19 @@ class RtpVideoStreamReceiver : public LossNotificationSender, ~RtpVideoStreamReceiver() override; void AddReceiveCodec(uint8_t payload_type, - const VideoCodec& video_codec, + VideoCodecType codec_type, const std::map& codec_params, bool raw_payload); + ABSL_DEPRECATED("Use AddReceiveCodec above") + void AddReceiveCodec(uint8_t payload_type, + const VideoCodec& video_codec, + const std::map& codec_params, + bool raw_payload) { + AddReceiveCodec(payload_type, video_codec.codecType, codec_params, + raw_payload); + } + void StartReceive(); void StopReceive(); diff --git a/video/rtp_video_stream_receiver_unittest.cc b/video/rtp_video_stream_receiver_unittest.cc index 22cb37fa16..1c2b04dcfd 100644 --- a/video/rtp_video_stream_receiver_unittest.cc +++ b/video/rtp_video_stream_receiver_unittest.cc @@ -154,9 +154,8 @@ class RtpVideoStreamReceiverTest : public ::testing::Test { rtp_receive_statistics_.get(), nullptr, nullptr, process_thread_.get(), &mock_nack_sender_, &mock_key_frame_request_sender_, &mock_on_complete_frame_callback_, nullptr, nullptr); - VideoCodec codec; - codec.codecType = kVideoCodecGeneric; - rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, codec, {}, + rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, + kVideoCodecGeneric, {}, /*raw_payload=*/false); } @@ -287,10 +286,8 @@ TEST_F(RtpVideoStreamReceiverTest, CacheColorSpaceFromLastPacketOfKeyframe) { received_packet_generator.SetColorSpace(kColorSpace); // Prepare the receiver for VP9. - VideoCodec codec; - codec.codecType = kVideoCodecVP9; std::map codec_params; - rtp_video_stream_receiver_->AddReceiveCodec(kVp9PayloadType, codec, + rtp_video_stream_receiver_->AddReceiveCodec(kVp9PayloadType, kVideoCodecVP9, codec_params, /*raw_payload=*/false); @@ -548,7 +545,8 @@ TEST_P(RtpVideoStreamReceiverTestH264, OutOfBandFmtpSpsPps) { // . codec_params.insert( {cricket::kH264FmtpSpropParameterSets, "Z0IACpZTBYmI,aMljiA=="}); - rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, codec, codec_params, + rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, kVideoCodecH264, + codec_params, /*raw_payload=*/false); const uint8_t binary_sps[] = {0x67, 0x42, 0x00, 0x0a, 0x96, 0x53, 0x05, 0x89, 0x88}; @@ -583,13 +581,13 @@ TEST_P(RtpVideoStreamReceiverTestH264, OutOfBandFmtpSpsPps) { TEST_P(RtpVideoStreamReceiverTestH264, ForceSpsPpsIdrIsKeyframe) { constexpr int kPayloadType = 99; - VideoCodec codec; std::map codec_params; if (GetParam() == "") { // Forcing can be done either with field trial or codec_params. codec_params.insert({cricket::kH264FmtpSpsPpsIdrInKeyframe, ""}); } - rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, codec, codec_params, + rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, kVideoCodecH264, + codec_params, /*raw_payload=*/false); rtc::CopyOnWriteBuffer sps_data; RtpPacketReceived rtp_packet; @@ -906,8 +904,8 @@ TEST_F(RtpVideoStreamReceiverTest, ParseGenericDescriptorRawPayload) { const std::vector data = {0, 1, 2, 3, 4}; const int kRawPayloadType = 123; - VideoCodec codec; - rtp_video_stream_receiver_->AddReceiveCodec(kRawPayloadType, codec, {}, + rtp_video_stream_receiver_->AddReceiveCodec(kRawPayloadType, + kVideoCodecGeneric, {}, /*raw_payload=*/true); rtp_video_stream_receiver_->StartReceive(); @@ -938,8 +936,8 @@ TEST_F(RtpVideoStreamReceiverTest, UnwrapsFrameId) { const std::vector data = {0, 1, 2, 3, 4}; const int kPayloadType = 123; - VideoCodec codec; - rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, codec, {}, + rtp_video_stream_receiver_->AddReceiveCodec(kPayloadType, kVideoCodecGeneric, + {}, /*raw_payload=*/true); rtp_video_stream_receiver_->StartReceive(); RtpHeaderExtensionMap extension_map; @@ -984,8 +982,8 @@ class RtpVideoStreamReceiverDependencyDescriptorTest : public RtpVideoStreamReceiverTest { public: RtpVideoStreamReceiverDependencyDescriptorTest() { - VideoCodec codec; - rtp_video_stream_receiver_->AddReceiveCodec(payload_type_, codec, {}, + rtp_video_stream_receiver_->AddReceiveCodec(payload_type_, + kVideoCodecGeneric, {}, /*raw_payload=*/true); extension_map_.Register(7); rtp_video_stream_receiver_->StartReceive(); @@ -1163,9 +1161,7 @@ TEST_F(RtpVideoStreamReceiverTest, TransformFrame) { rtp_receive_statistics_.get(), nullptr, nullptr, process_thread_.get(), &mock_nack_sender_, nullptr, &mock_on_complete_frame_callback_, nullptr, mock_frame_transformer); - VideoCodec video_codec; - video_codec.codecType = kVideoCodecGeneric; - receiver->AddReceiveCodec(kPayloadType, video_codec, {}, + receiver->AddReceiveCodec(kPayloadType, kVideoCodecGeneric, {}, /*raw_payload=*/false); RtpPacketReceived rtp_packet; diff --git a/video/video_receive_stream.cc b/video/video_receive_stream.cc index 2ddaa5bfbc..9be60a550c 100644 --- a/video/video_receive_stream.cc +++ b/video/video_receive_stream.cc @@ -368,9 +368,9 @@ void VideoReceiveStream::Start() { const bool raw_payload = config_.rtp.raw_payload_types.count(decoder.payload_type) > 0; - rtp_video_stream_receiver_.AddReceiveCodec(decoder.payload_type, codec, - decoder.video_format.parameters, - raw_payload); + rtp_video_stream_receiver_.AddReceiveCodec( + decoder.payload_type, codec.codecType, decoder.video_format.parameters, + raw_payload); RTC_CHECK_EQ(VCM_OK, video_receiver_.RegisterReceiveCodec( decoder.payload_type, &codec, num_cpu_cores_)); }