-
-
Notifications
You must be signed in to change notification settings - Fork 185
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: Refresh rate switching not working on Google TV - 24fps content stutter #1151
Comments
I understand your request. I have a question though: if you disable Frame Rate Matching of Android 12 in Android settings, does the adaptive refresh rate of nova works on your TCL Android TV (to be enabled in nova settings)? |
I have not seen such a setting - I will check, but I do not think it exists. There were some XML manifest settings that you had to set in the package to mark NOVA as a MEDIA APP - otherwise those API do not work. You did not try those. (this was some years ago maybe things changed now) P.S. I checked and there is no refresh rate matching settings - NOVA is the one that should set the refresh rate - it will not work on its own. |
There are pretty much no INI files in Android... Maybe they are relevant to your platform but then it's specific to your platform. |
@phhusson That is not true - there is an application manifest - I meant XML |
Nova has to notify the framework for the frame rate: |
We do notify the framework for the framerate, using this API: And this API has been available since much longer (Android 6) than the one you linked (Android 12) (which isn't related to manifest either?) It is indeed possible that your TVs are non-conformant, but I don't have the budget to buy those. If you have an actual source of information saying that your TV is indeed non-conformant on preferredDisplayModeId, but it is conformant on SurfaceControl.setFrameRate() we might take a look. |
OK I will try to check tomorrow what a Sony TV replies. |
I wrote that it is not TV specific - I reported years ago that Nova refresh rate switching does not work on Android TV 6+ up to Google TV 12. I also had found info that those APIs to work it was necessary to mark the app as VIDEO in the manifest file - It was long ago I do not know if that info is still relevant at all. |
@courville Yes I will provide them. I will also enable refresh rate info in developer options as both TVs do not display INFO if running an app. Did you see my replies about multi-channel? I will be glad to test those too if you have any recommendations. |
Uh strange... I use nova adaptive refresh rate on Google Chromecast (sabrina), fireTV stick and nvidia shield with current nova releases. |
@courville You missed what I wrote - those devices are connected via HDMI. The TV apps work directly on the TV - that is the difference. I guess you did not understand the difference. I already wrote that it works on my Mibox which is also connected via HDMI. |
OK back to square one (your statement about "not TV specific" was misleading to me): please provide the dumpsys (full one). I will try on Android TV Sony TV tomorrow. |
I am sorry, I meant that it is not specific to a particular TV model or Android version. If you are running Nova on the TV it does not work. If you are running Nova on external device connected via HDMI it does work. |
Thanks for sharing the dumpsys. It reveals that your panel only supports one mode:
Thus nova cannot switch to a display mode with a refresh rate matching the video fps. Before going further, have you seen any other video player to properly handle the 24fps video on your TV? |
@courville KODI is playing the same files without any stutter. It also can pass-through without issues. There is an option for refresh rate switching in KODI, but it plays well regardless if it is ticked or not. I guess Nova is using different libs to decode or is configured differently. 24fps without 3:2 pulldown is a disaster. Those supported modes can not be correct. This TV supports up to 144hz and VRR. Plus Mibox does switch it to 24fps running Nova. (external HDMI device) The option to show the debug refresh rate is not present in the developer options on the TV - I do not know why. Do you know any way of checking the refresh rate? The INFO button on both SONY and TCL does nothing when running an app from the TV - it shows info only for HDMI signals. I will connect a keyboard to the tv later and check the KODI debug info to see what refresh rate is running - I think CTRL+i or CTRL+o was displaying real-time decoding info. |
KODI plays the same file very smooth, regardless if refresh rate switching is on or off. |
OK let's add an adaptive refresh rate to nova that calls |
@courville That will be great thank you. If you want me to test something let me know. |
@JJD2K, I gave it a shot but I do not see a lot of difference with my setup (chromecast hd on LG tv). Please comment if you observe any improvement on your side by selecting the third option in the adaptive refresh rate setting menu. |
I believe you can not test it on a device that is connected via HDMI - I think the OS should run on the TV itself for it to work. |
Thank you very much for the update, unfortunately it makes no difference.
I then ran Kodi on the TV and with refresh rate switching OFF it plays smooth which is very strange. The TV does not indicate any refresh mode switching. I do not know what KODI does but it plays as smooth as if the switching is ON. |
perhaps it is your TV that does the rate matching. EDIT: all what I can test is via HDMI with chromecast 4k.
Clearly with mode 2, nova does not manage to get
With mode 1, the refresh rate switch happens to match video fps. |
Update: when using
|
…ME_RATE_ALWAYS that we have fixed video fps According to: https://developer.android.com/media/optimize/performance/frame-rate > For video apps, the compatibility parameter passed to setFrameRate() should be set to Surface.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE to give an additional hint to the Android platform that the app will use pulldown to adapt to a non-matching display refresh rate (which will result in judder). See nova-video-player/aos-AVP#1151
BTW I checked xbmc code and there is no |
@JJD2K please test the following apk that should apply pulldown if "fluid" rate matching is selected or change refresh rate on "non-fluid" android option (that you might not have on your TV). |
For the record, looking at
It indicates that nova's request is indeed propagated to Android using the last code change (which is progress). |
@JJD2K please let me know on your TV if you have an android setting that deals with matching frame rate in your "display and sound" section. |
@courville The only options that could be related are in PICTURE-ADVANCED-MOTION: I do not think that those are related to this API. I will carefully read your messages, test and provide info. |
Is pulldown applied by default? Why not just make it an option in the refresh rate setting or is it too hard to be optional? |
Refresh rate switching on
Frame rate matching on
I guess the pull-down mode is never on for me. |
I put code formatting it outputs crap above. How did you add those code boxes? |
This is what I get when KODI plays fluently:
|
In the last one at least your tv got the request from nova to get the |
Kodi seems to request |
you need to put triple backquote for code block |
Can you add forced pull-down mode with the KODI 60fps settings in the refresh rate switching options? |
Nova and KODI have very different code base. This is not straightforward. |
Yes the results are from the latest APK. |
…ME_RATE_ALWAYS that we have fixed video fps According to: https://developer.android.com/media/optimize/performance/frame-rate > For video apps, the compatibility parameter passed to setFrameRate() should be set to Surface.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE to give an additional hint to the Android platform that the app will use pulldown to adapt to a non-matching display refresh rate (which will result in judder). See nova-video-player/aos-AVP#1151
https://developer.android.com/media/optimize/performance/frame-rate There is an example code at the end of the above page. However, there are scenarios where preferredDisplayModeId should be used instead of setFrameRate(), such as the following: If the app wants to change the resolution or other display mode settings, use preferredDisplayModeId. If the app prefers to switch the display refresh rate even if it requires a heavy mode switch (for example, on an Android TV device), use preferredDisplayModeId. Apps that can't handle the display running at a multiple of the app's frame rate, which requires setting presentation timestamps on each frame, should use preferredDisplayModeId. |
@JJD2K nova uses either |
JustPlayer has feature called Tunneled playback, which when enabled plays extremely smooth. |
Problem description
Please use the new refresh rate switching in Google TV 12 to avoid 24fps stutter:
https://developer.android.com/media/optimize/performance/frame-rate)
https://www.reddit.com/r/AndroidTV/comments/xro84w/current_state_of_frame_rate_matching_in_android/
Current refresh rate switching has never worked if Nova is used on Android TV or Google TV natively - not from an external player.
Steps to reproduce the issue
Play a 24 fps movie on a Google TV and watch a scene with a panning or moving camera.
Expected behavior
No response
Your phone/tablet/androidTV model
TCL C845
Operating system version
Google TV 12
Application version and app store
Latest from Google Playstore
Additional system information
No response
Debug logs
No response
The text was updated successfully, but these errors were encountered: