|  | /* | 
|  | *  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; | 
|  | } |