2025-02-27 17:59:18 +08:00

144 lines
3.4 KiB
C++
Executable File

#include <rtpsession.h>
#include <rtpudpv4transmitter.h>
#include <rtpipv4address.h>
#include <rtpsessionparams.h>
#include <rtperrors.h>
#include <rtplibraryversion.h>
#include <rtppacket.h>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <common/bk_include.h>
#include <os/os.h>
#include <components/system.h>
using namespace jrtplib;
extern "C" {
#if (CONFIG_TASK_WDT)
extern void bk_task_wdt_feed(void);
#endif
int test_rtp_send(u8 *destip, u16 portbase, u16 destport)
{
#if 1
unsigned int i = 1;
int status;
RTPSession *sess = new RTPSession;
RTPUDPv4TransmissionParams transparams;
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/10.0);
sessparams.SetAcceptOwnPackets(false);
transparams.SetPortbase(portbase);
//transparams.SetRTCPMultiplexing(true);
os_printf("rtp send demo\r\n");
sess->Create(sessparams,&transparams);
RTPIPv4Address addr(destip,destport,false);
sess->AddDestination(addr);
while(1)
{
status = sess->SendPacket((void *)"123456789011111",15,0,false,10);
if (!status)
os_printf("\nSending packet %d\n",i++);
sess->Poll();
RTPTime::Wait(RTPTime(1,0));
}
sess->BYEDestroy(RTPTime(10,0),0,0);
delete []sess;
#else
unsigned int i = 1;
int status;
char *buffer = NULL;
RTPSession *sess = new RTPSession;
RTPUDPv4TransmissionParams transparams;
RTPSessionParams sessparams;
buffer = (char *)malloc(1400*sizeof(char));
memset(buffer, 'a', 1400);
sessparams.SetOwnTimestampUnit(1.0/10.0);
sessparams.SetAcceptOwnPackets(false);
transparams.SetPortbase(portbase);
//transparams.SetRTCPMultiplexing(true);
os_printf("rtp send demo\r\n");
sess->Create(sessparams,&transparams);
RTPIPv4Address addr(destip,destport,false);
sess->AddDestination(addr);
while(1)
{
status = sess->SendPacket((void *)buffer,1400,0,false,10);
if (!status)
os_printf("\nSending packet %d\n",i++);
//sess->Poll();
//RTPTime::Wait(RTPTime(1,0));
#if (CONFIG_TASK_WDT)
bk_task_wdt_feed();
#endif
}
sess->BYEDestroy(RTPTime(10,0),0,0);
delete []sess;
#endif
return 0;
}
int test_rtp_recv(u8 *destip, u16 destport)
{
RTPSession *sess = new RTPSession;
uint16_t portbase = 7180;
bool done = false;
unsigned int i = 1;
RTPUDPv4TransmissionParams transparams;
RTPSessionParams sessparams;
sessparams.SetOwnTimestampUnit(1.0/10.0);
sessparams.SetAcceptOwnPackets(false);
transparams.SetPortbase(portbase);
//transparams.SetRTCPMultiplexing(true);
sess->Create(sessparams,&transparams);
#if 1 //rtcp test by linwei
RTPIPv4Address addr(destip,destport,false);
sess->AddDestination(addr);
#endif
sess->BeginDataAccess();
RTPTime delay(0.020);
while (!done)
{
sess->Poll();
if (sess->GotoFirstSourceWithData())
{
do {
RTPPacket *pack;
while ((pack = sess->GetNextPacket()) != NULL)
{
os_printf("receiving packet %d\r\n",i++);
/*int len = pack->GetPayloadLength();
for (int i = 0; i <len; i ++)
os_printf("%c ", *(pack->GetPayloadData() + i));
os_printf("\r\n");*/
sess->DeletePacket(pack);
}
} while (sess->GotoNextSourceWithData());
}
#if (CONFIG_TASK_WDT)
bk_task_wdt_feed();
#endif
}
sess->EndDataAccess();
delay = RTPTime(10.0);
sess->BYEDestroy(delay,0,0);
delete []sess;
return 0;
}
}