MJPEG Video UI Modes¶
This document defines the VidWidget UI mode split to reduce confusion and save vertical space in screens that do not need full camera controls.
Why¶
- Full camera controls are useful in chat/camera pages but too heavy in media asset and input contexts.
- Showing extra controls where they are not relevant causes user confusion.
- Smaller, purpose-specific layouts improve readability and message density in history and input areas.
VidWidget Modes¶
VidWidget now supports 5 explicit UI modes:
eVideoUiModePhotoeVideoUiModeInputPhotoeVideoUiModeInputWidgeteVideoUiModeAssetVideoeVideoUiModeChat
Mode Intent¶
- Photo mode:
- No camera/record controls.
-
Keep only image rotation control.
-
Input widget mode:
- Display-only mode for embedded video surface in input flows.
-
Hide all embedded VidWidget controls to avoid duplicate controls with parent input widgets.
-
Input photo mode:
- Photo capture flow mode.
- Hide embedded record controls, motion sensitivity, and motion progress UI.
-
Keep feed area minimal while parent photo widget owns capture actions.
-
Asset video mode:
- Keep only image rotation in
VidWidget. -
Playback controls (play/pause/progress) remain owned by
AssetVideoWidget. -
Chat mode:
- Preserve full current control set and click-to-toggle behavior.
Current Wiring¶
AssetPhotoWidgetsetseVideoUiModePhoto.InputPhotoWidgetsetseVideoUiModeInputPhoto.InputVideoWidgetsetseVideoUiModeInputWidget.AssetVideoWidgetsetseVideoUiModeAssetVideo.- Default remains
eVideoUiModeChatfor existing chat/camera surfaces.
Notes¶
- The mode split is UI-only and does not change media transport format or decode path.
- Existing media-module guards remain required so invalid module subscriptions do not reach
MediaProcessor::wantMediaInput.