Class: WebRTC::MediaStream
- Inherits:
-
Object
- Object
- WebRTC::MediaStream
- Defined in:
- lib/webrtc/media_stream.rb
Instance Attribute Summary collapse
-
#active ⇒ Object
readonly
Returns the value of attribute active.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
Instance Method Summary collapse
- #active? ⇒ Boolean
- #add_track(track) ⇒ Object
- #clone ⇒ Object
- #get_audio_tracks ⇒ Object
- #get_track_by_id(id) ⇒ Object
- #get_tracks ⇒ Object
- #get_video_tracks ⇒ Object
-
#initialize(tracks = []) ⇒ MediaStream
constructor
A new instance of MediaStream.
- #on_add_track(&block) ⇒ Object
- #on_remove_track(&block) ⇒ Object
- #remove_track(track) ⇒ Object
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
#active ⇒ Object (readonly)
Returns the value of attribute active.
5 6 7 |
# File 'lib/webrtc/media_stream.rb', line 5 def active @active end |
#id ⇒ Object (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
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 |
#clone ⇒ Object
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_tracks ⇒ Object
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_tracks ⇒ Object
27 28 29 |
# File 'lib/webrtc/media_stream.rb', line 27 def get_tracks @tracks.values end |
#get_video_tracks ⇒ Object
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 |