Skip to content

v4.0 - image washed out (?)Β #6830

Closed
Closed

Description

@nr1995

Hi, noob here.
Is it just me or is the image in SCRCPY v4.0 more washed-out than in previous versions?
Either higher brightness, or less contrast... or... something.

Activity

  1. rom1v commented on May 13, 2026

    @rom1v
    Collaborator
    1. Please post a screenshot (ideally a comparison of v3.3.4 vs v4.0).
    2. What is your renderer (post the whole console output)
    3. Does it happen with another encoder? https://github.com/Genymobile/scrcpy/blob/master/doc/video.md#encoder
    4. Record with scrcpy --record=file.mp4: does the resulting file have the same color issue?
  2. nr1995 commented on May 13, 2026

    @nr1995
    Author
    1. Here's a screenshot of v4.0 link2 and here's one of v3.3.4 link2 for comparison.

    2. Here's the contents of the console:

    scrcpy 4.0 <https://github.com/Genymobile/scrcpy>
    INFO: ADB device found:
    INFO:     -->   (usb)  af75c874                        device  LE2110
    D:\phone stuff\scrcpy\scrcpy-server: 1 file pushed, 0 skipped. 32.6 MB/s (732226 bytes in 0.021s)
    [server] INFO: Device: [OnePlus] OnePlus LE2110 (Android 14)
    INFO: Renderer: direct3d11
    INFO: Texture: 1080x2400
    
    1. I tried launching with scrcpy --video-codec=h264 --video-encoder=OMX.qcom.video.encoder.avc and it looks β€”to my eye, at leastβ€” identical to the v4.0 image I posted above.

    2. Couldn't get the recorded .mp4 file to play for some reason.

  3. rom1v commented on May 13, 2026

    @rom1v
    Collaborator

    Thank you.

    Couldn't get the recorded .mp4 file to play for some reason.

    Because you killed scrcpy brutally by closing the console (instead of closing the window)?

  4. nr1995 commented on May 13, 2026

    @nr1995
    Author

    Because you killed scrcpy brutally by closing the console (instead of closing the window)?

    Oh. Haha. Maybe... Yes.
    To my eye, the video recording does not appear to have the same issue as a v4.0 screenshot.

  5. rom1v commented on May 13, 2026

    @rom1v
    Collaborator

    Could you try with this commit dee1fd4 reverted please?

    I pushed the revert (621ffb4) on a branch and ran the CI so that you can download a binary (like a release, download release-win64.zip for example): https://github.com/rom1v/scrcpy/actions/runs/25823066817

  6. rom1v commented on May 13, 2026

    @rom1v
    Collaborator

    To my eye, the video recording does not appear to have the same issue as a v4.0 screenshot.

    Also, could you please share a small video? (1 second on the same screen as the screenshots is sufficient)

  7. Ciancy28 commented on May 15, 2026

    @Ciancy28

    Same behaviour on my Pixel 4a (Android 14), it's much more apparent when running an oled black theme, what is suppsed to be black is actually grey now, it's as if the image is now 16-235 rgb range rather than full 0-255.
    Screen recording isn't affected.

    Could you try with this commit dee1fd4 reverted please?

    I pushed the revert (621ffb4) on a branch and ran the CI so that you can download a binary (like a release, download release-win64.zip for example): https://github.com/rom1v/scrcpy/actions/runs/25823066817

    No difference on my end, still washed out.

    Image Image

    (no difference in recording)

    3.3.4.mp4
    4.0.mp4
  8. nr1995 commented on May 15, 2026

    @nr1995
    Author

    Also, could you please share a small video? (1 second on the same screen as the screenshots is sufficient)

    Sorry I've tried 5 times now to upload those recordings, and they just won't process for some reason.

  9. rom1v commented on May 15, 2026

    @rom1v
    Collaborator

    @Ciancy28 Thank you for the details. I cannot reproduce with my device: pure black is mirrored pure black.

    Could you please give me the values of color_space and color_range:

    diff --git a/app/src/texture.c b/app/src/texture.c
    index 2ce9a47b7..50d3d621b 100644
    --- a/app/src/texture.c
    +++ b/app/src/texture.c
    @@ -57,6 +57,7 @@ sc_texture_to_sdl_color_space(enum AVColorSpace color_space,
                                   enum AVColorRange color_range) {
         bool full_range = color_range == AVCOL_RANGE_JPEG;
     
    +    LOGI("color_space=%d color_range=%d", color_space, color_range);
         switch (color_space) {
             case AVCOL_SPC_BT709:
             case AVCOL_SPC_RGB:

    EDIT: also try to find which value to return from that function works for you (possible values are here).

    Also, which render driver is used? For example:

    INFO: Renderer: opengl

    Could you please try with other render drivers, using --render-driver=? The possible values are listed here.

  10. Ciancy28 commented on May 16, 2026

    @Ciancy28

    @Ciancy28 Thank you for the details. I cannot reproduce with my device: pure black is mirrored pure black.

    Could you please give me the values of color_space and color_range:

    diff --git a/app/src/texture.c b/app/src/texture.c
    index 2ce9a47b7..50d3d621b 100644
    --- a/app/src/texture.c
    +++ b/app/src/texture.c
    @@ -57,6 +57,7 @@ sc_texture_to_sdl_color_space(enum AVColorSpace color_space,
    enum AVColorRange color_range) {
    bool full_range = color_range == AVCOL_RANGE_JPEG;

    • LOGI("color_space=%d color_range=%d", color_space, color_range);
      switch (color_space) {
      case AVCOL_SPC_BT709:
      case AVCOL_SPC_RGB:

    EDIT: also try to find which value to return from that function works for you (possible values are here).

    I'm not sure what i'm supposed to do here, I'm not a programmer so I don't actually know how to make changes to the code, if that's what you're asking me to try.

    Also, which render driver is used? For example:

    INFO: Renderer: opengl

    Could you please try with other render drivers, using --render-driver=? The possible values are listed here.

    I tested every render driver (besides metal, which isn't available on windows, of course). Every render driver is affected.

  11. rom1v commented on May 16, 2026

    @rom1v
    Collaborator

    I'm not a programmer so I don't actually know how to make changes to the code, if that's what you're asking me to try.

    OK, sorry. I've made the change (adding a single line of log), and created a build on the CI (download release-win64.zip): https://github.com/rom1v/scrcpy/actions/runs/25956243227

    Then run this scrcpy version, and copy-paste the console output (at least the line with the color space and color range).

  12. Ciancy28 commented on May 16, 2026

    @Ciancy28

    I'm not a programmer so I don't actually know how to make changes to the code, if that's what you're asking me to try.

    OK, sorry. I've made the change (adding a single line of log), and created a build on the CI (download release-win64.zip): https://github.com/rom1v/scrcpy/actions/runs/25956243227

    Then run this scrcpy version, and copy-paste the console output (at least the line with the color space and color range).

    [server] INFO: Device: [Google] google Pixel 4a (Android 14)
    INFO: Renderer: direct3d11
    INFO: color_space=2 color_range=1
    INFO: Texture: 996x2160
    
  13. rom1v commented on May 16, 2026

    @rom1v
    Collaborator

    INFO: color_space=2 color_range=1

    2 is AVCOL_SPC_UNSPECIFIED. πŸ˜•

    So like dee1fd4 for AVCOL_SPC_RGB, we could probably return the same value for AVCOL_SPC_UNSPECIFIED:

    diff --git a/app/src/texture.c b/app/src/texture.c
    index 2ce9a47b7..13bfed2c4 100644
    --- a/app/src/texture.c
    +++ b/app/src/texture.c
    @@ -60,6 +60,7 @@ sc_texture_to_sdl_color_space(enum AVColorSpace color_space,
         switch (color_space) {
             case AVCOL_SPC_BT709:
             case AVCOL_SPC_RGB:
    +        case AVCOL_SPC_UNSPECIFIED:
                 return full_range ? SDL_COLORSPACE_BT709_FULL
                                   : SDL_COLORSPACE_BT709_LIMITED;
             case AVCOL_SPC_BT470BG:

    Please test: https://github.com/rom1v/scrcpy/actions/runs/25966216921

  14. Ciancy28 commented on May 16, 2026

    @Ciancy28
  15. rom1v commented on May 17, 2026

    @rom1v
    Collaborator

    Fix merged into dev: 95ae3bb πŸš€

  16. added a commit that references this issue on Jul 12, 2026
  17. rom1v commented on Jul 13, 2026

    @rom1v
    Collaborator

    Fixed in 4.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions