Skip to content

Commit d4241d0

Browse files
committed
StreamTranscoder: fix output AudioFrameDesc when an encoder is specified
1 parent 5e16a85 commit d4241d0

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/AvTranscoder/transcoder/StreamTranscoder.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,20 +297,28 @@ StreamTranscoder::StreamTranscoder(const std::vector<InputStreamDesc>& inputStre
297297
_filterGraph->addFilter("amerge", mergeOptions.str());
298298
}
299299

300-
AudioCodec audioCodec(_outputEncoder->getCodec().getCodecType(), _outputEncoder->getCodec().getCodecId());
301-
AudioFrameDesc audioFrameDesc(48000, 1, "s32");
302-
audioCodec.setAudioParameters(audioFrameDesc);
300+
AudioFrameDesc inputFrameDesc(inputStream.getAudioCodec().getAudioFrameDesc());
303301

304302
// output stream
305-
_outputStream = &outputFile.addAudioStream(audioCodec);
303+
AudioCodec outputAudioCodec(_outputEncoder->getCodec().getCodecType(), _outputEncoder->getCodec().getCodecId());
304+
AudioFrameDesc outputAudioFrameDesc = outputAudioCodec.getAudioFrameDesc();
305+
if(outputAudioFrameDesc._sampleRate == 0) {
306+
outputAudioFrameDesc._sampleRate = inputFrameDesc._sampleRate;
307+
}
308+
if(outputAudioFrameDesc._sampleFormat == AV_SAMPLE_FMT_NONE) {
309+
outputAudioFrameDesc._sampleFormat = inputFrameDesc._sampleFormat;
310+
}
311+
outputAudioFrameDesc._nbChannels = nbOutputChannels;
312+
outputAudioCodec.setAudioParameters(outputAudioFrameDesc);
313+
314+
_outputStream = &outputFile.addAudioStream(outputAudioCodec);
306315

307316
// buffers to process
308-
AudioFrameDesc inputFrameDesc(inputStream.getAudioCodec().getAudioFrameDesc());
309317
if(inputStreamDesc.demultiplexing())
310318
inputFrameDesc._nbChannels = nbOutputChannels;
311319

312320
_filteredData = new AudioFrame(inputFrameDesc);
313-
_transformedData = new AudioFrame(audioFrameDesc);
321+
_transformedData = new AudioFrame(outputAudioFrameDesc);
314322

315323
// transform
316324
_transform = new AudioTransform();

0 commit comments

Comments
 (0)