Remove rtp_rtcp/ dump functionality.
Removes RTP dumping from VideoEngine and VoiceEngine.
BUG=1695
R=henrika@webrtc.org, stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/47179004
Cr-Commit-Position: refs/heads/master@{#9234}
diff --git a/talk/media/webrtc/fakewebrtcvoiceengine.h b/talk/media/webrtc/fakewebrtcvoiceengine.h
index c6d39bb..910889f 100644
--- a/talk/media/webrtc/fakewebrtcvoiceengine.h
+++ b/talk/media/webrtc/fakewebrtcvoiceengine.h
@@ -1035,10 +1035,6 @@
channels_[channel]->nack_max_packets = maxNoPackets;
return 0;
}
- WEBRTC_STUB(StartRTPDump, (int channel, const char* fileNameUTF8,
- webrtc::RTPDirections direction));
- WEBRTC_STUB(StopRTPDump, (int channel, webrtc::RTPDirections direction));
- WEBRTC_STUB(RTPDumpIsActive, (int channel, webrtc::RTPDirections direction));
WEBRTC_STUB(InsertExtraRTPPacket, (int channel, unsigned char payloadType,
bool markerBit, const char* payloadData,
unsigned short payloadSize));
diff --git a/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc b/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc
index 8159245..bb5eeed 100644
--- a/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc
+++ b/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc
@@ -400,22 +400,6 @@
return voe_data->apm->StopDebugRecording();
}
-JOWW(jint, VoiceEngine_startRtpDump)(JNIEnv* jni, jobject j_voe, jint channel,
- jstring j_filename, jint direction) {
- VoiceEngineData* voe_data = GetVoiceEngineData(jni, j_voe);
- std::string filename = JavaToStdString(jni, j_filename);
- return voe_data->rtp->StartRTPDump(
- channel, filename.c_str(),
- static_cast<webrtc::RTPDirections>(direction));
-}
-
-JOWW(jint, VoiceEngine_stopRtpDump)(JNIEnv* jni, jobject j_voe, jint channel,
- jint direction) {
- VoiceEngineData* voe_data = GetVoiceEngineData(jni, j_voe);
- return voe_data->rtp->StopRTPDump(
- channel, static_cast<webrtc::RTPDirections>(direction));
-}
-
JOWW(void, CodecInst_dispose)(JNIEnv* jni, jobject j_codec) {
delete GetCodecInst(jni, j_codec);
}
diff --git a/webrtc/modules/utility/BUILD.gn b/webrtc/modules/utility/BUILD.gn
index 3deed6f..163515c 100644
--- a/webrtc/modules/utility/BUILD.gn
+++ b/webrtc/modules/utility/BUILD.gn
@@ -16,7 +16,6 @@
"interface/helpers_android.h",
"interface/jvm_android.h",
"interface/process_thread.h",
- "interface/rtp_dump.h",
"source/audio_frame_operations.cc",
"source/coder.cc",
"source/coder.h",
@@ -28,8 +27,6 @@
"source/jvm_android.cc",
"source/process_thread_impl.cc",
"source/process_thread_impl.h",
- "source/rtp_dump_impl.cc",
- "source/rtp_dump_impl.h",
]
configs += [ "../..:common_config" ]
diff --git a/webrtc/modules/utility/interface/rtp_dump.h b/webrtc/modules/utility/interface/rtp_dump.h
deleted file mode 100644
index df45ae2..0000000
--- a/webrtc/modules/utility/interface/rtp_dump.h
+++ /dev/null
@@ -1,52 +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.
- */
-
-// This file implements a class that writes a stream of RTP and RTCP packets
-// to a file according to the format specified by rtpplay. See
-// http://www.cs.columbia.edu/irt/software/rtptools/.
-// Notes: supported platforms are Windows, Linux and Mac OSX
-
-#ifndef WEBRTC_MODULES_UTILITY_INTERFACE_RTP_DUMP_H_
-#define WEBRTC_MODULES_UTILITY_INTERFACE_RTP_DUMP_H_
-
-#include "webrtc/system_wrappers/interface/file_wrapper.h"
-#include "webrtc/typedefs.h"
-
-namespace webrtc {
-class RtpDump
-{
-public:
- // Factory method.
- static RtpDump* CreateRtpDump();
-
- // Delete function. Destructor disabled.
- static void DestroyRtpDump(RtpDump* object);
-
- // Open the file fileNameUTF8 for writing RTP/RTCP packets.
- // Note: this API also adds the rtpplay header.
- virtual int32_t Start(const char* fileNameUTF8) = 0;
-
- // Close the existing file. No more packets will be recorded.
- virtual int32_t Stop() = 0;
-
- // Return true if a file is open for recording RTP/RTCP packets.
- virtual bool IsActive() const = 0;
-
- // Writes the RTP/RTCP packet in packet with length packetLength in bytes.
- // Note: packet should contain the RTP/RTCP part of the packet. I.e. the
- // first bytes of packet should be the RTP/RTCP header.
- virtual int32_t DumpPacket(const uint8_t* packet,
- size_t packetLength) = 0;
-
-protected:
- virtual ~RtpDump();
-};
-} // namespace webrtc
-#endif // WEBRTC_MODULES_UTILITY_INTERFACE_RTP_DUMP_H_
diff --git a/webrtc/modules/utility/source/rtp_dump_impl.cc b/webrtc/modules/utility/source/rtp_dump_impl.cc
deleted file mode 100644
index 495a1e4..0000000
--- a/webrtc/modules/utility/source/rtp_dump_impl.cc
+++ /dev/null
@@ -1,249 +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 "webrtc/modules/utility/source/rtp_dump_impl.h"
-
-#include <assert.h>
-#include <stdio.h>
-#include <limits>
-
-#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/interface/logging.h"
-
-#if defined(_WIN32)
-#include <Windows.h>
-#include <mmsystem.h>
-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-#include <string.h>
-#include <sys/time.h>
-#include <time.h>
-#endif
-
-#if (defined(_DEBUG) && defined(_WIN32))
-#define DEBUG_PRINT(expr) OutputDebugString(##expr)
-#define DEBUG_PRINTP(expr, p) \
-{ \
- char msg[128]; \
- sprintf(msg, ##expr, p); \
- OutputDebugString(msg); \
-}
-#else
-#define DEBUG_PRINT(expr) ((void)0)
-#define DEBUG_PRINTP(expr,p) ((void)0)
-#endif // defined(_DEBUG) && defined(_WIN32)
-
-namespace webrtc {
-const char RTPFILE_VERSION[] = "1.0";
-const uint32_t MAX_UWORD32 = 0xffffffff;
-
-// This stucture is specified in the rtpdump documentation.
-// This struct corresponds to RD_packet_t in
-// http://www.cs.columbia.edu/irt/software/rtptools/
-typedef struct
-{
- // Length of packet, including this header (may be smaller than plen if not
- // whole packet recorded).
- uint16_t length;
- // Actual header+payload length for RTP, 0 for RTCP.
- uint16_t plen;
- // Milliseconds since the start of recording.
- uint32_t offset;
-} RtpDumpPacketHeader;
-
-RtpDump* RtpDump::CreateRtpDump()
-{
- return new RtpDumpImpl();
-}
-
-void RtpDump::DestroyRtpDump(RtpDump* object)
-{
- delete object;
-}
-
-RtpDumpImpl::RtpDumpImpl()
- : _critSect(CriticalSectionWrapper::CreateCriticalSection()),
- _file(*FileWrapper::Create()),
- _startTime(0)
-{
-}
-
-RtpDump::~RtpDump()
-{
-}
-
-RtpDumpImpl::~RtpDumpImpl()
-{
- _file.Flush();
- _file.CloseFile();
- delete &_file;
- delete _critSect;
-}
-
-int32_t RtpDumpImpl::Start(const char* fileNameUTF8)
-{
-
- if (fileNameUTF8 == NULL)
- {
- return -1;
- }
-
- CriticalSectionScoped lock(_critSect);
- _file.Flush();
- _file.CloseFile();
- if (_file.OpenFile(fileNameUTF8, false, false, false) == -1)
- {
- LOG(LS_ERROR) << "Failed to open file.";
- return -1;
- }
-
- // Store start of RTP dump (to be used for offset calculation later).
- _startTime = GetTimeInMS();
-
- // All rtp dump files start with #!rtpplay.
- char magic[16];
- sprintf(magic, "#!rtpplay%s \n", RTPFILE_VERSION);
- if (_file.WriteText(magic) == -1)
- {
- LOG(LS_ERROR) << "Error writing to file.";
- return -1;
- }
-
- // The header according to the rtpdump documentation is sizeof(RD_hdr_t)
- // which is 8 + 4 + 2 = 14 bytes for 32-bit architecture (and 22 bytes on
- // 64-bit architecture). However, Wireshark use 16 bytes for the header
- // regardless of if the binary is 32-bit or 64-bit. Go by the same approach
- // as Wireshark since it makes more sense.
- // http://wiki.wireshark.org/rtpdump explains that an additional 2 bytes
- // of padding should be added to the header.
- char dummyHdr[16];
- memset(dummyHdr, 0, 16);
- if (!_file.Write(dummyHdr, sizeof(dummyHdr)))
- {
- LOG(LS_ERROR) << "Error writing to file.";
- return -1;
- }
- return 0;
-}
-
-int32_t RtpDumpImpl::Stop()
-{
- CriticalSectionScoped lock(_critSect);
- _file.Flush();
- _file.CloseFile();
- return 0;
-}
-
-bool RtpDumpImpl::IsActive() const
-{
- CriticalSectionScoped lock(_critSect);
- return _file.Open();
-}
-
-int32_t RtpDumpImpl::DumpPacket(const uint8_t* packet, size_t packetLength)
-{
- CriticalSectionScoped lock(_critSect);
- if (!IsActive())
- {
- return 0;
- }
-
- if (packet == NULL)
- {
- return -1;
- }
-
- RtpDumpPacketHeader hdr;
- size_t total_size = packetLength + sizeof hdr;
- if (packetLength < 1 || total_size > std::numeric_limits<uint16_t>::max())
- {
- return -1;
- }
-
- // If the packet doesn't contain a valid RTCP header the packet will be
- // considered RTP (without further verification).
- bool isRTCP = RTCP(packet);
-
- // Offset is relative to when recording was started.
- uint32_t offset = GetTimeInMS();
- if (offset < _startTime)
- {
- // Compensate for wraparound.
- offset += MAX_UWORD32 - _startTime + 1;
- } else {
- offset -= _startTime;
- }
- hdr.offset = RtpDumpHtonl(offset);
-
- hdr.length = RtpDumpHtons((uint16_t)(total_size));
- if (isRTCP)
- {
- hdr.plen = 0;
- }
- else
- {
- hdr.plen = RtpDumpHtons((uint16_t)packetLength);
- }
-
- if (!_file.Write(&hdr, sizeof(hdr)))
- {
- LOG(LS_ERROR) << "Error writing to file.";
- return -1;
- }
- if (!_file.Write(packet, packetLength))
- {
- LOG(LS_ERROR) << "Error writing to file.";
- return -1;
- }
-
- return 0;
-}
-
-bool RtpDumpImpl::RTCP(const uint8_t* packet) const
-{
- return packet[1] == 192 || packet[1] == 200 || packet[1] == 201 ||
- packet[1] == 202 || packet[1] == 203 || packet[1] == 204 ||
- packet[1] == 205 || packet[1] == 206 || packet[1] == 207;
-}
-
-// TODO (hellner): why is TickUtil not used here?
-inline uint32_t RtpDumpImpl::GetTimeInMS() const
-{
-#if defined(_WIN32)
- return timeGetTime();
-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
- struct timeval tv;
- struct timezone tz;
- unsigned long val;
-
- gettimeofday(&tv, &tz);
- val = tv.tv_sec * 1000 + tv.tv_usec / 1000;
- return val;
-#endif
-}
-
-inline uint32_t RtpDumpImpl::RtpDumpHtonl(uint32_t x) const
-{
-#if defined(WEBRTC_ARCH_BIG_ENDIAN)
- return x;
-#elif defined(WEBRTC_ARCH_LITTLE_ENDIAN)
- return (x >> 24) + ((((x >> 16) & 0xFF) << 8) + ((((x >> 8) & 0xFF) << 16) +
- ((x & 0xFF) << 24)));
-#endif
-}
-
-inline uint16_t RtpDumpImpl::RtpDumpHtons(uint16_t x) const
-{
-#if defined(WEBRTC_ARCH_BIG_ENDIAN)
- return x;
-#elif defined(WEBRTC_ARCH_LITTLE_ENDIAN)
- return (x >> 8) + ((x & 0xFF) << 8);
-#endif
-}
-} // namespace webrtc
diff --git a/webrtc/modules/utility/source/rtp_dump_impl.h b/webrtc/modules/utility/source/rtp_dump_impl.h
deleted file mode 100644
index b49a690..0000000
--- a/webrtc/modules/utility/source/rtp_dump_impl.h
+++ /dev/null
@@ -1,49 +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.
- */
-
-#ifndef WEBRTC_MODULES_UTILITY_SOURCE_RTP_DUMP_IMPL_H_
-#define WEBRTC_MODULES_UTILITY_SOURCE_RTP_DUMP_IMPL_H_
-
-#include "webrtc/modules/utility/interface/rtp_dump.h"
-
-namespace webrtc {
-class CriticalSectionWrapper;
-class FileWrapper;
-class RtpDumpImpl : public RtpDump
-{
-public:
- RtpDumpImpl();
- virtual ~RtpDumpImpl();
-
- int32_t Start(const char* fileNameUTF8) override;
- int32_t Stop() override;
- bool IsActive() const override;
- int32_t DumpPacket(const uint8_t* packet, size_t packetLength) override;
-
-private:
- // Return the system time in ms.
- inline uint32_t GetTimeInMS() const;
- // Return x in network byte order (big endian).
- inline uint32_t RtpDumpHtonl(uint32_t x) const;
- // Return x in network byte order (big endian).
- inline uint16_t RtpDumpHtons(uint16_t x) const;
-
- // Return true if the packet starts with a valid RTCP header.
- // Note: See RtpUtility::RtpHeaderParser::RTCP() for details on how
- // to determine if the packet is an RTCP packet.
- bool RTCP(const uint8_t* packet) const;
-
-private:
- CriticalSectionWrapper* _critSect;
- FileWrapper& _file;
- uint32_t _startTime;
-};
-} // namespace webrtc
-#endif // WEBRTC_MODULES_UTILITY_SOURCE_RTP_DUMP_IMPL_H_
diff --git a/webrtc/modules/utility/utility.gypi b/webrtc/modules/utility/utility.gypi
index 51ee624..1a203bf 100644
--- a/webrtc/modules/utility/utility.gypi
+++ b/webrtc/modules/utility/utility.gypi
@@ -24,7 +24,6 @@
'interface/helpers_android.h',
'interface/jvm_android.h',
'interface/process_thread.h',
- 'interface/rtp_dump.h',
'source/audio_frame_operations.cc',
'source/coder.cc',
'source/coder.h',
@@ -36,8 +35,6 @@
'source/jvm_android.cc',
'source/process_thread_impl.cc',
'source/process_thread_impl.h',
- 'source/rtp_dump_impl.cc',
- 'source/rtp_dump_impl.h',
],
},
], # targets
diff --git a/webrtc/video_engine/vie_channel.cc b/webrtc/video_engine/vie_channel.cc
index 86fe598..880acf2 100644
--- a/webrtc/video_engine/vie_channel.cc
+++ b/webrtc/video_engine/vie_channel.cc
@@ -105,7 +105,6 @@
nullptr,
nullptr)),
vie_receiver_(channel_id, vcm_, remote_bitrate_estimator, this),
- vie_sender_(channel_id),
vie_sync_(vcm_, this),
stats_observer_(new ChannelStatsObserver(this)),
vcm_receive_stats_callback_(NULL),
@@ -1294,23 +1293,6 @@
send_bitrate_observer_.Set(observer);
}
-int32_t ViEChannel::StartRTPDump(const char file_nameUTF8[1024],
- RTPDirections direction) {
- if (direction == kRtpIncoming) {
- return vie_receiver_.StartRTPDump(file_nameUTF8);
- } else {
- return vie_sender_.StartRTPDump(file_nameUTF8);
- }
-}
-
-int32_t ViEChannel::StopRTPDump(RTPDirections direction) {
- if (direction == kRtpIncoming) {
- return vie_receiver_.StopRTPDump();
- } else {
- return vie_sender_.StopRTPDump();
- }
-}
-
int32_t ViEChannel::StartSend() {
CriticalSectionScoped cs(callback_cs_.get());
if (!external_transport_) {
diff --git a/webrtc/video_engine/vie_channel.h b/webrtc/video_engine/vie_channel.h
index 05550ca..1ba6417 100644
--- a/webrtc/video_engine/vie_channel.h
+++ b/webrtc/video_engine/vie_channel.h
@@ -248,10 +248,6 @@
// Called on any new send bitrate estimate.
void RegisterSendBitrateObserver(BitrateStatisticsObserver* observer);
- int32_t StartRTPDump(const char file_nameUTF8[1024],
- RTPDirections direction);
- int32_t StopRTPDump(RTPDirections direction);
-
// Implements RtpFeedback.
virtual int32_t OnInitializeDecoder(
const int32_t id,
diff --git a/webrtc/video_engine/vie_receiver.cc b/webrtc/video_engine/vie_receiver.cc
index 2cf5678..dcdacd6 100644
--- a/webrtc/video_engine/vie_receiver.cc
+++ b/webrtc/video_engine/vie_receiver.cc
@@ -21,7 +21,6 @@
#include "webrtc/modules/rtp_rtcp/interface/rtp_payload_registry.h"
#include "webrtc/modules/rtp_rtcp/interface/rtp_receiver.h"
#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h"
-#include "webrtc/modules/utility/interface/rtp_dump.h"
#include "webrtc/modules/video_coding/main/interface/video_coding.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/logging.h"
@@ -55,7 +54,6 @@
vcm_(module_vcm),
remote_bitrate_estimator_(remote_bitrate_estimator),
ntp_estimator_(new RemoteNtpTimeEstimator(clock_)),
- rtp_dump_(NULL),
receiving_(false),
restored_packet_in_use_(false),
receiving_ast_enabled_(false),
@@ -66,11 +64,6 @@
ViEReceiver::~ViEReceiver() {
UpdateHistograms();
- if (rtp_dump_) {
- rtp_dump_->Stop();
- RtpDump::DestroyRtpDump(rtp_dump_);
- rtp_dump_ = NULL;
- }
}
void ViEReceiver::UpdateHistograms() {
@@ -254,9 +247,6 @@
if (!receiving_) {
return -1;
}
- if (rtp_dump_) {
- rtp_dump_->DumpPacket(rtp_packet, rtp_packet_length);
- }
}
RTPHeader header;
@@ -407,10 +397,6 @@
return -1;
}
- if (rtp_dump_) {
- rtp_dump_->DumpPacket(rtcp_packet, rtcp_packet_length);
- }
-
std::list<RtpRtcp*>::iterator it = rtp_rtcp_simulcast_.begin();
while (it != rtp_rtcp_simulcast_.end()) {
RtpRtcp* rtp_rtcp = *it++;
@@ -452,39 +438,6 @@
receiving_ = false;
}
-int ViEReceiver::StartRTPDump(const char file_nameUTF8[1024]) {
- CriticalSectionScoped cs(receive_cs_.get());
- if (rtp_dump_) {
- // Restart it if it already exists and is started
- rtp_dump_->Stop();
- } else {
- rtp_dump_ = RtpDump::CreateRtpDump();
- if (rtp_dump_ == NULL) {
- return -1;
- }
- }
- if (rtp_dump_->Start(file_nameUTF8) != 0) {
- RtpDump::DestroyRtpDump(rtp_dump_);
- rtp_dump_ = NULL;
- return -1;
- }
- return 0;
-}
-
-int ViEReceiver::StopRTPDump() {
- CriticalSectionScoped cs(receive_cs_.get());
- if (rtp_dump_) {
- if (rtp_dump_->IsActive()) {
- rtp_dump_->Stop();
- }
- RtpDump::DestroyRtpDump(rtp_dump_);
- rtp_dump_ = NULL;
- } else {
- return -1;
- }
- return 0;
-}
-
ReceiveStatistics* ViEReceiver::GetReceiveStatistics() const {
return rtp_receive_statistics_.get();
}
diff --git a/webrtc/video_engine/vie_receiver.h b/webrtc/video_engine/vie_receiver.h
index a1f82df..8c1506f 100644
--- a/webrtc/video_engine/vie_receiver.h
+++ b/webrtc/video_engine/vie_receiver.h
@@ -27,7 +27,6 @@
class RemoteNtpTimeEstimator;
class ReceiveStatistics;
class RemoteBitrateEstimator;
-class RtpDump;
class RtpHeaderParser;
class RTPPayloadRegistry;
class RtpReceiver;
@@ -68,9 +67,6 @@
void StartReceive();
void StopReceive();
- int StartRTPDump(const char file_nameUTF8[1024]);
- int StopRTPDump();
-
// Receives packets from external transport.
int ReceivedRTPPacket(const void* rtp_packet, size_t rtp_packet_length,
const PacketTime& packet_time);
@@ -115,7 +111,6 @@
rtc::scoped_ptr<RemoteNtpTimeEstimator> ntp_estimator_;
- RtpDump* rtp_dump_;
bool receiving_;
uint8_t restored_packet_[kViEMaxMtu];
bool restored_packet_in_use_;
diff --git a/webrtc/video_engine/vie_sender.cc b/webrtc/video_engine/vie_sender.cc
index db7a5b1..b703e9d 100644
--- a/webrtc/video_engine/vie_sender.cc
+++ b/webrtc/video_engine/vie_sender.cc
@@ -10,28 +10,15 @@
#include "webrtc/video_engine/vie_sender.h"
-#include <assert.h>
#include "webrtc/modules/rtp_rtcp/source/rtp_sender.h"
-
-#include "webrtc/modules/utility/interface/rtp_dump.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/trace.h"
namespace webrtc {
-ViESender::ViESender(int channel_id)
- : channel_id_(channel_id),
- critsect_(CriticalSectionWrapper::CreateCriticalSection()),
- transport_(NULL),
- rtp_dump_(NULL) {
-}
-
-ViESender::~ViESender() {
- if (rtp_dump_) {
- rtp_dump_->Stop();
- RtpDump::DestroyRtpDump(rtp_dump_);
- rtp_dump_ = NULL;
- }
+ViESender::ViESender()
+ : critsect_(CriticalSectionWrapper::CreateCriticalSection()),
+ transport_(NULL) {
}
int ViESender::RegisterSendTransport(Transport* transport) {
@@ -52,66 +39,22 @@
return 0;
}
-int ViESender::StartRTPDump(const char file_nameUTF8[1024]) {
- CriticalSectionScoped cs(critsect_.get());
- if (rtp_dump_) {
- // Packet dump is already started, restart it.
- rtp_dump_->Stop();
- } else {
- rtp_dump_ = RtpDump::CreateRtpDump();
- if (rtp_dump_ == NULL) {
- return -1;
- }
- }
- if (rtp_dump_->Start(file_nameUTF8) != 0) {
- RtpDump::DestroyRtpDump(rtp_dump_);
- rtp_dump_ = NULL;
- return -1;
- }
- return 0;
-}
-
-int ViESender::StopRTPDump() {
- CriticalSectionScoped cs(critsect_.get());
- if (rtp_dump_) {
- if (rtp_dump_->IsActive()) {
- rtp_dump_->Stop();
- }
- RtpDump::DestroyRtpDump(rtp_dump_);
- rtp_dump_ = NULL;
- } else {
- return -1;
- }
- return 0;
-}
-
-int ViESender::SendPacket(int vie_id, const void* data, size_t len) {
+int ViESender::SendPacket(int id, const void* data, size_t len) {
CriticalSectionScoped cs(critsect_.get());
if (!transport_) {
// No transport
return -1;
}
- assert(ChannelId(vie_id) == channel_id_);
-
- if (rtp_dump_) {
- rtp_dump_->DumpPacket(static_cast<const uint8_t*>(data), len);
- }
-
- return transport_->SendPacket(channel_id_, data, len);
+ return transport_->SendPacket(id, data, len);
}
-int ViESender::SendRTCPPacket(int vie_id, const void* data, size_t len) {
+int ViESender::SendRTCPPacket(int id, const void* data, size_t len) {
CriticalSectionScoped cs(critsect_.get());
if (!transport_) {
return -1;
}
- assert(ChannelId(vie_id) == channel_id_);
- if (rtp_dump_) {
- rtp_dump_->DumpPacket(static_cast<const uint8_t*>(data), len);
- }
-
- return transport_->SendRTCPPacket(channel_id_, data, len);
+ return transport_->SendRTCPPacket(id, data, len);
}
} // namespace webrtc
diff --git a/webrtc/video_engine/vie_sender.h b/webrtc/video_engine/vie_sender.h
index 3e6bd95..1589ce0 100644
--- a/webrtc/video_engine/vie_sender.h
+++ b/webrtc/video_engine/vie_sender.h
@@ -22,34 +22,25 @@
namespace webrtc {
class CriticalSectionWrapper;
-class RtpDump;
class Transport;
class VideoCodingModule;
class ViESender: public Transport {
public:
- explicit ViESender(const int32_t channel_id);
- ~ViESender();
+ ViESender();
// Registers transport to use for sending RTP and RTCP.
int RegisterSendTransport(Transport* transport);
int DeregisterSendTransport();
- // Stores all incoming packets to file.
- int StartRTPDump(const char file_nameUTF8[1024]);
- int StopRTPDump();
-
// Implements Transport.
int SendPacket(int vie_id, const void* data, size_t len) override;
int SendRTCPPacket(int vie_id, const void* data, size_t len) override;
private:
- const int32_t channel_id_;
-
rtc::scoped_ptr<CriticalSectionWrapper> critsect_;
Transport* transport_;
- RtpDump* rtp_dump_;
};
} // namespace webrtc
diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc
index 9038d6b..af2c58e 100644
--- a/webrtc/voice_engine/channel.cc
+++ b/webrtc/voice_engine/channel.cc
@@ -25,7 +25,6 @@
#include "webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h"
#include "webrtc/modules/utility/interface/audio_frame_operations.h"
#include "webrtc/modules/utility/interface/process_thread.h"
-#include "webrtc/modules/utility/interface/rtp_dump.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/logging.h"
#include "webrtc/system_wrappers/interface/trace.h"
@@ -245,14 +244,6 @@
uint8_t* bufferToSendPtr = (uint8_t*)data;
size_t bufferLength = len;
- // Dump the RTP packet to a file (if RTP dump is enabled).
- if (_rtpDumpOut.DumpPacket((const uint8_t*)data, len) == -1)
- {
- WEBRTC_TRACE(kTraceWarning, kTraceVoice,
- VoEId(_instanceId,_channelId),
- "Channel::SendPacket() RTP dump to output file failed");
- }
-
int n = _transportPtr->SendPacket(channel, bufferToSendPtr,
bufferLength);
if (n < 0) {
@@ -290,14 +281,6 @@
uint8_t* bufferToSendPtr = (uint8_t*)data;
size_t bufferLength = len;
- // Dump the RTCP packet to a file (if RTP dump is enabled).
- if (_rtpDumpOut.DumpPacket((const uint8_t*)data, len) == -1)
- {
- WEBRTC_TRACE(kTraceWarning, kTraceVoice,
- VoEId(_instanceId,_channelId),
- "Channel::SendPacket() RTCP dump to output file failed");
- }
-
int n = _transportPtr->SendRTCPPacket(channel,
bufferToSendPtr,
bufferLength);
@@ -759,8 +742,6 @@
VoEModuleId(instanceId, channelId), Clock::GetRealTimeClock(), this,
this, this, rtp_payload_registry_.get())),
telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()),
- _rtpDumpIn(*RtpDump::CreateRtpDump()),
- _rtpDumpOut(*RtpDump::CreateRtpDump()),
_outputAudioLevel(),
_externalTransport(false),
_inputFilePlayerPtr(NULL),
@@ -927,8 +908,6 @@
// End of modules shutdown
// Delete other objects
- RtpDump::DestroyRtpDump(&_rtpDumpIn);
- RtpDump::DestroyRtpDump(&_rtpDumpOut);
delete &_callbackCritSect;
delete &_fileCritSect;
delete &volume_settings_critsect_;
@@ -1640,13 +1619,6 @@
// Store playout timestamp for the received RTP packet
UpdatePlayoutTimestamp(false);
- // Dump the RTP packet to a file (if RTP dump is enabled).
- if (_rtpDumpIn.DumpPacket((const uint8_t*)data,
- (uint16_t)length) == -1) {
- WEBRTC_TRACE(kTraceWarning, kTraceVoice,
- VoEId(_instanceId,_channelId),
- "Channel::SendPacket() RTP dump to input file failed");
- }
const uint8_t* received_packet = reinterpret_cast<const uint8_t*>(data);
RTPHeader header;
if (!rtp_header_parser_->Parse(received_packet, length, &header)) {
@@ -1745,13 +1717,6 @@
// Store playout timestamp for the received RTCP packet
UpdatePlayoutTimestamp(true);
- // Dump the RTCP packet to a file (if RTP dump is enabled).
- if (_rtpDumpIn.DumpPacket((const uint8_t*)data, length) == -1) {
- WEBRTC_TRACE(kTraceWarning, kTraceVoice,
- VoEId(_instanceId,_channelId),
- "Channel::SendPacket() RTCP dump to input file failed");
- }
-
// Deliver RTCP packet to RTP/RTCP module for parsing
if (_rtpRtcpModule->IncomingRtcpPacket((const uint8_t*)data, length) == -1) {
_engineStatisticsPtr->SetLastError(
@@ -3372,82 +3337,6 @@
return _rtpRtcpModule->SendNACK(sequence_numbers, length);
}
-int
-Channel::StartRTPDump(const char fileNameUTF8[1024],
- RTPDirections direction)
-{
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
- "Channel::StartRTPDump()");
- if ((direction != kRtpIncoming) && (direction != kRtpOutgoing))
- {
- _engineStatisticsPtr->SetLastError(
- VE_INVALID_ARGUMENT, kTraceError,
- "StartRTPDump() invalid RTP direction");
- return -1;
- }
- RtpDump* rtpDumpPtr = (direction == kRtpIncoming) ?
- &_rtpDumpIn : &_rtpDumpOut;
- if (rtpDumpPtr == NULL)
- {
- assert(false);
- return -1;
- }
- if (rtpDumpPtr->IsActive())
- {
- rtpDumpPtr->Stop();
- }
- if (rtpDumpPtr->Start(fileNameUTF8) != 0)
- {
- _engineStatisticsPtr->SetLastError(
- VE_BAD_FILE, kTraceError,
- "StartRTPDump() failed to create file");
- return -1;
- }
- return 0;
-}
-
-int
-Channel::StopRTPDump(RTPDirections direction)
-{
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
- "Channel::StopRTPDump()");
- if ((direction != kRtpIncoming) && (direction != kRtpOutgoing))
- {
- _engineStatisticsPtr->SetLastError(
- VE_INVALID_ARGUMENT, kTraceError,
- "StopRTPDump() invalid RTP direction");
- return -1;
- }
- RtpDump* rtpDumpPtr = (direction == kRtpIncoming) ?
- &_rtpDumpIn : &_rtpDumpOut;
- if (rtpDumpPtr == NULL)
- {
- assert(false);
- return -1;
- }
- if (!rtpDumpPtr->IsActive())
- {
- return 0;
- }
- return rtpDumpPtr->Stop();
-}
-
-bool
-Channel::RTPDumpIsActive(RTPDirections direction)
-{
- if ((direction != kRtpIncoming) &&
- (direction != kRtpOutgoing))
- {
- _engineStatisticsPtr->SetLastError(
- VE_INVALID_ARGUMENT, kTraceError,
- "RTPDumpIsActive() invalid RTP direction");
- return false;
- }
- RtpDump* rtpDumpPtr = (direction == kRtpIncoming) ?
- &_rtpDumpIn : &_rtpDumpOut;
- return rtpDumpPtr->IsActive();
-}
-
uint32_t
Channel::Demultiplex(const AudioFrame& audioFrame)
{
diff --git a/webrtc/voice_engine/channel.h b/webrtc/voice_engine/channel.h
index ea8e4fd..bb9ded9 100644
--- a/webrtc/voice_engine/channel.h
+++ b/webrtc/voice_engine/channel.h
@@ -51,7 +51,6 @@
class ProcessThread;
class ReceiveStatistics;
class RemoteNtpTimeEstimator;
-class RtpDump;
class RTPPayloadRegistry;
class RtpReceiver;
class RTPReceiverAudio;
@@ -339,9 +338,6 @@
int SetCodecFECStatus(bool enable);
bool GetCodecFECStatus();
void SetNACKStatus(bool enable, int maxNumberOfPackets);
- int StartRTPDump(const char fileNameUTF8[1024], RTPDirections direction);
- int StopRTPDump(RTPDirections direction);
- bool RTPDumpIsActive(RTPDirections direction);
// From AudioPacketizationCallback in the ACM
int32_t SendData(FrameType frameType,
@@ -496,8 +492,6 @@
TelephoneEventHandler* telephone_event_handler_;
rtc::scoped_ptr<RtpRtcp> _rtpRtcpModule;
rtc::scoped_ptr<AudioCodingModule> audio_coding_;
- RtpDump& _rtpDumpIn;
- RtpDump& _rtpDumpOut;
AudioLevel _outputAudioLevel;
bool _externalTransport;
AudioFrame _audioFrame;
diff --git a/webrtc/voice_engine/include/voe_rtp_rtcp.h b/webrtc/voice_engine/include/voe_rtp_rtcp.h
index a032cf8..ce96581 100644
--- a/webrtc/voice_engine/include/voe_rtp_rtcp.h
+++ b/webrtc/voice_engine/include/voe_rtp_rtcp.h
@@ -221,24 +221,6 @@
// If using NACK, NACK should be enabled on both endpoints in a call.
virtual int SetNACKStatus(int channel, bool enable, int maxNoPackets) = 0;
- // Enables capturing of RTP packets to a binary file on a specific
- // |channel| and for a given |direction|. The file can later be replayed
- // using e.g. RTP Tools rtpplay since the binary file format is
- // compatible with the rtpdump format.
- virtual int StartRTPDump(int channel,
- const char fileNameUTF8[1024],
- RTPDirections direction = kRtpIncoming) = 0;
-
- // Disables capturing of RTP packets to a binary file on a specific
- // |channel| and for a given |direction|.
- virtual int StopRTPDump(int channel,
- RTPDirections direction = kRtpIncoming) = 0;
-
- // Gets the the current RTP capturing state for the specified
- // |channel| and |direction|.
- virtual int RTPDumpIsActive(int channel,
- RTPDirections direction = kRtpIncoming) = 0;
-
// Will be removed. Don't use.
virtual int RegisterRTPObserver(int channel, VoERTPObserver& observer) {
return -1;
diff --git a/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc b/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc
index e5b2f30..236232b 100644
--- a/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc
+++ b/webrtc/voice_engine/test/auto_test/standard/rtp_rtcp_test.cc
@@ -117,23 +117,3 @@
EXPECT_EQ(0, voe_rtp_rtcp_->GetRemoteSSRC(channel_, ssrc));
EXPECT_EQ(local_ssrc, ssrc);
}
-
-// TODO(xians, phoglund): Re-enable when issue 372 is resolved.
-TEST_F(RtpRtcpTest, DISABLED_CanCreateRtpDumpFilesWithoutError) {
- // Create two RTP dump files (3 seconds long). You can verify these after
- // the test using rtpplay or NetEqRTPplay if you like.
- std::string output_path = webrtc::test::OutputPath();
- std::string incoming_filename = output_path + "dump_in_3sec.rtp";
- std::string outgoing_filename = output_path + "dump_out_3sec.rtp";
-
- EXPECT_EQ(0, voe_rtp_rtcp_->StartRTPDump(
- channel_, incoming_filename.c_str(), webrtc::kRtpIncoming));
- EXPECT_EQ(0, voe_rtp_rtcp_->StartRTPDump(
- channel_, outgoing_filename.c_str(), webrtc::kRtpOutgoing));
-
- Sleep(3000);
-
- EXPECT_EQ(0, voe_rtp_rtcp_->StopRTPDump(channel_, webrtc::kRtpIncoming));
- EXPECT_EQ(0, voe_rtp_rtcp_->StopRTPDump(channel_, webrtc::kRtpOutgoing));
-}
-
diff --git a/webrtc/voice_engine/voe_rtp_rtcp_impl.cc b/webrtc/voice_engine/voe_rtp_rtcp_impl.cc
index fa15bc8..c98dd90 100644
--- a/webrtc/voice_engine/voe_rtp_rtcp_impl.cc
+++ b/webrtc/voice_engine/voe_rtp_rtcp_impl.cc
@@ -444,61 +444,6 @@
return 0;
}
-int VoERTP_RTCPImpl::StartRTPDump(int channel,
- const char fileNameUTF8[1024],
- RTPDirections direction) {
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StartRTPDump(channel=%d, fileNameUTF8=%s, direction=%d)",
- channel, fileNameUTF8, direction);
- static_assert(1024 == FileWrapper::kMaxFileNameSize, "");
- if (!_shared->statistics().Initialized()) {
- _shared->SetLastError(VE_NOT_INITED, kTraceError);
- return -1;
- }
- voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
- voe::Channel* channelPtr = ch.channel();
- if (channelPtr == NULL) {
- _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
- "StartRTPDump() failed to locate channel");
- return -1;
- }
- return channelPtr->StartRTPDump(fileNameUTF8, direction);
-}
-
-int VoERTP_RTCPImpl::StopRTPDump(int channel, RTPDirections direction) {
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "StopRTPDump(channel=%d, direction=%d)", channel, direction);
- if (!_shared->statistics().Initialized()) {
- _shared->SetLastError(VE_NOT_INITED, kTraceError);
- return -1;
- }
- voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
- voe::Channel* channelPtr = ch.channel();
- if (channelPtr == NULL) {
- _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
- "StopRTPDump() failed to locate channel");
- return -1;
- }
- return channelPtr->StopRTPDump(direction);
-}
-
-int VoERTP_RTCPImpl::RTPDumpIsActive(int channel, RTPDirections direction) {
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "RTPDumpIsActive(channel=%d, direction=%d)", channel, direction);
- if (!_shared->statistics().Initialized()) {
- _shared->SetLastError(VE_NOT_INITED, kTraceError);
- return -1;
- }
- voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
- voe::Channel* channelPtr = ch.channel();
- if (channelPtr == NULL) {
- _shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
- "StopRTPDump() failed to locate channel");
- return -1;
- }
- return channelPtr->RTPDumpIsActive(direction);
-}
-
#endif // #ifdef WEBRTC_VOICE_ENGINE_RTP_RTCP_API
} // namespace webrtc
diff --git a/webrtc/voice_engine/voe_rtp_rtcp_impl.h b/webrtc/voice_engine/voe_rtp_rtcp_impl.h
index 1d0978d..4d4c701 100644
--- a/webrtc/voice_engine/voe_rtp_rtcp_impl.h
+++ b/webrtc/voice_engine/voe_rtp_rtcp_impl.h
@@ -79,16 +79,6 @@
// NACK
int SetNACKStatus(int channel, bool enable, int maxNoPackets) override;
- // Store RTP and RTCP packets and dump to file (compatible with rtpplay)
- int StartRTPDump(int channel,
- const char fileNameUTF8[1024],
- RTPDirections direction = kRtpIncoming) override;
-
- int StopRTPDump(int channel, RTPDirections direction = kRtpIncoming) override;
-
- int RTPDumpIsActive(int channel,
- RTPDirections direction = kRtpIncoming) override;
-
protected:
VoERTP_RTCPImpl(voe::SharedData* shared);
~VoERTP_RTCPImpl() override;