From e8025113e99b171d3d92a06b52540f99ad7a656a Mon Sep 17 00:00:00 2001 From: Seb3thehacker Date: Thu, 5 Nov 2026 12:23:13 -0800 Subject: [PATCH] Video starts over when the car changes its screen layout mid-stream --- .../java/app/seb3thehacker/gearslip/GearslipRunner.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gearslip/src/main/java/app/seb3thehacker/gearslip/GearslipRunner.kt b/gearslip/src/main/java/app/seb3thehacker/gearslip/GearslipRunner.kt index 594aa81..f18e867 100644 --- a/gearslip/src/main/java/app/seb3thehacker/gearslip/GearslipRunner.kt +++ b/gearslip/src/main/java/app/seb3thehacker/gearslip/GearslipRunner.kt @@ -1099,6 +1099,16 @@ class GearslipRunner( } } + // UpdateUiConfigRequest { AdditionalVideoConfig }: new margins or day/night. A LuChi + // box sent it as video began, showed our first frame, then black (issue #58), as if + // it rebuilt its decoder. A rebuilt decoder needs SPS/PPS and a keyframe again. + MSG_VIDEO_UI_CONFIG -> { + log.i("<- UpdateUiConfigRequest (${body.size} bytes) - sending the stream's start again") + log.hex(" ui config", body, limit = 64) + lastCodecConfig?.let { send(MSG_MEDIA_CODEC_CONFIG, it, encrypted = true, channel = videoChannelId) } + videoSource?.requestSyncFrame() + } + else -> log.i("<- unhandled video message id=$messageId (${body.size} bytes)") } } @@ -1688,6 +1698,7 @@ class GearslipRunner( const val MSG_MEDIA_ACK = 32772 const val MSG_VIDEO_FOCUS_REQUEST = 32775 const val MSG_VIDEO_FOCUS_NOTIFICATION = 32776 + const val MSG_VIDEO_UI_CONFIG = 32777 // aap_protobuf/service/sensor/... - same "first specific message on this channel type // starts at 0x8000" numbering as media/input above.