From 49ef87bd21e919d9bbaad9879eecbe841dcc2801 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 15:55:43 +0200 Subject: [PATCH 01/15] OutputVideo: refactoring - rename local variable --- src/AvTranscoder/EssenceStream/OutputVideo.cpp | 4 ++-- src/AvTranscoder/EssenceStream/OutputVideo.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/OutputVideo.cpp b/src/AvTranscoder/EssenceStream/OutputVideo.cpp index d440e71d..d1c27243 100644 --- a/src/AvTranscoder/EssenceStream/OutputVideo.cpp +++ b/src/AvTranscoder/EssenceStream/OutputVideo.cpp @@ -181,7 +181,7 @@ bool OutputVideo::encodeFrame( DataStream& codedFrame ) #endif } -void OutputVideo::setProfile( const Profile::ProfileDesc& desc, const avtranscoder::VideoFrameDesc& videoFrameDesc ) +void OutputVideo::setProfile( const Profile::ProfileDesc& desc, const avtranscoder::VideoFrameDesc& frameDesc ) { if( ! desc.count( Profile::avProfileCodec ) || ! desc.count( Profile::avProfilePixelFormat ) || @@ -195,7 +195,7 @@ void OutputVideo::setProfile( const Profile::ProfileDesc& desc, const avtranscod const size_t frameRate = std::strtoul( desc.find( Profile::avProfileFrameRate )->second.c_str(), NULL, 0 ); _videoDesc.setTimeBase( 1, frameRate ); - _videoDesc.setImageParameters( videoFrameDesc ); + _videoDesc.setImageParameters( frameDesc ); for( Profile::ProfileDesc::const_iterator it = desc.begin(); it != desc.end(); ++it ) { diff --git a/src/AvTranscoder/EssenceStream/OutputVideo.hpp b/src/AvTranscoder/EssenceStream/OutputVideo.hpp index 065e30dc..6b0a4f19 100644 --- a/src/AvTranscoder/EssenceStream/OutputVideo.hpp +++ b/src/AvTranscoder/EssenceStream/OutputVideo.hpp @@ -31,7 +31,7 @@ class AvExport OutputVideo : public OutputEssence */ bool encodeFrame( DataStream& codedFrame ); - void setProfile( const Profile::ProfileDesc& desc, const avtranscoder::VideoFrameDesc& videoFrameDesc ); + void setProfile( const Profile::ProfileDesc& desc, const avtranscoder::VideoFrameDesc& frameDesc ); VideoDesc& getVideoDesc() { return _videoDesc; } From 482f3043401dd715d2b885d16b8a5f097ee8b9a4 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:04:48 +0200 Subject: [PATCH 02/15] AudioFrameDesc: add setSampleFormat from name --- src/AvTranscoder/EssenceStructures/AudioFrame.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/AvTranscoder/EssenceStructures/AudioFrame.hpp b/src/AvTranscoder/EssenceStructures/AudioFrame.hpp index 34b034ab..bd5cc584 100644 --- a/src/AvTranscoder/EssenceStructures/AudioFrame.hpp +++ b/src/AvTranscoder/EssenceStructures/AudioFrame.hpp @@ -21,6 +21,7 @@ class AvExport AudioFrameDesc void setSampleRate ( const size_t sampleRate ){ m_sampleRate = sampleRate; } void setChannels ( const size_t channels ){ m_channels = channels; } void setFps ( const size_t fps ){ m_fps = fps; } + void setSampleFormat( const std::string& sampleFormatName ){ m_sampleFormat = av_get_sample_fmt( sampleFormatName.c_str() ); } void setSampleFormat( const AVSampleFormat sampleFormat ){ m_sampleFormat = sampleFormat; } size_t getDataSize() const From c8d8f6050d1fc401f0034a745fe8c31d93e976c8 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:06:49 +0200 Subject: [PATCH 03/15] AudioDesc: add setAudioParameters from an audioFrameDesc --- src/AvTranscoder/CodedStructures/AudioDesc.cpp | 4 ++++ src/AvTranscoder/CodedStructures/AudioDesc.hpp | 1 + 2 files changed, 5 insertions(+) diff --git a/src/AvTranscoder/CodedStructures/AudioDesc.cpp b/src/AvTranscoder/CodedStructures/AudioDesc.cpp index 55ee1e86..5fa37221 100644 --- a/src/AvTranscoder/CodedStructures/AudioDesc.cpp +++ b/src/AvTranscoder/CodedStructures/AudioDesc.cpp @@ -53,6 +53,10 @@ const AVSampleFormat AudioDesc::getSampleFormat() const return m_codecContext->sample_fmt; } +void AudioDesc::setAudioParameters( const AudioFrameDesc& audioFrameDesc ) +{ + setAudioParameters( audioFrameDesc.getSampleRate(), audioFrameDesc.getChannels(), audioFrameDesc.getSampleFormat() ); +} void AudioDesc::setAudioParameters( const size_t sampleRate, const size_t channels, const AVSampleFormat sampleFormat ) { diff --git a/src/AvTranscoder/CodedStructures/AudioDesc.hpp b/src/AvTranscoder/CodedStructures/AudioDesc.hpp index 2a7c5b74..419129e3 100644 --- a/src/AvTranscoder/CodedStructures/AudioDesc.hpp +++ b/src/AvTranscoder/CodedStructures/AudioDesc.hpp @@ -24,6 +24,7 @@ class AvExport AudioDesc : public CodedDesc const size_t getChannels() const; const AVSampleFormat getSampleFormat() const; + void setAudioParameters( const AudioFrameDesc& audioFrameDesc ); void setAudioParameters( const size_t sampleRate, const size_t channels, const AVSampleFormat sampleFormat ); }; From 0f35296219b8ca893b25f478e36743b840c7a28f Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:09:09 +0200 Subject: [PATCH 04/15] VideoFrame: add setParameters from a profileDesc Update avTranscoder swig file. --- src/AvTranscoder/EssenceStructures/VideoFrame.hpp | 7 +++++++ src/AvTranscoder/avTranscoder.i | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/AvTranscoder/EssenceStructures/VideoFrame.hpp b/src/AvTranscoder/EssenceStructures/VideoFrame.hpp index fe0e9bce..77a83515 100644 --- a/src/AvTranscoder/EssenceStructures/VideoFrame.hpp +++ b/src/AvTranscoder/EssenceStructures/VideoFrame.hpp @@ -1,6 +1,7 @@ #ifndef _AV_TRANSCODER_DATA_IMAGE_HPP_ #define _AV_TRANSCODER_DATA_IMAGE_HPP_ +#include #include extern "C" { @@ -47,6 +48,12 @@ class AvExport VideoFrameDesc void setPixel ( const Pixel pixel ) { m_pixel = pixel; } void setDar ( const size_t num, const size_t den ) { m_displayAspectRatio.num = num; m_displayAspectRatio.den = den; } void setDar ( const Ratio ratio ) { m_displayAspectRatio = ratio; } + + void setParameters( const Profile::ProfileDesc& desc ) + { + if( desc.find( Profile::avProfilePixelFormat ) != desc.end() ) + setPixel( Pixel( desc.find( Profile::avProfilePixelFormat )->second.c_str() ) ); + } size_t getWidth () const { return m_width; } size_t getHeight() const { return m_height; } diff --git a/src/AvTranscoder/avTranscoder.i b/src/AvTranscoder/avTranscoder.i index c11d3372..105cf063 100644 --- a/src/AvTranscoder/avTranscoder.i +++ b/src/AvTranscoder/avTranscoder.i @@ -11,6 +11,8 @@ %{ #include +#include + #include #include #include @@ -42,8 +44,6 @@ #include #include -#include - #include #include @@ -65,6 +65,8 @@ namespace std { %include +%include + %include %include %include @@ -96,8 +98,6 @@ namespace std { %include %include -%include - %include %include From c43508c45a8a48658db8fc33c0d52175f6707767 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:10:18 +0200 Subject: [PATCH 05/15] AudioFrame: add setParameters from a profileDesc --- src/AvTranscoder/EssenceStructures/AudioFrame.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/AvTranscoder/EssenceStructures/AudioFrame.hpp b/src/AvTranscoder/EssenceStructures/AudioFrame.hpp index bd5cc584..5c980b69 100644 --- a/src/AvTranscoder/EssenceStructures/AudioFrame.hpp +++ b/src/AvTranscoder/EssenceStructures/AudioFrame.hpp @@ -4,6 +4,7 @@ #include #include "Frame.hpp" +#include namespace avtranscoder { @@ -28,6 +29,12 @@ class AvExport AudioFrameDesc { return ( m_sampleRate / m_fps ) * m_channels * av_get_bytes_per_sample( m_sampleFormat ); } + + void setParameters( const Profile::ProfileDesc& desc ) + { + if( desc.find( Profile::avProfileSampleFormat ) != desc.end() ) + setSampleFormat( desc.find( Profile::avProfileSampleFormat )->second ); + } size_t getSampleRate() const { return m_sampleRate; } size_t getChannels () const { return m_channels; } From da858f44c49597a558c6c00a5fbe48bb4eb54b34 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:42:43 +0200 Subject: [PATCH 06/15] Video/AudioFrame: refactoring - reorder includes --- src/AvTranscoder/EssenceStructures/AudioFrame.hpp | 3 +-- src/AvTranscoder/EssenceStructures/VideoFrame.hpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/AvTranscoder/EssenceStructures/AudioFrame.hpp b/src/AvTranscoder/EssenceStructures/AudioFrame.hpp index 5c980b69..a6ac1038 100644 --- a/src/AvTranscoder/EssenceStructures/AudioFrame.hpp +++ b/src/AvTranscoder/EssenceStructures/AudioFrame.hpp @@ -1,10 +1,9 @@ #ifndef _AV_TRANSCODER_DATA_AUDIO_FRAME_HPP_ #define _AV_TRANSCODER_DATA_AUDIO_FRAME_HPP_ -#include - #include "Frame.hpp" #include +#include namespace avtranscoder { diff --git a/src/AvTranscoder/EssenceStructures/VideoFrame.hpp b/src/AvTranscoder/EssenceStructures/VideoFrame.hpp index 77a83515..cfd582ed 100644 --- a/src/AvTranscoder/EssenceStructures/VideoFrame.hpp +++ b/src/AvTranscoder/EssenceStructures/VideoFrame.hpp @@ -1,6 +1,8 @@ #ifndef _AV_TRANSCODER_DATA_IMAGE_HPP_ #define _AV_TRANSCODER_DATA_IMAGE_HPP_ +#include "Pixel.hpp" +#include "Frame.hpp" #include #include @@ -17,8 +19,6 @@ extern "C" { #include -#include "Pixel.hpp" -#include "Frame.hpp" namespace avtranscoder { From 531481dd77c1495221ab8fcba34b0d094bb482d9 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:49:09 +0200 Subject: [PATCH 07/15] StreamTranscoder: set outputVideoFrameDesc with setParameters * Instead of setPixel. * Suppress comments. --- src/AvTranscoder/Transcoder/StreamTranscoder.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp index 4a653e8b..5d979c62 100644 --- a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp +++ b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp @@ -81,18 +81,13 @@ StreamTranscoder::StreamTranscoder( _outputEssence = outputVideo; - VideoFrameDesc outputVideoFrameDesc = _inputStream->getVideoDesc().getVideoFrameDesc(); - - outputVideoFrameDesc.setPixel( Pixel( profile.find( Profile::avProfilePixelFormat )->second.c_str() ) ); - - outputVideo->setProfile( profile, outputVideoFrameDesc ); + VideoFrameDesc outputFrameDesc = _inputStream->getVideoDesc().getVideoFrameDesc(); + outputFrameDesc.setParameters( profile ); + outputVideo->setProfile( profile, outputFrameDesc ); _outputStream = &outputFile.addVideoStream( outputVideo->getVideoDesc() ); _sourceBuffer = new VideoFrame( _inputStream->getVideoDesc().getVideoFrameDesc() ); - - // outputVideo->getVideoDesc().setImageParameters( _inputStream->getVideoDesc().getVideoFrameDesc().getWidth(), _inputStream->getVideoDesc().getVideoFrameDesc().getHeight(), av_get_pix_fmt( desc[ Profile::avProfilePixelFormat ].c_str() ) ); - _frameBuffer = new VideoFrame( outputVideo->getVideoDesc().getVideoFrameDesc() ); _transform = new VideoEssenceTransform(); From dfdeca4bd47c25bafbc537645d402329ef435e42 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:53:30 +0200 Subject: [PATCH 08/15] StreamTranscoder: set outputAudioFrameDesc with setParameters * If a subStream is selected, set channels of the frameDesc used to instanciate _sourceBuffer. * Add todo. --- src/AvTranscoder/EssenceStream/OutputAudio.cpp | 7 ++----- .../Transcoder/StreamTranscoder.cpp | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/OutputAudio.cpp b/src/AvTranscoder/EssenceStream/OutputAudio.cpp index 41ce5f72..3e6b40d8 100644 --- a/src/AvTranscoder/EssenceStream/OutputAudio.cpp +++ b/src/AvTranscoder/EssenceStream/OutputAudio.cpp @@ -11,7 +11,6 @@ extern "C" { #include #include -#include namespace avtranscoder { @@ -186,10 +185,8 @@ void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrame _audioDesc.setCodec( desc.find( Profile::avProfileCodec )->second ); - size_t sample_rate = std::strtoul( desc.find( Profile::avProfileSampleRate )->second.c_str(), NULL, 0 ); - size_t channels = std::strtoul( desc.find( Profile::avProfileChannel )->second.c_str(), NULL, 0 ); - _audioDesc.setAudioParameters( sample_rate, channels, av_get_sample_fmt( desc.find( Profile::avProfileSampleFormat )->second.c_str() ) ); - + _audioDesc.setAudioParameters( frameDesc ); + for( Profile::ProfileDesc::const_iterator it = desc.begin(); it != desc.end(); ++it ) { if( (*it).first == Profile::avProfileIdentificator || diff --git a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp index 5d979c62..3a8d8a03 100644 --- a/src/AvTranscoder/Transcoder/StreamTranscoder.cpp +++ b/src/AvTranscoder/Transcoder/StreamTranscoder.cpp @@ -102,16 +102,23 @@ StreamTranscoder::StreamTranscoder( OutputAudio* outputAudio = new OutputAudio(); _outputEssence = outputAudio; - AudioFrameDesc audioFrameDesc( _inputStream->getAudioDesc().getFrameDesc() ); + AudioFrameDesc outputFrameDesc( _inputStream->getAudioDesc().getFrameDesc() ); + outputFrameDesc.setParameters( profile ); if( subStreamIndex > -1 ) - audioFrameDesc.setChannels( 1 ); - - outputAudio->setProfile( profile, audioFrameDesc ); + { + // @todo manage downmix ? + outputFrameDesc.setChannels( 1 ); + } + outputAudio->setProfile( profile, outputFrameDesc ); _outputStream = &outputFile.addAudioStream( outputAudio->getAudioDesc() ); - _sourceBuffer = new AudioFrame( audioFrameDesc ); + AudioFrameDesc inputFrameDesc( _inputStream->getAudioDesc().getFrameDesc() ); + if( subStreamIndex > -1 ) + inputFrameDesc.setChannels( 1 ); + + _sourceBuffer = new AudioFrame( inputFrameDesc ); _frameBuffer = new AudioFrame( outputAudio->getAudioDesc().getFrameDesc() ); _transform = new AudioEssenceTransform(); From 60d7b3accfac3e837542ace880172879e0293d5b Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 16:59:04 +0200 Subject: [PATCH 09/15] Audio profile: avProfileSampleRate is not required If no sample rate is indicated in the profile, the output file will have the same sample rate as the input file. --- src/AvTranscoder/EssenceStream/OutputAudio.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/OutputAudio.cpp b/src/AvTranscoder/EssenceStream/OutputAudio.cpp index 3e6b40d8..291bc2b1 100644 --- a/src/AvTranscoder/EssenceStream/OutputAudio.cpp +++ b/src/AvTranscoder/EssenceStream/OutputAudio.cpp @@ -177,7 +177,6 @@ void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrame { if( ! desc.count( Profile::avProfileCodec ) || ! desc.count( Profile::avProfileSampleFormat ) || - ! desc.count( Profile::avProfileSampleRate ) || ! desc.count( Profile::avProfileChannel ) ) { throw std::runtime_error( "The profile " + desc.find( Profile::avProfileIdentificatorHuman )->second + " is invalid." ); @@ -194,7 +193,6 @@ void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrame (*it).first == Profile::avProfileType || (*it).first == Profile::avProfileCodec || (*it).first == Profile::avProfileSampleFormat || - (*it).first == Profile::avProfileSampleRate || (*it).first == Profile::avProfileChannel ) continue; @@ -217,7 +215,6 @@ void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrame (*it).first == Profile::avProfileType || (*it).first == Profile::avProfileCodec || (*it).first == Profile::avProfileSampleFormat || - (*it).first == Profile::avProfileSampleRate || (*it).first == Profile::avProfileChannel ) continue; From ccc77c31701accd100d4dcbb8a74a9b136dd42a2 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 17:03:46 +0200 Subject: [PATCH 10/15] Audio profile: avProfileChannel is not required If no number of channel is indicated in the profile, the output file will have the same number of channels as the input file. --- src/AvTranscoder/EssenceStream/OutputAudio.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/OutputAudio.cpp b/src/AvTranscoder/EssenceStream/OutputAudio.cpp index 291bc2b1..81edf80a 100644 --- a/src/AvTranscoder/EssenceStream/OutputAudio.cpp +++ b/src/AvTranscoder/EssenceStream/OutputAudio.cpp @@ -176,8 +176,7 @@ bool OutputAudio::encodeFrame( DataStream& codedFrame ) void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrameDesc& frameDesc ) { if( ! desc.count( Profile::avProfileCodec ) || - ! desc.count( Profile::avProfileSampleFormat ) || - ! desc.count( Profile::avProfileChannel ) ) + ! desc.count( Profile::avProfileSampleFormat ) ) { throw std::runtime_error( "The profile " + desc.find( Profile::avProfileIdentificatorHuman )->second + " is invalid." ); } @@ -192,8 +191,7 @@ void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrame (*it).first == Profile::avProfileIdentificatorHuman || (*it).first == Profile::avProfileType || (*it).first == Profile::avProfileCodec || - (*it).first == Profile::avProfileSampleFormat || - (*it).first == Profile::avProfileChannel ) + (*it).first == Profile::avProfileSampleFormat ) continue; try @@ -214,8 +212,7 @@ void OutputAudio::setProfile( const Profile::ProfileDesc& desc, const AudioFrame (*it).first == Profile::avProfileIdentificatorHuman || (*it).first == Profile::avProfileType || (*it).first == Profile::avProfileCodec || - (*it).first == Profile::avProfileSampleFormat || - (*it).first == Profile::avProfileChannel ) + (*it).first == Profile::avProfileSampleFormat ) continue; try From a69553876cfc301637fe201ee6431e4583dcdd7b Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 17:28:06 +0200 Subject: [PATCH 11/15] Transcoder: refactoring - group switch cases --- src/AvTranscoder/Transcoder/Transcoder.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/AvTranscoder/Transcoder/Transcoder.cpp b/src/AvTranscoder/Transcoder/Transcoder.cpp index b196dd63..b0714603 100644 --- a/src/AvTranscoder/Transcoder/Transcoder.cpp +++ b/src/AvTranscoder/Transcoder/Transcoder.cpp @@ -239,11 +239,6 @@ void Transcoder::addTranscodeStream( const std::string& filename, const size_t s switch( referenceFile->getStreamType( streamIndex ) ) { case AVMEDIA_TYPE_VIDEO: - { - _streamTranscoders.push_back( new StreamTranscoder( referenceFile->getStream( streamIndex ), _outputFile, profile ) ); - _inputStreams.push_back( &referenceFile->getStream( streamIndex ) ); - break; - } case AVMEDIA_TYPE_AUDIO: { _streamTranscoders.push_back( new StreamTranscoder( referenceFile->getStream( streamIndex ), _outputFile, profile ) ); @@ -267,11 +262,6 @@ void Transcoder::addTranscodeStream( const std::string& filename, const size_t s switch( referenceFile->getStreamType( streamIndex ) ) { case AVMEDIA_TYPE_VIDEO: - { - _streamTranscoders.push_back( new StreamTranscoder( referenceFile->getStream( streamIndex ), _outputFile, profile, subStreamIndex ) ); - _inputStreams.push_back( &referenceFile->getStream( streamIndex ) ); - break; - } case AVMEDIA_TYPE_AUDIO: { _streamTranscoders.push_back( new StreamTranscoder( referenceFile->getStream( streamIndex ), _outputFile, profile, subStreamIndex ) ); From 69d01f0ed53b1e6a7bcded1d59d6451f24d80e89 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 17:32:09 +0200 Subject: [PATCH 12/15] DataStreamDesc: rename to DataStream Rename the file. --- src/AvTranscoder/CodedStream/AvInputStream.hpp | 2 +- src/AvTranscoder/CodedStream/InputStream.hpp | 2 +- src/AvTranscoder/CodedStream/OutputStream.hpp | 2 +- .../CodedStructures/{DataStreamDesc.hpp => DataStream.hpp} | 0 src/AvTranscoder/EssenceStream/OutputAudio.hpp | 2 +- src/AvTranscoder/EssenceStream/OutputEssence.hpp | 2 +- src/AvTranscoder/EssenceStream/OutputVideo.hpp | 2 +- src/AvTranscoder/File/InputFile.hpp | 2 +- src/AvTranscoder/File/OutputFile.hpp | 2 +- src/AvTranscoder/avTranscoder.i | 4 ++-- 10 files changed, 10 insertions(+), 10 deletions(-) rename src/AvTranscoder/CodedStructures/{DataStreamDesc.hpp => DataStream.hpp} (100%) diff --git a/src/AvTranscoder/CodedStream/AvInputStream.hpp b/src/AvTranscoder/CodedStream/AvInputStream.hpp index e68f7d57..66a13c96 100644 --- a/src/AvTranscoder/CodedStream/AvInputStream.hpp +++ b/src/AvTranscoder/CodedStream/AvInputStream.hpp @@ -3,7 +3,7 @@ #include "InputStream.hpp" -#include +#include namespace avtranscoder { diff --git a/src/AvTranscoder/CodedStream/InputStream.hpp b/src/AvTranscoder/CodedStream/InputStream.hpp index 9c578f5b..e9d36d60 100644 --- a/src/AvTranscoder/CodedStream/InputStream.hpp +++ b/src/AvTranscoder/CodedStream/InputStream.hpp @@ -1,7 +1,7 @@ #ifndef _AV_TRANSCODER_CODED_STREAM_INPUT_STREAM_HPP_ #define _AV_TRANSCODER_CODED_STREAM_INPUT_STREAM_HPP_ -#include +#include #include #include diff --git a/src/AvTranscoder/CodedStream/OutputStream.hpp b/src/AvTranscoder/CodedStream/OutputStream.hpp index 8a733565..bd4bb6f4 100644 --- a/src/AvTranscoder/CodedStream/OutputStream.hpp +++ b/src/AvTranscoder/CodedStream/OutputStream.hpp @@ -1,7 +1,7 @@ #ifndef _AV_TRANSCODER_CODED_STREAM_OUTPUT_STREAM_HPP_ #define _AV_TRANSCODER_CODED_STREAM_OUTPUT_STREAM_HPP_ -#include +#include #include #include diff --git a/src/AvTranscoder/CodedStructures/DataStreamDesc.hpp b/src/AvTranscoder/CodedStructures/DataStream.hpp similarity index 100% rename from src/AvTranscoder/CodedStructures/DataStreamDesc.hpp rename to src/AvTranscoder/CodedStructures/DataStream.hpp diff --git a/src/AvTranscoder/EssenceStream/OutputAudio.hpp b/src/AvTranscoder/EssenceStream/OutputAudio.hpp index 541e4c88..15b336f3 100644 --- a/src/AvTranscoder/EssenceStream/OutputAudio.hpp +++ b/src/AvTranscoder/EssenceStream/OutputAudio.hpp @@ -3,7 +3,7 @@ #include "OutputEssence.hpp" -#include +#include #include #include diff --git a/src/AvTranscoder/EssenceStream/OutputEssence.hpp b/src/AvTranscoder/EssenceStream/OutputEssence.hpp index c06a0e64..c3fff80b 100644 --- a/src/AvTranscoder/EssenceStream/OutputEssence.hpp +++ b/src/AvTranscoder/EssenceStream/OutputEssence.hpp @@ -2,7 +2,7 @@ #define _AV_TRANSCODER_ESSENCE_STREAM_OUTPUT_ESSENCE_HPP_ #include -#include +#include namespace avtranscoder { diff --git a/src/AvTranscoder/EssenceStream/OutputVideo.hpp b/src/AvTranscoder/EssenceStream/OutputVideo.hpp index 6b0a4f19..18da2b1f 100644 --- a/src/AvTranscoder/EssenceStream/OutputVideo.hpp +++ b/src/AvTranscoder/EssenceStream/OutputVideo.hpp @@ -3,7 +3,7 @@ #include "OutputEssence.hpp" -#include +#include #include #include diff --git a/src/AvTranscoder/File/InputFile.hpp b/src/AvTranscoder/File/InputFile.hpp index b44e0e40..42ec2920 100644 --- a/src/AvTranscoder/File/InputFile.hpp +++ b/src/AvTranscoder/File/InputFile.hpp @@ -3,7 +3,7 @@ #include -#include +#include #include #include diff --git a/src/AvTranscoder/File/OutputFile.hpp b/src/AvTranscoder/File/OutputFile.hpp index e0e07579..d2bfab17 100644 --- a/src/AvTranscoder/File/OutputFile.hpp +++ b/src/AvTranscoder/File/OutputFile.hpp @@ -3,7 +3,7 @@ #include -#include +#include #include #include diff --git a/src/AvTranscoder/avTranscoder.i b/src/AvTranscoder/avTranscoder.i index 105cf063..6ad9ca58 100644 --- a/src/AvTranscoder/avTranscoder.i +++ b/src/AvTranscoder/avTranscoder.i @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include @@ -75,7 +75,7 @@ namespace std { %include %include %include -%include +%include %include From ce9dacf062a75449abfa4093e21175d049097df1 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 18:07:27 +0200 Subject: [PATCH 13/15] InputAudio: refactoring readNextFrame - no need to update offset if big endian --- src/AvTranscoder/EssenceStream/InputAudio.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/InputAudio.cpp b/src/AvTranscoder/EssenceStream/InputAudio.cpp index 0137d369..2b9d267e 100644 --- a/src/AvTranscoder/EssenceStream/InputAudio.cpp +++ b/src/AvTranscoder/EssenceStream/InputAudio.cpp @@ -158,8 +158,7 @@ bool InputAudio::readNextFrame( Frame& frameBuffer, const size_t subStreamIndex unsigned char* src = _frame->data[0]; unsigned char* dst = audioBuffer.getPtr(); - // @todo check little / big endian - // offset for little endian + // offset src += ( nbChannels - 1 - subStreamIndex ) * bytePerSample; for( int sample = 0; sample < _frame->nb_samples; ++sample ) From e42802fe1bb7299daf22c8751922a1a78e2f0004 Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 18:09:01 +0200 Subject: [PATCH 14/15] InputAudio: check subStream in readNextFrame If the subStream doesn't exist, raise an exception. --- src/AvTranscoder/EssenceStream/InputAudio.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/AvTranscoder/EssenceStream/InputAudio.cpp b/src/AvTranscoder/EssenceStream/InputAudio.cpp index 2b9d267e..f469bbb6 100644 --- a/src/AvTranscoder/EssenceStream/InputAudio.cpp +++ b/src/AvTranscoder/EssenceStream/InputAudio.cpp @@ -146,6 +146,11 @@ bool InputAudio::readNextFrame( Frame& frameBuffer, const size_t subStreamIndex size_t nbChannels = _codecContext->channels; size_t bytePerSample = av_get_bytes_per_sample( (AVSampleFormat)_frame->format ); + if( subStreamIndex > nbChannels - 1 ) + { + throw std::runtime_error( "The subStream doesn't exist"); + } + AudioFrame& audioBuffer = static_cast( frameBuffer ); audioBuffer.setNbSamples( _frame->nb_samples ); From d2c8e1208033264e8e476b2b8f164c97c1bbf8ab Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Thu, 24 Jul 2014 18:12:06 +0200 Subject: [PATCH 15/15] InputAudio: refactoring - rename local variable Rename nbChannels to nbSubStreams. --- src/AvTranscoder/EssenceStream/InputAudio.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/AvTranscoder/EssenceStream/InputAudio.cpp b/src/AvTranscoder/EssenceStream/InputAudio.cpp index f469bbb6..6c8fe96c 100644 --- a/src/AvTranscoder/EssenceStream/InputAudio.cpp +++ b/src/AvTranscoder/EssenceStream/InputAudio.cpp @@ -143,10 +143,10 @@ bool InputAudio::readNextFrame( Frame& frameBuffer, const size_t subStreamIndex const int output_align = 1; size_t decodedSize = av_samples_get_buffer_size(NULL, output_nbChannels, _frame->nb_samples, _codecContext->sample_fmt, output_align); - size_t nbChannels = _codecContext->channels; + size_t nbSubStreams = _codecContext->channels; size_t bytePerSample = av_get_bytes_per_sample( (AVSampleFormat)_frame->format ); - if( subStreamIndex > nbChannels - 1 ) + if( subStreamIndex > nbSubStreams - 1 ) { throw std::runtime_error( "The subStream doesn't exist"); } @@ -164,7 +164,7 @@ bool InputAudio::readNextFrame( Frame& frameBuffer, const size_t subStreamIndex unsigned char* dst = audioBuffer.getPtr(); // offset - src += ( nbChannels - 1 - subStreamIndex ) * bytePerSample; + src += ( nbSubStreams - 1 - subStreamIndex ) * bytePerSample; for( int sample = 0; sample < _frame->nb_samples; ++sample ) { @@ -173,7 +173,7 @@ bool InputAudio::readNextFrame( Frame& frameBuffer, const size_t subStreamIndex // std::cout << "dst " << static_cast(dst) << std::endl; memcpy( dst, src, bytePerSample ); dst += bytePerSample; - src += bytePerSample * nbChannels; + src += bytePerSample * nbSubStreams; } } return true;