[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