Delete RED handling from RtpReceiverImpl::CheckPayloadChanged.

Also delete the method RTPPayloadRegistry::red_payload_type() and
remnants of RED support in RTPReceiverAudio.

Bug: webrtc:8995,webrtc:5922
Change-Id: Iee310f5a8628ba70942e8c0277a856d2ca1f9b35
Reviewed-on: https://webrtc-review.googlesource.com/61500
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22425}
This commit is contained in:
Niels Möller
2018-03-14 11:27:26 +01:00
committed by Commit Bot
parent 08c5cb0752
commit 31791e7e2c
10 changed files with 5 additions and 80 deletions

View File

@ -290,15 +290,4 @@ bool RTPPayloadRegistry::ReportMediaPayloadType(uint8_t media_payload_type) {
return false;
}
// Returns -1 if a payload with name |payload_name| is not registered.
int8_t RTPPayloadRegistry::GetPayloadTypeWithName(
const char* payload_name) const {
rtc::CritScope cs(&crit_sect_);
for (const auto& it : payload_type_map_) {
if (_stricmp(it.second.name, payload_name) == 0)
return it.first;
}
return -1;
}
} // namespace webrtc

View File

@ -75,23 +75,6 @@ TEST(RtpPayloadRegistryTest,
EXPECT_FALSE(rtp_payload_registry.PayloadTypeToPayload(payload_type));
}
TEST(RtpPayloadRegistryTest, AudioRedWorkProperly) {
RTPPayloadRegistry rtp_payload_registry;
bool new_payload_created = false;
const SdpAudioFormat red_format("red", 8000, 1);
EXPECT_EQ(0, rtp_payload_registry.RegisterReceivePayload(
127, red_format, &new_payload_created));
EXPECT_TRUE(new_payload_created);
EXPECT_EQ(127, rtp_payload_registry.red_payload_type());
const auto retrieved_payload = rtp_payload_registry.PayloadTypeToPayload(127);
EXPECT_TRUE(retrieved_payload);
EXPECT_TRUE(retrieved_payload->typeSpecific.is_audio());
EXPECT_EQ(red_format, retrieved_payload->typeSpecific.audio_payload().format);
}
TEST(RtpPayloadRegistryTest,
DoesNotAcceptSamePayloadTypeTwiceExceptIfPayloadIsCompatible) {
constexpr int payload_type = 97;

View File

@ -137,7 +137,6 @@ int32_t RTPReceiverAudio::OnNewPayloadTypeCreated(
int32_t RTPReceiverAudio::ParseRtpPacket(WebRtcRTPHeader* rtp_header,
const PayloadUnion& specific_payload,
bool is_red,
const uint8_t* payload,
size_t payload_length,
int64_t timestamp_ms) {
@ -158,7 +157,7 @@ int32_t RTPReceiverAudio::ParseRtpPacket(WebRtcRTPHeader* rtp_header,
}
return ParseAudioCodecSpecific(rtp_header, payload, payload_length,
specific_payload.audio_payload(), is_red);
specific_payload.audio_payload());
}
RTPAliveType RTPReceiverAudio::ProcessDeadOrAlive(
@ -211,8 +210,7 @@ int32_t RTPReceiverAudio::ParseAudioCodecSpecific(
WebRtcRTPHeader* rtp_header,
const uint8_t* payload_data,
size_t payload_length,
const AudioPayload& audio_specific,
bool is_red) {
const AudioPayload& audio_specific) {
RTC_DCHECK_GE(payload_length, rtp_header->header.paddingLength);
const size_t payload_data_length =
payload_length - rtp_header->header.paddingLength;
@ -296,16 +294,6 @@ int32_t RTPReceiverAudio::ParseAudioCodecSpecific(
}
}
}
// TODO(holmer): Break this out to have RED parsing handled generically.
RTC_DCHECK_GT(payload_data_length, 0);
if (is_red && !(payload_data[0] & 0x80)) {
// we recive only one frame packed in a RED packet remove the RED wrapper
rtp_header->header.payloadType = payload_data[0];
// only one frame in the RED strip the one byte to help NetEq
return data_callback_->OnReceivedPayloadData(
payload_data + 1, payload_data_length - 1, rtp_header);
}
rtp_header->type.Audio.channel = audio_specific.format.num_channels;
return data_callback_->OnReceivedPayloadData(payload_data,

View File

@ -46,7 +46,6 @@ class RTPReceiverAudio : public RTPReceiverStrategy,
int32_t ParseRtpPacket(WebRtcRTPHeader* rtp_header,
const PayloadUnion& specific_payload,
bool is_red,
const uint8_t* packet,
size_t payload_length,
int64_t timestamp_ms) override;
@ -76,8 +75,7 @@ class RTPReceiverAudio : public RTPReceiverStrategy,
int32_t ParseAudioCodecSpecific(WebRtcRTPHeader* rtp_header,
const uint8_t* payload_data,
size_t payload_length,
const AudioPayload& audio_specific,
bool is_red);
const AudioPayload& audio_specific);
bool telephone_event_forward_to_decoder_;
int8_t telephone_event_payload_type_;

View File

@ -171,9 +171,8 @@ bool RtpReceiverImpl::IncomingRtpPacket(const RTPHeader& rtp_header,
CheckSSRCChanged(rtp_header);
int8_t first_payload_byte = payload_length > 0 ? payload[0] : 0;
bool is_red = false;
if (CheckPayloadChanged(rtp_header, first_payload_byte, &is_red,
if (CheckPayloadChanged(rtp_header, first_payload_byte,
&payload_specific) == -1) {
if (payload_length == 0) {
// OK, keep-alive packet.
@ -195,7 +194,7 @@ bool RtpReceiverImpl::IncomingRtpPacket(const RTPHeader& rtp_header,
UpdateSources(audio_level);
int32_t ret_val = rtp_media_receiver_->ParseRtpPacket(
&webrtc_rtp_header, payload_specific, is_red, payload, payload_length,
&webrtc_rtp_header, payload_specific, payload, payload_length,
clock_->TimeInMilliseconds());
if (ret_val < 0) {
@ -335,7 +334,6 @@ void RtpReceiverImpl::CheckSSRCChanged(const RTPHeader& rtp_header) {
// last known payload).
int32_t RtpReceiverImpl::CheckPayloadChanged(const RTPHeader& rtp_header,
const int8_t first_payload_byte,
bool* is_red,
PayloadUnion* specific_payload) {
bool re_initialize_decoder = false;
@ -350,24 +348,6 @@ int32_t RtpReceiverImpl::CheckPayloadChanged(const RTPHeader& rtp_header,
// TODO(holmer): Remove this code when RED parsing has been broken out from
// RtpReceiverAudio.
if (payload_type != last_received_payload_type) {
if (rtp_payload_registry_->red_payload_type() == payload_type) {
// Get the real codec payload type.
payload_type = first_payload_byte & 0x7f;
*is_red = true;
if (rtp_payload_registry_->red_payload_type() == payload_type) {
// Invalid payload type, traced by caller. If we proceeded here,
// this would be set as |_last_received_payload_type|, and we would no
// longer catch corrupt packets at this level.
return -1;
}
// When we receive RED we need to check the real payload type.
if (payload_type == last_received_payload_type) {
rtp_media_receiver_->GetLastMediaSpecificPayload(specific_payload);
return 0;
}
}
bool should_discard_changes = false;
rtp_media_receiver_->CheckPayloadChanged(
@ -375,7 +355,6 @@ int32_t RtpReceiverImpl::CheckPayloadChanged(const RTPHeader& rtp_header,
&should_discard_changes);
if (should_discard_changes) {
*is_red = false;
return 0;
}
@ -405,7 +384,6 @@ int32_t RtpReceiverImpl::CheckPayloadChanged(const RTPHeader& rtp_header,
}
} else {
rtp_media_receiver_->GetLastMediaSpecificPayload(specific_payload);
*is_red = false;
}
} // End critsect.

View File

@ -74,7 +74,6 @@ class RtpReceiverImpl : public RtpReceiver {
void CheckCSRC(const WebRtcRTPHeader& rtp_header);
int32_t CheckPayloadChanged(const RTPHeader& rtp_header,
const int8_t first_payload_byte,
bool* is_red,
PayloadUnion* payload);
void UpdateSources(const rtc::Optional<uint8_t>& ssrc_audio_level);

View File

@ -39,7 +39,6 @@ class RTPReceiverStrategy {
// provides audio or video-specific data.
virtual int32_t ParseRtpPacket(WebRtcRTPHeader* rtp_header,
const PayloadUnion& specific_payload,
bool is_red,
const uint8_t* payload,
size_t payload_length,
int64_t timestamp_ms) = 0;

View File

@ -52,7 +52,6 @@ int32_t RTPReceiverVideo::OnNewPayloadTypeCreated(
int32_t RTPReceiverVideo::ParseRtpPacket(WebRtcRTPHeader* rtp_header,
const PayloadUnion& specific_payload,
bool is_red,
const uint8_t* payload,
size_t payload_length,
int64_t timestamp_ms) {

View File

@ -27,7 +27,6 @@ class RTPReceiverVideo : public RTPReceiverStrategy {
int32_t ParseRtpPacket(WebRtcRTPHeader* rtp_header,
const PayloadUnion& specific_payload,
bool is_red,
const uint8_t* packet,
size_t packet_length,
int64_t timestamp) override;