Bring is more of the h264 code and add some master changes to the duplicated code

This commit is contained in:
SteveGilvarry 2015-12-02 07:17:50 +11:00
parent 612e326917
commit 4f3664b7f8
1 changed files with 90 additions and 71 deletions

View File

@ -59,6 +59,7 @@ RemoteCameraRtsp::RemoteCameraRtsp( int p_id, const std::string &p_method, const
mFrame = NULL;
frameCount = 0;
wasRecording = false;
startTime=0;
#if HAVE_LIBSWSCALE
mConvertContext = NULL;
@ -422,6 +423,9 @@ int RemoteCameraRtsp::CaptureAndRecord( Image &image, bool recording, char* even
av_init_packet( &packet );
if ( packet.stream_index == mVideoStreamId )
{
while ( !frameComplete && buffer.size() > 0 )
{
packet.data = buffer.head();
@ -488,11 +492,8 @@ int RemoteCameraRtsp::CaptureAndRecord( Image &image, bool recording, char* even
#if HAVE_LIBSWSCALE
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 );
}
if(mConvertContext == NULL)
Fatal( "Unable to create conversion context");
}
@ -506,8 +507,26 @@ int RemoteCameraRtsp::CaptureAndRecord( Image &image, bool recording, char* even
frameCount++;
} /* 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 );
return 0;
}
}
}
#if LIBAVCODEC_VERSION_CHECK(57, 8, 0, 12, 100)
av_packet_unref( &packet);
#else
av_free_packet( &packet );
#endif
} /* getFrame() */
if(frameComplete)