Add Generic frame descritpor header extension

to list of extensions supported by RtpPacket.

Bug: webrtc:9361
Change-Id: Iabee824381be3776e17e95f32507058607fc0bc8
Reviewed-on: https://webrtc-review.googlesource.com/85346
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23788}
This commit is contained in:
Danil Chapovalov
2018-06-25 18:22:15 +02:00
committed by Commit Bot
parent deee55b3d5
commit 916ec7dadf
6 changed files with 19 additions and 1 deletions

View File

@ -110,6 +110,7 @@ enum RTPExtensionType {
kRtpExtensionRtpStreamId,
kRtpExtensionRepairedRtpStreamId,
kRtpExtensionMid,
kRtpExtensionGenericFrameDescriptor,
kRtpExtensionNumberOfExtensions // Must be the last entity in the enum.
};

View File

@ -44,6 +44,8 @@ constexpr uint8_t kFlageXtendedOffset = 0x02;
// +---------------+
// | ... |
// +-+-+-+-+-+-+-+-+
constexpr RTPExtensionType RtpGenericFrameDescriptorExtension::kId;
constexpr char RtpGenericFrameDescriptorExtension::kUri[];
bool RtpGenericFrameDescriptorExtension::Parse(
rtc::ArrayView<const uint8_t> data,

View File

@ -14,13 +14,16 @@
#include <stdint.h>
#include "api/array_view.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h"
namespace webrtc {
class RtpGenericFrameDescriptorExtension {
public:
// TODO(bugs.webrtc.org/9361): Add kId and kUri to make it extension trait.
static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor;
static constexpr char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/generic-frame-descriptor";
static bool Parse(rtc::ArrayView<const uint8_t> data,
RtpGenericFrameDescriptor* descriptor);

View File

@ -10,6 +10,7 @@
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
#include "rtc_base/arraysize.h"
#include "rtc_base/checks.h"
@ -40,6 +41,7 @@ constexpr ExtensionInfo kExtensions[] = {
CreateExtensionInfo<RtpStreamId>(),
CreateExtensionInfo<RepairedRtpStreamId>(),
CreateExtensionInfo<RtpMid>(),
CreateExtensionInfo<RtpGenericFrameDescriptorExtension>(),
};
// Because of kRtpExtensionNone, NumberOfExtension is 1 bigger than the actual

View File

@ -467,6 +467,10 @@ void RtpHeaderParser::ParseOneByteExtensionHeader(
header->extension.mid.Set(rtc::MakeArrayView(ptr, len + 1));
break;
}
case kRtpExtensionGenericFrameDescriptor:
RTC_LOG(WARNING)
<< "RtpGenericFrameDescriptor unsupported by rtp header parser.";
break;
case kRtpExtensionNone:
case kRtpExtensionNumberOfExtensions: {
RTC_NOTREACHED() << "Invalid extension type: " << type;

View File

@ -9,6 +9,7 @@
*/
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
@ -109,6 +110,11 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
packet.GetExtension<RtpMid>(&mid);
break;
}
case kRtpExtensionGenericFrameDescriptor: {
RtpGenericFrameDescriptor descriptor;
packet.GetExtension<RtpGenericFrameDescriptorExtension>(&descriptor);
break;
}
}
}
}