mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2026-02-16 10:30:59 +00:00
71 lines
1.7 KiB
C
71 lines
1.7 KiB
C
#pragma once
|
|
|
|
#include "LinkedBlockingQueue.h"
|
|
|
|
typedef struct _QUEUED_DECODE_UNIT {
|
|
DECODE_UNIT decodeUnit;
|
|
LINKED_BLOCKING_QUEUE_ENTRY entry;
|
|
} QUEUED_DECODE_UNIT, *PQUEUED_DECODE_UNIT;
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
// The encrypted video header must be a multiple
|
|
// of 16 bytes in size to ensure the block size
|
|
// for FEC stays a multiple of 16 too.
|
|
typedef struct _ENC_VIDEO_HEADER {
|
|
uint8_t iv[12];
|
|
uint32_t frameNumber;
|
|
uint8_t tag[16];
|
|
} ENC_VIDEO_HEADER, *PENC_VIDEO_HEADER;
|
|
|
|
#define FLAG_CONTAINS_PIC_DATA 0x1
|
|
#define FLAG_EOF 0x2
|
|
#define FLAG_SOF 0x4
|
|
|
|
typedef struct _NV_VIDEO_PACKET {
|
|
uint32_t streamPacketIndex;
|
|
uint32_t frameIndex;
|
|
uint8_t flags;
|
|
uint8_t reserved;
|
|
uint8_t multiFecFlags;
|
|
uint8_t multiFecBlocks;
|
|
uint32_t fecInfo;
|
|
} NV_VIDEO_PACKET, *PNV_VIDEO_PACKET;
|
|
|
|
#define FLAG_EXTENSION 0x10
|
|
|
|
#define FIXED_RTP_HEADER_SIZE 12
|
|
#define MAX_RTP_HEADER_SIZE 16
|
|
|
|
typedef struct _RTP_PACKET {
|
|
uint8_t header;
|
|
uint8_t packetType;
|
|
uint16_t sequenceNumber;
|
|
uint32_t timestamp;
|
|
uint32_t ssrc;
|
|
} RTP_PACKET, *PRTP_PACKET;
|
|
|
|
// Fields are big-endian
|
|
typedef struct _SS_PING {
|
|
char payload[16];
|
|
uint32_t sequenceNumber;
|
|
} SS_PING, *PSS_PING;
|
|
|
|
// Fields are big-endian
|
|
#define SS_FRAME_FEC_PTYPE 0x5502
|
|
typedef struct _SS_FRAME_FEC_STATUS {
|
|
uint32_t frameIndex;
|
|
uint16_t highestReceivedSequenceNumber;
|
|
uint16_t nextContiguousSequenceNumber;
|
|
uint16_t missingPacketsBeforeHighestReceived;
|
|
uint16_t totalDataPackets;
|
|
uint16_t totalParityPackets;
|
|
uint16_t receivedDataPackets;
|
|
uint16_t receivedParityPackets;
|
|
uint8_t fecPercentage;
|
|
uint8_t multiFecBlockIndex;
|
|
uint8_t multiFecBlockCount;
|
|
} SS_FRAME_FEC_STATUS, *PSS_FRAME_FEC_STATUS;
|
|
|
|
#pragma pack(pop)
|