Exemplo n.º 1
0
int H223AL2Sender::SendPDU(BYTE *buffer,int len)
{
	//Crc
	CRC8 crc;

	//Build SDU
	H223MuxSDU *sdu = new H223MuxSDU();

	//If we have sn
	if (useSN)
		//Append
		sdu->Push(sn++);

	//Set buffer
	sdu->Push(buffer,len);

	//Calc crc
	crc.Add(sdu->GetPointer(),sdu->Length());

	//Append crc
	sdu->Push(crc.Calc());

	//Dump media
	logger->DumpMediaOutput(buffer,len);

	//Push sdu into jitterBuffer
	jitBuf.Push( sdu );

	//exit
	return true;
}
Exemplo n.º 2
0
void H223AL2Receiver::SendClosingFlag()
{
	//Check empty
	if	(sdu.Length() == 0)
		return;

	//Crc
	CRC8 crc;

	//Data
	BYTE *data;
	int dataLen;

	//Check minimum size
	if (sdu.Length()<2+useSN)
		goto clean;

	//Get data
	data = sdu.GetPointer();
	dataLen = sdu.Length();

	//Set data
	crc.Add(data,dataLen-1);

	//Dump media
	logger->DumpMediaInput(data+useSN,dataLen-useSN-1);
	
	//Calc
	if (data[dataLen-1]!=crc.Calc())
		goto clean;

	//Send to listener
	sduListener->OnSDU(data+useSN,dataLen-useSN-1);

//Clean SDU and exit
clean:
	sdu.Clean();
}