Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / webrtc / modules / audio_coding / neteq / test / NETEQTEST_DummyRTPpacket.cc
index f663343..37e215b 100644 (file)
@@ -14,8 +14,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include <algorithm>  // max
-
 #ifdef WIN32
 #include <winsock2.h>
 #else
@@ -31,123 +29,113 @@ int NETEQTEST_DummyRTPpacket::readFromFile(FILE *fp)
 
     uint16_t length, plen;
     uint32_t offset;
-    int packetLen;
+    int packetLen = 0;
 
     bool readNextPacket = true;
     while (readNextPacket) {
-      readNextPacket = false;
-      if (fread(&length, 2, 1, fp) == 0)
-      {
-        reset();
-        return -2;
-      }
-      length = ntohs(length);
-
-      if (fread(&plen, 2, 1, fp) == 0)
-      {
-        reset();
-        return -1;
-      }
-      packetLen = ntohs(plen);
+        readNextPacket = false;
+        if (fread(&length, 2, 1, fp) == 0)
+        {
+            reset();
+            return -2;
+        }
+        length = ntohs(length);
 
-      if (fread(&offset, 4, 1, fp) == 0)
-      {
-        reset();
-        return -1;
-      }
-      // Store in local variable until we have passed the reset below.
-      uint32_t receiveTime = ntohl(offset);
-
-      // Use length here because a plen of 0 specifies rtcp.
-      length = (uint16_t) (length - _kRDHeaderLen);
-
-      // check buffer size
-      if (_datagram && _memSize < length + 1)
-      {
-        reset();
-      }
-
-      if (!_datagram)
-      {
-        // Add one extra byte, to be able to fake a dummy payload of one byte.
-        _datagram = new uint8_t[length + 1];
-        _memSize = length + 1;
-      }
-      memset(_datagram, 0, length + 1);
-
-      if (length == 0)
-      {
-        _datagramLen = 0;
-        return packetLen;
-      }
-
-      // Read basic header
-      if (fread(_datagram, 1, _kBasicHeaderLen, fp)
-          != (size_t)_kBasicHeaderLen)
-      {
-        reset();
-        return -1;
-      }
-      _receiveTime = receiveTime;
-      _datagramLen = _kBasicHeaderLen;
-      int header_length = _kBasicHeaderLen;
-
-      // Parse the basic header
-      WebRtcNetEQ_RTPInfo tempRTPinfo;
-      int P, X, CC;
-      parseBasicHeader(&tempRTPinfo, &P, &X, &CC);
-
-      // Check if we have to extend the header
-      if (X != 0 || CC != 0)
-      {
-        int newLen = _kBasicHeaderLen + CC * 4 + X * 4;
-        assert(_memSize >= newLen + 1);
-
-        // Read extension from file
-        size_t readLen = newLen - _kBasicHeaderLen;
-        if (fread(_datagram + _kBasicHeaderLen, 1, readLen,
-                  fp) != readLen)
+        if (fread(&plen, 2, 1, fp) == 0)
         {
-          reset();
-          return -1;
+            reset();
+            return -1;
         }
-        _datagramLen = newLen;
-        header_length = newLen;
+        packetLen = ntohs(plen);
 
-        if (X != 0)
+        if (fread(&offset, 4, 1, fp) == 0)
         {
-          int totHdrLen = calcHeaderLength(X, CC);
-          assert(_memSize >= totHdrLen);
-
-          // Read extension from file
-          size_t readLen = totHdrLen - newLen;
-          if (fread(_datagram + newLen, 1, readLen, fp)
-              != readLen)
-          {
             reset();
             return -1;
-          }
-          _datagramLen = totHdrLen;
-          header_length = totHdrLen;
         }
-      }
-      // Make sure that we have at least one byte of dummy payload.
-      _datagramLen = std::max(static_cast<int>(length), header_length + 1);
-      assert(_datagramLen <= _memSize);
-
-      if (!_blockList.empty() && _blockList.count(payloadType()) > 0)
-      {
-        // discard this payload
-        readNextPacket = true;
-      }
-
-      if (_filterSSRC && _selectSSRC != SSRC())
-      {
-        // Discard this payload.
-        readNextPacket = true;
-      }
+        // Store in local variable until we have passed the reset below.
+        uint32_t receiveTime = ntohl(offset);
+
+        // Use length here because a plen of 0 specifies rtcp.
+        length = (uint16_t) (length - _kRDHeaderLen);
+
+        // check buffer size
+        if (_datagram && _memSize < length + 1)
+        {
+            reset();
+        }
+
+        if (!_datagram)
+        {
+            // Add one extra byte, to be able to fake a dummy payload of 1 byte.
+            _datagram = new uint8_t[length + 1];
+            _memSize = length + 1;
+        }
+        memset(_datagram, 0, length + 1);
+
+        if (length == 0)
+        {
+            _datagramLen = 0;
+            _rtpParsed = false;
+            return packetLen;
+        }
+
+        // Read basic header
+        if (fread((unsigned short *) _datagram, 1, _kBasicHeaderLen, fp)
+            != (size_t)_kBasicHeaderLen)
+        {
+            reset();
+            return -1;
+        }
+        _receiveTime = receiveTime;
+        _datagramLen = _kBasicHeaderLen;
+
+        // Parse the basic header
+        webrtc::WebRtcRTPHeader tempRTPinfo;
+        int P, X, CC;
+        parseBasicHeader(&tempRTPinfo, &P, &X, &CC);
+
+        // Check if we have to extend the header
+        if (X != 0 || CC != 0)
+        {
+            int newLen = _kBasicHeaderLen + CC * 4 + X * 4;
+            assert(_memSize >= newLen);
+
+            // Read extension from file
+            size_t readLen = newLen - _kBasicHeaderLen;
+            if (fread(&_datagram[_kBasicHeaderLen], 1, readLen, fp) != readLen)
+            {
+                reset();
+                return -1;
+            }
+            _datagramLen = newLen;
+
+            if (X != 0)
+            {
+                int totHdrLen = calcHeaderLength(X, CC);
+                assert(_memSize >= totHdrLen);
+
+                // Read extension from file
+                size_t readLen = totHdrLen - newLen;
+                if (fread(&_datagram[newLen], 1, readLen, fp) != readLen)
+                {
+                    reset();
+                    return -1;
+                }
+                _datagramLen = totHdrLen;
+            }
+        }
+        _datagramLen = length;
+
+        if (!_blockList.empty() && _blockList.count(payloadType()) > 0)
+        {
+            readNextPacket = true;
+        }
     }
 
+    _rtpParsed = false;
+    assert(_memSize > _datagramLen);
+    _payloadLen = 1;  // Set the length to 1 byte.
     return packetLen;
 
 }
@@ -208,3 +196,9 @@ int NETEQTEST_DummyRTPpacket::writeToFile(FILE *fp)
 
 }
 
+void NETEQTEST_DummyRTPpacket::parseHeader() {
+  NETEQTEST_RTPpacket::parseHeader();
+  // Change _payloadLen to 1 byte. The memory should always be big enough.
+  assert(_memSize > _datagramLen);
+  _payloadLen = 1;
+}