Rename RTPanalyze to rtp_analyze and remove old version

The tool RTPanalyze (used to process an input RTP dump into a
text file of RTP header info) was present in both the neteq and
neteq4 folders. This change pulls in changes from the old to the new
and renames the source file and tool to rtp_analyze.

Removing special code for dummy-rtp files (it is supported without
special code), and making the RED payload type settable using flags.

Moving from test/ to tools/ folder.

BUG=2692
R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5832 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrik.lundin@webrtc.org 2014-04-02 20:56:17 +00:00
parent c7c432aa9b
commit 184b913eb5
4 changed files with 113 additions and 147 deletions

View File

@ -1,73 +0,0 @@
/*
* Copyright (c) 2012 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 <assert.h>
#include <stdio.h>
#include <vector>
#include "modules/audio_coding/neteq/test/NETEQTEST_RTPpacket.h"
#include "modules/audio_coding/neteq/test/NETEQTEST_DummyRTPpacket.h"
//#define WEBRTC_DUMMY_RTP
enum {
kRedPayloadType = 127
};
int main(int argc, char* argv[]) {
FILE* in_file = fopen(argv[1], "rb");
if (!in_file) {
printf("Cannot open input file %s\n", argv[1]);
return -1;
}
printf("Input file: %s\n", argv[1]);
FILE* out_file = fopen(argv[2], "wt");
if (!out_file) {
printf("Cannot open output file %s\n", argv[2]);
return -1;
}
printf("Output file: %s\n\n", argv[2]);
// Print file header.
fprintf(out_file, "SeqNo TimeStamp SendTime Size PT M SSRC\n");
// Read file header.
NETEQTEST_RTPpacket::skipFileHeader(in_file);
#ifdef WEBRTC_DUMMY_RTP
NETEQTEST_DummyRTPpacket packet;
#else
NETEQTEST_RTPpacket packet;
#endif
while (packet.readFromFile(in_file) >= 0) {
// Write packet data to file.
fprintf(out_file, "%5u %10u %10u %5i %5i %2i %#08X\n",
packet.sequenceNumber(), packet.timeStamp(), packet.time(),
packet.dataLen(), packet.payloadType(), packet.markerBit(),
packet.SSRC());
if (packet.payloadType() == kRedPayloadType) {
WebRtcNetEQ_RTPInfo red_header;
int len;
int red_index = 0;
while ((len = packet.extractRED(red_index++, red_header)) >= 0) {
fprintf(out_file, "* %5u %10u %10u %5i %5i\n",
red_header.sequenceNumber, red_header.timeStamp,
packet.time(), len, red_header.payloadType);
}
assert(red_index > 1); // We must get at least one payload.
}
}
fclose(in_file);
fclose(out_file);
return 0;
}

View File

@ -81,14 +81,15 @@
},
{
'target_name': 'RTPanalyze',
'target_name': 'rtp_analyze',
'type': 'executable',
'dependencies': [
'NetEq4TestTools',
'<(DEPTH)/testing/gtest.gyp:gtest',
'<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
],
'sources': [
'test/RTPanalyze.cc',
'tools/rtp_analyze.cc',
],
},

View File

@ -1,72 +0,0 @@
/*
* Copyright (c) 2012 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 <assert.h>
#include <stdio.h>
#include <vector>
#include "webrtc/modules/audio_coding/neteq4/test/NETEQTEST_DummyRTPpacket.h"
#include "webrtc/modules/audio_coding/neteq4/test/NETEQTEST_RTPpacket.h"
//#define WEBRTC_DUMMY_RTP
enum {
kRedPayloadType = 127
};
int main(int argc, char* argv[]) {
FILE* in_file = fopen(argv[1], "rb");
if (!in_file) {
printf("Cannot open input file %s\n", argv[1]);
return -1;
}
printf("Input file: %s\n", argv[1]);
FILE* out_file = fopen(argv[2], "wt");
if (!out_file) {
printf("Cannot open output file %s\n", argv[2]);
return -1;
}
printf("Output file: %s\n\n", argv[2]);
// Print file header.
fprintf(out_file, "SeqNo TimeStamp SendTime Size PT M\n");
// Read file header.
NETEQTEST_RTPpacket::skipFileHeader(in_file);
#ifdef WEBRTC_DUMMY_RTP
NETEQTEST_DummyRTPpacket packet;
#else
NETEQTEST_RTPpacket packet;
#endif
while (packet.readFromFile(in_file) >= 0) {
// Write packet data to file.
fprintf(out_file, "%5u %10u %10u %5i %5i %2i\n",
packet.sequenceNumber(), packet.timeStamp(), packet.time(),
packet.dataLen(), packet.payloadType(), packet.markerBit());
if (packet.payloadType() == kRedPayloadType) {
webrtc::WebRtcRTPHeader red_header;
int len;
int red_index = 0;
while ((len = packet.extractRED(red_index++, red_header)) >= 0) {
fprintf(out_file, "* %5u %10u %10u %5i %5i\n",
red_header.header.sequenceNumber, red_header.header.timestamp,
packet.time(), len, red_header.header.payloadType);
}
assert(red_index > 1); // We must get at least one payload.
}
}
fclose(in_file);
fclose(out_file);
return 0;
}

View File

@ -0,0 +1,110 @@
/*
* Copyright (c) 2012 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 <assert.h>
#include <stdio.h>
#include <vector>
#include "google/gflags.h"
#include "webrtc/modules/audio_coding/neteq4/test/NETEQTEST_DummyRTPpacket.h"
#include "webrtc/modules/audio_coding/neteq4/test/NETEQTEST_RTPpacket.h"
// Flag validator.
static bool ValidatePayloadType(const char* flagname, int32_t value) {
if (value >= 0 && value <= 127) // Value is ok.
return true;
printf("Invalid value for --%s: %d\n", flagname, static_cast<int>(value));
return false;
}
// Define command line flags.
DEFINE_int32(red, 117, "RTP payload type for RED");
static const bool pcmu_dummy =
google::RegisterFlagValidator(&FLAGS_red, &ValidatePayloadType);
int main(int argc, char* argv[]) {
std::string program_name = argv[0];
std::string usage =
"Tool for parsing an RTP dump file to text output.\n"
"Run " +
program_name +
" --helpshort for usage.\n"
"Example usage:\n" +
program_name + " input.rtp output.txt\n\n" +
"Output is sent to stdout if no output file is given." +
"Note that this tool can read files with our without payloads.";
google::SetUsageMessage(usage);
google::ParseCommandLineFlags(&argc, &argv, true);
if (argc != 2 && argc != 3) {
// Print usage information.
printf("%s", google::ProgramUsage());
return 0;
}
FILE* in_file = fopen(argv[1], "rb");
if (!in_file) {
printf("Cannot open input file %s\n", argv[1]);
return -1;
}
printf("Input file: %s\n", argv[1]);
FILE* out_file;
if (argc == 3) {
out_file = fopen(argv[2], "wt");
if (!out_file) {
printf("Cannot open output file %s\n", argv[2]);
return -1;
}
printf("Output file: %s\n\n", argv[2]);
} else {
out_file = stdout;
}
// Print file header.
fprintf(out_file, "SeqNo TimeStamp SendTime Size PT M SSRC\n");
// Read file header.
NETEQTEST_RTPpacket::skipFileHeader(in_file);
NETEQTEST_RTPpacket packet;
while (packet.readFromFile(in_file) >= 0) {
// Write packet data to file.
fprintf(out_file,
"%5u %10u %10u %5i %5i %2i %#08X\n",
packet.sequenceNumber(),
packet.timeStamp(),
packet.time(),
packet.dataLen(),
packet.payloadType(),
packet.markerBit(),
packet.SSRC());
if (packet.payloadType() == FLAGS_red) {
webrtc::WebRtcRTPHeader red_header;
int len;
int red_index = 0;
while ((len = packet.extractRED(red_index++, red_header)) >= 0) {
fprintf(out_file,
"* %5u %10u %10u %5i %5i\n",
red_header.header.sequenceNumber,
red_header.header.timestamp,
packet.time(),
len,
red_header.header.payloadType);
}
assert(red_index > 1); // We must get at least one payload.
}
}
fclose(in_file);
fclose(out_file);
return 0;
}