Relax video_codec parameter for RtpVideoStreamReceiver::AddReceiveCodec
Instead of requiring huge VideoCodec struct, pass single member from it Bug: webrtc:13045 Change-Id: I1a4a48abd6c407cb9a878daafda5c8a85beff39e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228641 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34753}
This commit is contained in:

committed by
WebRTC LUCI CQ

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