Modérateurs: Modération Forum Home-Cinéma, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: Driggs, Freeman34, Goldfinger67 et 124 invités

Tout ce qui concerne les logiciels lié au HC sur ordinateur (PC, Mac, Linux...)
Règles du forum
Avant de poster, merci de prendre connaissance des règles du forum : à lire avant de poster

Reclock et VisualBasic

Message » 05 Sep 2007 18:56

Bonjour,

A l'aide d'un script vbs, reclock permet de changer la fréquence de rafraichissement grâce à powerstrip en fonction du mode du film. Ca marche bien :P
Par contre, j'utilise les réglages facon Emmanuel Piat pour Reclock (merci à lui):
http://www.homecinema-fr.com/forum/viewtopic.php?t=29823399&postdays=0&postorder=asc&start=0
Je dois donc sélectionner pendant la lecture :
- "Refresh rate/2" pour les DVD PAL & "Same as input" pour les DVD NTSC
- Slave reference clock to audio coché

Ma question: est-il possible de modifier le script vbs pour automatiser ces opérations?
Le pb principal est de pouvoir décocher le bouton Slave reference clock. En effet si le bouton reste cocher le script ne fonctionne pas (les parametres 2, 3, 8 et 9 sont vides).
Bon je suis nul en programmation :oops:
L'idée serait de cocher le bouton Slave reference clock apres le lancement du film et le décocher à la fin.
Je vois bien qu'il ya une procédure en cas de sortie qui remet dans la résolution choisie. Je l'ai d'ailleurs désactivé car j'en ai pas besoin. C'est peut etre à ca niveau qu'il faudrait pouvoir décocher la case...
Il y a un connaisseur dans la salle :wink: ?
Merci



Ci dessous le script que j'utilise:
' ------------------------------------ Event notification script for ReClock
' -------------------------------------
'
' 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)
'
' ---------------------------------------------------------------------------------------------
' Notifications examples:
' - GREEN CINEMA PCM 1 1 1024x768 72 23976 24000 : all is good
' - GREEN NTSC PCM 1 1 1024x768 60 29970 30000 : all is good
' - YELLOW PAL SPDIF 1 1 1024x768 72 25000 25000 : please switch to a multiple of 25 hz since PAL wants 25 fps
' - YELLOW CINEMA SPDIF 1 1 1024x768 75 23976 23976 : please switch to 71.928 hz
'
' ---------------------------------------------------------------------------------------------
' Here is a sample in VbScript that will call Powerstrip to change the monitor refresh rate
' using the /T parameter (to obtain the timings parameters go to the timings setup in powerstrip and copy
' them to the clipboard)
' There is a VERY important thing to note. Powerstrip change the timings directly in the hardware, but
' forget to notify Windows applications it did that (including ReClock). So this script MUST exit with
' an exit code of 0 if it did change the configuration with powerstrip. Otherwise the script should
' return 1

' Decode the parameters
Set objArgs = WScript.Arguments
If objArgs.Count < 9 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)
'MsgBox _
'currentResolution
'MsgBox _
'mediaType
currentRefreshRate = objArgs(6)
originalPlaybackSpeed = objArgs(7)
currentPlaybackSpeed = objArgs(8)

' If you need to debug, replace false with true in the following line
if true Then MsgBox _
eventName & " " & _
mediaType & " " & _
soundMode & " " & _
currentMonitor & " " & _
totalMonitorCount & " " & _
currentResolution & " " & _
currentRefreshRate & " " & _
originalPlaybackSpeed & " " & _
currentPlaybackSpeed, _
MB_OK, "ReClock Event Notification"

' 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 & ":" & currentResolution
Case "CINEMA:1280x720"
If currentRefreshRate <> "48" Then newTimings = "1280,404,48,252,720,5,5,20,71425,528" ' 48 hz

Case "PAL:1280x720"
If currentRefreshRate <> "50" Then newTimings = "1280,402,48,254,720,5,5,20,74250,528" '50 hz

Case "NTSC:1280x720"
If currentRefreshRate <> "60" Then newTimings = "1280,70,48,250,720,5,5,20,74250,528" '60 hz
End Select

ElseIf soundMode = "SPDIF" Then

' In SPDIF mode we need an exact multiple to minimize the drops/repeats
' Note: be careful in NTSC mode, because if "currentRefreshRate" is already "60"
' when we go here then we won't switch but it may be 60 "bad" hz instead of 59.94 "wanted" hz
' The same problem exists for NTSC film (23.976fps)
' A solution is to force settings in the GREEN icon notification, but that would mean a pause
' each time we play a file with SPDIF ...
' That's why we use 59.94 hz and 71.928 hz for PCM too so we will never user 60 and 72 hz

Select Case currentResolution & "x" & originalPlaybackSpeed
Case "1920x1080x23976"
If currentRefreshRate <> "72" Then newTimings = "1920,56,128,112,1080,4,10,30,89505,286" ' 71,928 hz

Case "1920x1080x25000"
If currentRefreshRate <> "75" Then newTimings = "1920,56,128,112,1080,4,10,30,93326,286" ' 75,000 hz

' Case "1920x1080x29970"
' If currentRefreshRate <> "60" Then newTimings = "1920,56,128,112,1080,4,10,30,74723,286" ' 59,940 hz
End Select

End if

End If

' We quit the player, restore our favorite refresh rate and/or resolution

'If eventName = "QUIT" Then
'Select Case currentResolution
'Case "1280x720"
' If currentRefreshRate <> "50" Then newTimings = "1280,32,136,112,720,19,3,44,91963,272" ' 75,000 hz
'newTimings = "1280,402,48,254,720,5,5,20,74250,528" '50 hz

'End Select

'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

' We will call Powerstrip 2 times
' In the second call, we will ask Powerstrip to change refresh rate/resolution
' and wait for it to finish the job. If Powerstrip would not be launched before, it would not
' return from this call leaving this VBS script stuck. That's why we make this first call to
' make sure that it is actually available (but we launch it only if it's not already running)
Do While Not wshShell.AppActivate ("pstrip") ' it has a hidden window called with this name
WshShell.Run """" & objFolderItem.Path & _
"\PowerStrip\pstrip.exe"""
WScript.Sleep(2000)
Loop

' Now run Powerstrip command and wait for it to finish its job
WshShell.Run """" & objFolderItem.Path & _
"\PowerStrip\pstrip.exe"" /TARGET:" & currentMonitor & _
" /T:" & newTimings, 0, true

' In case we did a configuration change we MUST return 0 to
' indicate ReClock it need to recalibrate itself.
' However, I found no way to check that Powerstrip did the job correctly ...
WScript.Quit 0

End If

' We have done nothing. Return 1 to indicate ReClock that
' the configuration has not changed
WScript.Quit 1
pong40
 
Messages: 131
Inscription Forum: 30 Oct 2004 12:10
  • offline

Message » 15 Sep 2007 8:59

up!

Ca n'interesse personne?
pong40
 
Messages: 131
Inscription Forum: 30 Oct 2004 12:10
  • offline


Retourner vers Logiciel PC Home-cinéma

 
  • Articles en relation
    Dernier message