From 126d7511e0cd041241326df8e06cd448fe4eecaf Mon Sep 17 00:00:00 2001 From: ZarothYe Date: Sat, 26 Feb 2022 19:16:00 -0600 Subject: [PATCH] Fix parentheses mistake for retrieving streaming audio timings and apply code fix suggestions from Adam --- Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp | 2 +- Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp | 3 ++- Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.cpp | 4 ++-- Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.h | 4 +++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp b/Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp index a3a89af6..27bc2217 100644 --- a/Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp +++ b/Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp @@ -712,7 +712,7 @@ hsBool plDSoundBuffer::IsEAXAccelerated( void ) const UInt32 plDSoundBuffer::BytePosToMSecs(UInt32 bytePos) const { - return (UInt32)(bytePos / ((hsScalar)fBufferDesc->fAvgBytesPerSec) / 1000.0f); + return (UInt32)(bytePos / ((float)fBufferDesc->fAvgBytesPerSec / 1000.0f)); } //// GetBufferBytePos //////////////////////////////////////////////////////// diff --git a/Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp b/Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp index 0eebdfbc..2fcbe712 100644 --- a/Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp +++ b/Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp @@ -114,7 +114,8 @@ void plWin32Sound::Update() if (plgAudioSys::AreSubtitlesEnabled() && buf != nullptr) { plSrtFileReader* srtReader = buf->GetSrtReader(); if (srtReader != nullptr) { - while (plSrtEntry* nextEntry = srtReader->GetNextEntryStartingBeforeTime((uint32_t)(GetActualTimeSec() * 1000.0f))) { + uint32_t currentTimeMs = (uint32_t)(GetActualTimeSec() * 1000.0f); + while (plSrtEntry* nextEntry = srtReader->GetNextEntryStartingBeforeTime(currentTimeMs)) { // add a plSubtitleMsg to go... to whoever is listening (probably the KI) plSubtitleMsg* msg = new plSubtitleMsg(nextEntry->GetSubtitleText(), nextEntry->GetSpeakerName()); msg->Send(); diff --git a/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.cpp b/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.cpp index 01b53088..3208086c 100644 --- a/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.cpp +++ b/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.cpp @@ -64,7 +64,7 @@ bool plSrtFileReader::ReadFile() // if file exists and was opened successfully if (srtFileStream.Open(path, L"r")) { - plStatusLog::AddLineS("audio.log", "Successfully opened subtitle file {}", path); + plStatusLog::AddLineS("audio.log", "Successfully opened subtitle file %S", path); uint32_t subtitleNumber = 0; uint32_t subtitleStartTimeMs = 0; @@ -81,7 +81,7 @@ bool plSrtFileReader::ReadFile() if (std::regex_match(line, matches, timingsRegex)) { if (matches.size() < 9) { // add error message and ensure this subtitle line won't be added to the entries - plStatusLog::AddLineS("audio.log", plStatusLog::kRed, " Subtitle timings '{}' are formatted incorrectly.", line); + plStatusLog::AddLineS("audio.log", plStatusLog::kRed, " Subtitle timings '%s' are formatted incorrectly.", line); subtitleNumber = 0; } else { diff --git a/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.h b/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.h index f9e57210..94604f87 100644 --- a/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.h +++ b/Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.h @@ -50,6 +50,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #define _plSrtFileReader_h #include "hsTypes.h" +#include "../pnUtils/pnUtils.h" #include #include @@ -85,7 +86,8 @@ class plSrtFileReader public: plSrtFileReader(const char* audioFileName) - : fAudioFileName(std::move(audioFileName)), fEntries(), fCurrentEntryIndex() { } + : fAudioFileName(StrDup(audioFileName)), fCurrentEntryIndex(0) { } + virtual ~plSrtFileReader() { delete[] fAudioFileName; } bool ReadFile(); void StartOver() { fCurrentEntryIndex = 0; }