You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

functions.js 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { MEDIA_TYPE } from '../media';
  2. /**
  3. * Returns local audio track.
  4. *
  5. * @param {Track[]} tracks - List of all tracks.
  6. * @returns {(Track|undefined)}
  7. */
  8. export function getLocalAudioTrack(tracks) {
  9. return getLocalTrack(tracks, MEDIA_TYPE.AUDIO);
  10. }
  11. /**
  12. * Returns local track by media type.
  13. *
  14. * @param {Track[]} tracks - List of all tracks.
  15. * @param {MEDIA_TYPE} mediaType - Media type.
  16. * @returns {(Track|undefined)}
  17. */
  18. export function getLocalTrack(tracks, mediaType) {
  19. return tracks.find(t => t.local && t.mediaType === mediaType);
  20. }
  21. /**
  22. * Returns local video track.
  23. *
  24. * @param {Track[]} tracks - List of all tracks.
  25. * @returns {(Track|undefined)}
  26. */
  27. export function getLocalVideoTrack(tracks) {
  28. return getLocalTrack(tracks, MEDIA_TYPE.VIDEO);
  29. }
  30. /**
  31. * Returns track of specified media type for specified participant id.
  32. *
  33. * @param {Track[]} tracks - List of all tracks.
  34. * @param {MEDIA_TYPE} mediaType - Media type.
  35. * @param {string} participantId - Participant ID.
  36. * @returns {(Track|undefined)}
  37. */
  38. export function getTrackByMediaTypeAndParticipant(
  39. tracks,
  40. mediaType,
  41. participantId) {
  42. return tracks.find(
  43. t => t.participantId === participantId && t.mediaType === mediaType
  44. );
  45. }
  46. /**
  47. * Returns the track if any which corresponds to a specific instance
  48. * of JitsiLocalTrack or JitsiRemoteTrack.
  49. *
  50. * @param {Track[]} tracks - List of all tracks.
  51. * @param {(JitsiLocalTrack|JitsiRemoteTrack)} jitsiTrack - JitsiTrack instance.
  52. * @returns {(Track|undefined)}
  53. */
  54. export function getTrackByJitsiTrack(tracks, jitsiTrack) {
  55. return tracks.find(t => t.jitsiTrack === jitsiTrack);
  56. }
  57. /**
  58. * Returns tracks of specified media type.
  59. *
  60. * @param {Track[]} tracks - List of all tracks.
  61. * @param {MEDIA_TYPE} mediaType - Media type.
  62. * @returns {Track[]}
  63. */
  64. export function getTracksByMediaType(tracks, mediaType) {
  65. return tracks.filter(t => t.mediaType === mediaType);
  66. }
  67. /**
  68. * Mute or unmute local track if any.
  69. *
  70. * @param {JitsiLocalTrack} track - Track instance.
  71. * @param {boolean} muted - If audio stream should be muted or unmuted.
  72. * @returns {Promise}
  73. */
  74. export function setTrackMuted(track, muted) {
  75. if (!track) {
  76. return Promise.resolve();
  77. }
  78. const f = muted ? 'mute' : 'unmute';
  79. return track[f]()
  80. .catch(err => {
  81. console.warn(`Track ${f} was rejected:`, err);
  82. throw err;
  83. });
  84. }