moonlight-stream / moonlight-common-c

Core implementation of Nvidia's GameStream protocol
GNU General Public License v3.0
448 stars 166 forks source link

Do frame invalidation to reduce IDR requests #11

Closed irtimmer closed 9 years ago

irtimmer commented 9 years ago

I have tried to implement frame invalidation. Currently I have only short tested it with a FFMpeg decoder by randomly dropping a few packets. I'm not sure if it works for all decoders, in that case it should be put behind a flag, or if it will keep working in a long test run. In the last case some more debugging is necessary.

cgutman commented 9 years ago

I experimented with reference frame invalidation with common-java and found that it would work a bit then puke and cause a bunch of artifacting. Nvstreamsvc indicated that the frame invalidation was processed, so it seems like we're still missing something. This was with ffmpeg as well using Moonlight-pc

cgutman commented 9 years ago

Also worth noting is that I think reference frame invalidation isn't a huge win for stream performance. Shield Hub is using some FEC algorithm (which we turn off in RTSP) so they almost never have to invalidate frames. If we can figure out how they do FEC on video, that would be a HUGE improvement to streaming performance.