aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/invalid/lena/scrcpy/Session.java
AgeCommit message (Collapse)AuthorFilesLines
2026-08-01app: refine physical-device interfaceLena1-10/+0
Use target-safe capture defaults and remove redundant navigation and frame-rate controls.
2026-08-01video: reset stalled encoder generationsLena1-1/+1
2026-08-01audio: harden Opus playbackLena1-45/+7
Preserve decoder timing and keep blocking speaker writes off codec callbacks. Playback failures no longer take down video or control.
2026-08-01app: harden mirroring lifecycle and stateLena1-99/+278
2026-08-01adb: reduce and harden wireless transportLena1-3/+1
2026-07-01app: fix session lifecycle, teardown, and opus playbackLena1-41/+63
Opus playback never worked: feed() called dequeueInputBuffer() on a codec in async-callback mode, which always throws, so every packet was silently dropped. Feed input through the async callback with a bounded pending queue instead. Make bring-up transactional: roll back partially opened streams and the server shell on failure, join reader threads on stop, and close the owning ADB streams before releasing sinks. Replace the openAbstract watchdog thread with a real timeout in the vendored AdbConnection.open(), which also removes the half-open stream from the lookup table on failure. Harden the activity: release owned Surfaces, gate callbacks on a destroyed flag and a session generation, serialize reconnect, and handle target replacement via singleTask + onNewIntent. Propagate device-list write failures instead of swallowing them, bound the clipboard payload and the video pending queue against hostile peers, and discard incomplete recordings instead of keeping corrupt files. Use the mediaPlayback foreground-service type; Android 15 stops dataSync services after six hours. Drop the unused ACCESS_NETWORK_STATE permission.
2026-07-01app: report whether a recording was actually writtenLena1-2/+3
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-06-24scrcpy-android: mirror an Android device over wireless ADB0.1Lena1-0/+318
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.