feat(mms): add video recording, compression, and MMS send pipeline#5
Open
Paul75 wants to merge 12 commits into
Open
feat(mms): add video recording, compression, and MMS send pipeline#5Paul75 wants to merge 12 commits into
Paul75 wants to merge 12 commits into
Conversation
added 12 commits
July 10, 2026 13:39
Add end-to-end video message support: - CameraX overlay with SD recording (480p), 30s limit, auto-stop - Buffer-to-buffer transcode pipeline at 48kbps (~340KB from 1.3MB) - MMS send via content provider with FileProvider cache for local display - ExoPlayer-based video dialog with custom controls, progress bar, replay - Video thumbnails with play icon in inbox thread list - Camera button UX: tap opens attachment menu, long press starts recording - Recording countdown progress bar (green→yellow→red) - Settings: add 700KB option to MMS image size list
…to video recording overlay - Ready phase: camera preview before recording starts, user can flip camera and adjust zoom before committing to record - Tap play button to start recording (vs instant start before) - Flip camera button: toggles front/back, rebinds camera - Pause/resume recording with accurate timer (tracks paused duration) - Zoom slider (vertical, left side) with zoom ratio label - 30s auto-stop timer respects paused time
- Shows '1x' pill button next to flip camera when minZoomRatio < 1.0 - Tap toggles between 1.0x (normal) and minZoomRatio (ultra-wide) - Button background: semi-transparent when normal, opaque white when active - Also logs zoom range on camera bind for debugging
…oomState - Reduces logcat spam from hundreds of zoom range logs per second - Only logs and updates min/max zoom when values actually change
…o overlay - Enumerate all Camera2 IDs with facing and focal length - Find ultra-wide by back-facing + focal < 3.0mm - Build custom CameraSelector targeting the ultra-wide ID - Toggle between normal (DEFAULT_BACK_CAMERA) and ultra-wide via CameraSelector - Logs all camera IDs on bind for debugging
…tigation Logs all capture request/result/session keys per camera, filtered for zte/mediatek/mtk namespace. Debug-only, will be removed.
…de investigation" This reverts commit d255640.
… only Controls (close, play/pause, progress bar) no longer dismiss the dialog when tapped. Only tapping the video area itself closes it.
MediaExtractor.selectTrack() is exclusive — selecting the audio track deselects the video track, causing the decoder to receive zero input. The entire transcode pipeline was non-functional and silently returned the original uncompressed video. Fix: use two separate MediaExtractor instances — one for video decoding, one for audio passthrough. Also buffer early audio samples until the muxer starts so no audio data is lost at the beginning of the file. Bug found via code review before device testing.
The .clickable modifier on AndroidView intercepted all touch events including the seek bar, making it impossible to navigate the video. Removed so touches pass through to PlayerView. Users dismiss via close button (X) or back gesture.
The seek bar was a read-only LinearProgressIndicator that could not be dragged. Replaced with a Slider that seeks on release via onValueChangeFinished. Added isSeeking flag to prevent the polling LaunchedEffect from overwriting the position during drag.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add end-to-end video message support: