Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

core: frontend: video streams -> multimedia pipeline manager #2264

Open
1 of 17 tasks
ES-Alexander opened this issue Dec 19, 2023 · 4 comments
Open
1 of 17 tasks

core: frontend: video streams -> multimedia pipeline manager #2264

ES-Alexander opened this issue Dec 19, 2023 · 4 comments
Labels
core Issue related to BlueOS-core enhancement New feature or request triage Needs triage from developers ui User Interface feature

Comments

@ES-Alexander
Copy link
Collaborator

ES-Alexander commented Dec 19, 2023

Current behaviour

The Video Streams interface page is currently device-focused, which

  1. can involve a lot of scrolling through devices to find active streams,
  2. is poorly scalable to handling desirable extensions to the pipeline systems (like audio, external processing, and (re)encoding), and
  3. is poorly equipped to display even what the current pipelines involve (which can be important for debugging and understanding resource usage, e.g. if one video source has several WebRTC outputs active).

Expected or desired behaviour

It seems more intuitive (and scalable) to change the page to being pipeline-focused, where the user can see the details of their active pipelines (likely with a simplified interface in standard mode and a detailed one in pirate mode), and can more directly control the pipeline processing and outputs (including disabling or removing select parts they don't want to keep).

Through discussion with @joaoantoniocardoso, we've come up with some interface ideas that should hopefully cover this, and allow BlueOS to advance into a maintainable future of multimedia handling:

Screenshot 2023-12-20 at 1 55 06 am
  • "Known Inputs" list/gallery at the top
    • simple icons for input type (e.g. camera / microphone) and connection type (e.g. USB / network)
    • input configuration (e.g. for camera settings like brightness and exposure, which affect all streams from that camera)
      • should support ONVIF and UVC/V4L2 style configuration as relevant
      • ideally would be extensible (e.g. if users have some other camera driver, or want to support a different ONVIF flavour)
        • as a workaround we could require custom drivers to provide a V4L2-style API for configuration, but having custom configuration support through plugins would be preferable
    • status icons/counters for the configured pipeline(s)
      • green for all active and working
      • yellow for some errors
      • red for all errors
      • grey for pipeline configured but disabled
    • button to register new inputs (e.g. undiscovered IP cameras)
  • Pipelines underneath
    • three-section structure, with inputs, processing, then outputs
      • displayed visually, with process-style nodes and arrows
      • followed via wizard-style pipeline configuration popup
    • longer term the "processing" section should be extensible (e.g. with user-provided functions/programs/elements)
    • all configured outputs are displayed
      • outputs can be added, configured, disabled, or deleted as relevant
      • issues with an output should be indicated on that output, and the arrow(s) leading to it
        • red arrows should provide access to some relevant debugging information (e.g. internal pipeline structure, specific failing gstreamer element, gstreamer pipeline logs, etc)

Prerequisites

  • I have checked to make sure that a similar request has not already been filed or fixed.
@ES-Alexander ES-Alexander added enhancement New feature or request core Issue related to BlueOS-core ui User Interface feature triage Needs triage from developers labels Dec 19, 2023
@ES-Alexander
Copy link
Collaborator Author

Where relevant, we could also consider adding resource usage indicators (e.g. to show CPU and memory usage of elements, and potentially also to show network bandwidth consumption of outputs).

@patrickelectric
Copy link
Member

To add on this, the proposal appears to be direct related to the software architecture proposed here: mavlink/mavlink-camera-manager#274 (comment)

@joaoantoniocardoso
Copy link
Member

joaoantoniocardoso commented Dec 19, 2023

Where relevant, we could also consider adding resource usage indicators (e.g. to show CPU and memory usage of elements, and potentially also to show network bandwidth consumption of outputs).

This would be very useful for development/debugging. Here is a related plugin called gst-instruments .

@ES-Alexander
Copy link
Collaborator Author

This could also be used for modification of the standard gstreamer pipeline, which would be useful for cases like this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Issue related to BlueOS-core enhancement New feature or request triage Needs triage from developers ui User Interface feature
Projects
None yet
Development

No branches or pull requests

3 participants