···14)
1516// This function remains in scope for the duration of a single users' playback
17-func (mm *MediaManager) WebRTCPlayback2(ctx context.Context, user string, rendition string, offer *webrtc.SessionDescription) (*webrtc.SessionDescription, error) {
18 uu, err := uuid.NewV7()
19 if err != nil {
20 return nil, err
···93 return
94 case file := <-segChan.C:
95 log.Debug(ctx, "got segment", "file", file.Filepath)
000096 latency += file.PacketizedData.Duration
97 packetQueue <- file.PacketizedData
98 }
···14)
1516// This function remains in scope for the duration of a single users' playback
17+func (mm *MediaManager) WebRTCPlayback2(ctx context.Context, user string, rendition string, offer *webrtc.SessionDescription, viewer string) (*webrtc.SessionDescription, error) {
18 uu, err := uuid.NewV7()
19 if err != nil {
20 return nil, err
···93 return
94 case file := <-segChan.C:
95 log.Debug(ctx, "got segment", "file", file.Filepath)
96+ if !file.Published && viewer != user {
97+ log.Warn(ctx, "segment is not published and viewer is not the user", "viewer", viewer, "user", user)
98+ continue
99+ }
100 latency += file.PacketizedData.Duration
101 packetQueue <- file.PacketizedData
102 }
+1-1
pkg/media/webrtc_playback2_test.go
···17 Type: webrtc.SDPTypeOffer,
18 SDP: firefoxNoH264SDP,
19 }
20- answer, err := mm.WebRTCPlayback2(context.Background(), "test-user", "test-rendition", offer)
21 require.ErrorContains(t, err, "RTPSender created with no codecs")
22 require.Nil(t, answer)
23}
···17 Type: webrtc.SDPTypeOffer,
18 SDP: firefoxNoH264SDP,
19 }
20+ answer, err := mm.WebRTCPlayback2(context.Background(), "test-user", "test-rendition", offer, "")
21 require.ErrorContains(t, err, "RTPSender created with no codecs")
22 require.Nil(t, answer)
23}