As hardware, firmware, software and users evolve, so has the setup for Nvidia 4k.
This may apply to 1080 users as well.
This setup is 100% reliable and continues to perform perfectly imo and no reason anyone else's can't as well.
Every file in the Kodi wiki sample page functions perfectly, audio and video.
Simply add the playercorefactory.xml below and you are done. I have included some tuning info.
Description:
Windows desktop and Kodi run at 60Hz, as they should.
All my titles are 23.976 frame rates complete full ripped bdmv's in iso container and a handful of stripped mkv's, HEVC, 2D and 3D.
Match frame rate on start and stop is enabled.
Nvidia switches from 60Hz to 23/24 Hz when I press play, matching my titles frame rate.
When the title ends, Nvidia switches back to 60Hz and stays that way until another title is started.
When Kodi quits, to Windows desktop, it remains 60Hz, as it should.
I pass all audio including Atmos and DTS:X.
There is zero dropped or skipped frames and no micro stutter or any of the other complaints I read.
There is no interaction on my part required at all. This is all automated. Of course there is an option to manually intervene on the fly at any time.
3D is always enabled globally.
2D titles do not initiate any 3D modes.
3D titles do initiate the proper 3D mode be it SBS, TAB, or Frame Packed MVC, automatically.
I just press the on button for my glasses and sit back and enjoy.
I am using 4k HDMI 2.0 components.
Samsung JS8500
Nvidia GeForce GTX 960
Onkyo TX-NR646 or Denon AVR-S720
Windows 10 x64
PowerDVD 16
Kodi v.17 nightly build, not the Windows store version although it should work by adding your playercorefactory to a different directory. (I am unable to use afedchin build with 4k HDMI 2.0 anymore)
Quick hardware adjustments:
JS8500:
Do not edit or rename HDMI input device type to 'PC' as recommended elsewhere. Although this helps DPI scaling problems in W10 it also looks 'foggy' and greys out most of your settings. (You will still achieve RGB 4:4:4 Color Format when finished)
Set HDMI Black Level to Normal, not Low. Normal is RGB Full. Low is Limited. You want all hardware to match.
Enable HDMI UHD Color. Isn't this why you use 4k?
Set Auto Motion Plus to Smooth.
Set Cinema Black On. This ensures the top and bottom bars in both players is as black as black gets.
Set Sharpness to 50%. Contrast 95%. Backlight 100%. Smart LED High. Brightness 45%. 3D Auto View to Auto2. Everything else off.
You will have to do this 3 times, 4 if you game which I do not. Smart TV's change picture modes automatically depending on what is input to them. They rememeber settings for the different things we input. 3D always renders in 1080p although you will be getting that to each eye now that you are using 4k where as 1080p panels split this to each eye (which still looks good). This is one mode. Windows Desktop is another, and 2D playback is yet another. So, start a title in 2D, pause it, and make your adjustments. Do the same for 3D and again on the Windows desktop. You will also be adjusting Nvidia Control Panel along with your TV. Do them at the same time. Nvidia will also remember each mode after adjusting it once.
Onkyo:
Enable Deep Color by pressing STRM Box and On/Standby at the same time.
PowerDVD 16:
Enable Match Refresh Rate when you see the pop-up for the 1st time and choose not to show you again.
Enable Hardware Acceleration.
Turn off all enhancements.
Enable High Perf Mode.
Select Non-Decode High Def Audio/Full Dynamic Range.
Enable Play 3D media in 3D.
You may need to press pause to engage PDVD 3D mode (bug).
Although PDVD opens via Kodi script(s), it will not close automatically upon title completion. I mapped alt + 4 to my remote. This kills it and returns you to Kodi still in focus and in fullscreen as you left it.
Nvidia installation:
In this exact order,
Download driver, create new desktop folder, and point it to unzip there. Delete folder after install unless you have a reason to keep it.
Choose Custom Install/Clean Install.
Uncheck 3D Vision Controller Driver unless you need it for some reason.
Uncheck Experience unless you want to add a Windows Credential and be reminded for updates.
Open Control Panel.
Adjust Image Settings with Preview. Quality. Apply.
Set Up Stereoscopic 3D Enable.
The Vision Test Window will open. Select Next and Next again.
Your panel will engage 3D. Select the proper images in the next 2 screens including the scrambled box with a pop-out box inside it.
Finish.
You will return to the desktop in low res 3D mode.
Select Change Resolution in Control Panel.
You will see HD 3D 720 is selected. Change it to HD 3D 1080. Change resolution to 23 or 24 Hz (Doesn't matter). Change Color Format, Depth, and Range to RGB, 12bpc, and FULL.
Select Apply and keep changes before reverting.
Now select your native resolution for Ultra HD, HD, SD. Mine is 4k x 2k 3840 x2160. Change Refresh Rate to 60Hz. Select Apply.
Make sure RGB Full is still set. Depth will be blank. It's ok. It will revert to 8, 10, or 12 bit depending on the content it's fed in the future.
Remember to play a 2D title, pause it, minimize the player, and readjust these settings if need be. Do the same for 3D and Windows desktop, all individually. Adjust TV settings at the same time. For example. You are playing a 2D title in KODI or PDVD. Check your panel INFO button. It should show you are playing at 24Hz. Minimize it while paused. Check Nvidia Control Panel color format, depth and range. You should still be at RGB Full. Change if needed. It will remember and you will never have to do it again. Check your TV settings are proper. This too will change depending on what you have input but will remember so you don't have to do it again.
KODI adjustments:
DO NOT run Kodi as admin. PDVD will popup "Disc not found, choose another".
Video/Playback:
Adjust Refresh Rate to Match Video 'On start/stop'.
Pause During Refresh Rate Change '8 Secs'. This is to give ample time for your panel to auto switch preferred 3D mode.
Sync Playback to Display 'Uncheck'. With this setting enabled, you might experience repeated random audio drops using Dolby TrueHD as I have.
Playback Mode of Stereoscopic 3D Videos 'Preferred Mode'.
Disable Stereoscopic 3D Mode When Playback Ended 'Enabled'.
Resolution remains Native. In my case, 3840 x 2160 @ 60Hz. You should always be using 60Hz regardless.
There is no need for any add-on to auto switch 3D modes. Smart TV's do this automatically now.
There is no need for Advanced Launcher to trigger nvstlink.exe toggle anymore or map it to your remote.
Do not enable limited 16-235 color space. Keep KODI matched with your other components at full.
Video/Subtitles:
Subtitle Position on Screen 'Below Video'.
Stereoscopic 3D Depth of Subtitles '5'.
Video/Discs:
Blu-Ray Playback Mode 'Simplified'. This will bring up the context menu 'Play with' allowing you to choose other than what is already focused as the default. You will simply press enter or navigate to your preference.
Blu-Ray Playback Mode 'Show Blu-ray menu'. This will skip the context menu and go directly to the correct player eliminating the extra 'enter' button press. You can still choose players by manually navigating to 'Play with'. When you do the latter, and select play using with dvdplayer, KODI will show your title including Blu-ray menu, etc. Remember, some discs menus work perfectly within KODI and some do not.
System/Settings:
Video/Output:
Stereoscopic 3D Mode (Current) 'Disabled'.
Preferred Mode 'Same as Movie'.
Use a Fullscreen Window Rather Than True Fullscreen 'Enabled' although Disabled using 1 display has presented no problems for me.
I have read that using Kodi to adjust display size introduces ghosting. Always use your panels display size settings to fit to screen.
If you do not have an existing playercorefactory.xml, create one in your C:\Users\YOURUSERNAME\AppData\Roaming\Kodi\userdata folder. This is the only file you need to create and the only one I am currently using. Right click/NEW/Text Document and rename the entire text, playercorefactory.xml and not playercorefactory.xml.txt. Right click your new or old playercorefactory.xml and select edit. Copy and paste the following:
Code:
<playercorefactory>
<players>
<player name="PowerDVD" type="ExternalPlayer" audio="false" video="true">
<filename>C:\Program Files (x86)\CyberLink\PowerDVD16\PowerDVD.exe</filename>
</player>
</players>
<rules action="prepend">
<rule filetypes="iso|bdmv|mpls|m2ts" player="PowerDVD"/>
</rules>
</playercorefactory>
You are finished. Alternatively, you may need or choose to use the following setup depending on your hardware and external player(s) of choice:
Windows 10:
There is no need for Task Schedular tasks anymore.
You will still need Virtual Clone Drive or the likes to mount iso's for your external player. (You want a dedicated drive letter assigned or prefer the quicker mounting vs PDVD internal)
Set Windows Audio Properties as usual.
4k & 1080 users may need to use an additional JScript code to switch refresh rates appropriately if needed. (2D renders as 3D problem) I don't but you might. Here's how to do it:
google qres.exe or just get it from
http://www.majorgeeks.com/files/details/qres.html
Create a folder in your User/Documents folder and name it RefreshRateChanger. Put QRes.exe inside it. Create .txt file and rename to switch.js in the same RefreshRateChanger folder. Edit in this code:
Code:
(function() {
var refreshRate = 0;
// Get current refresh rate
var wmiService = GetObject('WinMgmts://./root/cimv2');
refreshRate = new Enumerator(
wmiService.ExecQuery('SELECT * FROM Win32_VideoController WHERE Availability <> 8')
).item(0).CurrentRefreshRate;
if (typeof refreshRate != 'number' || refreshRate === 0) {
WScript.Echo('Duh. Cannot determine current refresh rate.');
} else {
// Run QRes.exe to change refresh rate
var fs = new ActiveXObject('Scripting.FileSystemObject');
var shell = new ActiveXObject('WScript.Shell');
shell.Run(fs.GetAbsolutePathName(fs.BuildPath(
fs.GetParentFolderName(WScript.ScriptFullName), 'QRes.exe')
) + ' /x 3840 /y 2160 /r:' + (refreshRate >= 59 ? 24 : 60), 0, true);
}
})();
1080 users can edit this line of code from
) + ' /x 3840 /y 2160 /r:' + (refreshRate >= 59 ? 24 : 60), 0, true);
to
) + ' /x 1920 /y 1080 /r:' + (refreshRate >= 59 ? 24 : 60), 0, true);
This JScript is also a handy refresh rate switcher for Windows you can create a shortcut for.
I made a switch.js shortcut to my taskbar and click it once to switch from 60Hz to 24Hz when viewing youtube or flash player for example.
The original codes have changed. Here they are:
The files you are about to create/modify are read and launched via Kodi. Some user input is required.
Navigate to C:\Users\YOURNAMEAPPEARSHERE\AppData\Roaming\Kodi\userdata.
If you do not have an existing playercorefactory.xml, create one. Right click/NEW/Text Document and rename the entire text playercorefactory.xml and not playercorefactory.xml.txt. Right click your new or old playercorefactory.xml and select edit. Copy and paste the following and edit 'YOUR USER NAME GOES HERE' with your name (There are 2 lines to edit):
Code:
<playercorefactory>
<players>
<player name="3D" type="ExternalPlayer" audio="false" video="true">
<filename>C:\Users\YOURUSERNAMEGOESHERE\AppData\Roaming\Kodi\userdata\PlayISO3D.bat</filename>
<args>"{1}"</args>
<hidekodi>false</hidekodi>
<hideconsole>true</hideconsole>
<forceontop>false</forceontop>
</player>
<player name="2D" type="ExternalPlayer" audio="false" video="true">
<filename>C:\Users\YOURUSERNAMEGOESHERE\AppData\Roaming\Kodi\userdata\PlayISO2D.bat</filename>
<args>"{1}"</args>
<hidekodi>false</hidekodi>
<hideconsole>true</hideconsole>
<forceontop>false</forceontop>
</player>
</players>
<rules action="prepend">
<rule filetypes="mkv|avi|strm|mov|flv|mp4|webm|3gp" player="VideoPlayer"/>
<rule filename=".*.3D.*|.*.3D.iso|3D.*" player="3D"/>
<rule filetypes="iso|bdmv|mpls|m2ts" player="2D"/>
</rules>
</playercorefactory>
Create #1 .bat file as you did for the playercorefactory.xml. Name this PlayISO3D.bat and not PlayISO3D.bat.txt. Edit the following text into it and edit the drive letter you assigned to VCD. The example below shows A: presently. Once again, edit YOURUSERNAMEGOESHERE twice.
Code:
Set file=%1
Set dummy=%file:iso=%
IF NOT %dummy% == %file% (GOTO playiso) ELSE (goto next)
:next
Set file=%1
Set dummy=%file:mpls=%
IF NOT %dummy% == %file% (GOTO plaympls) ELSE (goto playbdmv)
:playiso
"C:\Users\YOURUSERNAMEGOESHERE\Documents\RefreshRateChanger\switch.js"
timeout /t 4
"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\VCDMount.exe" /d=0 %1
"C:\Program Files (x86)\CyberLink\PowerDVD16\PowerDVD.exe" A:
"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\VCDMount.exe" /d=0 /u
"C:\Users\YOURUSERNAMEGOESHERE\Documents\RefreshRateChanger\switch.js"
GOTO end
:plaympls
set pth=%1
set pth=%pth:~1,-25%
"C:\Program Files (x86)\CyberLink\PowerDVD16\Movie\PowerDVDMovie.exe" "%pth%" exit
GOTO end
:playbdmv
set pth=%1
set pth=%pth:BDMV\MovieObject.bdmv=%
set pth=%pth:BDMV\index.bdmv=%
"C:\Program Files (x86)\CyberLink\PowerDVD16\Movie\PowerDVDMovie.exe" %pth% exit
GOTO end
:end
exit
Finally, create #2 .bat. Name it PlayISO2D.bat. Edit the following text into it and edit the drive letter you assigned to VCD.
Code:
Set file=%1
Set dummy=%file:iso=%
IF NOT %dummy% == %file% (GOTO playiso) ELSE (goto next)
:next
Set file=%1
Set dummy=%file:mpls=%
IF NOT %dummy% == %file% (GOTO plaympls) ELSE (goto playbdmv)
:playiso
"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\VCDMount.exe" /d=0 %1
"C:\Program Files (x86)\CyberLink\PowerDVD16\PowerDVD.exe" A:
"C:\Program Files (x86)\Elaborate Bytes\VirtualCloneDrive\VCDMount.exe" /d=0 /u
GOTO end
:plaympls
set pth=%1
set pth=%pth:~1,-25%
"C:\Program Files (x86)\CyberLink\PowerDVD16\Movie\PowerDVDMovie.exe" "%pth%" exit
GOTO end
:playbdmv
set pth=%1
set pth=%pth:BDMV\MovieObject.bdmv=%
set pth=%pth:BDMV\index.bdmv=%
"C:\Program Files (x86)\CyberLink\PowerDVD16\Movie\PowerDVDMovie.exe" %pth% exit
GOTO end
:end
exit