@@ -162,15 +162,15 @@ StreamTranscoder::StreamTranscoder(
162
162
}
163
163
164
164
StreamTranscoder::StreamTranscoder (
165
- IInputEssence& inputEssence ,
165
+ const ICodec& inputCodec ,
166
166
OutputFile& outputFile,
167
167
const Profile::ProfileDesc& profile
168
168
)
169
169
: _inputStream( NULL )
170
170
, _outputStream( NULL )
171
171
, _sourceBuffer( NULL )
172
172
, _frameBuffer( NULL )
173
- , _inputEssence( &inputEssence )
173
+ , _inputEssence( NULL )
174
174
, _generatorEssence( NULL )
175
175
, _currentEssence( NULL )
176
176
, _outputEssence( NULL )
@@ -189,66 +189,70 @@ StreamTranscoder::StreamTranscoder(
189
189
190
190
if ( profile.find ( Profile::avProfileType )->second == Profile::avProfileTypeVideo )
191
191
{
192
- AvOutputVideo* outputVideo = new AvOutputVideo ();
193
-
194
- _outputEssence = outputVideo;
195
-
196
- VideoFrameDesc inputFrameDesc = static_cast <GeneratorVideo*>( _inputEssence )->getVideoCodec ().getVideoFrameDesc ();
192
+ // Create input essence based on a given input VideoCodec
193
+ GeneratorVideo* generatorVideo = new GeneratorVideo ();
194
+ generatorVideo->setVideoCodec ( static_cast <VideoCodec>( inputCodec ) );
195
+ _inputEssence = generatorVideo;
197
196
197
+ // Create inputFrame, and outputFrame which is based on a given profile
198
+ VideoFrameDesc inputFrameDesc = static_cast <VideoCodec>( inputCodec ).getVideoFrameDesc ();
198
199
VideoFrameDesc outputFrameDesc = inputFrameDesc;
199
200
outputFrameDesc.setParameters ( profile );
201
+ _sourceBuffer = new VideoFrame ( inputFrameDesc );
202
+ _frameBuffer = new VideoFrame ( outputFrameDesc );
203
+
204
+ // Create output essence
205
+ AvOutputVideo* outputVideo = new AvOutputVideo ();
200
206
outputVideo->setProfile ( profile, outputFrameDesc );
207
+ _outputEssence = outputVideo;
201
208
209
+ // Create a video stream in the output file
202
210
_outputStream = &outputFile.addVideoStream ( outputVideo->getVideoCodec () );
203
- _sourceBuffer = new VideoFrame ( inputFrameDesc );
204
- _frameBuffer = new VideoFrame ( outputFrameDesc );
205
211
206
212
_transform = new VideoTransform ();
207
213
208
- _currentEssence = _inputEssence;
209
-
210
- return ;
214
+ _currentEssence = _inputEssence;
211
215
}
212
-
213
- if ( profile.find ( Profile::avProfileType )->second == Profile::avProfileTypeAudio )
216
+ else if ( profile.find ( Profile::avProfileType )->second == Profile::avProfileTypeAudio )
214
217
{
215
- AvOutputAudio* outputAudio = new AvOutputAudio ();
216
-
217
- _outputEssence = outputAudio;
218
-
219
- AudioFrameDesc inputFrameDesc = static_cast <GeneratorAudio*>( _inputEssence )->getAudioCodec ().getFrameDesc ();
218
+ // Create input essence based on a given input AudioCodec
219
+ GeneratorAudio* generatorAudio = new GeneratorAudio ();
220
+ generatorAudio->setAudioCodec ( static_cast <const AudioCodec&>( inputCodec ) );
221
+ _inputEssence = generatorAudio;
220
222
223
+ // Create inputFrame, and outputFrame which is based on a given profile
224
+ AudioFrameDesc inputFrameDesc = static_cast <const AudioCodec&>( inputCodec ).getFrameDesc ();
221
225
AudioFrameDesc outputFrameDesc = inputFrameDesc;
222
226
outputFrameDesc.setParameters ( profile );
227
+ _sourceBuffer = new AudioFrame ( inputFrameDesc );
228
+ _frameBuffer = new AudioFrame ( outputFrameDesc );
229
+
230
+ // Create output essence
231
+ AvOutputAudio* outputAudio = new AvOutputAudio ();
223
232
outputAudio->setProfile ( profile, outputFrameDesc );
233
+ _outputEssence = outputAudio;
224
234
235
+ // Create an audio stream in the output file
225
236
_outputStream = &outputFile.addAudioStream ( outputAudio->getAudioCodec () );
226
- _sourceBuffer = new AudioFrame ( inputFrameDesc );
227
- _frameBuffer = new AudioFrame ( outputFrameDesc );
228
237
229
238
_transform = new AudioTransform ();
230
-
239
+
231
240
_currentEssence = _inputEssence;
232
- return ;
233
241
}
234
-
235
- throw std::runtime_error ( " unupported stream type" );
242
+ else
243
+ {
244
+ throw std::runtime_error ( " unupported stream type" );
245
+ }
236
246
}
237
247
238
248
StreamTranscoder::~StreamTranscoder ()
239
249
{
240
- if ( _frameBuffer )
241
- delete _frameBuffer;
242
- if ( _sourceBuffer )
243
- delete _sourceBuffer;
244
- if ( _inputEssence && _inputStream )
245
- delete _inputEssence;
246
- if ( _generatorEssence )
247
- delete _generatorEssence;
248
- if ( _outputEssence )
249
- delete _outputEssence;
250
- if ( _transform )
251
- delete _transform;
250
+ delete _frameBuffer;
251
+ delete _sourceBuffer;
252
+ delete _generatorEssence;
253
+ delete _outputEssence;
254
+ delete _transform;
255
+ delete _inputEssence;
252
256
}
253
257
254
258
void StreamTranscoder::init ()
0 commit comments