mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2025-07-04 00:36:37 +00:00
Enable slicing on HEVC if the client requests it
This commit is contained in:
parent
679f6e83bb
commit
fc124b60ce
@ -279,13 +279,21 @@ static PSDP_OPTION getAttributesList(char*urlSafeAddr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (AppVersionQuad[0] >= 4) {
|
if (AppVersionQuad[0] >= 4) {
|
||||||
|
unsigned char slicesPerFrame;
|
||||||
|
|
||||||
|
// Use slicing for increased performance on some decoders
|
||||||
|
slicesPerFrame = (unsigned char)(VideoCallbacks.capabilities >> 24);
|
||||||
|
if (slicesPerFrame == 0) {
|
||||||
|
// If not using slicing, we request 1 slice per frame
|
||||||
|
slicesPerFrame = 1;
|
||||||
|
}
|
||||||
|
sprintf(payloadStr, "%d", slicesPerFrame);
|
||||||
|
err |= addAttributeString(&optionHead, "x-nv-video[0].videoEncoderSlicesPerFrame", payloadStr);
|
||||||
|
|
||||||
if (NegotiatedVideoFormat & VIDEO_FORMAT_MASK_H265) {
|
if (NegotiatedVideoFormat & VIDEO_FORMAT_MASK_H265) {
|
||||||
err |= addAttributeString(&optionHead, "x-nv-clientSupportHevc", "1");
|
err |= addAttributeString(&optionHead, "x-nv-clientSupportHevc", "1");
|
||||||
err |= addAttributeString(&optionHead, "x-nv-vqos[0].bitStreamFormat", "1");
|
err |= addAttributeString(&optionHead, "x-nv-vqos[0].bitStreamFormat", "1");
|
||||||
|
|
||||||
// Disable slicing on HEVC
|
|
||||||
err |= addAttributeString(&optionHead, "x-nv-video[0].videoEncoderSlicesPerFrame", "1");
|
|
||||||
|
|
||||||
if (AppVersionQuad[0] >= 7) {
|
if (AppVersionQuad[0] >= 7) {
|
||||||
// Enable HDR if requested
|
// Enable HDR if requested
|
||||||
if (StreamConfig.enableHdr) {
|
if (StreamConfig.enableHdr) {
|
||||||
@ -301,7 +309,6 @@ static PSDP_OPTION getAttributesList(char*urlSafeAddr) {
|
|||||||
err |= addAttributeString(&optionHead, "x-nv-video[0].encoderFeatureSetting", "0");
|
err |= addAttributeString(&optionHead, "x-nv-video[0].encoderFeatureSetting", "0");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
unsigned char slicesPerFrame;
|
|
||||||
|
|
||||||
err |= addAttributeString(&optionHead, "x-nv-clientSupportHevc", "0");
|
err |= addAttributeString(&optionHead, "x-nv-clientSupportHevc", "0");
|
||||||
err |= addAttributeString(&optionHead, "x-nv-vqos[0].bitStreamFormat", "0");
|
err |= addAttributeString(&optionHead, "x-nv-vqos[0].bitStreamFormat", "0");
|
||||||
@ -315,15 +322,6 @@ static PSDP_OPTION getAttributesList(char*urlSafeAddr) {
|
|||||||
// the server or client doesn't support HEVC and the client didn't do the correct checks
|
// the server or client doesn't support HEVC and the client didn't do the correct checks
|
||||||
// before requesting HDR streaming.
|
// before requesting HDR streaming.
|
||||||
LC_ASSERT(!StreamConfig.enableHdr);
|
LC_ASSERT(!StreamConfig.enableHdr);
|
||||||
|
|
||||||
// Use slicing for increased performance on some decoders
|
|
||||||
slicesPerFrame = (unsigned char)(VideoCallbacks.capabilities >> 24);
|
|
||||||
if (slicesPerFrame == 0) {
|
|
||||||
// If not using slicing, we request 1 slice per frame
|
|
||||||
slicesPerFrame = 1;
|
|
||||||
}
|
|
||||||
sprintf(payloadStr, "%d", slicesPerFrame);
|
|
||||||
err |= addAttributeString(&optionHead, "x-nv-video[0].videoEncoderSlicesPerFrame", payloadStr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppVersionQuad[0] >= 7) {
|
if (AppVersionQuad[0] >= 7) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user