I had tried to use cscreen to switch refresh rates on my Mac mini/Sony XBR5 combo, but it kept switching to 1080i with -r 60 switch. I did some poking around and came to the (now) obvious conclusion that CGDisplayBestModeForParameters() doesn’t take interlaced/progressive into account. Poop.
The program below looks for a new display mode with the same resolution and bit depth as the current display mode, while ignoring interlaced modes. It only changes the refresh rate (in theory).
Or download it [here](http://unknown-host.com/refresh/).
Usage example:
refresh -r 24
So after writing this, I have to ask: why doesn't Plex do this automatically? Is there some techinical issue preventing this from happening? Or is it just a lack of spare time?
Because Elan hasn't released a build with the refresh rate switching I wrote last week. :) Previously it was lack of time (and a 24p TV).
I've taken a similar approach to you. Basically now Plex will check to see if a matching refresh rate is available for the currently playing video at the same resolution, and switch to that if possible. However I'm using the 10.6 API, so this will only be available on 10.6. I don't think resolution change is a good idea, better just to run at your highest resolution and let Plex / OS X handle the scaling.
I started with the 10.6 API, since my mini is running 10.6.3, but I couldn't figure out a way to detect if the display mode is interlaced. Unfortunately, on my setup, when you loop over the array returned by CGDisplayCopyAllDisplayModes(), the first matching 1920x1080 @ 60Hz mode is interlaced. :(
I like how Apple deprecates all of the old functions, provides new 10.6 specific functions, but doesn't bother to document them. I was stuck poking through header files.
My code is for a command line program that can be used as part of a script to switch refresh rates.
I imagine you won’t see anything from tokyovigilante’s work until Plex 9 is released. Speaking of which, what did the quartz-api mailing list have to say about detecting (and skipping) interlaced modes?
Great to hear that! Just bought a new Mac Mini for use as my new HTPC running plex. Been trying to setup manual scripts to change refresh rates with some success but haven't managed to set interlaced/progressive.
i.e. When using scripts to change to 1920 x 1080 24Hz it would choose Progessive but with 50Hz and 60Hz it would always choose Interlaced. Even though I can manually set 50Hz and 60Hz in System Preferences and it uses Progressive Mode.
But, think I'll just wait for Plex v9 for this functionality.