[Live-devel] Proxying SIP live RTP to RTSP problem (segfault)
rus at sfinx.in
rus at sfinx.in
Sun Sep 24 23:08:11 PDT 2017
> Aha - you should be able to overcome this by calling:
> subsession->initiate();
> just before your call to
> createRTSPServer(subsession);
Well, this gives us the previous message (please note that -r flag is
still passed to the playSIP) :
"FramedSource[0x1bf42e0]::getNextFrame(): attempting to read more than
once at the same time!
Aborted (core dumped)"
Core was generated by `./playSIP -r -u 102 102 10.1.1.208
sip:100 at 10.1.1.208'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000044bbf3 in FramedSource::lookupByName (env=..., sourceName=0x4511ba <H264or5VideoStreamDiscreteFramer::~H264or5VideoStreamDiscreteFramer()+30> "H\213E\370H\211\307\350\236\322\377\377\270", resultSource=@0x169f2d0: 0x699bb8 <vtable for H264VideoStreamDiscreteFramer+16>) at FramedSource.cpp:46
46 if (!MediaSource::lookupByName(env, sourceName, source)) return
False;
So I've inserted the debug messages in
class H264LiveServerMediaSession : public OnDemandServerMediaSubsession {
...
H264LiveServerMediaSession(MediaSubsession *s) : OnDemandServerMediaSubsession(*env, ...
std::cerr << "*** H264LiveServerMediaSession()\n";
}
FramedSource* createNewStreamSource(unsigned clientSessionId, unsigned &estBitRate) {
std::cerr << "*** createNewStreamSource() sesid:" << clientSessionId << "\n";
}
...
RTPSink* createNewRTPSink(Groupsock* rtpGroupsock, ..
..
std::cerr << "*** createNewRTPSink()\n";
return H264VideoRTPSink::createNew(envir(), rtpGroupsock, rtpPayloadTypeIfDynamic, ss->fmtp_spropparametersets());
}
};
And just upon openRTSP connection I can see the following:
...
*** H264LiveServerMediaSession()
*** createNewStreamSource() sesid:0
*** createNewRTPSink()
*** createNewStreamSource() sesid:2232876383
*** createNewRTPSink()
FramedSource[0x1bf42e0]::getNextFrame(): attempting to read more than once at the same time!
Aborted (core dumped)
...
While the H264LiveServerMediaSession constructor is called once - the
createNewRTPSink/createNewStreamSource are called twice (?!) upon RTSP
connection. May be this is the real reason of "FramedSource[0x1bf42e0]::getNextFrame():
attempting to read more" message ?
> > Though passing the data through stdin is ugly solution
> I don?t think it?s ugly at all. In fact, it?s quite clean, because it uses familiar Unix I/O stdio and pipes, rather than requiring extra programming.
I'm happy to find out any way to use this clean solution with stock playSIP/testOnDemandRTSPServer
and H264.
> > Is there a way to fix this and make at least stdin approach to work with SIP ?
>
> If you know the SPS and PPS NAL units ahead of time, then you can add
> them as (otherwise optional) parameters to the call to
> ?H264VideoRTPSink::createNew()? in ?playCommon.cpp?.
Sorry, I'm new to the live555 - can you show me the _exact_ way how to
extract SPS/PPS in playSIP app from SIP H264 RTP packet stream using
live555 API ?
Thanks, Rus
>
>
> Ross Finlayson
> Live Networks, Inc.
> http://www.live555.com/
>
>
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel
>
More information about the live-devel
mailing list