Convert PayloadUnion from a union to a class, step 1
I need to replace the audio part of PayloadUnion with SdpAudioFormat, but that's a non-trivially-deletable class and those just don't work well in unions, especially unions that don't have a discriminator that says which member is currently active. This CL converts the union to a class, adds a discriminator, and provides accessor functions. CL #2 in the series will change all outsiders to use the accessors instead of the public member variables directly, and CL #3 will remove the public member variables. (It needs to be done in separate steps like this because PayloadUnion is unfortunately part of the API, and just changing it all in one go would break users.) BUG=webrtc:8159 Change-Id: I38c44bbb21a2d38600cff59bf37d8d47dfdbce21 Reviewed-on: https://webrtc-review.googlesource.com/4340 Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20025}
This commit is contained in:
@ -15,20 +15,20 @@
|
||||
namespace webrtc {
|
||||
|
||||
RTPReceiverStrategy::RTPReceiverStrategy(RtpData* data_callback)
|
||||
: data_callback_(data_callback) {
|
||||
memset(&last_payload_, 0, sizeof(last_payload_));
|
||||
}
|
||||
: data_callback_(data_callback) {}
|
||||
|
||||
void RTPReceiverStrategy::GetLastMediaSpecificPayload(
|
||||
PayloadUnion* payload) const {
|
||||
rtc::CritScope cs(&crit_sect_);
|
||||
memcpy(payload, &last_payload_, sizeof(*payload));
|
||||
if (last_payload_) {
|
||||
*payload = *last_payload_;
|
||||
}
|
||||
}
|
||||
|
||||
void RTPReceiverStrategy::SetLastMediaSpecificPayload(
|
||||
const PayloadUnion& payload) {
|
||||
rtc::CritScope cs(&crit_sect_);
|
||||
memcpy(&last_payload_, &payload, sizeof(last_payload_));
|
||||
last_payload_.emplace(payload);
|
||||
}
|
||||
|
||||
void RTPReceiverStrategy::CheckPayloadChanged(int8_t payload_type,
|
||||
|
||||
Reference in New Issue
Block a user