Skip to content

Commit fc84a99

Browse files
authoredDec 3, 2024
[RSDK-9250] - Add stream options handlers (#308)
* Add stream options handlers * Comment
1 parent 1ebdd10 commit fc84a99

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed
 

‎lib/src/media/stream/client.dart

+37
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,43 @@ class StreamManager {
8585
return client;
8686
}
8787

88+
Future<List<Resolution>> getStreamOptions(String name) async {
89+
final sanitizedName = _getValidSDPTrackName(name);
90+
try {
91+
final response = await _client.getStreamOptions(GetStreamOptionsRequest()..name = sanitizedName);
92+
_logger.d('Got options for stream named $name');
93+
return response.resolutions;
94+
} catch (e) {
95+
_logger.e('Failed to get options for stream named $name');
96+
return [];
97+
}
98+
}
99+
100+
Future<void> setStreamOptions(String name, int width, int height) async {
101+
final sanitizedName = _getValidSDPTrackName(name);
102+
final resolution = Resolution()
103+
..width = width
104+
..height = height;
105+
try {
106+
await _client.setStreamOptions(SetStreamOptionsRequest()
107+
..name = sanitizedName
108+
..resolution = resolution);
109+
_logger.d('Set options for stream named $name');
110+
} catch (e) {
111+
_logger.e('Failed to set options for stream named $name');
112+
}
113+
}
114+
115+
Future<void> resetStreamOptions(String name) async {
116+
final sanitizedName = _getValidSDPTrackName(name);
117+
try {
118+
await _client.setStreamOptions(SetStreamOptionsRequest()..name = sanitizedName);
119+
_logger.d('Reset options for stream named $name');
120+
} catch (e) {
121+
_logger.e('Failed to reset options for stream named $name');
122+
}
123+
}
124+
88125
/// Request that a stream get added to the WebRTC channel
89126
Future<void> _add(String name) async {
90127
final sanitizedName = _getValidSDPTrackName(name);

‎lib/src/robot/client.dart

+16
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:logger/logger.dart';
77
import '../gen/common/v1/common.pb.dart';
88
import '../gen/google/protobuf/struct.pb.dart';
99
import '../gen/robot/v1/robot.pbgrpc.dart' as rpb;
10+
import '../gen/stream/v1/stream.pbgrpc.dart';
1011
import '../media/stream/client.dart';
1112
import '../resource/base.dart';
1213
import '../resource/manager.dart';
@@ -308,6 +309,21 @@ class RobotClient {
308309
return _streamManager.getStreamClient(name);
309310
}
310311

312+
/// Get the stream options for a stream with the given name.
313+
Future<List<Resolution>> getStreamOptions(String name) async {
314+
return _streamManager.getStreamOptions(name);
315+
}
316+
317+
/// Set the options for a stream with the given name.
318+
Future<void> setStreamOptions(String name, int width, int height) {
319+
return _streamManager.setStreamOptions(name, width, height);
320+
}
321+
322+
/// Reset the options for a stream with the given name.
323+
Future<void> resetStreamOptions(String name) {
324+
return _streamManager.resetStreamOptions(name);
325+
}
326+
311327
/// Get app-related information about the machine.
312328
///
313329
/// ```

0 commit comments

Comments
 (0)