* (LAN-)devices, most a source/sink/control for various Audio/Video streams.
* Those devices (can) share/use any HW (Microphones/Speakers/V4L-devices) available
* programs producing/consuming sound/video, to be "exported" as individual sinks/sources
* Eventing support to dynamically change media routing
Your stated "reference problem" (Car AV) is (imho) not the most user-"relatable" scenario (after all, who has "hackable car"), a more common scenario I'd see:
* In several of the rooms of the dwelling there are
* Devices large/small with several connection types
* LAN (PCs, TVs, AV-HW, MediaPlayers, ...) with protocols including e.g.
* Well-known programs (VLC, KODI) with their "own" protocol
* UPNP/DLNA/AirPlay/Miracast/PulseAudio/RTSP/...
* SIP/WebRTC devices/clients (Doorbells, VoIP-Phones, VideoConf)
* Devices with Vendor-specific protocols. e.g LG WebOS
* USB connection to one of the above (WebCam, Android-devices, phones)
* Wifi-P2P (Some of LAN devices have this too, for e.g. screencasting)
* Bluetooth BTLE/Classic (devices can be stationary/mobile/transient)
I would like to enable these usecases:
* Send [emulated] [second] screen from PC to any Display surface
* View any desktop/UI/program/device on any other display surface
* Control all the above from PCs/Phones/Tablets, or Events (Doorbell -> Camera PiP @TV)
* Route any audio/video source to my speech-recognition/video-conf/VoIP Software
* Use Android device [connected to USB[ of another Device]] as 8+ devices: Camera F/R, Screen I/O, Audio I/O Headphone/Speaker/BT Microphone/App-Output
* Use "hook"-scripts for eventing/device control (TV might need some command to switch to HDMI3)
I realize most of the above can be probably be done using some GST/FFMPEG glue scripts/code and some systemd dependencies, but I'm haven't found quickly relatable examples of:
* "Run this command/config to add an ffpmeg commandline as virtual camera"
* "Use this config to represent your TV as another display output device"
* "Run this command On DevA to launch a GUI-binary on DevB, and make this "stream" available as VideoSource in Browser@DevA"
* "Use the Webcam on DevA, bluetooth headsets via DevB for input, TV1 as VideoOutput, AudioOut on AVR, runnings VideoConf on DevC"
* "Do this to implement access-control" (Bob can see Input "foo", but Alice can't)
Cars are a hard but representative problem, with intrinsic advantages:
- Multiple data flows
- Limited available attention
- Need for "just works"
- Need for trivial override
- Funding available
- Strong demand for solution
* (LAN-)devices, most a source/sink/control for various Audio/Video streams.
* Those devices (can) share/use any HW (Microphones/Speakers/V4L-devices) available
* programs producing/consuming sound/video, to be "exported" as individual sinks/sources
* Eventing support to dynamically change media routing
Your stated "reference problem" (Car AV) is (imho) not the most user-"relatable" scenario (after all, who has "hackable car"), a more common scenario I'd see:
* In several of the rooms of the dwelling there are
* Devices large/small with several connection types
I would like to enable these usecases: * Send [emulated] [second] screen from PC to any Display surface* View any desktop/UI/program/device on any other display surface
* Control all the above from PCs/Phones/Tablets, or Events (Doorbell -> Camera PiP @TV)
* Route any audio/video source to my speech-recognition/video-conf/VoIP Software
* Use Android device [connected to USB[ of another Device]] as 8+ devices: Camera F/R, Screen I/O, Audio I/O Headphone/Speaker/BT Microphone/App-Output
* Use "hook"-scripts for eventing/device control (TV might need some command to switch to HDMI3)
I realize most of the above can be probably be done using some GST/FFMPEG glue scripts/code and some systemd dependencies, but I'm haven't found quickly relatable examples of: * "Run this command/config to add an ffpmeg commandline as virtual camera"
* "Use this config to represent your TV as another display output device"
* "Run this command On DevA to launch a GUI-binary on DevB, and make this "stream" available as VideoSource in Browser@DevA"
* "Use the Webcam on DevA, bluetooth headsets via DevB for input, TV1 as VideoOutput, AudioOut on AVR, runnings VideoConf on DevC"
* "Do this to implement access-control" (Bob can see Input "foo", but Alice can't)