From 6a34ee2045b5de7cc0ffe44db26938672ddc217c Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 15 Jul 2014 14:14:55 +0200 Subject: [PATCH 1/3] AudioDesc: suppress copy constructor * This definition raises an assert when push back a Dummy stream into a vector (see Transcoder class): assert( m_codecContext != NULL ). * Keep symmetry with the VideoDesc: no copy constructor specified. --- src/AvTranscoder/DatasStructures/AudioDesc.cpp | 7 ------- src/AvTranscoder/DatasStructures/AudioDesc.hpp | 2 -- 2 files changed, 9 deletions(-) diff --git a/src/AvTranscoder/DatasStructures/AudioDesc.cpp b/src/AvTranscoder/DatasStructures/AudioDesc.cpp index bd85fd6a..03869813 100644 --- a/src/AvTranscoder/DatasStructures/AudioDesc.cpp +++ b/src/AvTranscoder/DatasStructures/AudioDesc.cpp @@ -37,13 +37,6 @@ AudioDesc::AudioDesc( const AVCodecID codecId ) setAudioCodec( codecId ); } -AudioDesc::AudioDesc( const AudioDesc& audioDesc ) - : m_codec( NULL ) - , m_codecContext( NULL ) -{ - setAudioCodec( audioDesc.getAudioCodecId() ); -} - void AudioDesc::setAudioCodec( const std::string& codecName ) { avcodec_register_all(); // Warning: should be called only once diff --git a/src/AvTranscoder/DatasStructures/AudioDesc.hpp b/src/AvTranscoder/DatasStructures/AudioDesc.hpp index f67da23c..d8f28abc 100644 --- a/src/AvTranscoder/DatasStructures/AudioDesc.hpp +++ b/src/AvTranscoder/DatasStructures/AudioDesc.hpp @@ -26,8 +26,6 @@ class AvExport AudioDesc AudioDesc( const std::string& codecName = "" ); AudioDesc( const AVCodecID codecId ); - AudioDesc( const AudioDesc& audioDesc ); - void setAudioCodec( const std::string& codecName ); void setAudioCodec( const AVCodecID codecId ); From d106e679b34715714de7aef1909a1f34c9fef6ad Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 15 Jul 2014 14:18:30 +0200 Subject: [PATCH 2/3] StreamTranscoder: fix desctructor when dummy stream * Need to know if it is a dummy stream or something else when destruct StreamTranscoder: * _inputEssence references to a Dummy created in Transcoder if dummy: not delete it in StreamTranscoder! * new _inputEssence in StreamTranscoder if not dummy: delete it in StreamTranscoder! --- src/AvTranscoder/Transcoder/StreamTranscoder.cpp | 6 +++++- src/AvTranscoder/Transcoder/StreamTranscoder.hpp | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp index 53fbf7bf..c7b21df0 100644 --- a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp +++ b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp @@ -26,6 +26,7 @@ StreamTranscoder::StreamTranscoder( , _outputEssence( NULL ) , _transform( NULL ) , _transcodeStream( false ) + , _dummyStream( false ) { // create a re-wrapping case switch( _inputStream->getStreamType() ) @@ -58,6 +59,7 @@ StreamTranscoder::StreamTranscoder( , _outputEssence( NULL ) , _transform( NULL ) , _transcodeStream( true ) + , _dummyStream( false ) { // create a transcode case switch( _inputStream->getStreamType() ) @@ -121,7 +123,9 @@ StreamTranscoder::StreamTranscoder( , _outputEssence( NULL ) , _transform( NULL ) , _transcodeStream( true ) + , _dummyStream( true ) { + // create a dummy case if( ! profile.count( Profile::avProfileType ) ) throw std::runtime_error( "unable to found stream type (audio, video, etc.)" ); @@ -168,7 +172,7 @@ StreamTranscoder::~StreamTranscoder() { if( _frameBuffer ) delete _frameBuffer; - if( _inputEssence ) + if( _inputEssence && ! _dummyStream ) delete _inputEssence; if( _outputEssence ) delete _outputEssence; diff --git a/src/AvTranscoder/Transcoder/StreamTranscoder.hpp b/src/AvTranscoder/Transcoder/StreamTranscoder.hpp index 10257307..b1b46b49 100644 --- a/src/AvTranscoder/Transcoder/StreamTranscoder.hpp +++ b/src/AvTranscoder/Transcoder/StreamTranscoder.hpp @@ -63,8 +63,7 @@ class StreamTranscoder EssenceTransform* _transform; bool _transcodeStream; - - + bool _dummyStream; }; } From abd8e764dd302473c938087c52fe6a53ae94f049 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Tue, 15 Jul 2014 14:20:05 +0200 Subject: [PATCH 3/3] StreamTranscoder: complete destructor * Delete _sourceBuffer if necessary. --- src/AvTranscoder/Transcoder/StreamTranscoder.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp index c7b21df0..e9aba161 100644 --- a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp +++ b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp @@ -172,6 +172,8 @@ StreamTranscoder::~StreamTranscoder() { if( _frameBuffer ) delete _frameBuffer; + if( _sourceBuffer ) + delete _sourceBuffer; if( _inputEssence && ! _dummyStream ) delete _inputEssence; if( _outputEssence )