• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef WEBRTC_MODULES_UTILITY_SOURCE_RTP_DUMP_IMPL_H_
12 #define WEBRTC_MODULES_UTILITY_SOURCE_RTP_DUMP_IMPL_H_
13 
14 #include "webrtc/modules/utility/interface/rtp_dump.h"
15 
16 namespace webrtc {
17 class CriticalSectionWrapper;
18 class FileWrapper;
19 class RtpDumpImpl : public RtpDump
20 {
21 public:
22     RtpDumpImpl();
23     virtual ~RtpDumpImpl();
24 
25     virtual int32_t Start(const char* fileNameUTF8) OVERRIDE;
26     virtual int32_t Stop() OVERRIDE;
27     virtual bool IsActive() const OVERRIDE;
28     virtual int32_t DumpPacket(const uint8_t* packet,
29                                uint16_t packetLength) OVERRIDE;
30 private:
31     // Return the system time in ms.
32     inline uint32_t GetTimeInMS() const;
33     // Return x in network byte order (big endian).
34     inline uint32_t RtpDumpHtonl(uint32_t x) const;
35     // Return x in network byte order (big endian).
36     inline uint16_t RtpDumpHtons(uint16_t x) const;
37 
38     // Return true if the packet starts with a valid RTCP header.
39     // Note: See RtpUtility::RtpHeaderParser::RTCP() for details on how
40     //       to determine if the packet is an RTCP packet.
41     bool RTCP(const uint8_t* packet) const;
42 
43 private:
44     CriticalSectionWrapper* _critSect;
45     FileWrapper& _file;
46     uint32_t _startTime;
47 };
48 }  // namespace webrtc
49 #endif // WEBRTC_MODULES_UTILITY_SOURCE_RTP_DUMP_IMPL_H_
50