Skip to content

Commit 9341a4c

Browse files
author
Clement Champetier
committed
StreamTranscoder: added _filteredData attribute
To have a buffer of filtered data.
1 parent 356c166 commit 9341a4c

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

src/AvTranscoder/filter/FilterGraph.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ void FilterGraph::process(const std::vector<Frame*>& inputs, Frame& output)
3939
{
4040
if(!hasFilters())
4141
{
42-
LOG_DEBUG("No filter to process.")
42+
LOG_DEBUG("No filter to process: reference first input frame to the given output.")
43+
output.refFrame(*inputs.at(0));
4344
return;
4445
}
4546

src/AvTranscoder/filter/FilterGraph.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class AvExport FilterGraph
4242

4343
/**
4444
* @brief Pull filtered data from the filter graph, and put result to the given frame.
45-
* @param inputs: input data buffers.
45+
* @param inputs: input data buffers (at least one).
4646
* @param output: output data buffer.
4747
* @note Do nothing if there was no filter added.
4848
* If there is one input buffer, the filter graph is a chain of effects: input -> filter 1 -> filter 2 -> output.

src/AvTranscoder/transcoder/StreamTranscoder.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
2525
, _currentInputStream(&inputStream)
2626
, _outputStream(NULL)
2727
, _decodedData()
28+
, _filteredData()
2829
, _transformedData()
2930
, _inputDecoders()
3031
, _generators()
@@ -57,6 +58,7 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
5758

5859
// buffers to process
5960
_decodedData.push_back(new VideoFrame(inputFrameDesc));
61+
_filteredData.push_back(new VideoFrame(inputFrameDesc));
6062
_transformedData.push_back(new VideoFrame(inputFrameDesc));
6163

6264
// transform
@@ -92,6 +94,7 @@ StreamTranscoder::StreamTranscoder(IInputStream& inputStream, IOutputFile& outpu
9294

9395
// buffers to process
9496
_decodedData.push_back(new AudioFrame(inputFrameDesc));
97+
_filteredData.push_back(new AudioFrame(inputFrameDesc));
9598
_transformedData.push_back(new AudioFrame(inputFrameDesc));
9699

97100
// transform
@@ -130,6 +133,7 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
130133
, _currentInputStream(&inputStream)
131134
, _outputStream(NULL)
132135
, _decodedData()
136+
, _filteredData()
133137
, _transformedData()
134138
, _inputDecoders()
135139
, _generators()
@@ -170,6 +174,7 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
170174

171175
// buffers to process
172176
_decodedData.push_back(new VideoFrame(_currentInputStream->getVideoCodec().getVideoFrameDesc()));
177+
_filteredData.push_back(new VideoFrame(_currentInputStream->getVideoCodec().getVideoFrameDesc()));
173178
_transformedData.push_back(new VideoFrame(outputVideo->getVideoCodec().getVideoFrameDesc()));
174179

175180
// transform
@@ -210,6 +215,7 @@ StreamTranscoder::StreamTranscoder(const InputStreamDesc& inputStreamDesc, IInpu
210215
inputFrameDesc._nbChannels = inputStreamDesc._channelIndexArray.size();
211216

212217
_decodedData.push_back(new AudioFrame(inputFrameDesc));
218+
_filteredData.push_back(new AudioFrame(inputFrameDesc));
213219
_transformedData.push_back(new AudioFrame(outputAudio->getAudioCodec().getAudioFrameDesc()));
214220

215221
// transform
@@ -235,6 +241,7 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
235241
, _currentInputStream(NULL)
236242
, _outputStream(NULL)
237243
, _decodedData()
244+
, _filteredData()
238245
, _transformedData()
239246
, _inputDecoders()
240247
, _generators()
@@ -264,6 +271,7 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
264271
VideoFrameDesc outputFrameDesc = inputFrameDesc;
265272
outputFrameDesc.setParameters(profile);
266273
_decodedData.push_back(new VideoFrame(inputFrameDesc));
274+
_filteredData.push_back(new VideoFrame(inputFrameDesc));
267275
_transformedData.push_back(new VideoFrame(outputFrameDesc));
268276

269277
// transform
@@ -296,6 +304,7 @@ StreamTranscoder::StreamTranscoder(IOutputFile& outputFile, const ProfileLoader:
296304
AudioFrameDesc outputFrameDesc = inputFrameDesc;
297305
outputFrameDesc.setParameters(profile);
298306
_decodedData.push_back(new AudioFrame(inputFrameDesc));
307+
_filteredData.push_back(new AudioFrame(inputFrameDesc));
299308
_transformedData.push_back(new AudioFrame(outputFrameDesc));
300309

301310
// transform
@@ -321,6 +330,10 @@ StreamTranscoder::~StreamTranscoder()
321330
{
322331
delete(*it);
323332
}
333+
for(std::vector<Frame*>::iterator it = _filteredData.begin(); it != _filteredData.end(); ++it)
334+
{
335+
delete(*it);
336+
}
324337
for(std::vector<Frame*>::iterator it = _transformedData.begin(); it != _transformedData.end(); ++it)
325338
{
326339
delete(*it);
@@ -475,6 +488,7 @@ bool StreamTranscoder::processTranscode()
475488
assert(_currentDecoder != NULL);
476489
assert(_outputEncoder != NULL);
477490
assert(! _decodedData.empty());
491+
assert(! _filteredData.empty());
478492
assert(! _transformedData.empty());
479493
assert(_transform != NULL);
480494

@@ -491,10 +505,10 @@ bool StreamTranscoder::processTranscode()
491505
if(decodingStatus)
492506
{
493507
LOG_DEBUG("Filtering")
494-
_filterGraph->process(_decodedData, *_decodedData.at(0));
508+
_filterGraph->process(_decodedData, *_filteredData.at(0));
495509

496510
LOG_DEBUG("Convert")
497-
_transform->convert(*_decodedData.at(0), *_transformedData.at(0));
511+
_transform->convert(*_filteredData.at(0), *_transformedData.at(0));
498512

499513
LOG_DEBUG("Encode")
500514
_outputEncoder->encodeFrame(*_transformedData.at(0), data);

src/AvTranscoder/transcoder/StreamTranscoder.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ class AvExport StreamTranscoder
128128
IOutputStream* _outputStream; ///< Output stream to wrap next packet (has link, no ownership)
129129

130130
std::vector<Frame*> _decodedData; ///< Buffer of decoded data (has ownership).
131+
std::vector<Frame*> _filteredData; ///< Buffer of filtered data (has ownership).
131132
std::vector<Frame*> _transformedData; ///< Buffer of transformed data (has ownership).
132133

133134
std::vector<IDecoder*> _inputDecoders; ///< Decoders of packets read from _inputStream (has ownership)

0 commit comments

Comments
 (0)