56 lines
1.7 KiB
C
56 lines
1.7 KiB
C
#pragma once
|
|
|
|
#include "Video.h"
|
|
|
|
typedef struct _RTPV_QUEUE_ENTRY {
|
|
struct _RTPV_QUEUE_ENTRY* next;
|
|
struct _RTPV_QUEUE_ENTRY* prev;
|
|
PRTP_PACKET packet;
|
|
uint64_t receiveTimeMs;
|
|
uint32_t presentationTimeMs;
|
|
int length;
|
|
bool isParity;
|
|
} RTPV_QUEUE_ENTRY, *PRTPV_QUEUE_ENTRY;
|
|
|
|
typedef struct _RTPV_QUEUE_LIST {
|
|
PRTPV_QUEUE_ENTRY head;
|
|
PRTPV_QUEUE_ENTRY tail;
|
|
uint32_t count;
|
|
} RTPV_QUEUE_LIST, *PRTPV_QUEUE_LIST;
|
|
|
|
typedef struct _RTP_VIDEO_QUEUE {
|
|
RTPV_QUEUE_LIST pendingFecBlockList;
|
|
RTPV_QUEUE_LIST completedFecBlockList;
|
|
|
|
uint64_t bufferFirstRecvTimeMs;
|
|
uint32_t bufferLowestSequenceNumber;
|
|
uint32_t bufferHighestSequenceNumber;
|
|
uint32_t bufferFirstParitySequenceNumber;
|
|
uint32_t bufferDataPackets;
|
|
uint32_t bufferParityPackets;
|
|
uint32_t receivedBufferDataPackets;
|
|
uint32_t receivedParityPackets;
|
|
uint32_t receivedParityHighestSequenceNumber;
|
|
uint32_t receivedDataHighestSequenceNumber;
|
|
uint32_t fecPercentage;
|
|
uint32_t nextContiguousSequenceNumber;
|
|
uint32_t missingDataPackets; // # of holes behind receivedDataHighestSequenceNumber
|
|
bool reportedLostFrame;
|
|
|
|
uint32_t currentFrameNumber;
|
|
|
|
bool multiFecCapable;
|
|
uint8_t multiFecCurrentBlockNumber;
|
|
uint8_t multiFecLastBlockNumber;
|
|
|
|
uint32_t lastOosFramePresentationTimestamp;
|
|
bool receivedOosData;
|
|
} RTP_VIDEO_QUEUE, *PRTP_VIDEO_QUEUE;
|
|
|
|
#define RTPF_RET_QUEUED 0
|
|
#define RTPF_RET_REJECTED 1
|
|
|
|
void RtpvInitializeQueue(PRTP_VIDEO_QUEUE queue);
|
|
void RtpvCleanupQueue(PRTP_VIDEO_QUEUE queue);
|
|
int RtpvAddPacket(PRTP_VIDEO_QUEUE queue, PRTP_PACKET packet, int length, PRTPV_QUEUE_ENTRY packetEntry);
|
|
void RtpvSubmitQueuedPackets(PRTP_VIDEO_QUEUE queue);
|