' -------------------------------------
' Event notification script for ReClock using AnyDVD's SetDisplayFrequency.exe
' -------------------------------------
'
' This script will be called when ReClock change the media adaptation of a played file
' either automatically or after some manual change made in the properties panel
' It is called only for media file which contain a video stream, and when frame rate of this file is known
'
' ---------------------------------------------------------------------------------------------
' The 7 parameters received by this script are explained below:
'
' (1) contains the event name that just occurred:
' - "GREEN" : tray icon just got green (all is fine). Parameter
' - "YELLOW" : tray icon just got yellow. We should make what is necessary
' to change the monitor refresh rate
' - "STOP" : playback just stopped
' - "QUIT" : ReClock is about to quit
'
' Parameters (2), (3), (8) and (9) apply only with "GREEN" and "YELLOW" events. Otherwise they contain "-"
'
' (2) contains the type of media file currently played :
' - "CINEMA" : frame rate of source file is around 24 fps
' - "PAL" : frame rate of source file is around 25 fps
' - "NTSC" : frame rate of source file is around 30 fps
' - "CUSTOM" : frame rate of source file does not fall in previous categories
'
' (3) contains the current sound playback mode (apply only with GREEN/YELLOW event):
' - "PCM" : PCM mode
' - "SPDIF" : AC3 passthrough SPDIF
'
' (4) contains the current monitor selected for playback (1=primary, 2=secondary, etc...)
'
' (5) contains the total monitor count detected in the system
'
' (6) contains the current resolution of your monitor (WIDTHxHEIGHT)
'
' (7) contains the current refresh rate of your monitor (in Hz)
'
' (8) contains the original playback rate of the file (in fps multiplied by 1000)
'
' (9) contains the current playback rate of the file (in fps multiplied by 1000)
'
' (10) contains the filename of the current media file
'
' ---------------------------------------------------------------------------------------------
' Notifications examples:
' - GREEN CINEMA PCM 1 1 1024x768 72 23976 24000 c:\test.avi : all is good
' - GREEN NTSC PCM 1 1 1024x768 60 29970 30000 c:\test.avi : all is good
' - YELLOW PAL SPDIF 1 1 1024x768 72 25000 25000 c:\test.avi : please switch to a multiple of 25 hz since PAL wants 25 fps
' - YELLOW CINEMA SPDIF 1 1 1024x768 75 23976 23976 c:\test.avi : please switch to 71.928 hz
'
' ---------------------------------------------------------------------------------------------
' Here is a sample in VbScript that will call SetDisplayFrequency to change the monitor refresh rate
' There is a VERY important thing to note. SetDisplayFreqeuncy changes the timings using the Windows API., but
' So this script MUST always exit with an exit code of 1
' return 1
' Decode the parameters
Set objArgs = WScript.Arguments
If objArgs.Count < 10 Then
MsgBox "Bad argument count !", MB_OK, "ReClock Event Notification"
' We have done nothing. Return 1 to indicate ReClock that
' the configuration has not changed
WScript.Quit 1
End If
eventName = objArgs(0)
mediaType = objArgs(1)
soundMode = objArgs(2)
currentMonitor = objArgs(3)
totalMonitorCount = objArgs(4)
currentResolution = objArgs(5)
currentRefreshRate = objArgs(6)
originalPlaybackSpeed = objArgs(7)
currentPlaybackSpeed = objArgs(8)
currentMediaFile = objArgs(9)
' If you need to debug, replace false with true in the following line
If false Then
MsgBox _
eventName & " " & _
mediaType & " " & _
soundMode & " " & _
currentMonitor & " " & _
totalMonitorCount & " " & _
currentResolution & " " & _
currentRefreshRate & " " & _
originalPlaybackSpeed & " " & _
currentPlaybackSpeed, _
MB_OK, "ReClock Event Notification"
' WScript.Quit 0
End If
' Here is a sample of what can be done with PowerStrip
Set wshShell = CreateObject("WScript.Shell")
' We will put new timings here if necessary
newTimings = ""
' Obviously we have something to do only if the icon is yellow
If eventName = "YELLOW" Then
' If soundMode = "PCM" Then
' Call the profile that match best what we need in PCM mode
Select Case mediaType
Case "CINEMA"
newTimings = "23"
Case "PAL"
newTimings = "50"
Case "PAL(2x)"
newTimings = "50"
Case "NTSC"
newTimings = "59"
Case "NTSC(2x)"
newTimings = "59"
Case "CINEMA(2x)"
newTimings = "59"
' case "CUSTOM"
' newTimings = currentPlaybackSpeed / 1000
End Select
' End if
End If
' We quit the player, restore our favorite refresh rate and/or resolution
If eventName = "QUIT" Then
newTimings = "59"
End If
If eventName = "STOP" Then
WScript.Quit 1
End If
' Do we have new timings to apply ?
If newTimings <> "" Then
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H26&)
Set objFolderItem = objFolder.Self
' Run SetDisplayFrequency command and wait for it to finish its job
WshShell.Run """" & _
"C:\Program Files (x86)\SlySoft\AnyDVD\SetDisplayFrequency.exe"" " & newTimings, 0, true
[B]' If eventName <> "QUIT" Then
' WScript.Sleep(2000)
' End If[/B]
End If
' We have done nothing. Return 1 to indicate ReClock that
' the configuration has not changed
WScript.Quit 1