[Live-devel] RTSPclient and DarwinInjector in the same application

S Mathur yetanotherid at gmail.com
Fri Jun 2 12:54:17 PDT 2006


Hello,

I have modified the openRTSP/playCommon.cpp code such that it
intercepts the M4A-LATM subsession in my streaming session and feeds
it to a decoder filter. The decoder filter feeds data to an encoder
filter which in turns feeds an MPEG4LATMRTPSink.

The subsession related code is as follows...
subsession->sink =  latmSink;
subsession->sink->startPlaying(*aacEncFilter, subsessionAfterPlaying,
subsession);
....

My latmSink is also associated with a DarwinInjector:
injector->addStream(latmSink, audioRTCP);
injector->setDestination(..)


My problem: A get a select() failed error in
BasicTaskScheduler::SingleStep() because  RTCPInstance's destructor
gets invoked prematurely. The ANNOUNCE (of the modified stream named
liveST.sdp) to the Darwin server does goes through successfully.

Here is the transcript, error is at the bottom:

Received ANNOUNCE response: RTSP/1.0 200 OK
Server: DSS/5.6.0 (Build/496; Platform/Win32; Release/Development;
BuildNote/LP64 Support)
Cseq: 4

RTCPInstance[0x86cd5b8]::RTCPInstance()
schedule(1.786040->1149276500.435798)
Sending request: SETUP rtsp://myDSS:554/liveST.sdp/trackID=1 RTSP/1.0
CSeq: 5
Transport: RTP/AVP/TCP;unicast;mode=receive;interleaved=0-1
User-Agent: Injector (LIVE555 Streaming Media v2006.03.16)


Received SETUP response: RTSP/1.0 200 OK
Server: DSS/5.6.0 (Build/496; Platform/Win32; Release/Development;
BuildNote/LP64 Support)
Cseq: 5
Cache-Control: no-cache
Session: 14018773254377
Date: Fri, 02 Jun 2006 19:28:29 GMT
Expires: Fri, 02 Jun 2006 19:28:29 GMT
Transport: RTP/AVP/TCP;unicast;mode=receive;interleaved=0-1


Sending request: PLAY rtsp://myDSS:554/liveST.sdp RTSP/1.0
CSeq: 6
Session: 14018773254377
Range: npt=0.000-
User-Agent: Injector (LIVE555 Streaming Media v2006.03.16)


Received PLAY response: RTSP/1.0 200 OK
Server: DSS/5.6.0 (Build/496; Platform/Win32; Release/Development;
BuildNote/LP64 Support)
Cseq: 6
Session: 14018773254377
RTP-Info: url=rtsp://myDSS:554/liveST.sdp/trackID=1


RTCPInstance[0x86cd5b8]::~RTCPInstance()
sending BYE
sending RTCP packet
 80c90001 c923bac9 81cb0001 c923bac9
sendRTPOverTCP: 16 bytes over channel 1 (socket 8)
sendRTPOverTCP: completed
Play this stream (from the Darwin Streaming Server) using the URL:
        rtsp://myDSS/liveST.sdp

[startPlaying(latmSink) gets called here. Greenday64kbpsPlus.3gp is
the input stream to be transcoded]
Sending request: PLAY rtsp://myDSS:554/Greenday64kbpsPlus.3gp RTSP/1.0
CSeq: 7
Session: 47446503751336
Range: npt=0.000-
User-Agent: ./testProgram (LIVE555 Streaming Media v2006.03.16)


Received PLAY response: RTSP/1.0 200 OK
Server: DSS/5.6.0 (Build/496; Platform/Win32; Release/Development;
BuildNote/LP64 Support)
Cseq: 7
Session: 47446503751336
Range: npt=0.00000-285.83667
RTP-Info: url=rtsp://myDSS:554/Greenday64kbpsPlus.3gp/trackID=65536;seq=15921;rtptime=30605

Started playing session
Receiving streamed data (for up to 290.836670 seconds)...
BasicTaskScheduler::SingleStep(): select() fails: Bad file descriptor


Any suggestions on what I am doing wrong?
Thanks,
Mathur


More information about the live-devel mailing list