mirror of
https://github.com/pion/webrtc.git
synced 2025-12-24 11:51:03 +08:00
Refactor streamsForSSRC to return struct
This commit is contained in:
@@ -65,6 +65,13 @@ type simulcastStreamPair struct {
|
||||
srtcp *srtp.ReadStreamSRTCP
|
||||
}
|
||||
|
||||
type streamsForSSRCResult struct {
|
||||
rtpReadStream *srtp.ReadStreamSRTP
|
||||
rtpInterceptor interceptor.RTPReader
|
||||
rtcpReadStream *srtp.ReadStreamSRTCP
|
||||
rtcpInterceptor interceptor.RTCPReader
|
||||
}
|
||||
|
||||
// NewDTLSTransport creates a new DTLSTransport.
|
||||
// This constructor is part of the ORTC API. It is not
|
||||
// meant to be used together with the basic WebRTC API.
|
||||
@@ -530,15 +537,15 @@ func (t *DTLSTransport) storeSimulcastStream(
|
||||
func (t *DTLSTransport) streamsForSSRC(
|
||||
ssrc SSRC,
|
||||
streamInfo interceptor.StreamInfo,
|
||||
) (*srtp.ReadStreamSRTP, interceptor.RTPReader, *srtp.ReadStreamSRTCP, interceptor.RTCPReader, error) {
|
||||
) (*streamsForSSRCResult, error) {
|
||||
srtpSession, err := t.getSRTPSession()
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rtpReadStream, err := srtpSession.OpenReadStream(uint32(ssrc))
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rtpInterceptor := t.api.interceptor.BindRemoteStream(
|
||||
@@ -554,12 +561,12 @@ func (t *DTLSTransport) streamsForSSRC(
|
||||
|
||||
srtcpSession, err := t.getSRTCPSession()
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rtcpReadStream, err := srtcpSession.OpenReadStream(uint32(ssrc))
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rtcpInterceptor := t.api.interceptor.BindRTCPReader(interceptor.RTCPReaderFunc(
|
||||
@@ -570,5 +577,10 @@ func (t *DTLSTransport) streamsForSSRC(
|
||||
}),
|
||||
)
|
||||
|
||||
return rtpReadStream, rtpInterceptor, rtcpReadStream, rtcpInterceptor, nil
|
||||
return &streamsForSSRCResult{
|
||||
rtpReadStream: rtpReadStream,
|
||||
rtpInterceptor: rtpInterceptor,
|
||||
rtcpReadStream: rtcpReadStream,
|
||||
rtcpInterceptor: rtcpInterceptor,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -1780,10 +1780,14 @@ func (pc *PeerConnection) handleIncomingSSRC(rtpStream io.Reader, ssrc SSRC) err
|
||||
params.Codecs[0].RTPCodecCapability,
|
||||
params.HeaderExtensions,
|
||||
)
|
||||
readStream, interceptor, rtcpReadStream, rtcpInterceptor, err := pc.dtlsTransport.streamsForSSRC(ssrc, *streamInfo)
|
||||
result, err := pc.dtlsTransport.streamsForSSRC(ssrc, *streamInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
readStream := result.rtpReadStream
|
||||
interceptor := result.rtpInterceptor
|
||||
rtcpReadStream := result.rtcpReadStream
|
||||
rtcpInterceptor := result.rtcpInterceptor
|
||||
|
||||
// try to read simulcast IDs from the packet we already have
|
||||
var mid, rid, rsid string
|
||||
|
||||
@@ -231,22 +231,29 @@ func (r *RTPReceiver) startReceive(parameters RTPReceiveParameters) error { //no
|
||||
codec,
|
||||
globalParams.HeaderExtensions,
|
||||
)
|
||||
var err error
|
||||
|
||||
//nolint:lll // # TODO refactor
|
||||
if streams.rtpReadStream, streams.rtpInterceptor, streams.rtcpReadStream, streams.rtcpInterceptor, err = r.transport.streamsForSSRC(parameters.Encodings[i].SSRC, *streams.streamInfo); err != nil {
|
||||
result, err := r.transport.streamsForSSRC(parameters.Encodings[i].SSRC, *streams.streamInfo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
streams.rtpReadStream = result.rtpReadStream
|
||||
streams.rtpInterceptor = result.rtpInterceptor
|
||||
streams.rtcpReadStream = result.rtcpReadStream
|
||||
streams.rtcpInterceptor = result.rtcpInterceptor
|
||||
|
||||
if rtxSsrc := parameters.Encodings[i].RTX.SSRC; rtxSsrc != 0 {
|
||||
streamInfo := createStreamInfo("", rtxSsrc, 0, 0, 0, 0, 0, codec, globalParams.HeaderExtensions)
|
||||
rtpReadStream, rtpInterceptor, rtcpReadStream, rtcpInterceptor, err := r.transport.streamsForSSRC(
|
||||
result, err = r.transport.streamsForSSRC(
|
||||
rtxSsrc,
|
||||
*streamInfo,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
rtpReadStream := result.rtpReadStream
|
||||
rtpInterceptor := result.rtpInterceptor
|
||||
rtcpReadStream := result.rtcpReadStream
|
||||
rtcpInterceptor := result.rtcpInterceptor
|
||||
|
||||
if err = r.receiveForRtx(
|
||||
rtxSsrc,
|
||||
|
||||
Reference in New Issue
Block a user