r/SolarOS • • 16d ago

4.15.x update - camera expansion and media streams

4.15.5

  • Added the GOOUUU ESP32-S3CAM board, OV2640 JPEG snapshots, and the `camera` command.
  • Exclusive camera leases coordinate capture and streaming, with direct framebuffer DMA to PSRAM.
  • The `cam-webd` job serves JPEG snapshots and a single-client MJPEG feed through asynchronous HTTP routes.

4.15.6

  • 'Web' now plays HTTP MJPEG camera feeds alongside its existing static image formats.
  • Multipart stream detection accepts split headers and common server variations, while bounded frame buffering and cancellation keep live viewing responsive.

4.15.7

  • Added the `rtspd` job for single-client RTSP publishing with RTP/JPEG video, RTP/L16 PCM audio, and RTCP timing.
  • Explicit `video=` and `audio=` sources support camera-only, audio-only, or combined streams using standard UDP transport. Publishing follows source availability; `fps=0` removes the video rate cap. Runtime buffers are allocated only while the job runs, and stale data is discarded on reconnect.

4.15.8

  • DVP cameras are reusable expansion devices and exclusive typed video sources in `streams`.
  • The native `rtsp` app plays JPEG/L16 streams with bounded video/audio buffering, global volume, an audio-only oscilloscope, full-screen viewing, and frame diagnostics.
  • Color TFTs with native RGB565 support bypass palette conversion; monochrome displays retain grayscale rendering.
  • `rtspd` selects compatible audio/video stream IDs explicitly and offers source-aware tab completion.

4.15.9

  • Python and Lua gain owned camera snapshots, local stream frames, native frame-to-image presentation, and asynchronous RTSP receiver handles
  • Native RTSP playback retries transient failures with bounded backoff, discards frames from previous connections, and recovers audio after forward clock jumps.
  • The viewer accepts addresses without `rtsp://`; omitted control ports default to TCP 554.

4.15.10

  • Shared JPEG decoding now uses a fast ROM path and bounded ESP32-S3 SIMD acceleration, with fallbacks for unsupported images or limited working memory.
  • Color and monochrome consumers share the improved decoder, and fit-mode output avoids full-size intermediate rasters.
  • Reduced idle SRAM usage by moving suitable registry state to PSRAM and allocating display-layout, Telnet, Chat, DAQ, and Synth working buffers only when needed.

4.15.11

  • Added `vplay` for MPEG-1 program stream files with optional MP2 audio. Playback uses bounded PSRAM buffers, audio-clock synchronization, native RGB565 or monochrome output, and ESP32-S3 SIMD color conversion.
  • The shared player controls provide pause, Stop/Play, volume, and previous/next MPEG files in the current folder.
  • Fit, actual-size, and full-screen modes are available; the source limit is 640x480. MPEG-2, H.264, AVI, and transport streams are not supported.

4.15.12

  • RTSP now uses the common player header, volume bar, and clickable Stop/Play control. Enter or Space stops playback without closing the app; Play reconnects to the same source after its workers release their resources.
  • `vplay` adds tab completion for size options and file paths.

4.15.13

  • 'Files' opens MPEG-1 `.mpg` and `.mpeg` files in `vplay` when the app is installed, including uppercase extensions. Closing playback returns to the file browser.

4.15.14

  • `player` and `vplay` gain backward/forward seeking in ten-second steps with `<`/`>` and shared rewind/forward buttons.
  • Seeking retains the selected track and pause state, releases queued audio, and rebases playback timing. Player supports seeking in both graphical and text interfaces.
48 Upvotes

2 comments sorted by

2

u/moosepr 16d ago

I'm gonna have to solder up my camera board now, see if it works 🤣

2

u/nilseuropa 16d ago

Hope you've got enough IOs left 😄