• AnyStream is having some DRM issues currently, Netflix is not available in HD for the time being.
    Situations like this will always happen with AnyStream: streaming providers are continuously improving their countermeasures while we try to catch up, it's an ongoing cat-and-mouse game. Please be patient and don't flood our support or forum with requests, we are working on it 24/7 to get it resolved. Thank you.

Kodi project to enable HDR in MPC to launch any movie

Kabylake, AMD rx4,5 and nvidia new video cards support hdr. When I look into this I will need kaby lake and nvidia beta testers to test code. I'll code a simple on off app that tests trigger. If it works I'll include a more advanced check in mpchcfn.exe or mpcbefn.exe with XDR.Cal trigger.

Let me get the xdr automation released first and do away with presets then I will look into HDR tab triggering.
 
Made a flowchart of the program that I will share with you regarding this project. This is going to take awhile to code but when its done this program will be awesome. Especially the future update of hdr windows on off feature with mpc and madvr hdr pass thru that will automatically switch on and off just like kodi as it lauches mpc then returns to fill screen after.

XDR.CALfiles used
-mpchcfn.exe (front end to check and launch mpc hc in kodi colors controls possible hdr switching future update
-mpcbefn.exe (front end to launch mpc be in kodi color controls possible hdr switching future update)
-udtkhp.dll (passing the update program to check if the kodi hdr project is current)
-xdrmrg.dll (class to be used among many programs to pass the paths of the players to mpchcfn and mpcbefn, passing default player to xdr standalone (non kodi users for right click desktop launch file option outside kodi)
-xdrcal.exe (used to pass the adjustments from mpc-hc or mpcbe to a file to be read by mpchcfn.exe mpcbefn.exe to give you custom meta data) (also used in future update to set hdr on windows desktop b4 launching mpchc or mpcbe then closing hdr and switching off after player is shut down based on the hdrtrigger tag set in xdr.cal>>first entry)
xdr.cal data file (if present sends data to mpchcfn or mpcbefn to decide hdr on/off or custom meta data set per video file. If hdr tag set 0 read the final 4 lines of data in file and pass....

XDR Config:
create update class:create udtkhp.dll
Add optional update when available y/n
create xdrconfig class:xdrmrg.dll
Funcions to take inputs from path open as dialogs and send to xdrmgr.dll
xdrmrg.dll responsible for storing and reading the paths to regristry and passing paths to other programs
under The Kodi HDR Project
keys MPC-HC path,MPCBE PATH,Default player (1,2) 1 mpc hc 2 is mpcbe,
Ask for path to kodi ( if yes write smart xml script with players selected to point to front ends
Ask for path to players
Reason for smart xml script
-To set path to custom install of any program to set points for other programs to call the paths of the files correctly
-to Verify kodi xml exists and that kodi is installed

If path to kodi write xml based on players selected
if 1 player set 1 path 1 entry in xml - also used to call the INSTALL path of the player and INSTALL path of front ends
if 2 players set 2 players in paths in xml - also used to call the INSTALL path of the player and INSTALL path of front ends
Ask if want desktop xdr support outside kodi
ask for default player used. Get from paths set
If yes write reg entry for right click launcher to windows menu and link to default player
Set to point to mpchcfn or mpcbefn

-------------------------------------------------------------------------------------------------------------

Workflow xdrcal.exe
Load xdxcal.exe

Prompt which player to launch to set mpc hc or mpcbe
Run check for paths set in XDRConfig.exe If yes go ahead. If no msg need to set path to player before launching..

Launch player
wait in background set (if app running set timer 1 sec condition reduce cpu cycles)

Once player is shutdown ask if file has pure hdr meta data?
Yes write 1 in first entry - No 0 in fist entry
Gets values for last 4 entries write decimal values into hdr.cal
msg box "Please selected the directory of the video file that xdr.cal will be saved to."
Save as dialog comes up ask user for directory of xdr.cal
Msg "Tell users each hdr.cal must be in a seperate folder with each video file to get custom meta data per file" "Also say will be used for hdr triggering in the future update"
close program

-----------------------------------------------------------------------------------------------------------------

these files remain in the kodi hdr project install directory
workflow

mpchcfn.exe

front end to mpchc to get argument file path from kodi and check if xdr.cal is present
If present load its variables.
Check
gets path information and settings from xdrmrg.dll to be accessed
get xdrtrigger.dll code (with futureupdate)
If hdrtrigger tag (1st vale is 1 then load hdrtrigger.dll(room made in program for this update to call this dll)
dll sets hdr on off

wait check every sec tell mpc hc closed. Call hdrtrigger.dll to swith hdr off
close mpchcfn
If hdr=0 load the final 4 values into variables then into the regristry of
both players

If no hdr.cal file set default for both players,. close and let kodi load material as though nothing happened.

After then launch mpc hc pass arguments fullscreen exit return and file kodi selected
run in background set timer 1 sec. use xdrmrg.dll to pass the paths of the players
Check if app is closed
if closed set 4 colors settings to 0 (default) for both mpchc an mpcbe
close mpchcfn return to kodi

-------------------------------------------------------------------------------------------
mpcbefn.exe

same routine as mpchcfn.exe

going to take awhile to get this release out but when its out I'm sure it will be used. Especially if I figure out the hdr switching to do this automatically.
 
This is painful writing this code and declaring the classes. I have to think of every way a user can throw an error to screw up my code and cover every angle and check dbl check to make sure every file selected is the correct one and the correct version and path. Then store these values for mpchcfn mpcbefn to use inside and outside kodi. I'm writing code to include non kodi users to use this program outside kodi as well. And coding space for hdr trigger when I figure that out.
Got the XDR.CAL creation done and 80 percent of the XDR Config. Need to create the XML auto script writer and 2 front ends. Spent all day working on this. about 8 hrs.... now I'm at 36hrs.....geez
 
Run into a snag. XDRConfig works perfect asking and checking user input for paths to kodi mpc hc and mpc be. What I need is a way to find the path to my program "kodi hdr project" when installed on a users system. I could ask where they installed xdr but that would be stupid. I need some code to read the key to the programs installed by the the key shown in the picture. Then do a loop to load all the keys in the uninstall. The look for the display name and do a condition match on the DISPLAY NAME. If display name VALUE = "Kodi hdr project" then place the KEY "Install Location" value into a variable. Then I can add this info to point mpchcfn and mpcbefn to their install directory to launch anywhere within the computer. The paths to certain files must be locked down to prevent user from custom installs on drives other than standard c: or program files directory. Some people install apps on different drives.

I've seen some examples showing all installed programs in your system and passing them to a listbox1 to show but they do not work on the new version of vb, I relly do not need a listbox item. What I need is a for next loop till uninstall directory is read until no more keys are read and return a False data to a variable to stop. Once the name is found to pass the installlocation key to a variable so I can place that data into a set location to reference when xdrconfig writes the custom xml script for kodi. The path values in playercorefactory.xml point to the players as normal. I'm placing mpchcfn.exe and mpcbefn as front ends to launch to except the path from the argument in cmd to pass the kodi selected video file path to these programs. The mpchcfn will read that path to video file and check hdr.cal. If present load the values then pass the cmd with the tags /fullscreen/exit forsay and return to kodi after the file is loaded. When app kill is detected it will snap load the default values so their is no footprint left. Then close. This is important to support real hdr switch function in a future update.

The script can be changed by the user manually but that's no fun. I want my program to write a custom playercorefactory.xml. Ask the user for the paths to players and kodi folder. Then reach out into the registry to get the path of kodi hdr project. Leave all the files in its program folder so the user can install and uninstall like a professional program. Once the path is found use that path to create the paths in playercorefactory.xml to point to my 2 front end files. It sounds complicated but its actually not. The paths from mpchc mpcbe will be used in XDRCAL.EXE to create the meta data file but will use those paths as well. The idea is EVERYTHING is automated with this program.

Here's a pic of what I'm talking about. The keys are gibberwash but these keys are referenced to the uninstall file that sits in the folder of any program that is installed to tell windows how to remove the program. If you open up the uninstall file with notepad you will see the first line the key reference to the windows registry to the items shown in this picture.

Any help would be appreciated. I know a guy who write code for a company that may be able to help me but I though I would ask the online community first.

Untitled-1.jpg
 
forget it guys found a better way. Just use the info from the launched XDRConfi.exe and pass the path there so no matter where you install XDR when you load it it will find the path it came from. This is all I need. Do not need to mess with the registry to figure out the path

Dim dataDirectory As String = String.Format("{0}\Data\", Environment.CurrentDirectory)
MsgBox(dataDirectory)

msgbox is just a test to see if it passes the path so I can see it before writing the code.

also use ListBox1.Items.Add(dataDirectory) to show it in a text listbox. All good now......
 
I was reading nvidia can turn hdr on with a script. If this is the case I can automate this too with xdr.cal. i could set hdr flag to 1 and have mpchcfn to load the script if it detects xdr.cal file in the movie folder and load it to set back to normal upon exit. When i release ver2.0.0.0 i will need nvidia beta testers with this script to try uhd files with madvr. Like I said xdr automated first step. 2nd is the holy grail. Real pure hdr switching in kodi.

Im building xdrconfig to include mpchc mpcbe and can expand to potpplayer and dsplayer in future updates. Also want to use hdr triggering. Nvidia users must load the script to turn hdr on. My app will see the hdr setting and auto load script then run as a app in background. Once the uhd movie is done and the player shuts down xdr will run the script automatically offering automatic hdr switching in mpc hc with madvr and nvidia. I also want to support amd hdr too.

Xdr will look exactly like kodi menu system and the colors will be exact. I will be use transparent windows with a direct link to a private youtube video help archive accessed inside xdr to help users use this program with a video help file system.

I promise ive left room to support hdr real switching after I release xdrcal files.

I will offer all the files in a download hub. And also code a win32 app for users who do not run 64 bit systems.

Hdrcal.exe is 100%done and tested
Xdrconfig is 80 percent coded. Need to finish script kiddy smart script playercorefactory.xml

Graphics 0%
Mpchcfn 0%
Mpcbefn 0%
Installer 0%
 
Last edited:
Playing around with some graphics today. Not sure if this looks cool but am going with it.
2 pics. It scales to DPI so if you runs a different resolution 1080p or 4k it will look the same

Untitlfed-1.jpg Untitled-1.jpg
 
I can live with any layout you choose ;)
I'm going to add jump to HDR enable label: then jump back to code and leave this area for code to enable HDR Windows tab if value one is =1 in HDR.Cal file. The xdr will look for this flag and nvidia users can insert the HDR switch SDK script in this section. Pop a HDR.Cal file in the movie folder and set HDR on and it will switch HDR mode on play movie then switch off once player exits! Automation.....but will offer sdi settings too so best of both worlds
 
Finalized the interface. I think this will be it. Here is a screen shot.
Untitled-1.jpg
 
@gereral1 maybe I'm blind or misread, where can I download your tool to test?
First post show the video. In video description is 8 presets version. Readme in there to test. There will be 10 set preset buttons to set for hdrcal creation. These will only be used as favorite settings to export quick if you have a set adjusment you like. Press fav button hdrcal will be created. It will be coded to add hdr switching automatic. Im coding nvidia sdk switch script into this and eventually the win10 hdr swith code. Xdr.cal first entry will be the trigger tag. If movie has xdr.cal file it will switch hdr on and when player turns off it will swiitch hdr off. The final 4 setting tags are for guys who do not own hdr monitors. The 4 settings actually duplicate hdr perfect even though some say it does not. Max has tested many many samples so either me and max are poor at seeing or it really shows the hdr in non hdr mode. Tested youtube hdr and vp9 files look pretty dam close. Life of pi spot on. Planet earth 2 spot on. Tested assins creed, swallows, everest, so many....
 
Last edited:
doing some research on namespaces that can be used in windows 10 creators edition

https://docs.microsoft.com/en-us/uwp/api/windows.graphics.display.core
this is something I'm going to play with to see if I can force trigger hdr on tab

This is enum means c++. My program is coded in vb\. I \m hoping I can make a dll in c++ and call in in vb to trigger. Have to play with this. I will include NVidia switching in xdr but want every oneto use the hdr function for intel and amd. I should be able to feed it generic meta data to switch it on. I can force 444 for amd or 422 420 color. Force hdr10 as almost most of the material on uhd disk uses hdr10. I have a hdr tv to test and a hdr card hdmi2.0 trhat actually support hdr10. I do not own NVidia card so I'm hoping when I release 2.0.0.0 someone can test the hdr script switching for NVidia. I'm guessing hdr windows 10 uses a set hdr10 switch and does not switch hdmi port. Reason I know this is if I set rgb 444 and try that switch it switches then switches back. So its checking to see if my hdmi port is set correctly to enable hdr10. if I get this working this will be a breakthrough for uhd users on pc. If someone beats me to it this program can still be used for people with 4k projectors and tvs that missed the 4k uhd window.
 
Last edited:
Public Class Form1
'delcare variables
Public mpchcpath As String
Private mpchcgetname As String
Public mpcbepath As String
Private mpcbegetname As String
Private kodixmlpath As String
Private kodixmlgetname As String
Public mpchcreturnvalue As String
Private xdrdataDirectory As String = String.Format("{0}\Data\", Environment.CurrentDirectory)

Public Function checkplayers()
'function to enable and disable buttons depending on 1 or 2 players set
Dim mpchckeyname As String = "HKEY_CURRENT_USER\Software\XDR"
Dim mpchcvaluename As String = "pathtompchc"
Dim mpchcvaluename1 As String = "pathtompcbe"
Dim mpchcvalue As String = ""
Dim mpchcvalue1 As String = ""
Dim mpchcreturnvalue As Object
Dim mpcbereturnvalue As Object
Label2.Text = ""
Label3.Text = ""
mpchcreturnvalue = GetValue(mpchckeyname, mpchcvaluename, mpchcvalue)
mpcbereturnvalue = GetValue(mpchckeyname, mpchcvaluename1, mpchcvalue1)
If mpchcreturnvalue = "" And mpcbereturnvalue = "" Then Button3.Enabled = False
If mpchcreturnvalue = "" And mpcbereturnvalue = "" Then Button4.Enabled = False
If mpchcreturnvalue IsNot "" Then Button3.Enabled = True
If mpchcreturnvalue IsNot "" Then Button4.Enabled = True
If mpcbereturnvalue IsNot "" Then Button3.Enabled = True
If mpcbereturnvalue IsNot "" Then Button4.Enabled = True
If mpchcreturnvalue = "" And mpcbereturnvalue = "" Then Label2.Text = "Create playercorefactory.xml -Disabled - Set player to enable!"
If mpchcreturnvalue = "" And mpcbereturnvalue = "" Then Label3.Text = "Setup for XDR Desktop - Disabled- Set player to enable!"
If mpchcreturnvalue IsNot "" Then Label2.Text = ""
If mpchcreturnvalue IsNot "" Then Label3.Text = ""
If mpcbereturnvalue IsNot "" Then Label2.Text = ""
If mpcbereturnvalue IsNot "" Then Label3.Text = ""
End Function

Function loadpath()
'used to get input from user to set paths to players for mpchcfn.exe and mpcbefn.exe as well as the playercorefactory.xml
OpenFileDialog1.ShowDialog()
mpchcpath = OpenFileDialog1().FileName
mpchcgetname = OpenFileDialog1.SafeFileName
End Function

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'check status of set players first load
checkplayers()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'delcare variables to use
Dim mpchckeyname As String = "HKEY_CURRENT_USER\Software\XDR"
Dim mpchcvaluename As String = "pathtompchc"
Dim mpchcvaluename1 As String = "pathtompcbe"
Dim mpchcvalue As String = ""
Dim mpchcvalue1 As String = ""
Dim mpchcreturnvalue As Object
Dim mpchcresult As DialogResult
'get the value for mpchc to test if player path is set or not
mpchcreturnvalue = GetValue(mpchckeyname, mpchcvaluename, mpchcvalue)
If mpchcreturnvalue = "" Then GoTo pathset :
If mpchcreturnvalue IsNot "" Then GoTo pathnotset :
GoTo mpchcend
pathnotset:
'Player detected do you want to remove
mpchcresult = MessageBox.Show("XDR has detected you have alreaady setup mpc-hc64.exe. Would you like to remove this player?", "XDRConfig", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If mpchcresult = DialogResult.Yes Then GoTo erasempchc :
GoTo mpchcend

pathset:
'used to set the path of mpchc player and also to disable player
mpchcresult = MessageBox.Show("XDR has detected no path has been set to mpc-hc64.exe. Would you like to set this up now?", "XDRConfig", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If mpchcresult = DialogResult.Yes Then GoTo mpcwritepath
GoTo mpchcend
mpcwritepath:
'message sucess of player path stored
loadpath()
If mpchcgetname = "mpc-hc64.exe" Then MessageBox.Show("Thankyou for setting the file location to mpc-hc64.exe!", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
If mpchcgetname = "mpc-hc64.exe" Then GoTo mpchcWritempchcpath :
'if not then goto endmpc but msgbox error
MessageBox.Show("The file you have selected is not a compatible player. XDR is looking for mpc-hc64.exe. If you do not have the correct version please download and install MPC-HC 64 Bit and try again", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Error)
erasempchc:
'no value is set delete value in regristry
CurrentUser.CreateSubKey("Software\\XDR\\").SetValue("pathtompchc", "")
CurrentUser.Close()
mpchcreturnvalue = GetValue(mpchckeyname, mpchcvaluename1, mpchcvalue1)
If mpchcreturnvalue = "" Then MessageBox.Show("Mpc-hc64.exe player has been disabled! XDR has also detected NO players are set! You need at least 1 player set for XDR to work in XDRDesktop and Kodi functions", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Warning)
If mpchcreturnvalue IsNot "" Then MessageBox.Show("Mpc-hc64.exe player has been disabled! XDR has detect that you still have mpc-be64.exe set. You must have a miminum of one player set for XDR to remain active!", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
GoTo mpchcend

mpchcWritempchcpath:
'write file path to regristry mpchc to be used by other programs
CurrentUser.CreateSubKey("Software\\XDR\\").SetValue("pathtompchc", mpchcpath)
CurrentUser.Close()
mpchcend:
'final check to analize buttons on off depending on user input of players set
checkplayers()
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'gets the install path of xdr to set path to mpchcfn.exe mpcbefn.exe and the script
CurrentUser.CreateSubKey("Software\\XDR\\").SetValue("pathtoxdr", xdrdataDirectory)
CurrentUser.Close()
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
End Sub
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'delcare variables to use
Dim mpchckeyname As String = "HKEY_CURRENT_USER\Software\XDR"
Dim mpchcvaluename As String = "pathtompchc"
Dim mpchcvaluename1 As String = "pathtompcbe"
Dim mpchcvalue As String = ""
Dim mpchcvalue1 As String = ""
Dim mpchcreturnvalue As Object
Dim mpchcresult As DialogResult
'get the value for mpchc to test if player path is set or not
mpchcreturnvalue = GetValue(mpchckeyname, mpchcvaluename1, mpchcvalue1)
If mpchcreturnvalue = "" Then GoTo pathset1 :
If mpchcreturnvalue IsNot "" Then GoTo pathnotset1 :
GoTo mpcbeend
pathnotset1:
'Player detected do you want to remove
mpchcresult = MessageBox.Show("XDR has detected you have alreaady setup mpc-be64.exe. Would you like to remove this player?", "XDRConfig", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If mpchcresult = DialogResult.Yes Then GoTo erasempcbe :
GoTo mpcbeend

pathset1:
'used to set the path of mpchc player and also to disable player
mpchcresult = MessageBox.Show("XDR has detected no path has been set to mpc-be64.exe. Would you like to set this up now?", "XDRConfig", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If mpchcresult = DialogResult.Yes Then GoTo mpcwritepath1
GoTo mpcbeend
mpcwritepath1:
loadpath()
If mpchcgetname = "mpc-be64.exe" Then MessageBox.Show("Thankyou for setting the file location to mpc-be64.exe!", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
If mpchcgetname = "mpc-be64.exe" Then GoTo mpcbeWritempchcpath :
'if not then goto mpcbeend but msgbox error
MessageBox.Show("The file you have selected is not a compatible player. XDR is looking for mpc-be64.exe. If you do not have the correct version please download and install MPC-BE 64 Bit and try again", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Error)
erasempcbe:
'no value is set delete value in regristry
CurrentUser.CreateSubKey("Software\\XDR\\").SetValue("pathtompcbe", "")
CurrentUser.Close()
mpchcreturnvalue = GetValue(mpchckeyname, mpchcvaluename, mpchcvalue)
If mpchcreturnvalue = "" Then MessageBox.Show("Mpc-bc64.exe player has been disabled! XDR has also detected NO players are set! You need at least 1 player set for XDR to work in XDRDesktop and Kodi functions", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Warning)
If mpchcreturnvalue IsNot "" Then MessageBox.Show("Mpc-be64.exe player has been disabled! XDR has detect that you still have mpc-hc64.exe set. You must have a miminum of one player set for XDR to remain active!", "XDRConfig", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
GoTo mpcbeend

mpcbeWritempchcpath:
'write file path to regristry mpcbe to be used by other programs
CurrentUser.CreateSubKey("Software\\XDR\\").SetValue("pathtompcbe", mpchcpath)
CurrentUser.Close()
mpcbeend:
'final check to analize buttons on off depending on user input of players set
checkplayers()
End Sub

End Class

80 percent done xdrconfig - very import file to setpaths and conditions in and out of xdr
xdrcal.exe code -done
xdrdesktop-0% (out of kodi xdr function!
mpchcfn.exe mpcbefn.exe fronts ends - 0% coded.

Tests successful on hdr.cal creation reading and writing to file and setting the players adjustments

xdrconfig smart menu buttons tested. I coded the buttons on certain items to be disabled unless you set one player. If you delete both players items will be disabled in menu. Conditions have to be met to use other functions. Its a way to prevent users from causing errors with missing players and paths. Once xdrconfig is setup by the user the information is passed to mpchcfn.exe mpcbefn.exe and also automatically written into playercorefactory.xml

xdr will all be automatic.


Last time I wrote a program was 20 years ago. VB is not bad to code but some of the syntax makes you want to rip your hair out.

A picture of what this code is doing

Untitled-1.jpg
 
Last edited:
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
Me.Close()
End Sub
Private Sub Button7_MouseHover(sender As Object, e As EventArgs) Handles Button7.MouseHover
Button7.BackgroundImage = My.Resources.Untitled2
End Sub
Private Sub Button7_MouseDown(sender As Object, e As EventArgs) Handles Button7.MouseDown
Button7.BackgroundImage = My.Resources.Untitled1
End Sub
Private Sub Button7_MouseLeave(sender As Object, e As EventArgs) Handles Button7.MouseLeave
Button7.BackgroundImage = My.Resources.Untitled1
End Sub

onicon.jpg officon.jpg added a close button to look like kodi icon
 
Last edited:
Ive got nvidia HDR script and now more info on detecting HDR display and setting hdr10 mode


https://channel9.msdn.com/events/Build/2017/P4061

Glad to see this code!
I am hoping this code will work for AMD nvidia and kaby lake Intel. Microsoft now supports directx12 API HDR switching. I like the idea of the code reaching out and the HDR TV sending back it's color and display properties. If this works all we need now is a home made player that can read the HDR meta data and with this code pass the byte tags from video file thru HDMI port to get real HDR. Not this static junk.
 
Back
Top