int cbOnPkt_silk(void *pUserData, const COLLECT_STREAM_PKTDATA_T *pPkt) { CAPTURE_CBDATA_SP_T *pSp = (CAPTURE_CBDATA_SP_T *) pUserData; const unsigned char *pData = pPkt ? pPkt->payload.pData : NULL; unsigned int len = pPkt ? PKTCAPLEN(pPkt->payload) : 0; CAPTURE_STORE_CBDATA_T cbData; int queueFr = 0; int rc = 0; if(pSp == NULL) { return -1; } else if(!pPkt || !pPkt->payload.pData) { // Packet was lost LOG(X_WARNING("RTP SILK lost packet, last seq:%u, last ts:%u"), pSp->lastPktSeq, pSp->lastPktTs); pSp->spFlags |= (CAPTURE_SP_FLAG_DAMAGEDFRAME | CAPTURE_SP_FLAG_PREVLOST); return 0; } VSX_DEBUG_RTP( LOG(X_DEBUG("RTP - rtp-recv-silk len:%d seq:%u ts:%u(%.3f) ts0:%u(%.3f, dlta:%.3f), mrk:%d ssrc:0x%x " "flags:0x%x pQ:0x%x"), PKTCAPLEN(pPkt->payload), pPkt->u.rtp.seq, pPkt->u.rtp.ts, PTSF(pPkt->u.rtp.ts), pSp->pStream->ts0, (pSp->pStream->clockHz > 0 ? ((double)pSp->pStream->ts0/pSp->pStream->clockHz) : 0), (pSp->pStream->clockHz > 0 ? ((double)(pPkt->u.rtp.ts - pSp->pStream->ts0)/pSp->pStream->clockHz) : 0), (pPkt->u.rtp.marksz & PKTDATA_RTP_MASK_MARKER)?1:0, pSp->pStream->hdr.key.ssrc, pSp->spFlags, pSp->pCapAction && pSp->pCapAction->pQueue ? 1 : 0); if(pPkt && PKTCAPLEN(pPkt->payload) > 0) { LOGHEX_DEBUG(pPkt->payload.pData, MIN(16, PKTCAPLEN(pPkt->payload))); } );
int cbOnPkt_vp8(void *pUserData, const COLLECT_STREAM_PKTDATA_T *pPkt) { int rc = 0; CAPTURE_CBDATA_SP_T *pSp = (CAPTURE_CBDATA_SP_T *) pUserData; CAPTURE_STORE_CBDATA_T cbData; int queueFr = 0; if(pSp == NULL) { return -1; } else if(!pPkt || !pPkt->payload.pData) { // Packet was lost LOG(X_WARNING("RTP VP8 lost packet, last seq:%u, last ts:%u"), pSp->lastPktSeq, pSp->lastPktTs); pSp->spFlags |= (CAPTURE_SP_FLAG_DAMAGEDFRAME | CAPTURE_SP_FLAG_PREVLOST); return 0; } VSX_DEBUG( //VSX_DEBUGLOG_TIME LOG(X_DEBUG("rtp-recv-vp8 len:%d seq:%u ts:%u(%.3f) ts0:%u(%.3f, dlta:%.3f), mrk:%d ssrc:0x%x " "flags:0x%x pQ:0x%x"), PKTCAPLEN(pPkt->payload), pPkt->u.rtp.seq, pPkt->u.rtp.ts, PTSF(pPkt->u.rtp.ts), pSp->pStream->ts0, (pSp->pStream->clockHz > 0 ? ((double)pSp->pStream->ts0/pSp->pStream->clockHz) : 0), (pSp->pStream->clockHz > 0 ? ((double)(pPkt->u.rtp.ts - pSp->pStream->ts0)/pSp->pStream->clockHz) : 0), (pPkt->u.rtp.marksz & PKTDATA_RTP_MASK_MARKER)?1:0, pSp->pStream->hdr.key.ssrc, pSp->spFlags, pSp->pCapAction && pSp->pCapAction->pQueue ? 1 : 0); if(pPkt && PKTCAPLEN(pPkt->payload) > 0) { LOGHEX_DEBUG(pPkt->payload.pData, MIN(16, PKTCAPLEN(pPkt->payload))); } //fprintf(stderr, "tmpFrame.buf.idx:%d\n", pSp->pCapAction->tmpFrameBuf.idx); );
int cbOnPkt_aac(void *pUserData, const COLLECT_STREAM_PKTDATA_T *pPkt) { CAPTURE_CBDATA_SP_T *pSp = (CAPTURE_CBDATA_SP_T *) pUserData; const unsigned char *pData = pPkt ? pPkt->payload.pData : NULL; unsigned int len = pPkt ? PKTCAPLEN(pPkt->payload) : 0; unsigned char adtsHdr[8]; const ESDS_DECODER_CFG_T *pDecoderCfg; unsigned int numAuFrames; unsigned int idx; unsigned int payloadLen; unsigned int fragmentLen; unsigned int payloadStartIdx; uint32_t ts; CAPTURE_STORE_CBDATA_T cbData; int queueFr = 0; int rc = 0; // // TODO: pPkt ts, seq, ssrc, etc... are only set for RTP, if capture config is read // from SDP file - and goes through stream_net_av. (streaming capture eonly) // capture for recording and stream_net_pes uses deprecated way of queing raw // network data for later depacketization, which calls this cb from the queue reader // if(pSp == NULL) { return -1; } else if(pData == NULL) { // Packet was lost LOG(X_WARNING("Lost AAC-hbr RTP packet")); pSp->spFlags &= ~CAPTURE_SP_FLAG_INFRAGMENT; return 0; } VSX_DEBUG_RTP( LOG(X_DEBUG("RTP - rtp-recv-aac len:%d seq:%u ts:%u(%.3f) ts0:%u(%.3f, dlta:%.3f), mrk:%d ssrc:0x%x " "flags:0x%x pQ:0x%x"), PKTCAPLEN(pPkt->payload), pPkt->u.rtp.seq, pPkt->u.rtp.ts, PTSF(pPkt->u.rtp.ts), pSp->pStream->ts0, (pSp->pStream->clockHz > 0 ? ((double)pSp->pStream->ts0/pSp->pStream->clockHz) : 0), (pSp->pStream->clockHz > 0 ? ((double)(pPkt->u.rtp.ts - pSp->pStream->ts0)/pSp->pStream->clockHz) : 0), (pPkt->u.rtp.marksz & PKTDATA_RTP_MASK_MARKER)?1:0, pSp->pStream->hdr.key.ssrc, pSp->spFlags, pSp->pCapAction && pSp->pCapAction->pQueue ? 1 : 0); if(pPkt) { LOGHEX_DEBUG(pPkt->payload.pData, MIN(16, PKTCAPLEN(pPkt->payload))); } );