Add RtpPacket::SetRawExtension function.
Bug: webrtc:14801 Change-Id: I1ce9361250a7ad2d932ee9ae5b8f93415d0ea7b7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/289980 Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Philip Eliasson <philipel@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38974}
This commit is contained in:
parent
ef90964b83
commit
3bb6f6d4e8
@ -136,6 +136,9 @@ class RtpPacket {
|
||||
template <typename Extension, typename... Values>
|
||||
bool SetExtension(const Values&...);
|
||||
|
||||
template <typename Extension>
|
||||
bool SetRawExtension(rtc::ArrayView<const uint8_t> data);
|
||||
|
||||
template <typename Extension>
|
||||
bool ReserveExtension();
|
||||
|
||||
@ -252,6 +255,17 @@ bool RtpPacket::SetExtension(const Values&... values) {
|
||||
return Extension::Write(buffer, values...);
|
||||
}
|
||||
|
||||
template <typename Extension>
|
||||
bool RtpPacket::SetRawExtension(rtc::ArrayView<const uint8_t> data) {
|
||||
rtc::ArrayView<uint8_t> buffer =
|
||||
AllocateExtension(Extension::kId, data.size());
|
||||
if (buffer.empty()) {
|
||||
return false;
|
||||
}
|
||||
std::memcpy(buffer.data(), data.data(), data.size());
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename Extension>
|
||||
bool RtpPacket::ReserveExtension() {
|
||||
auto buffer = AllocateExtension(Extension::kId, Extension::kValueSizeBytes);
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
*/
|
||||
#include "common_video/test/utilities.h"
|
||||
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
|
||||
#include "modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h"
|
||||
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
|
||||
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
|
||||
#include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
|
||||
@ -31,6 +32,7 @@ constexpr uint8_t kSeqNumFirstByte = kSeqNum >> 8;
|
||||
constexpr uint8_t kSeqNumSecondByte = kSeqNum & 0xff;
|
||||
constexpr uint32_t kTimestamp = 0x65431278;
|
||||
constexpr uint8_t kTransmissionOffsetExtensionId = 1;
|
||||
constexpr uint8_t kDependencyDescriptorExtensionId = 2;
|
||||
constexpr uint8_t kAudioLevelExtensionId = 9;
|
||||
constexpr uint8_t kRtpStreamIdExtensionId = 0xa;
|
||||
constexpr uint8_t kRtpMidExtensionId = 0xb;
|
||||
@ -1238,5 +1240,16 @@ TEST(RtpPacketTest, RemoveExtensionFailure) {
|
||||
EXPECT_THAT(kPacketWithTO, ElementsAreArray(packet.data(), packet.size()));
|
||||
}
|
||||
|
||||
TEST(RtpPacketTest, SetExtensionWithArray) {
|
||||
RtpPacketToSend::ExtensionManager extensions;
|
||||
extensions.Register<RtpDependencyDescriptorExtension>(
|
||||
kDependencyDescriptorExtensionId);
|
||||
RtpPacketToSend packet(&extensions);
|
||||
const uint8_t extension_data[] = {1, 2, 3, 4, 5};
|
||||
packet.SetRawExtension<RtpDependencyDescriptorExtension>(extension_data);
|
||||
EXPECT_THAT(packet.GetRawExtension<RtpDependencyDescriptorExtension>(),
|
||||
ElementsAreArray(extension_data));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace webrtc
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user