void RTPUDPTransmitter::readRTCPPendingDatagrams() { while (m_rtcpsock->hasPendingDatagrams()) { RTPTime curtime = RTPTime::CurrentTime(); QHostAddress remoteAddress; quint16 remotePort; qint64 pendingDataSize = m_rtcpsock->pendingDatagramSize(); qint64 bytesRead = m_rtcpsock->readDatagram(m_rtcpBuffer, pendingDataSize, &remoteAddress, &remotePort); qDebug("RTPUDPTransmitter::readRTCPPendingDatagrams: %lld bytes read from %s:%d", bytesRead, qPrintable(remoteAddress.toString()), remotePort); RTPAddress rtpAddress; rtpAddress.setAddress(remoteAddress); rtpAddress.setPort(remotePort); if (ShouldAcceptData(rtpAddress)) { RTPRawPacket *pack = new RTPRawPacket((uint8_t *) m_rtcpBuffer, bytesRead, rtpAddress, curtime, false); m_rawPacketQueueLock.lock(); m_rawPacketQueue.append(pack); m_rawPacketQueueLock.unlock(); emit NewDataAvailable(); } } }
XnStatus XnDeviceStream::Write(XnStreamData* pStreamData) { XnStatus nRetVal = XN_STATUS_OK; // make sure data is new if (pStreamData->bIsNew) { nRetVal = WriteImpl(pStreamData); XN_IS_STATUS_OK(nRetVal); NewDataAvailable(pStreamData->nTimestamp, pStreamData->nFrameID); } return (XN_STATUS_OK); }
XnStatus XnSensorAudioStream::NewData() { // check how many buffers we have XnInt32 nAvailbalePackets = m_buffer.nAudioWriteIndex - m_buffer.nAudioReadIndex; if (nAvailbalePackets < 0) nAvailbalePackets += m_buffer.nAudioBufferNumOfPackets; if ((XnUInt32)nAvailbalePackets * m_buffer.nAudioPacketSize >= GetReadChunkSize()) { // update last write index (the last written byte) m_pSharedHeader->nWritePacketIndex = m_buffer.nAudioWriteIndex; // take first packet timestamp NewDataAvailable(m_buffer.pAudioPacketsTimestamps[m_buffer.nAudioReadIndex], 0); } return XN_STATUS_OK; }
void RTPUDPTransmitter::readRTPPendingDatagrams() { while (m_rtpsock->hasPendingDatagrams()) { RTPTime curtime = RTPTime::CurrentTime(); QHostAddress remoteAddress; quint16 remotePort; qint64 pendingDataSize = m_rtpsock->pendingDatagramSize(); qint64 bytesRead = m_rtpsock->readDatagram(m_rtpBuffer, pendingDataSize, &remoteAddress, &remotePort); qDebug("RTPUDPTransmitter::readRTPPendingDatagrams: %lld bytes read from %s:%d", bytesRead, qPrintable(remoteAddress.toString()), remotePort); RTPAddress rtpAddress; rtpAddress.setAddress(remoteAddress); rtpAddress.setPort(remotePort); if (ShouldAcceptData(rtpAddress)) { bool isrtp = true; if (m_rtpsock == m_rtcpsock) // check payload type when multiplexing { if ((std::size_t) bytesRead > sizeof(RTCPCommonHeader)) { RTCPCommonHeader *rtcpheader = (RTCPCommonHeader *) m_rtpBuffer; uint8_t packettype = rtcpheader->packettype; if (packettype >= 200 && packettype <= 204) { isrtp = false; } } } RTPRawPacket *pack = new RTPRawPacket((uint8_t *) m_rtpBuffer, bytesRead, rtpAddress, curtime, isrtp); m_rawPacketQueueLock.lock(); m_rawPacketQueue.append(pack); m_rawPacketQueueLock.unlock(); emit NewDataAvailable(); } } }
XnStatus XnSensorAudioStream::NewData() { XnStatus nRetVal = XN_STATUS_OK; XnDevicePrivateData* pDevicePrivateData = m_Helper.GetPrivateData(); // check how many buffers we have XnInt32 nAvailbalePackets = pDevicePrivateData->nAudioWriteIndex - pDevicePrivateData->nAudioReadIndex; if (nAvailbalePackets < 0) nAvailbalePackets += pDevicePrivateData->nAudioBufferNumOfPackets; if ((XnUInt32)nAvailbalePackets * pDevicePrivateData->nAudioPacketSize >= GetReadChunkSize()) { // update last write index (the last written byte) m_pSharedHeader->nWritePacketIndex = pDevicePrivateData->nAudioWriteIndex; // take first packet timestamp NewDataAvailable(pDevicePrivateData->pAudioPacketsTimestamps[pDevicePrivateData->nAudioReadIndex], 0); } return XN_STATUS_OK; }