@@ -24,8 +24,8 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
24
24
, _inputStreams()
25
25
, _outputStream(NULL )
26
26
, _decodedData()
27
- , _filteredData()
28
- , _transformedData()
27
+ , _filteredData(NULL )
28
+ , _transformedData(NULL )
29
29
, _inputDecoders()
30
30
, _generators()
31
31
, _currentDecoder(NULL )
@@ -56,9 +56,9 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
56
56
_generators.push_back (new VideoGenerator ());
57
57
58
58
// buffers to process
59
- _decodedData.push_back (VideoFrame (inputFrameDesc));
60
- _filteredData = VideoFrame (inputFrameDesc);
61
- _transformedData = VideoFrame (inputFrameDesc);
59
+ _decodedData.push_back (new VideoFrame (inputFrameDesc));
60
+ _filteredData = new VideoFrame (inputFrameDesc);
61
+ _transformedData = new VideoFrame (inputFrameDesc);
62
62
63
63
// transform
64
64
_transform = new VideoTransform ();
@@ -92,9 +92,9 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
92
92
_generators.push_back (new AudioGenerator ());
93
93
94
94
// buffers to process
95
- _decodedData.push_back (AudioFrame (inputFrameDesc));
96
- _filteredData = AudioFrame (inputFrameDesc);
97
- _transformedData = AudioFrame (inputFrameDesc);
95
+ _decodedData.push_back (new AudioFrame (inputFrameDesc));
96
+ _filteredData = new AudioFrame (inputFrameDesc);
97
+ _transformedData = new AudioFrame (inputFrameDesc);
98
98
99
99
// transform
100
100
_transform = new AudioTransform ();
@@ -131,8 +131,8 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
131
131
, _inputStreams()
132
132
, _outputStream(NULL )
133
133
, _decodedData()
134
- , _filteredData()
135
- , _transformedData()
134
+ , _filteredData(NULL )
135
+ , _transformedData(NULL )
136
136
, _inputDecoders()
137
137
, _generators()
138
138
, _currentDecoder(NULL )
@@ -167,8 +167,8 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
167
167
_outputStream = &outputFile.addVideoStream (outputVideo->getVideoCodec ());
168
168
169
169
// buffers to process
170
- _filteredData = VideoFrame (inputStream.getVideoCodec ().getVideoFrameDesc ());
171
- _transformedData = VideoFrame (outputVideo->getVideoCodec ().getVideoFrameDesc ());
170
+ _filteredData = new VideoFrame (inputStream.getVideoCodec ().getVideoFrameDesc ());
171
+ _transformedData = new VideoFrame (outputVideo->getVideoCodec ().getVideoFrameDesc ());
172
172
173
173
// transform
174
174
_transform = new VideoTransform ();
@@ -198,8 +198,8 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
198
198
if (inputStreamDesc.demultiplexing ())
199
199
inputFrameDesc._nbChannels = inputStreamDesc._channelIndexArray .size ();
200
200
201
- _filteredData = AudioFrame (inputFrameDesc);
202
- _transformedData = AudioFrame (outputAudio->getAudioCodec ().getAudioFrameDesc ());
201
+ _filteredData = new AudioFrame (inputFrameDesc);
202
+ _transformedData = new AudioFrame (outputAudio->getAudioCodec ().getAudioFrameDesc ());
203
203
204
204
// transform
205
205
_transform = new AudioTransform ();
@@ -232,7 +232,7 @@ void StreamTranscoder::addDecoder(const InputStreamDesc& inputStreamDesc, IInput
232
232
_generators.push_back (new VideoGenerator ());
233
233
234
234
// buffers to process
235
- _decodedData.push_back (VideoFrame (inputStream.getVideoCodec ().getVideoFrameDesc ()));
235
+ _decodedData.push_back (new VideoFrame (inputStream.getVideoCodec ().getVideoFrameDesc ()));
236
236
237
237
break ;
238
238
}
@@ -252,7 +252,7 @@ void StreamTranscoder::addDecoder(const InputStreamDesc& inputStreamDesc, IInput
252
252
if (inputStreamDesc.demultiplexing ())
253
253
inputFrameDesc._nbChannels = inputStreamDesc._channelIndexArray .size ();
254
254
255
- _decodedData.push_back (AudioFrame (inputFrameDesc));
255
+ _decodedData.push_back (new AudioFrame (inputFrameDesc));
256
256
257
257
break ;
258
258
}
@@ -269,8 +269,8 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
269
269
, _inputStreams()
270
270
, _outputStream(NULL )
271
271
, _decodedData()
272
- , _filteredData()
273
- , _transformedData()
272
+ , _filteredData(NULL )
273
+ , _transformedData(NULL )
274
274
, _inputDecoders()
275
275
, _generators()
276
276
, _currentDecoder(NULL )
@@ -298,9 +298,9 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
298
298
// buffers to process
299
299
VideoFrameDesc outputFrameDesc = inputFrameDesc;
300
300
outputFrameDesc.setParameters (profile);
301
- _decodedData.push_back (VideoFrame (inputFrameDesc));
302
- _filteredData = VideoFrame (inputFrameDesc);
303
- _transformedData = VideoFrame (outputFrameDesc);
301
+ _decodedData.push_back (new VideoFrame (inputFrameDesc));
302
+ _filteredData = new VideoFrame (inputFrameDesc);
303
+ _transformedData = new VideoFrame (outputFrameDesc);
304
304
305
305
// transform
306
306
_transform = new VideoTransform ();
@@ -331,9 +331,9 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
331
331
// buffers to process
332
332
AudioFrameDesc outputFrameDesc = inputFrameDesc;
333
333
outputFrameDesc.setParameters (profile);
334
- _decodedData.push_back (AudioFrame (inputFrameDesc));
335
- _filteredData = AudioFrame (inputFrameDesc);
336
- _transformedData = AudioFrame (outputFrameDesc);
334
+ _decodedData.push_back (new AudioFrame (inputFrameDesc));
335
+ _filteredData = new AudioFrame (inputFrameDesc);
336
+ _transformedData = new AudioFrame (outputFrameDesc);
337
337
338
338
// transform
339
339
_transform = new AudioTransform ();
@@ -354,6 +354,13 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
354
354
355
355
StreamTranscoder::~StreamTranscoder ()
356
356
{
357
+ for (std::vector<Frame*>::iterator it = _decodedData.begin (); it != _decodedData.end (); ++it)
358
+ {
359
+ delete (*it);
360
+ }
361
+ delete _filteredData;
362
+ delete _transformedData;
363
+
357
364
for (std::vector<IDecoder*>::iterator it = _inputDecoders.begin (); it != _inputDecoders.end (); ++it)
358
365
{
359
366
delete (*it);
@@ -510,22 +517,22 @@ bool StreamTranscoder::processTranscode()
510
517
for (size_t index = 0 ; index < _inputDecoders.size (); ++index)
511
518
{
512
519
if (! _inputStreamDesc.empty () && _inputStreamDesc.at (index).demultiplexing ())
513
- decodingStatus = decodingStatus && _currentDecoder->decodeNextFrame (_decodedData.at (index), _inputStreamDesc.at (index)._channelIndexArray );
520
+ decodingStatus = decodingStatus && _currentDecoder->decodeNextFrame (* _decodedData.at (index), _inputStreamDesc.at (index)._channelIndexArray );
514
521
else
515
- decodingStatus = decodingStatus && _currentDecoder->decodeNextFrame (_decodedData.at (index));
522
+ decodingStatus = decodingStatus && _currentDecoder->decodeNextFrame (* _decodedData.at (index));
516
523
}
517
524
518
525
CodedData data;
519
526
if (decodingStatus)
520
527
{
521
528
LOG_DEBUG (" Filtering" )
522
- _filterGraph->process (_decodedData, _filteredData);
529
+ _filterGraph->process (_decodedData, * _filteredData);
523
530
524
531
LOG_DEBUG (" Convert" )
525
- _transform->convert (_filteredData, _transformedData);
532
+ _transform->convert (* _filteredData, * _transformedData);
526
533
527
534
LOG_DEBUG (" Encode" )
528
- _outputEncoder->encodeFrame (_transformedData, data);
535
+ _outputEncoder->encodeFrame (* _transformedData, data);
529
536
}
530
537
else
531
538
{
0 commit comments