Skip to content

Commit

Permalink
Add Generic frame descritpor header extension
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Alex Loiko <[email protected]>
Commit-Queue: Danil Chapovalov <[email protected]>
Cr-Commit-Position: refs/heads/master@{#23788}
  • Loading branch information
DanilChapovalov authored and Commit Bot committed Jun 29, 2018
1 parent deee55b commit 916ec7d
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 1 deletion.
1 change: 1 addition & 0 deletions modules/rtp_rtcp/include/rtp_rtcp_defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ enum RTPExtensionType {
kRtpExtensionRtpStreamId,
kRtpExtensionRepairedRtpStreamId,
kRtpExtensionMid,
kRtpExtensionGenericFrameDescriptor,
kRtpExtensionNumberOfExtensions // Must be the last entity in the enum.
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 2 additions & 0 deletions modules/rtp_rtcp/source/rtp_header_extension_map.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions modules/rtp_rtcp/source/rtp_utility.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 6 additions & 0 deletions test/fuzzers/rtp_packet_fuzzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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;
}
}
}
}
Expand Down

0 comments on commit 916ec7d

Please sign in to comment.