From f5e01b17471d5963803627570db2426faa3fa853 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Mon, 4 Aug 2014 18:30:17 +0200 Subject: [PATCH 1/7] DummyVideo: complete constructor --- src/AvTranscoder/EssenceStream/DummyVideo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/AvTranscoder/EssenceStream/DummyVideo.cpp b/src/AvTranscoder/EssenceStream/DummyVideo.cpp index 2191e4bc..2c3ad420 100644 --- a/src/AvTranscoder/EssenceStream/DummyVideo.cpp +++ b/src/AvTranscoder/EssenceStream/DummyVideo.cpp @@ -6,6 +6,8 @@ namespace avtranscoder DummyVideo::DummyVideo( ) : InputEssence( ) , _inputFrame( NULL ) + , _videoDesc() + , _videoFrameDesc() , _numberOfView( 1 ) { } From 13d753ad4caca4e82c8163536f73671c014c160c Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Mon, 4 Aug 2014 18:31:44 +0200 Subject: [PATCH 2/7] DummyVideo: refactoring readNextFrame --- src/AvTranscoder/EssenceStream/DummyVideo.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/DummyVideo.cpp b/src/AvTranscoder/EssenceStream/DummyVideo.cpp index 2c3ad420..d916dd4f 100644 --- a/src/AvTranscoder/EssenceStream/DummyVideo.cpp +++ b/src/AvTranscoder/EssenceStream/DummyVideo.cpp @@ -34,12 +34,13 @@ void DummyVideo::setFrame( Frame& inputFrame ) bool DummyVideo::readNextFrame( Frame& frameBuffer ) { - frameBuffer.getBuffer().resize( _videoFrameDesc.getDataSize() ); - if( ! _inputFrame ) { int fillChar = 0; // fill images with black - memset( frameBuffer.getPtr(), fillChar, frameBuffer.getSize() ); + + if( frameBuffer.getSize() != _videoFrameDesc.getDataSize() ) + frameBuffer.getBuffer().resize( _videoFrameDesc.getDataSize() ); + memset( frameBuffer.getPtr(), fillChar, _videoFrameDesc.getDataSize() ); return true; } From 294128288bc49215ef48b4042dbd542ee5cb7f3e Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Mon, 4 Aug 2014 18:32:18 +0200 Subject: [PATCH 3/7] OutpuVideo: clean encodeFrame --- src/AvTranscoder/EssenceStream/OutputVideo.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/OutputVideo.cpp b/src/AvTranscoder/EssenceStream/OutputVideo.cpp index 79ce8d97..0a902a42 100644 --- a/src/AvTranscoder/EssenceStream/OutputVideo.cpp +++ b/src/AvTranscoder/EssenceStream/OutputVideo.cpp @@ -80,12 +80,7 @@ bool OutputVideo::encodeFrame( const Frame& sourceFrame, DataStream& codedFrame if( ( codecContext->coded_frame ) && ( codecContext->coded_frame->pts != (int)AV_NOPTS_VALUE ) ) { - // why need to do that ? - //packet.pts = av_rescale_q( codecContext->coded_frame->pts, codecContext->time_base, codecContext->time_base ); - - //std::cout << "pts with rescale " << (int)packet.pts << std::endl; packet.pts = codecContext->coded_frame->pts; - //std::cout << "pts without rescale " << (int)packet.pts << std::endl; } if( codecContext->coded_frame && @@ -94,7 +89,6 @@ bool OutputVideo::encodeFrame( const Frame& sourceFrame, DataStream& codedFrame packet.flags |= AV_PKT_FLAG_KEY; } - #if LIBAVCODEC_VERSION_MAJOR > 53 int gotPacket = 0; int ret = avcodec_encode_video2( codecContext, &packet, frame, &gotPacket ); @@ -145,7 +139,6 @@ bool OutputVideo::encodeFrame( const Frame& sourceFrame, DataStream& codedFrame return ret == 0; } - bool OutputVideo::encodeFrame( DataStream& codedFrame ) { AVCodecContext* codecContext = _videoDesc.getCodecContext(); From dba41a76990fd99e40db917c8af19bb9930da2bf Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Mon, 4 Aug 2014 18:34:17 +0200 Subject: [PATCH 4/7] OutputVideo: encodeFrame - remove unnecessary cast --- src/AvTranscoder/EssenceStream/OutputVideo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AvTranscoder/EssenceStream/OutputVideo.cpp b/src/AvTranscoder/EssenceStream/OutputVideo.cpp index 0a902a42..7749bc1c 100644 --- a/src/AvTranscoder/EssenceStream/OutputVideo.cpp +++ b/src/AvTranscoder/EssenceStream/OutputVideo.cpp @@ -68,7 +68,7 @@ bool OutputVideo::encodeFrame( const Frame& sourceFrame, DataStream& codedFrame frame->width = codecContext->width; frame->height = codecContext->height; frame->format = codecContext->pix_fmt; - avpicture_fill( (AVPicture*)frame, const_cast< unsigned char * >( sourceImageFrame.getPtr() ), codecContext->pix_fmt, codecContext->width, codecContext->height ); + avpicture_fill( (AVPicture*)frame, sourceImageFrame.getPtr(), codecContext->pix_fmt, codecContext->width, codecContext->height ); AVPacket packet; av_init_packet( &packet ); From 4187b1166e0c9e8a9f56039364bc6ceaf8de6065 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 5 Aug 2014 10:13:16 +0200 Subject: [PATCH 5/7] VideoEssenceTransform: convert - remove unnecessary cast --- src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp b/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp index 6e23bf3f..f7c8b6f7 100644 --- a/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp +++ b/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp @@ -99,7 +99,7 @@ void VideoEssenceTransform::convert( const Frame& srcFrame, Frame& dstFrame ) for( size_t plane = 0; plane < MAX_SWS_PLANE; ++plane ) { - _srcData.at( plane ) = (uint8_t*) const_cast< unsigned char* >( src.getPtr() + _srcOffsets.at( plane ) ); + _srcData.at( plane ) = (uint8_t*) src.getPtr() + _srcOffsets.at( plane ); _dstData.at( plane ) = (uint8_t*) dst.getPtr() + _dstOffsets.at( plane ); } From b5a1dc84d4ea9cd5ed77debadef63ec7c00c8879 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 5 Aug 2014 10:17:00 +0200 Subject: [PATCH 6/7] VideoEssenceTransform: clean convert * Add space. * Test the result of sws_scale with height of dst (the src has the same height, but according to ffmpeg documentation, the test concerns the output). --- src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp b/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp index f7c8b6f7..65ccb9f1 100644 --- a/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp +++ b/src/AvTranscoder/EssenceTransform/VideoEssenceTransform.cpp @@ -103,7 +103,7 @@ void VideoEssenceTransform::convert( const Frame& srcFrame, Frame& dstFrame ) _dstData.at( plane ) = (uint8_t*) dst.getPtr() + _dstOffsets.at( plane ); } - if( !_imageConvertContext ) + if( ! _imageConvertContext ) { throw std::runtime_error( "unknown color convert context" ); } @@ -112,7 +112,7 @@ void VideoEssenceTransform::convert( const Frame& srcFrame, Frame& dstFrame ) &_srcData[0], &_srcLineSize[0], 0, src.desc().getHeight(), &_dstData[0], &_dstLineSize[0] ); - if( ret != (int) src.desc().getHeight() ) + if( ret != (int) dst.desc().getHeight() ) throw std::runtime_error( "error in color converter" ); } From 2060ff32cce608d0fa00439ea91cf78ed6ddc928 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 5 Aug 2014 10:32:51 +0200 Subject: [PATCH 7/7] VideoFrame: remove virtual destructor --- src/AvTranscoder/EssenceStructures/VideoFrame.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/AvTranscoder/EssenceStructures/VideoFrame.hpp b/src/AvTranscoder/EssenceStructures/VideoFrame.hpp index cfd582ed..bfade4ad 100644 --- a/src/AvTranscoder/EssenceStructures/VideoFrame.hpp +++ b/src/AvTranscoder/EssenceStructures/VideoFrame.hpp @@ -97,9 +97,6 @@ class AvExport VideoFrame : public Frame m_dataBuffer = DataBuffer( ref.getDataSize(), 0 ); } - virtual ~VideoFrame() - {}; - const VideoFrameDesc& desc() const { return m_videoFrameDesc; } private: