Fix so video_replay logs aren't spammed.

Add unknown-SSRC counters instead and log number of unknown packets at
end of session.

R=stefan@webrtc.org
BUG=

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6845 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video/replay.cc b/webrtc/video/replay.cc
index 7539025..3d2689e 100644
--- a/webrtc/video/replay.cc
+++ b/webrtc/video/replay.cc
@@ -40,7 +40,7 @@
 static bool ValidatePayloadType(const char* flagname, int32_t payload_type) {
   return payload_type > 0 && payload_type <= 127;
 }
-DEFINE_int32(payload_type, 0, "Payload type.");
+DEFINE_int32(payload_type, 0, "Payload type");
 static int PayloadType() { return static_cast<int>(FLAGS_payload_type); }
 static const bool payload_dummy =
     google::RegisterFlagValidator(&FLAGS_payload_type, &ValidatePayloadType);
@@ -50,7 +50,7 @@
   return ssrc > 0 && ssrc <= 0xFFFFFFFFu;
 }
 
-DEFINE_uint64(ssrc, 0, "Incoming SSRC.");
+DEFINE_uint64(ssrc, 0, "Incoming SSRC");
 static uint32_t Ssrc() { return static_cast<uint32_t>(FLAGS_ssrc); }
 static const bool ssrc_dummy =
     google::RegisterFlagValidator(&FLAGS_ssrc, &ValidateSsrc);
@@ -61,7 +61,7 @@
 }
 
 // Flag for RED payload type.
-DEFINE_int32(red_payload_type, -1, "RED payload type.");
+DEFINE_int32(red_payload_type, -1, "RED payload type");
 static int RedPayloadType() {
   return static_cast<int>(FLAGS_red_payload_type);
 }
@@ -70,7 +70,7 @@
                                   &ValidateOptionalPayloadType);
 
 // Flag for ULPFEC payload type.
-DEFINE_int32(fec_payload_type, -1, "ULPFEC payload type.");
+DEFINE_int32(fec_payload_type, -1, "ULPFEC payload type");
 static int FecPayloadType() {
   return static_cast<int>(FLAGS_fec_payload_type);
 }
@@ -83,7 +83,7 @@
                                          int32_t extension_id) {
   return extension_id >= -1 || extension_id < 15;
 }
-DEFINE_int32(abs_send_time_id, -1, "RTP extension ID for abs-send-time.");
+DEFINE_int32(abs_send_time_id, -1, "RTP extension ID for abs-send-time");
 static int AbsSendTimeId() { return static_cast<int>(FLAGS_abs_send_time_id); }
 static const bool abs_send_time_dummy =
     google::RegisterFlagValidator(&FLAGS_abs_send_time_id,
@@ -92,7 +92,7 @@
 // Flag for transmission-offset id.
 DEFINE_int32(transmission_offset_id,
              -1,
-             "RTP extension ID for transmission-offset.");
+             "RTP extension ID for transmission-offset");
 static int TransmissionOffsetId() {
   return static_cast<int>(FLAGS_transmission_offset_id);
 }
@@ -101,19 +101,26 @@
                                   &ValidateRtpHeaderExtensionId);
 
 // Flag for rtpdump input file.
-DEFINE_string(input_file, "", "rtpdump input file.");
+bool ValidateInputFilenameNotEmpty(const char* flagname,
+                                   const std::string& string) {
+  return string != "";
+}
+DEFINE_string(input_file, "", "input file");
 static std::string InputFile() {
   return static_cast<std::string>(FLAGS_input_file);
 }
+static const bool input_file_dummy =
+    google::RegisterFlagValidator(&FLAGS_input_file,
+                                  &ValidateInputFilenameNotEmpty);
 
 // Flag for raw output files.
-DEFINE_string(out_base, "", "Basename (excluding .yuv) for raw output.");
+DEFINE_string(out_base, "", "Basename (excluding .yuv) for raw output");
 static std::string OutBase() {
   return static_cast<std::string>(FLAGS_out_base);
 }
 
 // Flag for video codec.
-DEFINE_string(codec, "VP8", "Video codec.");
+DEFINE_string(codec, "VP8", "Video codec");
 static std::string Codec() { return static_cast<std::string>(FLAGS_codec); }
 
 }  // namespace flags
@@ -227,6 +234,7 @@
 
   uint32_t last_time_ms = 0;
   int num_packets = 0;
+  std::map<uint32_t, int> unknown_packets;
   while (true) {
     test::RtpFileReader::Packet packet;
     if (!rtp_reader->NextPacket(&packet))
@@ -239,7 +247,9 @@
         RTPHeader header;
         scoped_ptr<RtpHeaderParser> parser(RtpHeaderParser::Create());
         parser->Parse(packet.data, packet.length, &header);
-        fprintf(stderr, "Unknown SSRC: %u!\n", header.ssrc);
+        if (unknown_packets[header.ssrc] == 0)
+          fprintf(stderr, "Unknown SSRC: %u!\n", header.ssrc);
+        ++unknown_packets[header.ssrc];
         break;
       }
       case PacketReceiver::DELIVERY_PACKET_ERROR:
@@ -253,6 +263,13 @@
   }
   fprintf(stderr, "num_packets: %d\n", num_packets);
 
+  for (std::map<uint32_t, int>::const_iterator it = unknown_packets.begin();
+       it != unknown_packets.end();
+       ++it) {
+    fprintf(
+        stderr, "Packets for unknown ssrc '%u': %d\n", it->first, it->second);
+  }
+
   call->DestroyVideoReceiveStream(receive_stream);
 }
 }  // namespace webrtc