Minor modifications to test::RtpFileReader

Adding original_length to the Packet struct. This is populated with
the plen value from the RTP dump file. In the case of reading a
pcap file, original_length will be equal to length.

Also increasing the maximum packet size to 3500 bytes. This is to
accomodate some test files that contain PCM16b audio encoding.

R=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/28609004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7333 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/resources/video_coding/pltype103_header_only.rtp.sha1 b/resources/video_coding/pltype103_header_only.rtp.sha1
new file mode 100644
index 0000000..eee5aa9
--- /dev/null
+++ b/resources/video_coding/pltype103_header_only.rtp.sha1
@@ -0,0 +1 @@
+2a77f0d030aa96f51f0a96e971b42c3b11fe006b
\ No newline at end of file
diff --git a/webrtc/test/rtp_file_reader.cc b/webrtc/test/rtp_file_reader.cc
index be8dc2b..fd3116e 100644
--- a/webrtc/test/rtp_file_reader.cc
+++ b/webrtc/test/rtp_file_reader.cc
@@ -16,6 +16,7 @@
 #include <string>
 #include <vector>
 
+#include "webrtc/base/checks.h"
 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
 #include "webrtc/system_wrappers/interface/scoped_ptr.h"
 
@@ -113,13 +114,17 @@
     // Use 'len' here because a 'plen' of 0 specifies rtcp.
     len -= kPacketHeaderSize;
     if (packet->length < len) {
-      return false;
+      FATAL() << "Packet is too large to fit: " << len << " bytes vs "
+              << packet->length
+              << " bytes allocated. Consider increasing the buffer "
+                 "size";
     }
     if (fread(rtp_data, 1, len, file_) != len) {
       return false;
     }
 
     packet->length = len;
+    packet->original_length = plen;
     packet->time_ms = offset;
     return true;
   }
@@ -290,6 +295,7 @@
     if (NextPcap(packet->data, &length, &packet->time_ms) != kResultSuccess)
       return false;
     packet->length = static_cast<size_t>(length);
+    packet->original_length = packet->length;
     return true;
   }
 
diff --git a/webrtc/test/rtp_file_reader.h b/webrtc/test/rtp_file_reader.h
index 379bf2d..095ce76 100644
--- a/webrtc/test/rtp_file_reader.h
+++ b/webrtc/test/rtp_file_reader.h
@@ -24,9 +24,14 @@
   };
 
   struct Packet {
-    static const size_t kMaxPacketBufferSize = 1500;
+    // Accommodate for 50 ms packets of 32 kHz PCM16 samples (3200 bytes) plus
+    // some overhead.
+    static const size_t kMaxPacketBufferSize = 3500;
     uint8_t data[kMaxPacketBufferSize];
     size_t length;
+    // The length the packet had on wire. Will be different from |length| when
+    // reading a header-only RTP dump.
+    size_t original_length;
 
     uint32_t time_ms;
   };
diff --git a/webrtc/test/rtp_file_reader_unittest.cc b/webrtc/test/rtp_file_reader_unittest.cc
index b5fa260..54fb874 100644
--- a/webrtc/test/rtp_file_reader_unittest.cc
+++ b/webrtc/test/rtp_file_reader_unittest.cc
@@ -20,28 +20,40 @@
 
 class TestRtpFileReader : public ::testing::Test {
  public:
-  void Init(const std::string& filename) {
+  void Init(const std::string& filename, bool headers_only_file) {
     std::string filepath =
         test::ResourcePath("video_coding/" + filename, "rtp");
     rtp_packet_source_.reset(
         test::RtpFileReader::Create(test::RtpFileReader::kRtpDump, filepath));
     ASSERT_TRUE(rtp_packet_source_.get() != NULL);
+    headers_only_file_ = headers_only_file;
   }
 
   int CountRtpPackets() {
     test::RtpFileReader::Packet packet;
     int c = 0;
-    while (rtp_packet_source_->NextPacket(&packet))
+    while (rtp_packet_source_->NextPacket(&packet)) {
+      if (headers_only_file_)
+        EXPECT_LT(packet.length, packet.original_length);
+      else
+        EXPECT_EQ(packet.length, packet.original_length);
       c++;
+    }
     return c;
   }
 
  private:
   scoped_ptr<test::RtpFileReader> rtp_packet_source_;
+  bool headers_only_file_;
 };
 
 TEST_F(TestRtpFileReader, Test60Packets) {
-  Init("pltype103");
+  Init("pltype103", false);
+  EXPECT_EQ(60, CountRtpPackets());
+}
+
+TEST_F(TestRtpFileReader, Test60PacketsHeaderOnly) {
+  Init("pltype103_header_only", true);
   EXPECT_EQ(60, CountRtpPackets());
 }
 
@@ -60,8 +72,10 @@
   int CountRtpPackets() {
     int c = 0;
     test::RtpFileReader::Packet packet;
-    while (rtp_packet_source_->NextPacket(&packet))
+    while (rtp_packet_source_->NextPacket(&packet)) {
+      EXPECT_EQ(packet.length, packet.original_length);
       c++;
+    }
     return c;
   }
 
diff --git a/webrtc/test/webrtc_test_common.gyp b/webrtc/test/webrtc_test_common.gyp
index d422a4b..477ec0f 100644
--- a/webrtc/test/webrtc_test_common.gyp
+++ b/webrtc/test/webrtc_test_common.gyp
@@ -58,6 +58,7 @@
       'dependencies': [
         '<(DEPTH)/testing/gtest.gyp:gtest',
         '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
+        '<(webrtc_root)/base/base.gyp:rtc_base',
         '<(webrtc_root)/modules/modules.gyp:media_file',
         '<(webrtc_root)/modules/modules.gyp:video_capture_module_impl',
         '<(webrtc_root)/modules/modules.gyp:video_render_module_impl',