Skip to content

Commit c4fec74

Browse files
author
Valentin Noel
committed
Add EssenceTransform into StreamTranscoder
1 parent 1b7f9a5 commit c4fec74

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

src/AvTranscoder/StreamTranscoder.cpp

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11

2+
#include <AvTranscoder/EssenceTransform/AudioTransform.hpp>
3+
#include <AvTranscoder/EssenceTransform/ColorTransform.hpp>
4+
25
#include "StreamTranscoder.hpp"
36

47
namespace avtranscoder
58
{
69

710
StreamTranscoder::StreamTranscoder( AvInputStream& stream, OutputFile& outputFile, const size_t& streamId )
811
: _stream( &stream )
12+
, _sourceBuffer( NULL )
913
, _frameBuffer( NULL )
14+
, _transform( NULL )
1015
, _inputStreamReader( NULL )
1116
, _outputStreamWriter( NULL )
1217
, _outputFile( &outputFile )
@@ -17,6 +22,8 @@ StreamTranscoder::StreamTranscoder( AvInputStream& stream, OutputFile& outputFil
1722

1823
StreamTranscoder::~StreamTranscoder()
1924
{
25+
if( _sourceBuffer )
26+
delete _sourceBuffer;
2027
if( _frameBuffer )
2128
delete _frameBuffer;
2229
if( _inputStreamReader )
@@ -33,16 +40,20 @@ void StreamTranscoder::init( const std::string& profile )
3340
{
3441
case AVMEDIA_TYPE_VIDEO :
3542
{
36-
_inputStreamReader = new InputStreamVideo( *_stream );
37-
_inputStreamReader->setup();
38-
3943
// re-wrap only, get output descriptor from input
4044
if( profile.empty() )
4145
{
4246
_outputFile->addVideoStream( _stream->getVideoDesc() );
4347
break;
4448
}
4549

50+
_inputStreamReader = new InputStreamVideo( *_stream );
51+
_inputStreamReader->setup();
52+
53+
_sourceBuffer = new Image( _stream->getVideoDesc().getImageDesc() );
54+
55+
_transform = new ColorTransform();
56+
4657
OutputStreamVideo* outputStreamVideo = new OutputStreamVideo();
4758
_outputStreamWriter = outputStreamVideo;
4859

@@ -55,16 +66,20 @@ void StreamTranscoder::init( const std::string& profile )
5566
}
5667
case AVMEDIA_TYPE_AUDIO :
5768
{
58-
_inputStreamReader = new InputStreamAudio( *_stream );
59-
_inputStreamReader->setup();
60-
6169
// re-wrap only, get output descriptor from input
6270
if( profile.empty() )
6371
{
6472
_outputFile->addAudioStream( _stream->getAudioDesc() );
6573
break;
6674
}
67-
75+
76+
_inputStreamReader = new InputStreamAudio( *_stream );
77+
_inputStreamReader->setup();
78+
79+
_sourceBuffer = new AudioFrame( _stream->getAudioDesc().getFrameDesc() );
80+
81+
_transform = new AudioTransform();
82+
6883
OutputStreamAudio* outputStreamAudio = new OutputStreamAudio();
6984
_outputStreamWriter = outputStreamAudio;
7085

@@ -92,9 +107,9 @@ bool StreamTranscoder::processFrame()
92107
}
93108

94109
// std::cout << "encode & wrap" << _streamIndex << std::endl;
95-
96-
if( _inputStreamReader->readNextFrame( *_frameBuffer ) )
110+
if( _inputStreamReader->readNextFrame( *_sourceBuffer ) )
97111
{
112+
_transform->convert( *_sourceBuffer, *_frameBuffer );
98113
_outputStreamWriter->encodeFrame( *_frameBuffer, dataStream );
99114
}
100115
else if( ! _outputStreamWriter->encodeFrame( dataStream ) )

src/AvTranscoder/StreamTranscoder.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#include <AvTranscoder/File/OutputFile.hpp>
1414

15+
#include <AvTranscoder/EssenceTransform/EssenceTransform.hpp>
1516

1617
namespace avtranscoder
1718
{
@@ -31,10 +32,13 @@ class StreamTranscoder
3132
private:
3233
AvInputStream* _stream;
3334

35+
Frame* _sourceBuffer;
3436
Frame* _frameBuffer;
3537
Image* _videoFrameBuffer;
3638
AudioFrame* _audioFrameBuffer;
3739

40+
EssenceTransform* _transform;
41+
3842
InputStreamReader* _inputStreamReader;
3943
OutputStreamWriter* _outputStreamWriter;
4044
OutputFile* _outputFile;

0 commit comments

Comments
 (0)