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; }
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(); }