Bring is more of the h264 code and add some master changes to the duplicated code
This commit is contained in:
parent
64bc7398fc
commit
fa7ec2179d
|
@ -59,6 +59,7 @@ RemoteCameraRtsp::RemoteCameraRtsp( int p_id, const std::string &p_method, const
|
||||||
mFrame = NULL;
|
mFrame = NULL;
|
||||||
frameCount = 0;
|
frameCount = 0;
|
||||||
wasRecording = false;
|
wasRecording = false;
|
||||||
|
startTime=0;
|
||||||
|
|
||||||
#if HAVE_LIBSWSCALE
|
#if HAVE_LIBSWSCALE
|
||||||
mConvertContext = NULL;
|
mConvertContext = NULL;
|
||||||
|
@ -422,6 +423,9 @@ int RemoteCameraRtsp::CaptureAndRecord( Image &image, bool recording, char* even
|
||||||
|
|
||||||
av_init_packet( &packet );
|
av_init_packet( &packet );
|
||||||
|
|
||||||
|
if ( packet.stream_index == mVideoStreamId )
|
||||||
|
{
|
||||||
|
|
||||||
while ( !frameComplete && buffer.size() > 0 )
|
while ( !frameComplete && buffer.size() > 0 )
|
||||||
{
|
{
|
||||||
packet.data = buffer.head();
|
packet.data = buffer.head();
|
||||||
|
@ -488,11 +492,8 @@ int RemoteCameraRtsp::CaptureAndRecord( Image &image, bool recording, char* even
|
||||||
|
|
||||||
#if HAVE_LIBSWSCALE
|
#if HAVE_LIBSWSCALE
|
||||||
if(mConvertContext == NULL) {
|
if(mConvertContext == NULL) {
|
||||||
if(config.cpu_extensions && sseversion >= 20) {
|
|
||||||
mConvertContext = sws_getContext( mCodecContext->width, mCodecContext->height, mCodecContext->pix_fmt, width, height, imagePixFormat, SWS_BICUBIC | SWS_CPU_CAPS_SSE2, NULL, NULL, NULL );
|
|
||||||
} else {
|
|
||||||
mConvertContext = sws_getContext( mCodecContext->width, mCodecContext->height, mCodecContext->pix_fmt, width, height, imagePixFormat, SWS_BICUBIC, NULL, NULL, NULL );
|
mConvertContext = sws_getContext( mCodecContext->width, mCodecContext->height, mCodecContext->pix_fmt, width, height, imagePixFormat, SWS_BICUBIC, NULL, NULL, NULL );
|
||||||
}
|
|
||||||
if(mConvertContext == NULL)
|
if(mConvertContext == NULL)
|
||||||
Fatal( "Unable to create conversion context");
|
Fatal( "Unable to create conversion context");
|
||||||
}
|
}
|
||||||
|
@ -506,8 +507,26 @@ int RemoteCameraRtsp::CaptureAndRecord( Image &image, bool recording, char* even
|
||||||
frameCount++;
|
frameCount++;
|
||||||
|
|
||||||
} /* frame complete */
|
} /* frame complete */
|
||||||
|
}
|
||||||
|
else if(packet.stream_index == mAudioStreamId)
|
||||||
|
{
|
||||||
|
if(videoStore && recording)
|
||||||
|
{
|
||||||
|
//Write the packet to our video store
|
||||||
|
int ret = videoStore->writeAudioFramePacket(&packet, mFormatContext->streams[packet.stream_index]); //FIXME no relevance of last key frame
|
||||||
|
if(ret<0) //Less than zero and we skipped a frame
|
||||||
|
{
|
||||||
av_free_packet( &packet );
|
av_free_packet( &packet );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if LIBAVCODEC_VERSION_CHECK(57, 8, 0, 12, 100)
|
||||||
|
av_packet_unref( &packet);
|
||||||
|
#else
|
||||||
|
av_free_packet( &packet );
|
||||||
|
#endif
|
||||||
} /* getFrame() */
|
} /* getFrame() */
|
||||||
|
|
||||||
if(frameComplete)
|
if(frameComplete)
|
||||||
|
|
Loading…
Reference in New Issue