aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2026-07-01app: report whether a recording was actually writtenLena3-36/+21
MuxRecorder had a Listener interface that nothing implemented; every callback fired into a no-op. Delete it. stop() now returns whether a keyframe ever landed and the muxer ran, so Mirror can stop claiming "recording saved" when no file was written.
2026-07-01app: clamp forwarded touch pressure to u16Lena1-1/+4
MotionEvent.getPressure() is calibrated around 1.0 but may exceed it on some digitizers. Masking with 0xffff wrapped hard presses around to a light touch; clamp instead.
2026-07-01app: guard VideoSink.submit against torn-down codecLena1-5/+9
reconfigure() tears the codec down outside the lock, so an in-flight MediaCodec callback can reach submit() while `codec` is null. The NPE lands on the callback handler thread, which has no catch and kills the process. Drop the frame instead, like any back-pressure casualty. Also rewrite the back-pressure comment: it described a keyframe-aware drop policy this class cannot implement (the keyframe flag never reaches it). The real policy protects config frames only.
2026-06-24scrcpy-android: mirror an Android device over wireless ADB0.1Lena124-0/+12789
Native Java app for Android 12+ that mirrors another Android device over wireless ADB, forwarding video, audio, touch input, and clipboard. Bundles a pinned scrcpy-server.jar and the vendored libadb-android stack. Supports h264/h265/av1 video and raw/opus audio with in-app codec selection. No NDK, no Kotlin. Includes JVM unit tests and a Docker-based emulator e2e rig.