# RCWeb Camera Out App

The **RCWeb Camera Out App** (`app/camera-out`) is a minimal, fullscreen camera output viewer. It follows the **Asymmetric Pattern**: a single `camera-c` broadcaster publishes a WebRTC stream and this app displays it edge-to-edge with no surrounding UI.

![icon](pwa-512x512.png "Camera Out App Icon")

## What it does

- **Single-camera display**: Accepts the first incoming `camera-c` stream and renders it fullscreen with no chrome.
- **Waiting state with QR code**: While no broadcaster is connected, displays a "Waiting for camera to connect…" message and a QR code that links directly to the `camera-c` app in the same room.
- **No UI framework**: Does not use UIKit or any other component library — just a `<video>` element and a minimal overlay.
- **Click to fullscreen**: Tapping or clicking the video toggles the browser fullscreen mode.

## How it works

- **RCWeb signaling**: `script.js` uses `rc.sendFunctionCall(...)` for the same WebRTC signaling protocol as `camera-view` (requesting streams, exchanging SDP answers and ICE candidates).
- **Receive-only peer connection**: A single `RTCPeerConnection` with `recvonly` transceivers keeps the viewer passive.
- **Inline QR code generator**: A self-contained QR code encoder (byte mode, EC level M, versions 1-10) generates the code on a `<canvas>` without any external library.
- **Auto transitions**: The waiting overlay fades out when video goes live and reappears if the broadcaster leaves or the connection drops.

## Notes

- Audio is unmuted by default. If the browser blocks autoplay with audio, the video will fall back to muted playback.
- Like the camera-view app, this viewer relies on STUN servers and does **not** include TURN relay support.
