Conversation
|
Someone is attempting to deploy a commit to the tranvuongquocdat2-7001's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Thanks for digging into this — the S7 FE repro is useful. One thing to check before we go further: the Mac side on |
|
0.11.3 is released now, so you can test with the stock Mac app instead of building from |
Thanks for pointing me to 0.11.3. I tested the official 0.11.3 Mac app together with the stock 0.11.3 Android app on the Galaxy Tab S7 FE using the same reproduction case. The issue is now fixed — #F1F3F4 renders correctly with the stock 0.11.3 builds. I also confirmed that 0.11.3 Mac works correctly with my Path B Android build, but since the stock Android client is now working, I agree that keeping the zero-copy SurfaceView path is preferable. I'll close this PR. Thanks for the guidance! |
|
Thanks for closing the loop on real hardware — that's the first tablet confirmation for #55. |
Problem
Some light gray colors in the SideScreen video stream were rendered as white on some Android tablets.
For example:
#F1F3F4was rendered as white on the Android displayThe issue was reproduced on a Samsung Galaxy Tab S7 FE (SM-T736B) running Android 14.
Root cause
The Android client previously decoded HEVC directly into a
SurfaceViewusing the vendor display/compositor path.The decoder correctly reports the stream as BT.709 / SDR / full-range, but on affected devices the vendor YUV→RGB presentation path can apply a limited-range matrix regardless of the full-range flag.
This causes light grayscale values to be clipped toward white. For example,
#F1F3F4was displayed as white even though the source frame contained the correct light-gray value.Changing the
SurfaceViewdataspace alone did not resolve the issue.Fix
Replace the zero-copy
MediaCodec→SurfaceViewrendering path with an application-controlled rendering path:MediaCodecfor byte-buffer/Image output instead of decoding directly to aSurface.MediaCodec.getOutputImage()/ output buffers.GLSurfaceView.Validation
Tested on:
Verified correct rendering at:
1280×8001920×12002560×1600Also tested with:
The light-gray test color
#F1F3F4now remains visibly gray instead of being clipped to white.Scope
This PR replaces the previous SurfaceView dataspace-only approach with an application-controlled YUV→RGB rendering path.
No Mac-side encoder or capture changes are required.
The fix is implemented entirely on the Android client.