Better handling of RTP stream and thread death.
git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@2704 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
parent
c83d340ad8
commit
bcb7166b75
|
@ -173,6 +173,8 @@ int RemoteCameraRtsp::PostCapture( Image &image )
|
|||
while ( true )
|
||||
{
|
||||
buffer.clear();
|
||||
if ( rtspThread->stopped() )
|
||||
break;
|
||||
if ( rtspThread->getFrame( buffer ) )
|
||||
{
|
||||
Debug( 3, "Read frame %d bytes", buffer.size() );
|
||||
|
|
|
@ -87,6 +87,7 @@ int RtpDataThread::run()
|
|||
if ( readable.size() == 0 )
|
||||
{
|
||||
Error( "RTP timed out" );
|
||||
mStop = true;
|
||||
break;
|
||||
}
|
||||
for ( Select::CommsList::iterator iter = readable.begin(); iter != readable.end(); iter++ )
|
||||
|
|
|
@ -487,8 +487,8 @@ int RtspThread::run()
|
|||
rtpDataThread.stop();
|
||||
rtpCtrlThread.stop();
|
||||
|
||||
rtpDataThread.kill( SIGTERM );
|
||||
rtpCtrlThread.kill( SIGTERM );
|
||||
//rtpDataThread.kill( SIGTERM );
|
||||
//rtpCtrlThread.kill( SIGTERM );
|
||||
|
||||
rtpDataThread.join();
|
||||
rtpCtrlThread.join();
|
||||
|
|
|
@ -124,6 +124,10 @@ public:
|
|||
{
|
||||
mStop = true;
|
||||
}
|
||||
bool stopped() const
|
||||
{
|
||||
return( mStop );
|
||||
}
|
||||
};
|
||||
|
||||
#endif // ZM_RTSP_H
|
||||
|
|
|
@ -211,6 +211,7 @@ int main( int argc, char *argv[] )
|
|||
alarm_capture_delays[i] = monitors[i]->GetAlarmCaptureDelay();
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
struct timeval now;
|
||||
struct DeltaTimeval delta_time;
|
||||
while( !zm_terminate )
|
||||
|
@ -249,12 +250,14 @@ int main( int argc, char *argv[] )
|
|||
{
|
||||
Error( "Failed to pre-capture monitor %d", i );
|
||||
zm_terminate = true;
|
||||
result = -1;
|
||||
break;
|
||||
}
|
||||
if ( monitors[i]->PostCapture() < 0 )
|
||||
{
|
||||
Error( "Failed to post-capture monitor %d", i );
|
||||
zm_terminate = true;
|
||||
result = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -281,5 +284,5 @@ int main( int argc, char *argv[] )
|
|||
delete [] next_delays;
|
||||
delete [] last_capture_times;
|
||||
|
||||
return( 0 );
|
||||
return( result );
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue