framelive-streamingvideo-encodingamd-gpu

Replace dropped frame


I'm doing a Cloud Gaming solution that works kind of "good".

At the moment our servers runs a game, encode the video using VCE (AMD hardware encoding), chunk the video frames and send it in UDP to the player. The player receives the packets, rebuid the data and decode it. So we have no problems if there is no packet loss.

In the case of a wired connexion everything is smooth, but people like to use Wifi (5ghz, we can't handle 2Ghz). Even if you have a good Wifi, you may experience packet loss. We have a redundancy plan that works "okish" but it will take too much network.

Here is a small explanation:

Original encoding (only P frames):

F1 - F2 - F3 - F4 - F5

What we do at the moment if we lose F2:

F1 - empty - F3(ugly) - F4(ugly) - F5(ugly)

What we want to do, replace F2:

F1 - F1' - F3 - F4 - F5

Would it work if the third frame refers to F1' (thinking it is F2)? At least I think it better than doing nothing. Is there a way to change the reference of F3 (so it refers to F1 and not F2), or creating F1' with the "header" of F2?


Solution

  • Your solution would be largely ineffective. You should adopt the same solution as the others in your space. That being periodic intra refresh, reference frame invalidation and FEC.