moonlight-stream / moonlight-android

GameStream client for Android
GNU General Public License v3.0
3.65k stars 574 forks source link

Samsung Galaxy S7 Edge (Android) - Streaming not optimal #349

Closed ghost closed 5 years ago

ghost commented 7 years ago

Hi there,

First off, thanks for creating this project. Next, if there is anything I can do to assist or troubleshoot on my end (logs, settings, etc), let me know, I'll be happy to do everything I can to get you as much info as possible.

Issue: On Samsung Galaxy S7 Edge (Android Marshmallow), the stream quality is jumpy, jerky, and very poor compared to streaming on Windows (on a late 2000's laptop) or OSX. I have not tested yet on an iPhone, but I can, if desired. In addition, it is also comparable, if not worse, to the quality of streaming that I encountered on my Galaxy Note 3 before upgrading to this device.

I can say for sure it has nothing to do with the target mbps, the wireless router, or the host pc. Multiple tests on other streaming devices have proved that the quality can be, and is, top-notch and smooth with no issues. It does not matter the resolution selected for streaming (720, 1080, 30 or 60fps). My decoding latency is only around 15ms on the device as well.

If I had to describe in detail the issue, the stream seems to display perfectly well, especially when not much on the screen is happening, but once the screen moves, such as a 2d scroller, the streaming shows signs of micro-studdering and has multiple instances of bigger frame jumps (such as the character is in one place on the screen during a jump, then, instead of taking the entire process smoothly, the scene may hang for a quarter second, then update with the character's current position, and then continue on as smooth as it was before the hang.

I've turned off extra services such as location service, mobile data, sync, etc on the device with no apparent improvement of streaming quality. So, with all of my resources exhausted, I'm posting this issue here in hopes that perhaps we can discover the cause, and hopefully have it addressed.

JasonS7notG5 commented 7 years ago

I also have the S7 edge (G935F Exynos SoC / Mali GPU) with Nougat and I can confirm that gameplay is not smooth 60fps, it has micro stutters (frame pacing?). Decoding is less than 15ms all the time (720p-1080p 60fps 8-10Mbit H.264). I tested this with Call of Duty: Modern Warfare Remastered where it gets really obvious that there is a problem with how Moonlight utilizes the SoC, I mean the S7 edge is not a cheap phone and uses top hardware. Why am I sure that this must be a hardware/software related problem specific to the S7 edge? My ASUS tablet which cost me like $99 with an Intel Atom Z3745 SoC on the same network with the same WiFi signal strengh even on 2.4GHz can play smooth 60fps with no micro stutters. I tested both 5GHz and 2.4GHz on my S7 edge and it didn't matter on which network I was connected. I would say that anyone with an S7 / S7 edge atleast with the Exynos SoC will have the same experience like me and XaivierX. This is not network, firewall, config, game etc. related problem but how Moonlight handles this with the Exynos SoC. Please fix this, I really dont want to miss out playing PC games on the go with smooth framerates on a beautiful AMOLED display. Thanks.

Edit: Maybe Moonlight needs to update drivers or something to support most new hardware like the Exynos 8890 / Mali T880MP12. I also read that the OnePlus 3T with Snapdragon 821 / Adreno 530 has problems. Some lower end and older devices do not have any problems with micro stutter etc., why cant these new top smartphones perform on the same level if not even better?

rob151515 commented 7 years ago

I have the same phone S7 edge (G935F Exynos SoC / Mali GPU) only with Marshmallow and can confirm the same behavior. I have tried everything I can think of as well as all suggestions I have found on the internet (different display drivers etc) and none have resolved the issue. Have to agree with both XaivierX and JasonS7notG5 that this appears to be an issue with Moonlight and not my PC/Network. I have tested with an old Samsung 10" tablet and the streaming is smooth as butter. The hardware involved in my setup is a i7 Windows 10 PC with GTX 780ti etherneted to my r7000 router then 5ghz wifi from there to my S7. When gaming over Moonlight I am finding that the S7 is smooth for about 2-3 seconds then stutters then is smooth again for 2-3 seconds then stutters and so on... I have tried changing resolution/bitrate but nothing seems to make a difference. Hopefully someone can get to the bottom of this. I am happy to provide any diagnostics or do any testing that can help with resolving this problem.

JasonS7notG5 commented 7 years ago
You can ignore the text inside this 'arrow', go below and also read my other comments. I made screen recordings from the S7 edge while playing Call of Duty: Modern Warfare Remastered and while watching Mass Effect: Andromeda 60fps gameplay on YouTube. Here are the links: https://www.youtube.com/watch?v=OdoY2oIQRzA https://www.youtube.com/watch?v=zfj9MgYhroY Moonlight settings: 720p 60fps 8Mbit H.264 Latency was approx. 10/8 ms. Recorded with Samsung Game Tools. Original video to download (without YouTube compression etc.): http://www.mediafire.com/file/fhkzy3digo8o1j4/Moonlight+-+Call+of+Duty+Modern+Warfare+Remastered.mp4 http://www.mediafire.com/file/7srddfw9l9l9e5n/Moonlight+-+Mass+Effect+Andromeda+Gameplay.mp4 I would have liked to record my ASUS tablet or even my desktop PC but it wasn't possible because there is no screen recorder for Android 4.4 non root and somehow Shadowplay didn't worked while streaming. I am using the newest GeForce Experience 3.3.0.100. On my ASUS tablet it plays the game and the YouTube video smooth with occasionally lag because of 2.4GHz which I have noticed but overall there are no micro stutters all the time like on my S7 edge

Maybe Moonlight has minor problems with newer Android versions (Marshmallow, Nougat) and GeForce Experience? My ASUS tablet is on Android 4.4 but I am using the same GeForce Experience 3.3.0.100 version and no problems with it. Or like I said on the comment before Moonlight may need to update drivers or something.

If anyone wants to test if their device is getting smooth playback without micro stutters: Just stream your desktop and watch the Mass Effect: Andromeda YouTube gameplay and compare it on your monitor at the same time. Here is the link: https://www.youtube.com/watch?v=HrWgLMH8yRU

Edit: I also tested USB tethering and while I got better latency (roughly 6ms on 1080p 60fps 20Mbit H.264), it is still not smooth.

JasonS7notG5 commented 7 years ago

Well after hours of trial and error I can absolutely say the micro stutters are because of the hardware or how Moonlight utilizes the hardware. I used Moonlight with USB tethering and GameBench to show the FPS on my S7 edge and compared it to the FPS counter on my monitor. While my PC / monitor shows 60FPS and feels like it, my S7 edge shows drops every second from 60 to 58 to 59 to 52 to 5x etc. = micro stutters. This does not only look not smooth but also affects the gameplay, for example when playing CoD: MW I get better results when watching the monitor while I play worse when watching the S7 edge (I played with mouse and keyboard attached to the PC).

I made some videos showing this micro stutter problem: This first one shows me playing CoD: MW with Moonlight using USB tethering and GameBench to show the FPS recorded with internal Samsung Game Tools app. You can clearly see how the FPS jumps all over the place within 50 to 60 FPS which makes the gameplay feel not laggy but also not smooth. [The first and third run in CoD: MW training mission where I got better in-game time results I watched the monitor while playing, the second and fourth run with worse results watching on the S7 edge] The second one also shows me playing CoD: MW with the same config as the first one but this time recorded with an iPhone 4S (30fps recording unfortunately) to show there is no influence from the recording software (Samsung Game Tools). Still micro stutters here. And the last one shows the FPS counter on the S7 edge compared to the FPS counter on the monitor.

Here are screenshots showing the micro stutters: Related to the first video: -GameBench Session Log screenshot -GameBench framerate per second pictures Related to the second video: -GameBench Session Log screenshot -GameBench framerate per second pictures

I hope this micro stutters problem can get fixed very soon. There is no other streaming app getting even close to Moonlight, I tried most of them like Remotr and others but they are full of ads and perform really bad, not playable. I am thankful for Moonlight and hope it will get developed further. Thanks.

ghost commented 7 years ago

Can anyone confirm that turning off adaptive display (under Settings > Display > Screen Mode) helps at all? Not sure I'm I'm actually seeing a difference or if I'm being hopeful.

JasonS7notG5 commented 7 years ago

No there is no difference. Just tested it with USB tethering in offline mode with AMOLED cinema, picture, basic and dropping the resolution to FHD (Nougat). Still micro stutters...

JasonS7notG5 commented 7 years ago

Summary/Conclusion from me regarding Moonlight on the S7 edge and other devices:

I am using Moonlight 4.8.3 (Android) / 1.1.4 (iOS) with GeForce Experience 3.3.0.100. I have tested Moonlight on different devices: *Samsung Galaxy S7 edge* (Exynos 8890 variant, Android 7.0 Nougat) ASUS Memo Pad 8** (Intel Atom Z3745, Android 4.4.2 KitKat) *Apple iPhone 4S (Apple A5, iOS 9.3.5)

For both Android devices I used GameBench to display and capture the FPS, on iOS this was not possible (without jailbreaking). While the ASUS tablet and the iPhone 4S connected with USB tethering on my PC had constant smooth streaming playback, the S7 edge did not. The ASUS tablet and the iPhone 4S while working had some milliseconds of video delay but definitely playable and enjoyable. The S7 edge has micro stutters, every second (or less) it switches from 60FPS to 50-something FPS back to 60FPS etc. resulting in a choppy streaming playback which means no smooth gameplay possible. This has nothing to do with network since I used USB tethering while being in offline mode. With the iPhone 4S on WiFi 2.4GHz it was even possible to have a very good streaming playback (without knowing how much FPS it did have), no micro stutters but sometimes a little lag which isn't that much interrupting the gameplay. The ASUS tablet also on WiFi 2.4GHz can get - when the cheap WiFi antenna inside it works... - the same results like the iPhone 4S. Now something positive for the S7 edge: It may not have the same smooth streaming playback versus the ASUS tablet and iPhone 4S but it has the best response time for input/video. On the S7 edge it looks and plays like if there is no video delay like the other both devices have. How can it have better response time or no delay for the video stream and input when the video itself is full of micro stutters? Maybe it has better response times because of the micro stutters or how Moonlight handles the S7 edge differently, I don't know. But I personally would say it first needs smooth streaming playback and right next to it keep the response times it has right now. It makes no fun playing a game full with micro stutters because it doesn't feel like real 60fps.

Here are some videos showing everything, please check them out:

S7 edge showing micro stutters (captured internally with Samsung Game Tools) (look at the description for GameBench FPS logs) S7 edge showing micro stutters (recorded externally with an iPhone 4S) (look at the description for GameBench FPS logs) Comparing the FPS counter on the S7 edge with the FPS counter on the PC / monitor

ASUS tablet versus PC FPS counter and delay comparison in slow motion in Call of Duty ASUS tablet versus PC FPS counter and delay comparison in slow motion in YouTube video

iPhone 4S versus PC FPS counter and delay comparison in slow motion in Call of Duty iPhone 4S versus PC FPS counter and delay comparison in slow motion in YouTube video

(I have some GameBench log files for the ASUS tablet but don't think they are necessary to upload them, I looked at them and they are showing constant 60-ish FPS (60 most of the time, going to 59 and 61 sometimes, not considering this as micro stutters). And I also have 240fps videos (slow motion) from ASUS tablet and iPhone 4S WiFi 2.4GHz gameplay.)

I would be happy if anyone (doesn't matter which device) could also use GameBench and post their results so we can make comparisons and see which device needs better support from Moonlight. I mean the S7 edge is one of the best smartphones right now, top hardware from 2016 and it loses against an iPhone from 2011 and an old cheap ASUS tablet? That doesn't make any sense.

OakyProductions commented 7 years ago

Hi guys!

I have tried to stream to my Samsung Galaxy S7 Edge, and a different problem is happening to me: every eight seconds, the image lags a little, and then it comes back to normal quality, but, as I said, it happens every eight seconds with no exception, and it makes games unplayable.

I think that this is happening because Android 7.0, because when I was on 6.0, I never had any problem with streaming via Moonlight.

Do you think this can be solved? It should be solved by Moonlight or by Samsung itself updating the software of the phone? I said that because PS4's Remote Play doesn't work anymore on my phone, and in 6.0 it did.

This is a very confusing thing, I hope it will be solved soon.

JasonS7notG5 commented 7 years ago

If PS4 Remote Play also not work then I would say it has to do with Android 7.0 (did you flash Nougat yourself onto the phone?) or your WiFi but less the hardware and your problem is a seperate one, has nothing to do with our problems which is a Moonlight problem.

Plug in your S7 edge on your PC and then go to your phone settings and enable 'USB tethering'. After that your PC will connect to a network created by your S7 edge and then go into offline mode (no WiFi no 4G) and start Moonlight. Play a game and I bet your problem is fixed.

OakyProductions commented 7 years ago

No, I didn't flash anything. I see a relation between my problem with Moonlight and with Remote Play, but my main focus is on Moonlight (which works without any problems on my iPad Air).

On the other hand, I tried what you said and my computer doens't connect to my phone, but I don't understand why this would solve the lag every eight seconds. Anyways, thanks for the help!

JasonS7notG5 commented 7 years ago

Edited: Sorry, what I wrote in this post is irrelevant now.

colin-foster-in-advantage commented 7 years ago

What I have noticed on a similar application is the VideoReceive thread blocks for too long, specifically on the system call to the network driver. I couldn't reliably recreate it in other applications, but my suspicion was it had to do with the garbage collector. It might be worth trying to verify whether that is happening by recording a method trace when you're seeing the jitter.

Another theory is that I-frames are being sent out every 8 seconds, which causes inconsistency. I'm not sure if you could get that from the logs / traces or if you'd need a wireshark capture, which adds another level of analysis.

redlight5 commented 7 years ago

I have same issue with my Galaxy S7 and Nexus 5X (I did not test 5X that much). Works perfectly on my Shield Tablet.

Galaxy S7 - Missing frames every second or two causing skips in the image. To me it feels like Moonlight is not in sync or that the decoding of the video stream is not up to par on this device, I also get quite a bit of audio delay even the video delay is very low. PC wired to Nethawk R6700 and phone connected through AC wifi, good signal and using TCP to capture the bitrate between phone and PC gave me results of around 230mbps.

Shield Tablet - Works perfectly in both official Shield Hub and Moonlight, no single dropped frame or judder. Connected to same AC and this device is known to have quite bad wifi chip.

Now this brings up my question: Does Moonlight get the stream from the PC in different encoding using the official Shield tablet compared to S7? I've read that Nvidia restricts some capturing format or codec based from third-party apps. But would that also affect Moonlight on this device also?

Anyways, I really hope we find some solution to this, I'm completely sold to using Stream Theater with Gear VR and the stuttering is the only thing that brings down the experience. Going to keep following!

Edit: Based on the source code there's lot of logging going on so I'm going to spend some time logging on Shield and S7 and comparing what are the differences, hopefully there's something to catch

Edit2: I cloned the repo and tried some quick modifications without too much luck. It seems Shield is using nvidia hardware AVC while S7 falls to using some more generic HEVC. I whitelisted qualcomm HEVC and while it gives slightly better latency (12ms vs 16ms), it did not help the stuttering. I'm not familiar with rendering techniques and unfortunately I do not have the time to learn at the moment so we are in the hands of these fine developers :)

JasonS7notG5 commented 7 years ago

I also have noticed the audio delay on my S7 edge while on my iPhone 4S it just works perfectly fine. But what I noticed on my S7 edge is how much better the response time (input lag) is versus my other (old) devices. This is a huge plus and needs to stay. I really hope this micro stutters problem will get fixed soon. One of the devs also has a Galaxy S7...

redlight5 commented 7 years ago

I'm probably going to take another look over the weekend myself as well if I get the time. Another thing to point out is my S7 is the Qualcomm 820 model.

JasonS7notG5 commented 7 years ago

I have the Exynos model. When I use USB tethering there is no (or minimal) audio delay while when using it on WiFi (5GHz, 2.4GHz) there is noticeable audio delay. On my iPhone 4S there is no audio delay (USB tethering and also WiFi 2.4GHz).

JasonS7notG5 commented 7 years ago

This is 100% Android 6.0 and newer related! I just tested this with my Razer Forge TV which I got today.

So I received my Razer Forge TV. It had Android 5.1.1 on it. I installed Moonlight and started playing Call of Duty: Modern Warfare Remastered. It had no micro stutters on WiFi 5GHz. But the response time from the controller / keyboard+mouse was not instant, it had a litte bit of input lag. Then unfortunately it auto-updated to Android 6.0.1 while I was playing CoD with Moonlight..... so I couldn't make any GameBench tests to prove that their was no micro stutters but input lag. Now its on Android 6.0.1. What I noticed immediately is that the response times (input lag) is so much better BUT now it has micro stutters again. And audio delay. Somehow exactly the same as my S7 edge (Exynos) on Android 7.0 Nougat. THIS IS 100% ANDROID 6.0 MARSHMALLOW AND NEWER RELATED, CONFIRMED! Every single Android 6.0+ device has micro stutters! Nothing network, latency or something else related. The only thing which may be network related is the audio delay BUT on Android 5.1.1 there was no audio delay. Why it may be network related? Because when I used USB tethering on my S7 edge (this means no WiFi, instant perfect connection between PC and device with USB) there was no audio delay but micro stutters where still visible. So please devs FIX THIS ISSUE.

I will try to use GameBench (if it is possible on Android TV) on the Razer Forge TV with tethering. But if you look at others who also wrote they have problems on devices with Android 6.0 and newer... this must be the problem.

https://github.com/moonlight-stream/moonlight-android/issues/214 https://github.com/moonlight-stream/moonlight-android/issues/255 https://github.com/moonlight-stream/moonlight-android/issues/326 https://github.com/moonlight-stream/moonlight-android/issues/328

Edit: Android 4.4.2 (ASUS tablet) / Android 5.1.1 (Razer Forge TV) +smooth video playback -noticeable input lag -minimal audio delay (on WiFi)

Android 6.0.1 (Razer Forge TV) / Android 7.0 (Samsung Galaxy S7 edge) +no input lag -micro stutters -minimal audio delay (on WiFi)

(I couldn't get GameBench running on the Razer Forge TV since it requires USB debugging.)

Edit 2: Android in general has minimal audio delay problems on WiFi. Gaming with WiFi 2.4GHz works better (not perfect) on Android 4.4.2 (ASUS tablet) than Android 7.0 (Samsung Galaxy S7 edge).

Chuacheneguer commented 7 years ago

In my samsung s4 with ROM lollipop moonlight works perfect but with ROMS marshmallow and nougat i have stuttering

JasonS7notG5 commented 7 years ago

Thats what I said to the dev of Moonlight but he said that 70,000+ people are on Android 6.0 and higher and if there was a problem, many more would complain. He doesn't really believe me... I said him that Android 4.4 KitKat and 5.1 Lollipop have smooth video playback but input lag while Android 6.0 Marshmallow and 7.0 Nougat have no input lag but micro stutters in video playback (not smooth).

I can only guess why the other 70,000 did not report this problem. First, micro stutters are not a game breaker for many people, I would say most dont even notice it in the first place but not because there is no micro stutters but because they dont know much about smooth gameplay (consistent 60FPS = 16.7ms frame times). Also many app users are just enjoying the app and they dont know how or really want to report problems, since like I said this is not a 'unplayable' problem.

If the devs really want to prove that I am wrong and others too and we are a minority which screwed up the setup which is why we have problems, then please Moonlight devs, use GameBench on your Android 6.0+ devices and post your results here. Here have again a look at my GameBench graph and screenshots with FPS counter.

http://imgur.com/a/pt3MR https://mega.nz/#F!w4FCXLZI!R00ebcEeWo2d5-8UqDGgzw

Trasen commented 7 years ago

@JasonS7notG5 : Not sure it's a 6.0+ issue, however the app does suffer from microstutters in certain situations. I solved my micro-stutters by reinstalling the Nvidia drivers by first running Driver Sweeper and then just installing the newest released Nvidia driver.

Could you please try this and post the results? I am courious since it was the only thing i had to do to get rid of that pesky issue.

Remember to also tick Nvidia experience.

Best regards.

cgutman commented 7 years ago

I never said there wasn't a bug. I've seen it with my own eyes. I've also spent many hours successfully reproducing the bug on my own devices.

My point is that I work on this project as a hobby in my limited free time. If it's not breaking almost everyone (like a new GFE update totally breaking streaming), it's hard to be motivated after working a 9 hour day at a real job, to sit down and work for another 6 hours on this issue.

As I said in email, I will continue working on it but progress is slow.

ghost commented 7 years ago

@Trasen : I was really skeptical about your solution, but I went ahead and cleaned my drivers and updated with the latest NVidia driver, and the streaming is much better. Thank you!

Makes me believe, if it works for a couple others, that it would point to the streaming service + latest android version as the cause itself. Perhaps NVidia finally addressed the issue(?)

ghost commented 7 years ago

@cgutman : Thanks for your dev on the app, we all appreciate your hard work.

Trasen commented 7 years ago

@XaivierX : No problem bud! However, this might not even be an issue with the streaming service at all.

In general stack-updating Nvidia drivers gives performance issues, there's really no exception. Hence the reason why you should always do a driver sweep before any major Nvidia release.

If it's caused by Geforce Experience or the actual driver though, that's a question that would take re-creating the problem fairly consistently, which i've yet to be able to do.

But i'm really happy it worked for you :) Let's see if anyone else confirms that this is a valid solution.

Best regards!

Chuacheneguer commented 7 years ago

My experience with moonlight is: Samsung S4: ROMS lollipop: works perfect, official or customs ROMS. ROMS marshmallow and nougat: i have stuttering

motorola Moto G 4g : Lollipop: works perfect

oneplus3t: marshmallow and nougat: i have stuttering

Xiaomi Mi Max: marshmallow: i have stuttering

My PC: Intel 2500k 8GB RAM windows 10 pro 64bits . nvidia 780ti

JasonS7notG5 commented 7 years ago

I used Driver Sweeper (now Display Driver Uninstaller), reinstalled newest NVIDIA drivers and GeForce Experience, made a restart and still micro stutters. Tested while USB tethering and also while in WiFi 5GHz / 2.4GHz, it's the same old problem. And I thought the "new" Moonlight 5.0.0 (5.0.1) fixed it but it didn't...

cgutman commented 7 years ago

@JasonS7notG5 and anyone else having this issue, please try this build: https://drive.google.com/open?id=0B_5O1xNt8Q9laGFIeG1iMEFhdUk

genmatrix commented 7 years ago

Tested out with Pixel C (X1 SOC) and noticed it increased latency readings by about 12MS to a total of 22MS average. Normally sit at 10ish MS at 1080p60.

It runs relativity smooth but I am running a custom kernel in 7.1.2 that showed serious improvements in how it handled packets from moonlight (and in general).

Just thought I'd share. :+1:

cgutman commented 7 years ago

@genmatrix Thanks for testing.

The cause of the stutter (assuming this fixes it) was a subtle change that was hardly documented in how presentation times are used in Lollipop vs Marshmallow. In Lollipop, the frame was presented without regard for the presentation time at all, unless you used the special function that let you pass a desired presentation time in, which Moonlight did not use. In Marshmallow, the presentation time is pulled through the pipeline from another API where Moonlight was just passing the current time as the desired presentation time (which seemed sensible at the time). Even though Moonlight's usage of the decoding APIs didn't change, the behavior did because of how the presentation times were now being attached.

Without a presentation time, the frames would be rendered at the next v-sync and if 2 frames were pending on the next v-sync, the 1st would be displayed at the next v-sync and the 2nd displayed on the next v-sync after that.

With a presentation time, the behavior differs. If there are 2 frames with presentation times that land them in the same v-sync window, all but the last frame are dropped by Android's renderer. While certainly good from a latency perspective (since extra frames shouldn't pile up in the rendering queue), it causes this weird stutter if a frame is slightly delayed and the next frame comes in earlier than 16 ms from the previous one (due to the previous frame's network delay). I think it's also likely that the actual latency didn't change, but the measurement is now showing a higher number because the dropped frames were falsely lowering the reported decode latency.

The APK I attached returns to the old behavior of always queuing the frame for display, rather than dropping frames that come within the same 16 ms window. I suspect I can do better though by providing a more accurate presentation time using some other APIs. That part I'm still looking into.

genmatrix commented 7 years ago

Very interesting and good read. I will be wiping my Pixel C back to stock latest release and see how it behaves as well. Since I don't know how much the custom kernel is influenceing performance, I'd like to help rule that out.

chicozeb commented 7 years ago

Hi.

First of all, thanks Cameron, for your hard work. It´s much appreciated.

I´m using Shield TV. With your latest build I was getting stuttering for the entire session(not that i´ve played that much). With this build that you provided, the stuttering is gone. Well, not gone, but only small stuttering from time to time(2 or 3 seconds of stuttering), that may be related to the GPU being maxed out, or asset loading. Tested with The Witcher 3.

I was having stuttering with your latest builds, but it was like 5 or 6 minutes of perfect stream, then stuttering. Restarting the stream solved it. But it would start again. This issue seemed to appear after i updated the shield tv to android 7. I don´t recall having it with android 6(and after nvidia fix the gfe stuttering), but i don´t use moonlight too much.

With nvidia games app, the stream is perfect for the entire session.

Hope this info helps.

Thanks.

JasonS7notG5 commented 7 years ago

@cgutman installed the APK and... it is so much better! It feels consistent and smooth! The micro stutters are gone! :D

But GameBench doesnt work and I feel like it is not "60fps smooth" but "near 60fps smooth" and I only played for like 10 minutes (CoD:MW training level). What I mean is there may be no micro stutters anymore but there is like really minimal input lag which makes it not "exactly 60fps smooth". But I played with mouse and keyboard (and USB tethering since my 5GHz connections only have like 60% strength), I think with a controller this would be not an issue. But without these micro stutters it is so much more enjoyable, in fact now I will use Moonlight more often! Thanks for this fix! And sorry if I have been rude to you or anybody else. This was not my intention. I felt like "left behind" after spending so much time and "proving" that there are micro stutters and getting no help plus the disbelief that this could be an issue for more than just me.

(this could be like a placebo effect since I can not see GameBench results but I dont think it is... it really feels smooth :P)

daedalus87m commented 7 years ago

I have installed the new APK and unfortunately it's still stuttering for me. I have to add that I'm using 2 routers, and one is in Bridge mode. When connected to the 1st router everything is (and also was before the new APK) very smooth, but I get heavy stutters when connected to my 2nd router (which is the one reaching living&bedroom).

thw0rted commented 7 years ago

Is your PC on a wired connection? That should help, but you could also look at getting a powerline adapter instead of using a second router in bridge mode -- some introduce more delay than others but at least your end to end quality is likely to be better. (Maybe you know somebody who you could borrow a pair from, to see if it helps enough to justify a purchase?)

Chuacheneguer commented 7 years ago

[quote] @JasonS7notG5 and anyone else having this issue, please try this build: https://drive.google.com/open?id=0B_5O1xNt8Q9laGFIeG1iMEFhdUk [/quote]

This version tested in a Xiaomi Mi Max (android 6) works without stuttering but with much delay

daedalus87m commented 7 years ago

@thw0rted My connection looks like this:

Router 1 (in office) gets internet. This router is connected to a hub. My PC is also connected on this hub, and a long cable that is connected to this hub goes through some walls into my house (next to office), where I have another Router (the one I want to connect from my phone).

Unfortunately I don't have a powerline adapter or know anyone who has one.

I get a non stuttering connection when connected to Router 1 (40ms delay, but I want to play turn base games anyway), but on Router 2 it stutters all the time and so does the audio, which is veeeery annoying and basically unplayable.

thw0rted commented 7 years ago

Oh! When you said "bridge mode" I assumed it meant that your second router was acting as a wireless repeater. The powerline adapter was supposed to let you connect your routers to each other directly, but you're saying they're already configured with a direct cable connection. In that event, all I can suggest is that one or both of your routers might be performing poorly, but you probably already knew that. Sorry!

daedalus87m commented 7 years ago

@thw0rted If the 2nd Router is just not up to the task (best case scenario), getting a new router wouldn't be a problem. I was rather afraid that there could be another problem, like it being a technical limitation making it impossible to properly reroute it to another router or something ( I'm no specialist :D ).

chicozeb commented 7 years ago

I´ve bought an android box (mini m8s II). I´ve put android tv inside(superceleron rom) that reduces the latency on moonlight.

When i tried to stream, i could only get 25 Mbps of maximum bitrate. Anything beyond that makes the image freeze, while sound continues. Pc network card at 1Gbps.

Now, if i set the pc network card at 100 Mbps full duplex, the problem is solved. I can go all the way up to 100Mbps bitrate.

Everything ethernet connected.

Hope this heps someone.

redlight5 commented 7 years ago

Major improvement in stuttering department, only small warps here and there but looks 10 times better. But I can also confirm there is significant latency (app reports 16ms for me but it feels more like 60ms). Anyways, happy to see improvement here and hoping there is something to do for the latency (it's too bad to be playable for me).

chicozeb commented 7 years ago

After trying on the amlogic s905x box and on shield tv, i don't see any latency differences. 40ms hardware decoding latency on s905x and 1 ms for shield tv. 45Mbps bitrate. Ethernet connected.

chicozeb commented 7 years ago

Strange... I'm having less latency using 4k60 and 80Mbps, about 25ms, than using 1080p60 at 40 Mbps, about 40ms, and much less than 720p60 at 15Mbps, about 80ms latency...

Strange... maybe the 4k decoder is better on the s905x...

chicozeb commented 7 years ago

Oh, I'm using h.265.

JasonS7notG5 commented 7 years ago

The latency is the roughly the same for me as before (9-12ms on my S7 edge Exynos variant with Nougat, H.264 1080p 8Mbps and 20Mbps tested) with the provided Moonlight APK from cgutman. WiFi 5GHz both on PC and S7 edge with only 60% signal strength and it works most of the time, no micro stutters anymore.

jaysharp29 commented 7 years ago

Greatly improved on a moto g4 running marshmallow. No stuttering using h265 and 1080p 60fps.

Lingering issues are higher latency (24ms) and frame skip. The frame skips look like vsync off, but are much preferred to the jitter.

redlight5 commented 7 years ago

Made a small video to demostrate. First half is the official build which has stuttering (visible in the video) but great low latency. Second half is the unofficial build linked here without stuttering but bad latency. The reported latencies in this test were: Official 13ms, Unofficial 17ms (it's definitely more).

https://drive.google.com/open?id=0B4FaEFFulZWINWZsRW9tYWNaZzA

chicozeb commented 7 years ago

The new update from the play store brings back the stuttering for me. Sometimes it does not stutter. The latency is awesome. But it's not worth playing like that.

The reported latency is the same because is only the video decoder latency, and i think that it doesn't report any other sources of latency.

chicozeb commented 7 years ago

After a bit more testing, i am getting more or less the same results that i had with the builds before the last one(not the latest, from 8/6/2017). On shield tv, it's smooth for a few minutes then it starts stuttering. The build before the latest(8/6/2017) gave me the worst performance, with the game always stuttering. I'm testing most of the time with the witcher 3.

The build provided here gives me more latency than the latest but no stutters.

JasonS7notG5 commented 7 years ago

I think the build on the Play Store does not contain the fix for the micro stutters. The build which you can download here is based on v5.0.1. If you read what has been fixed in v5.0.2 you may find what causes the 'high latency' (17ms is not high).

I think if you lower the bitrates to like 20 Mbps it may solve your problem.

v5.0.2

  • Reduced video stream latency
  • Fixed video stream glitching at high bitrates
  • Fixed compatibility with some HEVC decoders
  • Fixed PCs not being found automatically on some devices
  • Fixed keyboard d-pads not working (again)
  • Fixed some reported crashes and hangs

Like I said I used the micro stutter fixed 5.0.1 build from cgutman which he posted here. My device is the S7 edge, Exynos variant, Android 7.0. My graphics card is the GTX 660, I can only stream in H.264, I have the newest NVIDIA driver and GeForce Experience and I am on Windows 10. Moonlight settings are default, 1080p 60fps 20 Mbps. PC and S7 edge connected via 5GHz WiFi to my router, 60% signal strength.

So please if you want to report a problem post your complete setup like I did.

JasonS7notG5 commented 7 years ago

There is definitely more input lag in the micro stutter fixed version versus the official builds. I dont know if it is 'latency' since I only get 9-12ms, same as the official builds. It feels more like input lag, not that huge bad but noticeable but nowhere as bad as the previous micro stutters situation. This must be in relation with the 'solution' for getting rid of these micro stutters.

Can we have a v5.0.2 based build with the micro stutters fix (per APK)?