Add RTSP/MJPEG support and per-printer custom cameras #1351

Open
opened 2026-04-05 17:25:57 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @mLupine on 12/15/2025

Description

This PR does three things, all involving custom printer cameras in Orca:

  1. adds support for RTSP/MJPEG streams (resolves #8376),
  2. introduces a new system for managing custom camera configurations per printer,
  3. fixes #8115, #5410 — it's been driving me insane for years.

Screenshots/Recordings/Graphs

image CleanShot 2025-12-15 at 18 52 52@2x image

Tests

RTSP/MJPEG use gstreamer on macOS and Linux and native system implementation on Windows. I've been using the Mac implementation for about a day now and it seems really stable now, but any help testing Linux and Windows versions will be greatly appreciated.

AI-generated PR summary below

This pull request introduces a new system for managing printer camera configurations, adds platform-specific media control sources, and updates the camera popup UI to support these changes. The changes include new data structures and serialization logic for printer cameras, new dialogs for managing camera overrides, and updated build configuration for cross-platform media handling.

Key changes:

Printer Camera Configuration System

  • Introduced a new PrinterCameraConfig struct and CameraSourceType enum to represent camera settings for each printer, including serialization/deserialization helpers (camera_source_type_to_string, camera_source_type_from_string).
  • Added methods to AppConfig for managing printer camera configurations: get/set/erase camera configs, and access all cameras.
  • Updated AppConfig::load() and AppConfig::save() to handle the new printer_cameras section in the configuration file, enabling persistence of camera settings. [1] [2]
  • Added a new member variable m_printer_cameras to AppConfig to store all camera configurations.

Camera Management Dialogs and UI

  • Added new files CameraManagementDialog.cpp/hpp for a dialog to manage all printer camera overrides, and integrated them into the build system. [1] [2]
  • Updated CameraPopup to use the new camera management system: replaced the old custom camera input with a switch and a link to open the management dialog, and updated event handling to work with the new config. [1] [2] [3] [4] [5] [6] [7]

Cross-Platform Media Control Support

  • Added platform-specific source files for native media control (NativeMediaCtrl) for macOS, Windows, and Linux, and updated the build system to include them conditionally.
  • Improved GStreamer integration in the build system for all platforms, adding video and app modules as required for better media support.
*Originally created by @mLupine on 12/15/2025* # Description This PR does three things, all involving custom printer cameras in Orca: 1. adds support for RTSP/MJPEG streams (resolves #8376), 2. introduces a new system for managing custom camera configurations **per printer**, 3. fixes #8115, #5410 — it's been driving me insane for years. # Screenshots/Recordings/Graphs <img width="478" height="157" alt="image" src="https://github.com/user-attachments/assets/17384838-d2a3-47fb-b5eb-0ed05875864e" /> <img width="1530" height="820" alt="CleanShot 2025-12-15 at 18 52 52@2x" src="https://github.com/user-attachments/assets/1a87e18d-0123-4f5b-9b45-5da3af17c162" /> <img width="903" height="476" alt="image" src="https://github.com/user-attachments/assets/fd1082cb-2d8a-471d-88bd-cb55108572ab" /> ## Tests RTSP/MJPEG use gstreamer on macOS and Linux and native system implementation on Windows. I've been using the Mac implementation for about a day now and it seems really stable now, but any help testing Linux and Windows versions will be greatly appreciated. ## AI-generated PR summary below > This pull request introduces a new system for managing printer camera configurations, adds platform-specific media control sources, and updates the camera popup UI to support these changes. The changes include new data structures and serialization logic for printer cameras, new dialogs for managing camera overrides, and updated build configuration for cross-platform media handling. > > **Key changes:** > > ### Printer Camera Configuration System > > * Introduced a new `PrinterCameraConfig` struct and `CameraSourceType` enum to represent camera settings for each printer, including serialization/deserialization helpers (`camera_source_type_to_string`, `camera_source_type_from_string`). > * Added methods to `AppConfig` for managing printer camera configurations: get/set/erase camera configs, and access all cameras. > * Updated `AppConfig::load()` and `AppConfig::save()` to handle the new `printer_cameras` section in the configuration file, enabling persistence of camera settings. [[1]](diffhunk://#diff-b8f0bbadd0cb98290ee7af2c8f220827e7b6aa0666549a16c1428d692252cb0bR681-R693) [[2]](diffhunk://#diff-b8f0bbadd0cb98290ee7af2c8f220827e7b6aa0666549a16c1428d692252cb0bR891-R898) > * Added a new member variable `m_printer_cameras` to `AppConfig` to store all camera configurations. > > ### Camera Management Dialogs and UI > > * Added new files `CameraManagementDialog.cpp/hpp` for a dialog to manage all printer camera overrides, and integrated them into the build system. [[1]](diffhunk://#diff-18f85c656ccf56dfbabfda741a97b1794c71739f4c811d17c4e668316bedaa24R83-R84) [[2]](diffhunk://#diff-6e9015c0f01106990655f3f1a3ecd6d1ba6fb57ee1996b572cb557251a8deaedR1-R74) > * Updated `CameraPopup` to use the new camera management system: replaced the old custom camera input with a switch and a link to open the management dialog, and updated event handling to work with the new config. [[1]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eR6-R13) [[2]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eL19-L45) [[3]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eL104-R114) [[4]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eL168-R157) [[5]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eL186-L216) [[6]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eL236-L246) [[7]](diffhunk://#diff-355533f43b7cc569835fea5b54818bfbbcae7a482b6c0a1d45c98cd51f40612eR336-R338) > > ### Cross-Platform Media Control Support > > * Added platform-specific source files for native media control (`NativeMediaCtrl`) for macOS, Windows, and Linux, and updated the build system to include them conditionally. > * Improved GStreamer integration in the build system for all platforms, adding video and app modules as required for better media support.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#1351