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, kRtpExtensionRtpStreamId,
kRtpExtensionRepairedRtpStreamId, kRtpExtensionRepairedRtpStreamId,
kRtpExtensionMid, kRtpExtensionMid,
kRtpExtensionGenericFrameDescriptor,
kRtpExtensionNumberOfExtensions // Must be the last entity in the enum. 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( bool RtpGenericFrameDescriptorExtension::Parse(
rtc::ArrayView<const uint8_t> data, rtc::ArrayView<const uint8_t> data,

View File

@ -14,13 +14,16 @@
#include <stdint.h> #include <stdint.h>
#include "api/array_view.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" #include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h"
namespace webrtc { namespace webrtc {
class RtpGenericFrameDescriptorExtension { class RtpGenericFrameDescriptorExtension {
public: 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, static bool Parse(rtc::ArrayView<const uint8_t> data,
RtpGenericFrameDescriptor* descriptor); RtpGenericFrameDescriptor* descriptor);

View File

@ -10,6 +10,7 @@
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #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_header_extensions.h"
#include "rtc_base/arraysize.h" #include "rtc_base/arraysize.h"
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
@ -40,6 +41,7 @@ constexpr ExtensionInfo kExtensions[] = {
CreateExtensionInfo<RtpStreamId>(), CreateExtensionInfo<RtpStreamId>(),
CreateExtensionInfo<RepairedRtpStreamId>(), CreateExtensionInfo<RepairedRtpStreamId>(),
CreateExtensionInfo<RtpMid>(), CreateExtensionInfo<RtpMid>(),
CreateExtensionInfo<RtpGenericFrameDescriptorExtension>(),
}; };
// Because of kRtpExtensionNone, NumberOfExtension is 1 bigger than the actual // 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)); header->extension.mid.Set(rtc::MakeArrayView(ptr, len + 1));
break; break;
} }
case kRtpExtensionGenericFrameDescriptor:
RTC_LOG(WARNING)
<< "RtpGenericFrameDescriptor unsupported by rtp header parser.";
break;
case kRtpExtensionNone: case kRtpExtensionNone:
case kRtpExtensionNumberOfExtensions: { case kRtpExtensionNumberOfExtensions: {
RTC_NOTREACHED() << "Invalid extension type: " << type; 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/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_header_extensions.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.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); packet.GetExtension<RtpMid>(&mid);
break; break;
} }
case kRtpExtensionGenericFrameDescriptor: {
RtpGenericFrameDescriptor descriptor;
packet.GetExtension<RtpGenericFrameDescriptorExtension>(&descriptor);
break;
}
} }
} }
} }