Class: WebRTC::MediaStream

Inherits:
Object
  • Object
show all
Defined in:
lib/webrtc/media_stream.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tracks = []) ⇒ MediaStream

Returns a new instance of MediaStream.



7
8
9
10
11
12
13
# File 'lib/webrtc/media_stream.rb', line 7

def initialize(tracks = [])
  @id = generate_id
  @tracks = {}
  @callbacks = {}

  tracks.each { |track| add_track(track) }
end

Instance Attribute Details

#activeObject (readonly)

Returns the value of attribute active.



5
6
7
# File 'lib/webrtc/media_stream.rb', line 5

def active
  @active
end

#idObject (readonly)

Returns the value of attribute id.



5
6
7
# File 'lib/webrtc/media_stream.rb', line 5

def id
  @id
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/webrtc/media_stream.rb', line 15

def active?
  @tracks.values.any? { |track| track.ready_state == :live }
end

#add_track(track) ⇒ Object



35
36
37
38
39
40
# File 'lib/webrtc/media_stream.rb', line 35

def add_track(track)
  return if @tracks.key?(track.id)

  @tracks[track.id] = track
  @callbacks[:add_track]&.call(track)
end

#cloneObject



48
49
50
51
# File 'lib/webrtc/media_stream.rb', line 48

def clone
  cloned_tracks = @tracks.values.map(&:clone)
  MediaStream.new(cloned_tracks)
end

#get_audio_tracksObject



19
20
21
# File 'lib/webrtc/media_stream.rb', line 19

def get_audio_tracks
  @tracks.values.select { |track| track.kind == :audio }
end

#get_track_by_id(id) ⇒ Object



31
32
33
# File 'lib/webrtc/media_stream.rb', line 31

def get_track_by_id(id)
  @tracks[id]
end

#get_tracksObject



27
28
29
# File 'lib/webrtc/media_stream.rb', line 27

def get_tracks
  @tracks.values
end

#get_video_tracksObject



23
24
25
# File 'lib/webrtc/media_stream.rb', line 23

def get_video_tracks
  @tracks.values.select { |track| track.kind == :video }
end

#on_add_track(&block) ⇒ Object



53
54
55
# File 'lib/webrtc/media_stream.rb', line 53

def on_add_track(&block)
  @callbacks[:add_track] = block
end

#on_remove_track(&block) ⇒ Object



57
58
59
# File 'lib/webrtc/media_stream.rb', line 57

def on_remove_track(&block)
  @callbacks[:remove_track] = block
end

#remove_track(track) ⇒ Object



42
43
44
45
46
# File 'lib/webrtc/media_stream.rb', line 42

def remove_track(track)
  removed = @tracks.delete(track.id)
  @callbacks[:remove_track]&.call(track) if removed
  removed
end