Fixed RTSP input in newMeta build
This commit is contained in:
parent
e28743db54
commit
f4051b5916
2 changed files with 26 additions and 15 deletions
|
@ -225,7 +225,7 @@ namespace SDP{
|
||||||
// We simply request interleaved delivery over a trackNo-based identifier.
|
// We simply request interleaved delivery over a trackNo-based identifier.
|
||||||
// No need to set any internal state, parseTransport will handle it all.
|
// No need to set any internal state, parseTransport will handle it all.
|
||||||
std::stringstream tStr;
|
std::stringstream tStr;
|
||||||
tStr << "RTP/AVP/TCP;unicast;interleaved=" << ((trackNo - 1) * 2) << "-" << ((trackNo - 1) * 2 + 1);
|
tStr << "RTP/AVP/TCP;unicast;interleaved=" << (trackNo * 2) << "-" << (trackNo * 2 + 1);
|
||||||
return tStr.str();
|
return tStr.str();
|
||||||
}else{
|
}else{
|
||||||
// A little more tricky: we need to find free ports and remember them.
|
// A little more tricky: we need to find free ports and remember them.
|
||||||
|
|
|
@ -169,8 +169,7 @@ namespace Mist{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!atLeastOne && tcpCon){
|
if (!atLeastOne && tcpCon){
|
||||||
INFO_MSG("Failed to set up transport for track %s, switching transports...",
|
INFO_MSG("Failed to set up transport for track %s, switching transports...", M.getTrackIdentifier(it->first).c_str());
|
||||||
M.getTrackIdentifier(it->first).c_str());
|
|
||||||
TCPmode = !TCPmode;
|
TCPmode = !TCPmode;
|
||||||
extraHeaders["Transport"] = it->second.generateTransport(it->first, url.host, TCPmode);
|
extraHeaders["Transport"] = it->second.generateTransport(it->first, url.host, TCPmode);
|
||||||
sendCommand("SETUP", lastRequestedSetup, "", &extraHeaders);
|
sendCommand("SETUP", lastRequestedSetup, "", &extraHeaders);
|
||||||
|
@ -339,19 +338,16 @@ namespace Mist{
|
||||||
size_t trackNo = sdpState.getTrackNoForChannel(chan);
|
size_t trackNo = sdpState.getTrackNoForChannel(chan);
|
||||||
EXTREME_MSG("Received %ub RTP packet #%u on channel %u, time %" PRIu32, len,
|
EXTREME_MSG("Received %ub RTP packet #%u on channel %u, time %" PRIu32, len,
|
||||||
pkt.getSequence(), chan, pkt.getTimeStamp());
|
pkt.getSequence(), chan, pkt.getTimeStamp());
|
||||||
if ((trackNo == INVALID_TRACK_ID) && (chan % 2) != 1){
|
if (trackNo == INVALID_TRACK_ID){
|
||||||
|
if ((chan % 2) != 1){
|
||||||
WARN_MSG("Received packet for unknown track number on channel %u", chan);
|
WARN_MSG("Received packet for unknown track number on channel %u", chan);
|
||||||
}
|
}
|
||||||
if (trackNo != INVALID_TRACK_ID){
|
return true;
|
||||||
sdpState.tracks[trackNo].sorter.rtpSeq = pkt.getSequence();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trackNo != INVALID_TRACK_ID){
|
//We override the rtpSeq number because in TCP mode packet loss is not a thing.
|
||||||
if (!userSelect.count(trackNo)){
|
sdpState.tracks[trackNo].sorter.rtpSeq = pkt.getSequence();
|
||||||
userSelect[trackNo].reload(streamName, trackNo, COMM_STATUS_SOURCE | COMM_STATUS_DONOTTRACK);
|
|
||||||
}
|
|
||||||
sdpState.handleIncomingRTP(trackNo, pkt);
|
sdpState.handleIncomingRTP(trackNo, pkt);
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -399,7 +395,22 @@ namespace Mist{
|
||||||
char *pktData;
|
char *pktData;
|
||||||
size_t pktDataLen;
|
size_t pktDataLen;
|
||||||
pkt.getString("data", pktData, pktDataLen);
|
pkt.getString("data", pktData, pktDataLen);
|
||||||
bufferLivePacket(pkt.getTime() + packetOffset, pkt.getInt("offset"), pkt.getTrackId(), pktData,
|
size_t idx = M.trackIDToIndex(pkt.getTrackId(), getpid());
|
||||||
|
|
||||||
|
if (idx == INVALID_TRACK_ID){
|
||||||
|
INFO_MSG("Invalid index for track number %zu", pkt.getTrackId());
|
||||||
|
}else{
|
||||||
|
if (!userSelect.count(idx)){
|
||||||
|
WARN_MSG("Reloading track %zu, index %zu", pkt.getTrackId(), idx);
|
||||||
|
userSelect[idx].reload(streamName, idx, COMM_STATUS_SOURCE | COMM_STATUS_DONOTTRACK);
|
||||||
|
}
|
||||||
|
if (userSelect[idx].getStatus() == COMM_STATUS_REQDISCONNECT){
|
||||||
|
Util::logExitReason("buffer requested shutdown");
|
||||||
|
tcpCon.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bufferLivePacket(pkt.getTime() + packetOffset, pkt.getInt("offset"), idx, pktData,
|
||||||
pktDataLen, 0, pkt.getFlag("keyframe"));
|
pktDataLen, 0, pkt.getFlag("keyframe"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue