Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at eli/postgres 101 lines 1.9 kB view raw
1package rtcrec 2 3import ( 4 "time" 5 6 "github.com/pion/interceptor" 7 "github.com/pion/webrtc/v4" 8) 9 10type RecordingTrackRemote struct { 11 track *webrtc.TrackRemote 12 stream *RecorderStream 13 pc *RecordingPeerConnection 14} 15 16func (t *RecordingTrackRemote) Read(p []byte) (n int, attrs interceptor.Attributes, err error) { 17 n, attrs, err = t.track.Read(p) 18 now := time.Now() 19 b2 := make([]byte, n) 20 copy(b2, p) 21 t.pc.Do(func() { 22 errString := "" 23 if err != nil { 24 errString = err.Error() 25 } 26 t.stream.Event(WebRTCEvent{ 27 TrackRead: &TrackRead{ 28 Data: b2, 29 SSRC: t.track.SSRC(), 30 Count: n, 31 // Attrs: attrs, 32 Err: errString, 33 }, 34 Time: now, 35 }) 36 }) 37 return n, attrs, err 38} 39 40func (t *RecordingTrackRemote) Codec() webrtc.RTPCodecParameters { 41 now := time.Now() 42 codec := t.track.Codec() 43 t.pc.Do(func() { 44 t.stream.Event(WebRTCEvent{ 45 TrackCodec: &TrackCodec{ 46 SSRC: t.track.SSRC(), 47 Codec: codec, 48 }, 49 Time: now, 50 }) 51 }) 52 return codec 53} 54 55func (t *RecordingTrackRemote) ID() string { 56 return t.track.ID() 57} 58 59func (t *RecordingTrackRemote) Kind() webrtc.RTPCodecType { 60 now := time.Now() 61 kind := t.track.Kind() 62 t.pc.Do(func() { 63 t.stream.Event(WebRTCEvent{ 64 TrackKind: &TrackKind{ 65 SSRC: t.track.SSRC(), 66 Kind: kind, 67 }, 68 Time: now, 69 }) 70 }) 71 return kind 72} 73 74func (t *RecordingTrackRemote) PayloadType() webrtc.PayloadType { 75 now := time.Now() 76 payloadType := t.track.PayloadType() 77 t.pc.Do(func() { 78 t.stream.Event(WebRTCEvent{ 79 TrackPayloadType: &TrackPayloadType{ 80 SSRC: t.track.SSRC(), 81 PayloadType: payloadType, 82 }, 83 Time: now, 84 }) 85 }) 86 return payloadType 87} 88 89func (t *RecordingTrackRemote) SSRC() webrtc.SSRC { 90 now := time.Now() 91 ssrc := t.track.SSRC() 92 t.pc.Do(func() { 93 t.stream.Event(WebRTCEvent{ 94 Time: now, 95 TrackSSRC: &TrackSSRC{ 96 SSRC: ssrc, 97 }, 98 }) 99 }) 100 return ssrc 101}