diff --git a/libervia/cli/cmd_call.py b/libervia/cli/cmd_call.py index 71b62ce8..4142e4eb 100644 --- a/libervia/cli/cmd_call.py +++ b/libervia/cli/cmd_call.py @@ -28,7 +28,7 @@ from libervia.backend.core.i18n import _ from libervia.backend.tools.common import data_format from libervia.cli.constants import Const as C from libervia.frontends.tools import jid -from libervia.frontends.tools.webrtc_models import CallData +from libervia.frontends.tools.webrtc_models import CallData, SourcesPipeline from . import base @@ -58,18 +58,40 @@ class Common(base.CommandBase): self.parser.add_argument( "--no-ui", action="store_true", help=_("disable user interface") ) - sources_group = self.parser.add_mutually_exclusive_group() - sources_group.add_argument( + self.parser.add_argument( "-s", "--sources", choices=["auto", "test"], default="auto", help='Well-known sources to use (default: "auto").', ) + pipelines_group = self.parser.add_argument_group( + title = "Custom Pipelines" + ) + pipelines_group.add_argument( + "-V", + "--video", + help="GStreamer pipeline description for the video stream" + ) + pipelines_group.add_argument( + "-A", + "--audio", + help="GStreamer pipeline description for the audio stream" + ) def get_call_data_kw(self) -> dict[str, Any]: """Get relevant keyword arguments for CallData""" kwargs: dict[str, Any] = {} + if self.args.video or self.args.audio: + if self.args.sources != "auto": + self.parser.error( + "You can 't use --sources and --video or --audio at the same time." + ) + kwargs["sources_data"] = SourcesPipeline( + video_pipeline=self.args.video, + audio_pipeline=self.args.audio + ) + if self.args.sources == "test": from libervia.frontends.tools.webrtc_models import SourcesTest