@@ -25,6 +25,7 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
25
25
, _currentInputStream(&inputStream)
26
26
, _outputStream(NULL )
27
27
, _decodedData()
28
+ , _filteredData()
28
29
, _transformedData()
29
30
, _inputDecoders()
30
31
, _generators()
@@ -57,6 +58,7 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
57
58
58
59
// buffers to process
59
60
_decodedData.push_back (new VideoFrame (inputFrameDesc));
61
+ _filteredData.push_back (new VideoFrame (inputFrameDesc));
60
62
_transformedData.push_back (new VideoFrame (inputFrameDesc));
61
63
62
64
// transform
@@ -92,6 +94,7 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
92
94
93
95
// buffers to process
94
96
_decodedData.push_back (new AudioFrame (inputFrameDesc));
97
+ _filteredData.push_back (new AudioFrame (inputFrameDesc));
95
98
_transformedData.push_back (new AudioFrame (inputFrameDesc));
96
99
97
100
// transform
@@ -130,6 +133,7 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
130
133
, _currentInputStream(&inputStream)
131
134
, _outputStream(NULL )
132
135
, _decodedData()
136
+ , _filteredData()
133
137
, _transformedData()
134
138
, _inputDecoders()
135
139
, _generators()
@@ -170,6 +174,7 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
170
174
171
175
// buffers to process
172
176
_decodedData.push_back (new VideoFrame (_currentInputStream->getVideoCodec ().getVideoFrameDesc ()));
177
+ _filteredData.push_back (new VideoFrame (_currentInputStream->getVideoCodec ().getVideoFrameDesc ()));
173
178
_transformedData.push_back (new VideoFrame (outputVideo->getVideoCodec ().getVideoFrameDesc ()));
174
179
175
180
// transform
@@ -210,6 +215,7 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
210
215
inputFrameDesc._nbChannels = inputStreamDesc._channelIndexArray .size ();
211
216
212
217
_decodedData.push_back (new AudioFrame (inputFrameDesc));
218
+ _filteredData.push_back (new AudioFrame (inputFrameDesc));
213
219
_transformedData.push_back (new AudioFrame (outputAudio->getAudioCodec ().getAudioFrameDesc ()));
214
220
215
221
// transform
@@ -235,6 +241,7 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
235
241
, _currentInputStream(NULL )
236
242
, _outputStream(NULL )
237
243
, _decodedData()
244
+ , _filteredData()
238
245
, _transformedData()
239
246
, _inputDecoders()
240
247
, _generators()
@@ -264,6 +271,7 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
264
271
VideoFrameDesc outputFrameDesc = inputFrameDesc;
265
272
outputFrameDesc.setParameters (profile);
266
273
_decodedData.push_back (new VideoFrame (inputFrameDesc));
274
+ _filteredData.push_back (new VideoFrame (inputFrameDesc));
267
275
_transformedData.push_back (new VideoFrame (outputFrameDesc));
268
276
269
277
// transform
@@ -296,6 +304,7 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
296
304
AudioFrameDesc outputFrameDesc = inputFrameDesc;
297
305
outputFrameDesc.setParameters (profile);
298
306
_decodedData.push_back (new AudioFrame (inputFrameDesc));
307
+ _filteredData.push_back (new AudioFrame (inputFrameDesc));
299
308
_transformedData.push_back (new AudioFrame (outputFrameDesc));
300
309
301
310
// transform
@@ -321,6 +330,10 @@ StreamTranscoder::~StreamTranscoder()
321
330
{
322
331
delete (*it);
323
332
}
333
+ for (std::vector<Frame*>::iterator it = _filteredData.begin (); it != _filteredData.end (); ++it)
334
+ {
335
+ delete (*it);
336
+ }
324
337
for (std::vector<Frame*>::iterator it = _transformedData.begin (); it != _transformedData.end (); ++it)
325
338
{
326
339
delete (*it);
@@ -475,6 +488,7 @@ bool StreamTranscoder::processTranscode()
475
488
assert (_currentDecoder != NULL );
476
489
assert (_outputEncoder != NULL );
477
490
assert (! _decodedData.empty ());
491
+ assert (! _filteredData.empty ());
478
492
assert (! _transformedData.empty ());
479
493
assert (_transform != NULL );
480
494
@@ -491,10 +505,10 @@ bool StreamTranscoder::processTranscode()
491
505
if (decodingStatus)
492
506
{
493
507
LOG_DEBUG (" Filtering" )
494
- _filterGraph->process (_decodedData, *_decodedData .at (0 ));
508
+ _filterGraph->process (_decodedData, *_filteredData .at (0 ));
495
509
496
510
LOG_DEBUG (" Convert" )
497
- _transform->convert (*_decodedData .at (0 ), *_transformedData.at (0 ));
511
+ _transform->convert (*_filteredData .at (0 ), *_transformedData.at (0 ));
498
512
499
513
LOG_DEBUG (" Encode" )
500
514
_outputEncoder->encodeFrame (*_transformedData.at (0 ), data);
0 commit comments