mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-02 22:12:00 +00:00
Support for Signal calls.
Merge in RedPhone // FREEBIE
This commit is contained in:
78
jni/redphone/RtpPacket.cpp
Normal file
78
jni/redphone/RtpPacket.cpp
Normal file
@@ -0,0 +1,78 @@
|
||||
#include "RtpPacket.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include "SrtpStream.h"
|
||||
//#include <srtp.h>
|
||||
|
||||
RtpPacket::RtpPacket(char* packetBuf, int packetLen) {
|
||||
packet = (char*)malloc(packetLen);
|
||||
payloadLen = packetLen - sizeof(RtpHeader);
|
||||
memcpy(packet, packetBuf, packetLen);
|
||||
}
|
||||
|
||||
RtpPacket::RtpPacket(char* payload, int payloadBufLen, int sequenceNumber, int timestamp) {
|
||||
packet = (char*)malloc(sizeof(RtpHeader) + payloadBufLen + SRTP_MAC_SIZE);
|
||||
payloadLen = payloadBufLen;
|
||||
|
||||
memset(packet, 0, sizeof(RtpHeader) + payloadLen + SRTP_MAC_SIZE);
|
||||
|
||||
RtpHeader *header = (RtpHeader*)packet;
|
||||
header->flags = htons(32768);
|
||||
header->sequenceNumber = htons(sequenceNumber);
|
||||
header->ssrc = 0;
|
||||
header->timestamp = htonl(timestamp);
|
||||
|
||||
memcpy(packet + sizeof(RtpHeader), payload, payloadLen);
|
||||
}
|
||||
|
||||
RtpPacket::~RtpPacket() {
|
||||
free(packet);
|
||||
}
|
||||
|
||||
uint16_t RtpPacket::getSequenceNumber() {
|
||||
RtpHeader *header = (RtpHeader*)packet;
|
||||
return ntohs(header->sequenceNumber);
|
||||
}
|
||||
|
||||
int RtpPacket::getPayloadType() {
|
||||
RtpHeader *header = (RtpHeader*)packet;
|
||||
return header->flags & 0x7F;
|
||||
}
|
||||
|
||||
uint32_t RtpPacket::getTimestamp() {
|
||||
RtpHeader *header = (RtpHeader*)packet;
|
||||
return ntohl(header->timestamp);
|
||||
}
|
||||
|
||||
void RtpPacket::setTimestamp(uint32_t timestamp) {
|
||||
RtpHeader *header = (RtpHeader*)packet;
|
||||
header->timestamp = htonl(timestamp);
|
||||
}
|
||||
|
||||
uint32_t RtpPacket::getSsrc() {
|
||||
RtpHeader *header = (RtpHeader*)packet;
|
||||
return ntohl(header->ssrc);
|
||||
}
|
||||
|
||||
char* RtpPacket::getPayload() {
|
||||
return packet + sizeof(RtpHeader);
|
||||
}
|
||||
|
||||
uint32_t RtpPacket::getPayloadLen() {
|
||||
return payloadLen;
|
||||
}
|
||||
|
||||
void RtpPacket::setPayloadLen(uint32_t payloadLen) {
|
||||
this->payloadLen = payloadLen;
|
||||
}
|
||||
|
||||
char* RtpPacket::getSerializedPacket() {
|
||||
return packet;
|
||||
}
|
||||
|
||||
int RtpPacket::getSerializedPacketLen() {
|
||||
return sizeof(RtpHeader) + payloadLen;
|
||||
}
|
||||
Reference in New Issue
Block a user