feat: Support setVideoFPS for subscribe. (#258)

* feat: Support setVideoFPS for subscribe.

* Update lib/src/publication/remote.dart

Co-authored-by: David Zhao <dz@livekit.io>

* Add comment for setVideoFPS.

---------

Co-authored-by: David Zhao <dz@livekit.io>
This commit is contained in:
CloudWebRTC
2023-03-15 15:51:15 +08:00
committed by GitHub
parent a992a27d0b
commit 59ee3105fb
2 changed files with 57 additions and 5 deletions
+44 -5
View File
@@ -199,17 +199,22 @@ class _RemoteParticipantWidgetState
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: [
// Menu for RemoteTrackPublication<RemoteAudioTrack>
if (firstAudioPublication != null && !isScreenShare)
RemoteTrackPublicationMenuWidget(
pub: firstAudioPublication!,
icon: EvaIcons.volumeUp,
),
// Menu for RemoteTrackPublication<RemoteVideoTrack>
if (videoPublication != null)
RemoteTrackPublicationMenuWidget(
pub: videoPublication!,
icon: isScreenShare ? EvaIcons.monitor : EvaIcons.video,
),
// Menu for RemoteTrackPublication<RemoteAudioTrack>
if (firstAudioPublication != null && !isScreenShare)
RemoteTrackPublicationMenuWidget(
pub: firstAudioPublication!,
icon: EvaIcons.volumeUp,
if (videoPublication != null)
RemoteTrackFPSMenuWidget(
pub: videoPublication!,
icon: EvaIcons.options2,
),
],
),
@@ -253,3 +258,37 @@ class RemoteTrackPublicationMenuWidget extends StatelessWidget {
),
);
}
class RemoteTrackFPSMenuWidget extends StatelessWidget {
final IconData icon;
final RemoteTrackPublication pub;
const RemoteTrackFPSMenuWidget({
required this.pub,
required this.icon,
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context) => Material(
color: Colors.black.withOpacity(0.3),
child: PopupMenuButton<Function>(
tooltip: 'PreferredFPS',
icon: Icon(icon, color: Colors.white),
onSelected: (value) => value(),
itemBuilder: (BuildContext context) => <PopupMenuEntry<Function>>[
PopupMenuItem(
child: const Text('30'),
value: () => pub.setVideoFPS(30),
),
PopupMenuItem(
child: const Text('15'),
value: () => pub.setVideoFPS(15),
),
PopupMenuItem(
child: const Text('8'),
value: () => pub.setVideoFPS(8),
),
],
),
);
}