srt icon indicating copy to clipboard operation
srt copied to clipboard

Cloud GPU rendering game screen lag

Open xiejiashu opened this issue 2 years ago • 1 comments

Hello everyone, I am here again. What I do now is to send the pose from the XR device to the PC, and let the PC render and send the picture to the XR device for decoding and re-rendering after H264 encoding. I found that there will be a lag of about 100+ms in the middle of this process. I want to know how to set the parameters to make the picture less laggy. Because the screen lag will cause the screen to shake. This sucks for games, and it's all happening locally. Here are some of my basic settings Frame rate: 90 Bitrate = 20000000;

The following are the settings for my XR to receive data `int32_t Res = SRT_SUCCESS;

(Res = SetSockFlag(InSock,SRTO_RCVSYN,false),Res == SRT_ERROR) // Configure non-blocking reception || (Res = SetSockFlag(InSock,SRTO_SNDSYN,false),Res == SRT_ERROR) // Configure non-blocking sending || (Res = SetSockFlag(InSock,SRTO_TRANSTYPE,SRTT_LIVE),Res == SRT_ERROR) // Configure the transmission mode || (Res = SetSockFlag(InSock,SRTO_TSBPDMODE,true),Res == SRT_ERROR) // Configure timestamp-based mode || (Res = SetSockFlag(InSock,SRTO_RCVLATENCY,40),Res == SRT_ERROR) // configure receive delay value /* || (Res = SetSockFlag(InSock, SRTO_RCVBUF, 1024102464), Res == SRT_ERROR) // configure receive buffer size */ //|| (Res = SetSockFlag(InSock,SRTO_RCVTIMEO,1),Res == SRT_ERROR) // Configure receive timeout || (Res = SetSockFlag(InSock,SRTO_PEERLATENCY,0),Res == SRT_ERROR) // configure peer latency to 0 || (Res = SetSockFlag(InSock,SRTO_TLPKTDROP,true),Res == SRT_ERROR) // configure timeout discard //|| (Res = SetSockFlag(InSock,SRTO_LINGER,0),Res == SRT_ERROR) //Configure delay closing time || (Res = SetSockFlag(InSock,SRTO_MESSAGEAPI,true),Res == SRT_ERROR) // Configure to use message API || (Res = SetSockFlag(InSock,SRTO_NAKREPORT,false),Res == SRT_ERROR) // Configure whether the loss report is sent repeatedly || (Res = SetSockFlag(InSock,SRTO_RETRANSMITALGO,1),Res == SRT_ERROR) // configure efficient retransmission algorithm || (Res = SetSockFlag(InSock,SRTO_PAYLOADSIZE,SRT_LIVE_DEF_PLSIZE),Res == SRT_ERROR) // Configure payload size || (Res = SetSockFlag(InSock,SRTO_CONGESTION,"live"),Res == SRT_ERROR) // configure congestion control type || (Res = SetSockFlag(InSock,SRTO_STREAMID,"#!::u=Starverse"),Res == SRT_ERROR) // Configure StreamId ;`

The following is my server configuration

`int32 Res = SRT_SUCCESS;

(Res = SetSockFlag(InSock,SRTO_RCVSYN,false),Res == SRT_ERROR) // Configure non-blocking reception || (Res = SetSockFlag(InSock,SRTO_SNDSYN,false),Res == SRT_ERROR) // Configure non-blocking sending || (Res = SetSockFlag(InSock,SRTO_SENDER,false),Res == SRT_ERROR) // Configure non-blocking sending || (Res = SetSockFlag(InSock,SRTO_TRANSTYPE,SRTT_LIVE),Res == SRT_ERROR) // Configure the transmission mode || (Res = SetSockFlag(InSock,SRTO_TSBPDMODE,true),Res == SRT_ERROR) // Configure timestamp-based mode //|| (Res = SetSockFlag(InSock,SRTO_RCVLATENCY,60),Res == SRT_ERROR) // Configure receive delay value //|| (Res = SetSockFlag(InSock,SRTO_LATENCY,120),Res == SRT_ERROR) // Configure receive delay value || (Res = SetSockFlag(InSock,SRTO_SNDBUF,1024102410),Res == SRT_ERROR) // Configure the send buffer size // || (Res = SetSockFlag(InSock,SRTO_SNDTIMEO,5), Res == SRT_ERROR) // Configure sending timeout || (Res = SetSockFlag(InSock,SRTO_PEERLATENCY,0),Res == SRT_ERROR) // Configure the peer delay to be 0 || (Res = SetSockFlag(InSock,SRTO_TLPKTDROP,true),Res == SRT_ERROR) // configure timeout discard || (Res = SetSockFlag(InSock,SRTO_LINGER,0),Res == SRT_ERROR) // configure the delay closing time || (Res = SetSockFlag(InSock,SRTO_MESSAGEAPI,true),Res == SRT_ERROR) // Configure to use message API || (Res = SetSockFlag(InSock,SRTO_NAKREPORT,false),Res == SRT_ERROR) // Configure whether the loss report is sent repeatedly || (Res = SetSockFlag(InSock,SRTO_RETRANSMITALGO,1),Res == SRT_ERROR) // configure efficient retransmission algorithm || (Res = SetSockFlag(InSock,SRTO_PAYLOADSIZE,SRT_LIVE_DEF_PLSIZE),Res == SRT_ERROR) // Configure payload size || (Res = SetSockFlag(InSock,SRTO_CONGESTION,"live"),Res == SRT_ERROR) // configure congestion control type ;`

The following is my Accept Socket configuration `int32 Res = SRT_SUCCESS;

(Res = SetSockFlag(InSock,SRTO_RCVSYN,false),Res == SRT_ERROR) // Configure non-blocking reception || (Res = SetSockFlag(InSock,SRTO_SNDSYN,false),Res == SRT_ERROR) // Configure non-blocking sending || (Res = SetSockFlag(InSock,SRTO_LINGER,0),Res == SRT_ERROR) // configure the delay closing time` ;

xiejiashu avatar Dec 06 '22 02:12 xiejiashu

Hi @xiejiashu Did you manage to resolve or make progress on the issue?

maxsharabayko avatar Oct 26 '23 08:10 maxsharabayko