Add option to configure raw RTP packetization per payload type.

Bug: webrtc:10625
Change-Id: I699f61af29656827eccb3c4ed507b4229dee972a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137803
Commit-Queue: Mirta Dvornicic <mirtad@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28036}
This commit is contained in:
Mirta Dvornicic
2019-05-23 13:21:12 +02:00
committed by Commit Bot
parent a352248c43
commit fe68daab97
17 changed files with 175 additions and 60 deletions

View File

@ -24,14 +24,19 @@
namespace webrtc {
std::unique_ptr<RtpPacketizer> RtpPacketizer::Create(
VideoCodecType type,
absl::optional<VideoCodecType> type,
rtc::ArrayView<const uint8_t> payload,
PayloadSizeLimits limits,
// Codec-specific details.
const RTPVideoHeader& rtp_video_header,
VideoFrameType frame_type,
const RTPFragmentationHeader* fragmentation) {
switch (type) {
if (!type) {
// Use raw packetizer.
return absl::make_unique<RtpPacketizerGeneric>(payload, limits);
}
switch (*type) {
case kVideoCodecH264: {
RTC_CHECK(fragmentation);
const auto& h264 =
@ -133,8 +138,13 @@ std::vector<int> RtpPacketizer::SplitAboutEqually(
return result;
}
RtpDepacketizer* RtpDepacketizer::Create(VideoCodecType type) {
switch (type) {
RtpDepacketizer* RtpDepacketizer::Create(absl::optional<VideoCodecType> type) {
if (!type) {
// Use raw depacketizer.
return new RtpDepacketizerGeneric(/*generic_header_enabled=*/false);
}
switch (*type) {
case kVideoCodecH264:
return new RtpDepacketizerH264();
case kVideoCodecVP8:
@ -145,4 +155,5 @@ RtpDepacketizer* RtpDepacketizer::Create(VideoCodecType type) {
return new RtpDepacketizerGeneric(/*generic_header_enabled=*/true);
}
}
} // namespace webrtc