private void testSend(PSFragment psf) { List <Nalu> nList = _helper.ToRTP(psf); uint timestamp = 1; for (int i = 0; i < nList.Count; i++) { RTP_Packet packet = new RTP_Packet(); packet.Timestamp = timestamp; packet.Data = nList[i].NaluBytes(); if (psf.IsFrameEnd && i == nList.Count - 1) { packet.IsMarker = true; } else { packet.IsMarker = false; } testReceive(packet); } }
private void _ups_Unpacked(object arg1, PSFragment psf) { List <Nalu> nList = _rtpHelper.ToRTPPayload(psf); uint timestamp = _multiSession.Sessions[0].RtpClock.RtpTimestamp; //判断是否有新的接收客户端加入。 if (_hasNewTarget) { _hTrigger.SendSPS(_sendStream, timestamp); _hTrigger.SendPPS(_sendStream, timestamp); _hasNewTarget = true; } for (int i = 0; i < nList.Count; i++) { _hTrigger.Update(nList[i]); RTP_Packet packet = new RTP_Packet(); packet.Timestamp = timestamp; packet.Data = nList[i].NaluBytes(); if (psf.IsFrameEnd && i == nList.Count - 1) { packet.IsMarker = true; } else { packet.IsMarker = false; } _sendStream.Send(packet); } //判断是否需要冗余发送SPS和PPS。 if (_hTrigger.IsSPSTimeout) { _hTrigger.SendSPS(_sendStream, timestamp); } if (_hTrigger.IsPPSTimeout) { _hTrigger.SendPPS(_sendStream, timestamp); } }
private void _upsnew_Unpacked(object arg1, PSFragment arg2) { testSend(arg2); }