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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy