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