aboutsummaryrefslogtreecommitdiff
path: root/webrtc/modules/video_coding/main/source/packet.cc
diff options
context:
space:
mode:
authorandrew@webrtc.org <andrew@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2012-10-22 18:19:23 +0000
committerandrew@webrtc.org <andrew@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2012-10-22 18:19:23 +0000
commit14b43beb7ce4440b30dcea31196de5b4a529cb6b (patch)
tree7084ca9d70956417df0bd953736203704b88644e /webrtc/modules/video_coding/main/source/packet.cc
parent24a419c0c755dea56933cd81fd88d2d334fd7565 (diff)
downloadwebrtc-14b43beb7ce4440b30dcea31196de5b4a529cb6b.tar.gz
Move src/ -> webrtc/
TBR=niklas.enbom@webrtc.org Review URL: https://webrtc-codereview.appspot.com/915006 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2963 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'webrtc/modules/video_coding/main/source/packet.cc')
-rw-r--r--webrtc/modules/video_coding/main/source/packet.cc119
1 files changed, 119 insertions, 0 deletions
diff --git a/webrtc/modules/video_coding/main/source/packet.cc b/webrtc/modules/video_coding/main/source/packet.cc
new file mode 100644
index 0000000000..e52cbdd8bf
--- /dev/null
+++ b/webrtc/modules/video_coding/main/source/packet.cc
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2011 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 "packet.h"
+#include "module_common_types.h"
+
+#include <assert.h>
+
+namespace webrtc {
+
+VCMPacket::VCMPacket()
+ :
+ payloadType(0),
+ timestamp(0),
+ seqNum(0),
+ dataPtr(NULL),
+ sizeBytes(0),
+ markerBit(false),
+ frameType(kFrameEmpty),
+ codec(kVideoCodecUnknown),
+ isFirstPacket(false),
+ completeNALU(kNaluUnset),
+ insertStartCode(false),
+ codecSpecificHeader() {
+}
+
+VCMPacket::VCMPacket(const WebRtc_UWord8* ptr,
+ const WebRtc_UWord32 size,
+ const WebRtcRTPHeader& rtpHeader) :
+ payloadType(rtpHeader.header.payloadType),
+ timestamp(rtpHeader.header.timestamp),
+ seqNum(rtpHeader.header.sequenceNumber),
+ dataPtr(ptr),
+ sizeBytes(size),
+ markerBit(rtpHeader.header.markerBit),
+
+ frameType(rtpHeader.frameType),
+ codec(kVideoCodecUnknown),
+ isFirstPacket(rtpHeader.type.Video.isFirstPacket),
+ completeNALU(kNaluComplete),
+ insertStartCode(false),
+ codecSpecificHeader(rtpHeader.type.Video)
+{
+ CopyCodecSpecifics(rtpHeader.type.Video);
+}
+
+VCMPacket::VCMPacket(const WebRtc_UWord8* ptr, WebRtc_UWord32 size, WebRtc_UWord16 seq, WebRtc_UWord32 ts, bool mBit) :
+ payloadType(0),
+ timestamp(ts),
+ seqNum(seq),
+ dataPtr(ptr),
+ sizeBytes(size),
+ markerBit(mBit),
+
+ frameType(kVideoFrameDelta),
+ codec(kVideoCodecUnknown),
+ isFirstPacket(false),
+ completeNALU(kNaluComplete),
+ insertStartCode(false),
+ codecSpecificHeader()
+{}
+
+void VCMPacket::Reset() {
+ payloadType = 0;
+ timestamp = 0;
+ seqNum = 0;
+ dataPtr = NULL;
+ sizeBytes = 0;
+ markerBit = false;
+ frameType = kFrameEmpty;
+ codec = kVideoCodecUnknown;
+ isFirstPacket = false;
+ completeNALU = kNaluUnset;
+ insertStartCode = false;
+ memset(&codecSpecificHeader, 0, sizeof(RTPVideoHeader));
+}
+
+void VCMPacket::CopyCodecSpecifics(const RTPVideoHeader& videoHeader)
+{
+ switch(videoHeader.codec)
+ {
+ case kRTPVideoVP8:
+ {
+ // Handle all packets within a frame as depending on the previous packet
+ // TODO(holmer): This should be changed to make fragments independent
+ // when the VP8 RTP receiver supports fragments.
+ if (isFirstPacket && markerBit)
+ completeNALU = kNaluComplete;
+ else if (isFirstPacket)
+ completeNALU = kNaluStart;
+ else if (markerBit)
+ completeNALU = kNaluEnd;
+ else
+ completeNALU = kNaluIncomplete;
+
+ codec = kVideoCodecVP8;
+ break;
+ }
+ case kRTPVideoI420:
+ {
+ codec = kVideoCodecI420;
+ break;
+ }
+ default:
+ {
+ codec = kVideoCodecUnknown;
+ break;
+ }
+ }
+}
+
+}