From bba1a327d1dc3dca502d6b9f0d09c2e4ac4a6579 Mon Sep 17 00:00:00 2001 From: seanavery Date: Wed, 27 Nov 2024 14:07:33 -0600 Subject: [PATCH 1/2] Add stream options handlers --- lib/src/media/stream/client.dart | 37 ++++++++++++++++++++++++++++++++ lib/src/robot/client.dart | 16 ++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/lib/src/media/stream/client.dart b/lib/src/media/stream/client.dart index 8110e98c870..c2f04f2688f 100644 --- a/lib/src/media/stream/client.dart +++ b/lib/src/media/stream/client.dart @@ -85,6 +85,43 @@ class StreamManager { return client; } + Future> getStreamOptions(String name) async { + final sanitizedName = _getValidSDPTrackName(name); + try { + final response = await _client.getStreamOptions(GetStreamOptionsRequest()..name = sanitizedName); + _logger.d('Got options for stream named $name'); + return response.resolutions; + } catch (e) { + _logger.e('Failed to get options for stream named $name'); + return []; + } + } + + Future setStreamOptions(String name, int width, int height) async { + final sanitizedName = _getValidSDPTrackName(name); + final resolution = Resolution() + ..width = width + ..height = height; + try { + await _client.setStreamOptions(SetStreamOptionsRequest() + ..name = sanitizedName + ..resolution = resolution); + _logger.d('Set options for stream named $name'); + } catch (e) { + _logger.e('Failed to set options for stream named $name'); + } + } + + Future resetStreamOptions(String name) async { + final sanitizedName = _getValidSDPTrackName(name); + try { + await _client.setStreamOptions(SetStreamOptionsRequest()..name = sanitizedName); + _logger.d('Reset options for stream named $name'); + } catch (e) { + _logger.e('Failed to reset options for stream named $name'); + } + } + /// Request that a stream get added to the WebRTC channel Future _add(String name) async { final sanitizedName = _getValidSDPTrackName(name); diff --git a/lib/src/robot/client.dart b/lib/src/robot/client.dart index 71fbbfa5147..080f2f3666b 100644 --- a/lib/src/robot/client.dart +++ b/lib/src/robot/client.dart @@ -7,6 +7,7 @@ import 'package:logger/logger.dart'; import '../gen/common/v1/common.pb.dart'; import '../gen/google/protobuf/struct.pb.dart'; import '../gen/robot/v1/robot.pbgrpc.dart' as rpb; +import '../gen/stream/v1/stream.pbgrpc.dart'; import '../media/stream/client.dart'; import '../resource/base.dart'; import '../resource/manager.dart'; @@ -299,6 +300,21 @@ class RobotClient { return _streamManager.getStreamClient(name); } + /// Get the stream options for a stream with the given name. + Future> getStreamOptions(String name) async { + return _streamManager.getStreamOptions(name); + } + + /// Set the options for a stream with the given name. + Future setStreamOptions(String name, int width, int height) { + return _streamManager.setStreamOptions(name, width, height); + } + + // Reset the options for a stream with the given name. + Future resetStreamOptions(String name) { + return _streamManager.resetStreamOptions(name); + } + /// Get app-related information about the machine. /// /// ``` From 74b19144c17e7215e6b7438c86335372a07a44db Mon Sep 17 00:00:00 2001 From: seanavery Date: Wed, 27 Nov 2024 15:00:05 -0600 Subject: [PATCH 2/2] Comment --- lib/src/robot/client.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/robot/client.dart b/lib/src/robot/client.dart index 080f2f3666b..ae7295bd442 100644 --- a/lib/src/robot/client.dart +++ b/lib/src/robot/client.dart @@ -310,7 +310,7 @@ class RobotClient { return _streamManager.setStreamOptions(name, width, height); } - // Reset the options for a stream with the given name. + /// Reset the options for a stream with the given name. Future resetStreamOptions(String name) { return _streamManager.resetStreamOptions(name); }