From 82539ae3f03459db3069c9c3ef552098d42fe41e Mon Sep 17 00:00:00 2001 From: manongjohn Date: Mar 30 2023 23:09:48 +0000 Subject: Fix mixing multiple audio + rendering 32bit float --- diff --git a/toonz/sources/common/tsound/tsound.cpp b/toonz/sources/common/tsound/tsound.cpp index 92eefea..1bb7c48 100644 --- a/toonz/sources/common/tsound/tsound.cpp +++ b/toonz/sources/common/tsound/tsound.cpp @@ -37,7 +37,8 @@ TSoundTrack::TSoundTrack(TUINT32 sampleRate, int bitPerSample, int channelCount, , m_sampleCount(sampleCount) , m_channelCount(channelCount) , m_parent(0) - , m_bufferOwner(true) { + , m_bufferOwner(true) + , m_sampleType(sampleType) { m_buffer = (UCHAR *)malloc(sampleCount * m_sampleSize); if (!m_buffer) return; diff --git a/toonz/sources/image/ffmpeg/tiio_ffmpeg.cpp b/toonz/sources/image/ffmpeg/tiio_ffmpeg.cpp index 34beb18..b4f6f05 100644 --- a/toonz/sources/image/ffmpeg/tiio_ffmpeg.cpp +++ b/toonz/sources/image/ffmpeg/tiio_ffmpeg.cpp @@ -191,7 +191,8 @@ void Ffmpeg::saveSoundTrack(TSoundTrack *st) { m_audioPath = getFfmpegCache().getQString() + "//" + QString::fromStdString(m_path.getName()) + "tempOut.raw"; - m_audioFormat = "s" + QString::number(m_bitsPerSample); + m_audioFormat = ((st->getSampleType() == TSound::FLOAT) ? "f" : "s") + + QString::number(m_bitsPerSample); if (m_bitsPerSample > 8) m_audioFormat = m_audioFormat + "le"; std::string strPath = m_audioPath.toStdString(); diff --git a/toonz/sources/toonzlib/txshsoundcolumn.cpp b/toonz/sources/toonzlib/txshsoundcolumn.cpp index 900145f..34b2c73 100644 --- a/toonz/sources/toonzlib/txshsoundcolumn.cpp +++ b/toonz/sources/toonzlib/txshsoundcolumn.cpp @@ -1079,12 +1079,8 @@ TSoundTrackP TXshSoundColumn::getOverallSoundTrack(int fromFrame, int toFrame, if (s1 > 0 && s1 >= s0) { soundTrack = soundTrack->extract(s0, s1); - if (format.m_sampleType != TSound::FLOAT) - overallSoundTrack->copy( - soundTrack, int((levelStartFrame - fromFrame) * samplePerFrame)); - else - overallSoundTrack->copy( - soundTrack, double((levelStartFrame - fromFrame) * samplePerFrame)); + overallSoundTrack->copy( + soundTrack, int((levelStartFrame - fromFrame) * samplePerFrame)); } } return overallSoundTrack;