newAM / monitorcontrol

Python monitor controls using DDC-CI.
https://newam.github.io/monitorcontrol/
MIT License
182 stars 28 forks source link

Luminance function not working as intended #75

Open TheConfax opened 3 years ago

TheConfax commented 3 years ago

Docs says that it is getting the monitors back-light luminance, but is actually looking at the brightness and not the luminance (intensity of backlight of an LCD). Can it be supported?

newAM commented 3 years ago

Docs says that it is getting the monitors back-light luminance, but is actually looking at the brightness and not the luminance (intensity of backlight of an LCD).

It is looking at the luminance, using MCCS definition of luminance.

MCCS v2.2a: image

monitorcontrol: link

    "image_luminance": {
        "name": "image luminance",
        "value": 0x10,
        "type": "rw",
        "function": "c",
    },

Feel free to reopen if I misunderstood the question! I'll close this for now.

TheConfax commented 3 years ago

I honestly do not know the technical specifications. What I meant is that is not controlling the screen backlight while in the code documents you are using the word backlight.

And I was asking for backlight implementation

newAM commented 3 years ago

What monitor do you have? I use the word backlight because on every monitor I have tested luminance controls the backlight.

I have not found any monitors where the backlight codes (0x6B - 0x71) actually do anything. I am happy to accept a pull request for this, but I can't add it myself because I do not have any hardware to validate the feature.

TheConfax commented 3 years ago

I have a (quite old) Samsung T27B300, it is an LED monitor/TV, connected via VGA.

The "luminance function" is reading/writing into the brightness of the image, making it brighter or darker and not on the "light intensity" making more light or less light. Sorry if I wasn't very clear at the beginning.

I'll try to see if this is possible, the R/G/B light intensity is actually a bit confusing to me because I have one setting for the brightness of the light.

newAM commented 3 years ago

I'll try to see if this is possible, the R/G/B light intensity is actually a bit confusing to me because I have one setting for the brightness of the light.

There is a white one as well, maybe that will do it?

I figured the RGB was for displays like OLED where there is a separate R/G/B brightness instead of one backlight.

TheConfax commented 3 years ago

I'm trying to read 0x6B and Python answers 0 every time. But you should not really trust me cause I'm a complete beginner at Python.

I added this

"image_backglight": {
        "name": "backglight",
        "value": 0x6B,
        "type": "rw",
        "function": "c",
    },

into vcp_codes

and a function

    def get_backlight(self) -> int:
        code = vcp.VCPCode("image_backlight")
        return self._get_vcp_feature(code)

in monitorcontrol.py

Is this enough or am I missing something?

newAM commented 3 years ago

That's all there is to it.

That is the same thing my monitor does with these codes, just returns zeros. Do the setters do anything?