Refactor RtpSender to use absl::string_view for payload name.

Followup to https://webrtc-review.googlesource.com/c/src/+/109006

Bug: webrtc:6424
Change-Id: I1309a7365cf4132ba5d7b80a3847fcafc4fb8d27
Reviewed-on: https://webrtc-review.googlesource.com/c/109120
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25499}
This commit is contained in:
Niels Möller
2018-11-05 13:27:35 +01:00
committed by Commit Bot
parent 26341990a1
commit f418bcbcf1
7 changed files with 21 additions and 17 deletions

View File

@ -273,12 +273,12 @@ int32_t RTPSender::DeregisterRtpHeaderExtension(RTPExtensionType type) {
return rtp_header_extension_map_.Deregister(type);
}
int32_t RTPSender::RegisterPayload(const char* payload_name,
int32_t RTPSender::RegisterPayload(absl::string_view payload_name,
int8_t payload_number,
uint32_t frequency,
size_t channels,
uint32_t rate) {
RTC_DCHECK_LT(strlen(payload_name), RTP_PAYLOAD_NAME_SIZE);
RTC_DCHECK_LT(payload_name.size(), RTP_PAYLOAD_NAME_SIZE);
rtc::CritScope lock(&send_critsect_);
std::map<int8_t, RtpUtility::Payload*>::iterator it =

View File

@ -17,6 +17,7 @@
#include <utility>
#include <vector>
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include "api/array_view.h"
#include "api/call/transport.h"
@ -78,7 +79,7 @@ class RTPSender {
uint32_t FecOverheadRate() const;
uint32_t NackOverheadRate() const;
int32_t RegisterPayload(const char* payload_name,
int32_t RegisterPayload(absl::string_view payload_name,
const int8_t payload_type,
const uint32_t frequency,
const size_t channels,

View File

@ -32,13 +32,13 @@ RTPSenderAudio::RTPSenderAudio(Clock* clock, RTPSender* rtp_sender)
RTPSenderAudio::~RTPSenderAudio() {}
int32_t RTPSenderAudio::RegisterAudioPayload(const char* payloadName,
int32_t RTPSenderAudio::RegisterAudioPayload(absl::string_view payload_name,
const int8_t payload_type,
const uint32_t frequency,
const size_t channels,
const uint32_t rate,
RtpUtility::Payload** payload) {
if (absl::EqualsIgnoreCase(payloadName, "cn")) {
if (absl::EqualsIgnoreCase(payload_name, "cn")) {
rtc::CritScope cs(&send_audio_critsect_);
// we can have multiple CNG payload types
switch (frequency) {
@ -57,7 +57,7 @@ int32_t RTPSenderAudio::RegisterAudioPayload(const char* payloadName,
default:
return -1;
}
} else if (absl::EqualsIgnoreCase(payloadName, "telephone-event")) {
} else if (absl::EqualsIgnoreCase(payload_name, "telephone-event")) {
rtc::CritScope cs(&send_audio_critsect_);
// Don't add it to the list
// we dont want to allow send with a DTMF payloadtype
@ -66,9 +66,9 @@ int32_t RTPSenderAudio::RegisterAudioPayload(const char* payloadName,
return 0;
}
*payload = new RtpUtility::Payload(
payloadName,
payload_name,
PayloadUnion(AudioPayload{
SdpAudioFormat(payloadName, frequency, channels), rate}));
SdpAudioFormat(payload_name, frequency, channels), rate}));
return 0;
}

View File

@ -14,6 +14,7 @@
#include <stddef.h>
#include <stdint.h>
#include "absl/strings/string_view.h"
#include "common_types.h" // NOLINT(build/include)
#include "modules/rtp_rtcp/source/dtmf_queue.h"
#include "modules/rtp_rtcp/source/rtp_sender.h"
@ -31,7 +32,7 @@ class RTPSenderAudio {
RTPSenderAudio(Clock* clock, RTPSender* rtp_sender);
~RTPSenderAudio();
int32_t RegisterAudioPayload(const char* payloadName,
int32_t RegisterAudioPayload(absl::string_view payload_name,
int8_t payload_type,
uint32_t frequency,
size_t channels,

View File

@ -153,7 +153,7 @@ VideoCodecType RTPSenderVideo::VideoCodecType() const {
// Static.
RtpUtility::Payload* RTPSenderVideo::CreateVideoPayload(
const char* payload_name,
absl::string_view payload_name,
int8_t payload_type) {
enum VideoCodecType video_type = kVideoCodecGeneric;
if (absl::EqualsIgnoreCase(payload_name, "VP8")) {

View File

@ -14,6 +14,7 @@
#include <map>
#include <memory>
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include "common_types.h" // NOLINT(build/include)
#include "modules/rtp_rtcp/include/flexfec_sender.h"
@ -47,9 +48,8 @@ class RTPSenderVideo {
virtual enum VideoCodecType VideoCodecType() const;
static RtpUtility::Payload* CreateVideoPayload(
const char payload_name[RTP_PAYLOAD_NAME_SIZE],
int8_t payload_type);
static RtpUtility::Payload* CreateVideoPayload(absl::string_view payload_name,
int8_t payload_type);
bool SendVideo(enum VideoCodecType video_type,
FrameType frame_type,

View File

@ -12,8 +12,9 @@
#define MODULES_RTP_RTCP_SOURCE_RTP_UTILITY_H_
#include <stdint.h>
#include <cstring>
#include <algorithm>
#include "absl/strings/string_view.h"
#include "api/rtp_headers.h"
#include "common_types.h" // NOLINT(build/include)
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
@ -26,9 +27,10 @@ const uint8_t kRtpMarkerBitMask = 0x80;
namespace RtpUtility {
struct Payload {
Payload(const char* name, const PayloadUnion& pu) : typeSpecific(pu) {
std::strncpy(this->name, name, sizeof(this->name) - 1);
this->name[sizeof(this->name) - 1] = '\0';
Payload(absl::string_view payload_name, const PayloadUnion& pu)
: typeSpecific(pu) {
size_t clipped_size = payload_name.copy(name, sizeof(name) - 1);
name[clipped_size] = '\0';
}
char name[RTP_PAYLOAD_NAME_SIZE];
PayloadUnion typeSpecific;