diff --git a/src/Limelight-internal.h b/src/Limelight-internal.h index 8647dbd..4b5789d 100644 --- a/src/Limelight-internal.h +++ b/src/Limelight-internal.h @@ -74,6 +74,9 @@ extern uint32_t SunshineFeatureFlags; #define IS_SUNSHINE() (AppVersionQuad[3] < 0) +// Client feature flags for x-ml-general.featureFlags SDP attribute +#define ML_FF_FEC_STATUS 0x01 // Client sends SS_FRAME_FEC_STATUS for frame losses + #define UDP_RECV_POLL_TIMEOUT_MS 100 // At this value or above, we will request high quality audio unless CAPABILITY_SLOW_OPUS_DECODER diff --git a/src/SdpGenerator.c b/src/SdpGenerator.c index f5a8daa..9f4bf98 100644 --- a/src/SdpGenerator.c +++ b/src/SdpGenerator.c @@ -233,6 +233,13 @@ static PSDP_OPTION getAttributesList(char*urlSafeAddr) { optionHead = NULL; err = 0; + // Send client feature flags to Sunshine hosts + if (IS_SUNSHINE()) { + uint32_t moonlightFeatureFlags = ML_FF_FEC_STATUS; + sprintf(payloadStr, "%u", moonlightFeatureFlags); + err |= addAttributeString(&optionHead, "x-ml-general.featureFlags", payloadStr); + } + sprintf(payloadStr, "%d", StreamConfig.width); err |= addAttributeString(&optionHead, "x-nv-video[0].clientViewportWd", payloadStr); sprintf(payloadStr, "%d", StreamConfig.height);