diff --git a/modules/rtp_rtcp/include/rtp_payload_registry.h b/modules/rtp_rtcp/include/rtp_payload_registry.h index 928d158198..056e8fb543 100644 --- a/modules/rtp_rtcp/include/rtp_payload_registry.h +++ b/modules/rtp_rtcp/include/rtp_payload_registry.h @@ -41,11 +41,6 @@ class RTPPayloadRegistry { int32_t DeRegisterReceivePayload(int8_t payload_type); - int32_t ReceivePayloadType(const SdpAudioFormat& audio_format, - int8_t* payload_type) const; - int32_t ReceivePayloadType(const VideoCodec& video_codec, - int8_t* payload_type) const; - int GetPayloadTypeFrequency(uint8_t payload_type) const; rtc::Optional PayloadTypeToPayload( diff --git a/modules/rtp_rtcp/source/rtp_payload_registry.cc b/modules/rtp_rtcp/source/rtp_payload_registry.cc index 46a4ec17f1..357fb5a493 100644 --- a/modules/rtp_rtcp/source/rtp_payload_registry.cc +++ b/modules/rtp_rtcp/source/rtp_payload_registry.cc @@ -226,35 +226,6 @@ void RTPPayloadRegistry::DeregisterAudioCodecOrRedTypeRegardlessOfPayloadType( } } -int32_t RTPPayloadRegistry::ReceivePayloadType( - const SdpAudioFormat& audio_format, - int8_t* payload_type) const { - assert(payload_type); - rtc::CritScope cs(&crit_sect_); - - for (const auto& it : payload_type_map_) { - if (PayloadIsCompatible(it.second, audio_format)) { - *payload_type = it.first; - return 0; - } - } - return -1; -} - -int32_t RTPPayloadRegistry::ReceivePayloadType(const VideoCodec& video_codec, - int8_t* payload_type) const { - assert(payload_type); - rtc::CritScope cs(&crit_sect_); - - for (const auto& it : payload_type_map_) { - if (PayloadIsCompatible(it.second, video_codec)) { - *payload_type = it.first; - return 0; - } - } - return -1; -} - int RTPPayloadRegistry::GetPayloadTypeFrequency( uint8_t payload_type) const { const auto payload = PayloadTypeToPayload(payload_type); diff --git a/modules/video_coding/codecs/h264/h264.cc b/modules/video_coding/codecs/h264/h264.cc index 7771b13a2f..4408fab82a 100644 --- a/modules/video_coding/codecs/h264/h264.cc +++ b/modules/video_coding/codecs/h264/h264.cc @@ -40,14 +40,17 @@ bool IsH264CodecSupported() { #endif } -SdpVideoFormat CreateH264Format(H264::Profile profile, H264::Level level) { +SdpVideoFormat CreateH264Format(H264::Profile profile, + H264::Level level, + const std::string& packetization_mode) { const rtc::Optional profile_string = H264::ProfileLevelIdToString(H264::ProfileLevelId(profile, level)); RTC_CHECK(profile_string); - return SdpVideoFormat(cricket::kH264CodecName, - {{cricket::kH264FmtpProfileLevelId, *profile_string}, - {cricket::kH264FmtpLevelAsymmetryAllowed, "1"}, - {cricket::kH264FmtpPacketizationMode, "1"}}); + return SdpVideoFormat( + cricket::kH264CodecName, + {{cricket::kH264FmtpProfileLevelId, *profile_string}, + {cricket::kH264FmtpLevelAsymmetryAllowed, "1"}, + {cricket::kH264FmtpPacketizationMode, packetization_mode}}); } } // namespace @@ -67,8 +70,15 @@ std::vector SupportedH264Codecs() { // decoder for that profile is required to be able to decode CBP. This means // we can encode and send CBP even though we negotiated a potentially // higher profile. See the H264 spec for more information. - return {CreateH264Format(H264::kProfileBaseline, H264::kLevel3_1), - CreateH264Format(H264::kProfileConstrainedBaseline, H264::kLevel3_1)}; + // + // We support both packetization modes 0 (mandatory) and 1 (optional, + // preferred). + return { + CreateH264Format(H264::kProfileBaseline, H264::kLevel3_1, "1"), + CreateH264Format(H264::kProfileBaseline, H264::kLevel3_1, "0"), + CreateH264Format(H264::kProfileConstrainedBaseline, H264::kLevel3_1, "1"), + CreateH264Format(H264::kProfileConstrainedBaseline, H264::kLevel3_1, + "0")}; } std::unique_ptr H264Encoder::Create( diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc index f7a919ca81..589b0da805 100644 --- a/video/rtp_video_stream_receiver.cc +++ b/video/rtp_video_stream_receiver.cc @@ -171,15 +171,6 @@ bool RtpVideoStreamReceiver::AddReceiveCodec( const VideoCodec& video_codec, const std::map& codec_params) { pt_codec_params_.insert(make_pair(video_codec.plType, codec_params)); - return AddReceiveCodec(video_codec); -} - -bool RtpVideoStreamReceiver::AddReceiveCodec(const VideoCodec& video_codec) { - int8_t old_pltype = -1; - if (rtp_payload_registry_.ReceivePayloadType(video_codec, &old_pltype) != - -1) { - rtp_payload_registry_.DeRegisterReceivePayload(old_pltype); - } return rtp_payload_registry_.RegisterReceivePayload(video_codec) == 0; } diff --git a/video/rtp_video_stream_receiver.h b/video/rtp_video_stream_receiver.h index 3c1e539521..4c8a4f2595 100644 --- a/video/rtp_video_stream_receiver.h +++ b/video/rtp_video_stream_receiver.h @@ -140,7 +140,6 @@ class RtpVideoStreamReceiver : public RtpData, void RemoveSecondarySink(const RtpPacketSinkInterface* sink); private: - bool AddReceiveCodec(const VideoCodec& video_codec); void ReceivePacket(const uint8_t* packet, size_t packet_length, const RTPHeader& header);