3
3
4
4
#include < AvTranscoder/CodedStream/AvInputStream.hpp>
5
5
6
+ #include < AvTranscoder/EssenceTransform/AudioEssenceTransform.hpp>
7
+ #include < AvTranscoder/EssenceTransform/VideoEssenceTransform.hpp>
8
+
6
9
#include < cassert>
7
10
8
11
namespace avtranscoder
@@ -14,11 +17,13 @@ StreamTranscoder::StreamTranscoder(
14
17
)
15
18
: _inputStream( &inputStream )
16
19
, _outputStream( NULL )
20
+ , _sourceBuffer( NULL )
17
21
, _frameBuffer( NULL )
18
22
, _videoFrameBuffer( NULL )
19
23
, _audioFrameBuffer( NULL )
20
24
, _inputEssence( NULL )
21
25
, _outputEssence( NULL )
26
+ , _transform( NULL )
22
27
, _transcodeStream( false )
23
28
{
24
29
// create a re-wrapping case
@@ -46,11 +51,13 @@ StreamTranscoder::StreamTranscoder(
46
51
)
47
52
: _inputStream( &inputStream )
48
53
, _outputStream( NULL )
54
+ , _sourceBuffer( NULL )
49
55
, _frameBuffer( NULL )
50
56
, _videoFrameBuffer( NULL )
51
57
, _audioFrameBuffer( NULL )
52
58
, _inputEssence( NULL )
53
59
, _outputEssence( NULL )
60
+ , _transform( NULL )
54
61
, _transcodeStream( true )
55
62
{
56
63
// create a transcode case
@@ -67,9 +74,13 @@ StreamTranscoder::StreamTranscoder(
67
74
_outputEssence->setProfile ( profile );
68
75
69
76
_outputStream = &outputFile.addVideoStream ( outputVideo->getVideoDesc () );
77
+
78
+ _sourceBuffer = new Image ( _inputStream->getVideoDesc ().getImageDesc () );
70
79
_videoFrameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
71
80
_frameBuffer = _videoFrameBuffer;
72
81
82
+ _transform = new VideoEssenceTransform ();
83
+
73
84
break ;
74
85
}
75
86
case AVMEDIA_TYPE_AUDIO :
@@ -83,9 +94,13 @@ StreamTranscoder::StreamTranscoder(
83
94
_outputEssence->setProfile ( profile );
84
95
85
96
_outputStream = &outputFile.addAudioStream ( outputAudio->getAudioDesc () );
97
+
98
+ _sourceBuffer = new AudioFrame ( _inputStream->getAudioDesc ().getFrameDesc () );
86
99
_audioFrameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
87
100
_frameBuffer = _audioFrameBuffer;
88
101
102
+ _transform = new AudioEssenceTransform ();
103
+
89
104
break ;
90
105
}
91
106
default :
@@ -103,11 +118,13 @@ StreamTranscoder::StreamTranscoder(
103
118
)
104
119
: _inputStream( NULL )
105
120
, _outputStream( NULL )
121
+ , _sourceBuffer( NULL )
106
122
, _frameBuffer( NULL )
107
123
, _videoFrameBuffer( NULL )
108
124
, _audioFrameBuffer( NULL )
109
125
, _inputEssence( &inputEssence )
110
126
, _outputEssence( NULL )
127
+ , _transform( NULL )
111
128
, _transcodeStream( true )
112
129
{
113
130
if ( ! profile.count ( Profile::avProfileType ) )
@@ -177,14 +194,15 @@ bool StreamTranscoder::processTranscode()
177
194
{
178
195
assert ( _inputEssence != NULL );
179
196
assert ( _outputEssence != NULL );
197
+ assert ( _sourceBuffer != NULL );
180
198
assert ( _frameBuffer != NULL );
181
199
182
200
std::cout << " transcode" << std::endl;
183
201
184
202
DataStream dataStream;
185
- if ( _inputEssence->readNextFrame ( *_frameBuffer ) )
203
+ if ( _inputEssence->readNextFrame ( *_sourceBuffer ) )
186
204
{
187
- std::cout << " encode " << std::endl ;
205
+ _transform-> convert ( *_sourceBuffer, *_frameBuffer ) ;
188
206
_outputEssence->encodeFrame ( *_frameBuffer, dataStream );
189
207
}
190
208
else
0 commit comments