85 lines
1.9 KiB
C++
85 lines
1.9 KiB
C++
/* Copyright(C) 2007-2017 VoIPobjects (voipobjects.com)
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef __HL_RTP_H
|
|
#define __HL_RTP_H
|
|
|
|
#include "jrtplib/src/rtppacket.h"
|
|
#include "HL_Uuid.h"
|
|
#include "HL_InternetAddress.h"
|
|
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
// Class to carry rtp/rtcp socket pair
|
|
template<class T>
|
|
struct RtpPair
|
|
{
|
|
T mRtp;
|
|
T mRtcp;
|
|
|
|
RtpPair()
|
|
{}
|
|
|
|
RtpPair(const T& rtp, const T& rtcp)
|
|
:mRtp(rtp), mRtcp(rtcp)
|
|
{}
|
|
|
|
bool multiplexed() { return mRtp == mRtcp; }
|
|
};
|
|
|
|
class RtpHelper
|
|
{
|
|
public:
|
|
static bool isRtp(const void* buffer, int length);
|
|
static int findPtype(const void* buffer, int length);
|
|
static bool isRtpOrRtcp(const void* buffer, int length);
|
|
static bool isRtcp(const void* buffer, int length);
|
|
static unsigned findSsrc(const void* buffer, int length);
|
|
static int findPayloadLength(const void* buffer, int length);
|
|
};
|
|
|
|
class RtpDump
|
|
{
|
|
protected:
|
|
struct RtpData
|
|
{
|
|
jrtplib::RTPPacket* mPacket;
|
|
void* mData;
|
|
unsigned mLength;
|
|
};
|
|
|
|
typedef std::vector<RtpData> PacketList;
|
|
PacketList mPacketList;
|
|
std::string mFilename;
|
|
|
|
public:
|
|
RtpDump(const char* filename);
|
|
~RtpDump();
|
|
|
|
void load();
|
|
int count() const;
|
|
jrtplib::RTPPacket& packetAt(int index);
|
|
void add(const void* data, int len);
|
|
void flush();
|
|
};
|
|
|
|
struct MediaStreamId
|
|
{
|
|
InternetAddress mSource;
|
|
InternetAddress mDestination;
|
|
uint32_t mSSRC = 0;
|
|
bool mSsrcIsId = true;
|
|
Uuid mLinkId;
|
|
bool operator < (const MediaStreamId& s2) const;
|
|
bool operator == (const MediaStreamId& right) const;
|
|
|
|
std::string toString() const;
|
|
std::string getDetectDescription() const;
|
|
std::string getFinishDescription() const;
|
|
};
|
|
|
|
#endif
|