Browse Source

Fix parentheses mistake for retrieving streaming audio timings and apply code fix suggestions from Adam

(cherry picked from commit 126d7511e0)
working_subtitles
ZarothYe 3 years ago committed by rarified
parent
commit
d3fb073fed
  1. 2
      Sources/Plasma/PubUtilLib/plAudio/plDSoundBuffer.cpp
  2. 3
      Sources/Plasma/PubUtilLib/plAudio/plWin32Sound.cpp
  3. 4
      Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.cpp
  4. 4
      Sources/Plasma/PubUtilLib/plAudioCore/plSrtFileReader.h

2
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 ////////////////////////////////////////////////////////

3
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();

4
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 {

4
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 <cstdint>
#include <vector>
@ -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; }

Loading…
Cancel
Save