/* * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "modules/rtp_rtcp/source/rtp_format.h" #include #include "modules/rtp_rtcp/source/rtp_format_h264.h" #include "modules/rtp_rtcp/source/rtp_format_video_generic.h" #include "modules/rtp_rtcp/source/rtp_format_vp8.h" #include "modules/rtp_rtcp/source/rtp_format_vp9.h" namespace webrtc { RtpPacketizer* RtpPacketizer::Create(VideoCodecType type, size_t max_payload_len, size_t last_packet_reduction_len, const RTPVideoTypeHeader* rtp_type_header, FrameType frame_type) { switch (type) { case kVideoCodecH264: RTC_CHECK(rtp_type_header); return new RtpPacketizerH264(max_payload_len, last_packet_reduction_len, rtp_type_header->H264.packetization_mode); case kVideoCodecVP8: RTC_CHECK(rtp_type_header); return new RtpPacketizerVp8(rtp_type_header->VP8, max_payload_len, last_packet_reduction_len); case kVideoCodecVP9: RTC_CHECK(rtp_type_header); return new RtpPacketizerVp9(rtp_type_header->VP9, max_payload_len, last_packet_reduction_len); case kVideoCodecGeneric: return new RtpPacketizerGeneric(frame_type, max_payload_len, last_packet_reduction_len); default: RTC_NOTREACHED(); } return nullptr; } RtpDepacketizer* RtpDepacketizer::Create(VideoCodecType type) { switch (type) { case kVideoCodecH264: return new RtpDepacketizerH264(); case kVideoCodecVP8: return new RtpDepacketizerVp8(); case kVideoCodecVP9: return new RtpDepacketizerVp9(); case kVideoCodecGeneric: return new RtpDepacketizerGeneric(); default: RTC_NOTREACHED(); } return nullptr; } } // namespace webrtc