Skip to content

Commit 274b159

Browse files
adding virtual for managing DummyInputStream and AvInputStream
1 parent ee4c3ac commit 274b159

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

src/AvTranscoder/StreamTranscoder.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11

22
#include "StreamTranscoder.hpp"
33

4+
#include <AvTranscoder/AvInputStream.hpp>
5+
46
namespace avtranscoder
57
{
68

7-
StreamTranscoder::StreamTranscoder( AvInputStream& stream, OutputFile& outputFile, const size_t& streamId )
9+
StreamTranscoder::StreamTranscoder( InputStream& stream, OutputFile& outputFile, const size_t& streamId )
810
: _stream( &stream )
911
, _frameBuffer( NULL )
1012
, _inputEssence( NULL )
@@ -33,7 +35,7 @@ void StreamTranscoder::init( const std::string& profile )
3335
{
3436
case AVMEDIA_TYPE_VIDEO :
3537
{
36-
_inputEssence = new InputVideo( *_stream );
38+
_inputEssence = new InputVideo( *static_cast<AvInputStream*>( _stream ) );
3739
_inputEssence->setup();
3840

3941
// re-wrap only, get output descriptor from input
@@ -55,7 +57,7 @@ void StreamTranscoder::init( const std::string& profile )
5557
}
5658
case AVMEDIA_TYPE_AUDIO :
5759
{
58-
_inputEssence = new InputAudio( *_stream );
60+
_inputEssence = new InputAudio( *static_cast<AvInputStream*>( _stream ) );
5961
_inputEssence->setup();
6062

6163
// re-wrap only, get output descriptor from input

src/AvTranscoder/StreamTranscoder.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#ifndef _AV_TRANSCODER_STREAM_TRANSCODER_HPP_
22
#define _AV_TRANSCODER_STREAM_TRANSCODER_HPP_
33

4-
#include <AvTranscoder/AvInputStream.hpp>
54
#include <AvTranscoder/InputStream.hpp>
65

76
#include <AvTranscoder/EssenceStream/InputVideo.hpp>
@@ -19,7 +18,7 @@ namespace avtranscoder
1918
class StreamTranscoder
2019
{
2120
public:
22-
StreamTranscoder( AvInputStream& stream, OutputFile& outputFile, const size_t& streamId );
21+
StreamTranscoder( InputStream& stream, OutputFile& outputFile, const size_t& streamId );
2322
~StreamTranscoder();
2423

2524
void init( const std::string& profile );

src/AvTranscoder/Transcoder.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,25 @@ void Transcoder::add( const std::string& filename, const size_t streamIndex, con
3333
{
3434
if( ! filename.length() )
3535
{
36+
try
37+
{
38+
// be sure the first inputStream is an AvInputStream created from an audio file
39+
dynamic_cast<AvInputStream*>( _inputStreams.at( 0 ) );
40+
}
41+
catch( std::exception& e)
42+
{
43+
throw std::runtime_error( "dummy stream can't be the first audio channel" );
44+
}
45+
3646
_dummyInputStreams.push_back( new DummyInputStream() );
3747

3848
_inputStreams.push_back( _dummyInputStreams.back() );
3949

40-
if( _inputStreams.at( 1 ) )
41-
{
42-
_dummyInputStreams.back()->setAudioDesc( _inputStreams.at( 1 )->getAudioDesc() );
43-
_outputFile.addAudioStream( _inputStreams.back()->getAudioDesc() );
44-
}
45-
else
46-
std::cout << "dummy can't be the first audio channel" << std::endl;
50+
_dummyInputStreams.back()->setAudioDesc( _inputStreams.at( 0 )->getAudioDesc() );
51+
_outputFile.addAudioStream( _inputStreams.back()->getAudioDesc() );
4752

48-
_streamTranscoders.push_back( NULL );
53+
StreamTranscoder* streamTranscoder = new StreamTranscoder( *_dummyInputStreams.back(), _outputFile, _streamTranscoders.size() );
54+
_streamTranscoders.push_back( streamTranscoder );
4955

5056
return;
5157
}
@@ -107,7 +113,7 @@ void Transcoder::add( const InputStreamsDesc& streamDefs )
107113
streamDefs.at( streamDest ).transcodeProfile );
108114
}
109115
if( _inputStreams.size() != _streamTranscoders.size() )
110-
throw std::runtime_error( "_inputStreams and _streamTranscoders must have the same number of streams" );
116+
throw std::runtime_error( "error during settings streams and transcoders" );
111117
}
112118

113119

0 commit comments

Comments
 (0)