1/*
2 *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/modules/rtp_rtcp/source/rtp_format.h"
12
13#include "webrtc/modules/rtp_rtcp/source/rtp_format_h264.h"
14#include "webrtc/modules/rtp_rtcp/source/rtp_format_video_generic.h"
15#include "webrtc/modules/rtp_rtcp/source/rtp_format_vp8.h"
16#include "webrtc/modules/rtp_rtcp/source/rtp_format_vp9.h"
17
18namespace webrtc {
19RtpPacketizer* RtpPacketizer::Create(RtpVideoCodecTypes type,
20                                     size_t max_payload_len,
21                                     const RTPVideoTypeHeader* rtp_type_header,
22                                     FrameType frame_type) {
23  switch (type) {
24    case kRtpVideoH264:
25      return new RtpPacketizerH264(frame_type, max_payload_len);
26    case kRtpVideoVp8:
27      assert(rtp_type_header != NULL);
28      return new RtpPacketizerVp8(rtp_type_header->VP8, max_payload_len);
29    case kRtpVideoVp9:
30      assert(rtp_type_header != NULL);
31      return new RtpPacketizerVp9(rtp_type_header->VP9, max_payload_len);
32    case kRtpVideoGeneric:
33      return new RtpPacketizerGeneric(frame_type, max_payload_len);
34    case kRtpVideoNone:
35      assert(false);
36  }
37  return NULL;
38}
39
40RtpDepacketizer* RtpDepacketizer::Create(RtpVideoCodecTypes type) {
41  switch (type) {
42    case kRtpVideoH264:
43      return new RtpDepacketizerH264();
44    case kRtpVideoVp8:
45      return new RtpDepacketizerVp8();
46    case kRtpVideoVp9:
47      return new RtpDepacketizerVp9();
48    case kRtpVideoGeneric:
49      return new RtpDepacketizerGeneric();
50    case kRtpVideoNone:
51      assert(false);
52  }
53  return NULL;
54}
55}  // namespace webrtc
56