3
3
4
4
#include < AvTranscoder/CodedStream/AvInputStream.hpp>
5
5
6
+ #include < AvTranscoder/EssenceStream/DummyVideo.hpp>
7
+ #include < AvTranscoder/EssenceStream/DummyAudio.hpp>
8
+
6
9
#include < AvTranscoder/EssenceTransform/AudioEssenceTransform.hpp>
7
10
#include < AvTranscoder/EssenceTransform/VideoEssenceTransform.hpp>
8
11
@@ -19,8 +22,6 @@ StreamTranscoder::StreamTranscoder(
19
22
, _outputStream( NULL )
20
23
, _sourceBuffer( NULL )
21
24
, _frameBuffer( NULL )
22
- , _videoFrameBuffer( NULL )
23
- , _audioFrameBuffer( NULL )
24
25
, _inputEssence( NULL )
25
26
, _outputEssence( NULL )
26
27
, _transform( NULL )
@@ -53,8 +54,6 @@ StreamTranscoder::StreamTranscoder(
53
54
, _outputStream( NULL )
54
55
, _sourceBuffer( NULL )
55
56
, _frameBuffer( NULL )
56
- , _videoFrameBuffer( NULL )
57
- , _audioFrameBuffer( NULL )
58
57
, _inputEssence( NULL )
59
58
, _outputEssence( NULL )
60
59
, _transform( NULL )
@@ -76,8 +75,7 @@ StreamTranscoder::StreamTranscoder(
76
75
_outputStream = &outputFile.addVideoStream ( outputVideo->getVideoDesc () );
77
76
78
77
_sourceBuffer = new Image ( _inputStream->getVideoDesc ().getImageDesc () );
79
- _videoFrameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
80
- _frameBuffer = _videoFrameBuffer;
78
+ _frameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
81
79
82
80
_transform = new VideoEssenceTransform ();
83
81
@@ -96,8 +94,7 @@ StreamTranscoder::StreamTranscoder(
96
94
_outputStream = &outputFile.addAudioStream ( outputAudio->getAudioDesc () );
97
95
98
96
_sourceBuffer = new AudioFrame ( _inputStream->getAudioDesc ().getFrameDesc () );
99
- _audioFrameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
100
- _frameBuffer = _audioFrameBuffer;
97
+ _frameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
101
98
102
99
_transform = new AudioEssenceTransform ();
103
100
@@ -120,8 +117,6 @@ StreamTranscoder::StreamTranscoder(
120
117
, _outputStream( NULL )
121
118
, _sourceBuffer( NULL )
122
119
, _frameBuffer( NULL )
123
- , _videoFrameBuffer( NULL )
124
- , _audioFrameBuffer( NULL )
125
120
, _inputEssence( &inputEssence )
126
121
, _outputEssence( NULL )
127
122
, _transform( NULL )
@@ -135,24 +130,37 @@ StreamTranscoder::StreamTranscoder(
135
130
OutputAudio* outputAudio = new OutputAudio ();
136
131
137
132
_outputEssence = outputAudio;
138
- outputAudio->setProfile ( profile, outputAudio->getAudioDesc ().getFrameDesc () );
139
-
133
+ AudioFrameDesc srcAudioFrameDesc; // @todo better solution ?
134
+ outputAudio->setProfile ( profile, srcAudioFrameDesc );
135
+
136
+ std::cout << outputAudio->getAudioDesc ().getSampleRate () << std::endl;
137
+ std::cout << outputAudio->getAudioDesc ().getSampleFormat () << std::endl;
138
+
139
+ static_cast <DummyAudio*>( _inputEssence )->setAudioDesc ( outputAudio->getAudioDesc () );
140
+
140
141
_outputStream = &outputFile.addAudioStream ( outputAudio->getAudioDesc () );
141
- _audioFrameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
142
- _frameBuffer = _audioFrameBuffer;
142
+ _sourceBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
143
+ _frameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
144
+
145
+ _transform = new AudioEssenceTransform ();
146
+
143
147
return ;
144
148
}
145
149
146
150
if ( profile.find ( Profile::avProfileType )->second == Profile::avProfileTypeVideo )
147
151
{
148
152
OutputVideo* outputVideo = new OutputVideo ();
149
-
153
+
150
154
_outputEssence = outputVideo;
151
- outputVideo->setProfile ( profile, outputVideo->getVideoDesc ().getImageDesc () );
155
+ ImageDesc srcImageDesc; // @todo better solution ?
156
+ outputVideo->setProfile ( profile, srcImageDesc );
152
157
153
158
_outputStream = &outputFile.addVideoStream ( outputVideo->getVideoDesc () );
154
- _videoFrameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
155
- _frameBuffer = _videoFrameBuffer;
159
+ _sourceBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
160
+ _frameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
161
+
162
+ _transform = new VideoEssenceTransform ();
163
+
156
164
return ;
157
165
}
158
166
@@ -199,24 +207,20 @@ bool StreamTranscoder::processTranscode()
199
207
assert ( _sourceBuffer != NULL );
200
208
assert ( _frameBuffer != NULL );
201
209
202
- std::cout << " transcode" << std::endl;
203
-
204
210
DataStream dataStream;
205
211
if ( _inputEssence->readNextFrame ( *_sourceBuffer ) )
206
- {
212
+ {
207
213
_transform->convert ( *_sourceBuffer, *_frameBuffer );
208
214
_outputEssence->encodeFrame ( *_frameBuffer, dataStream );
209
215
}
210
216
else
211
217
{
212
- std::cout << " encode last frame" << std::endl;
213
218
if ( ! _outputEssence->encodeFrame ( dataStream ) )
214
219
{
215
220
return false ;
216
221
}
217
222
}
218
223
219
- std::cout << " wrap" << std::endl;
220
224
_outputStream->wrap ( dataStream );
221
225
return true ;
222
226
}
0 commit comments