From bc773ef09f231ce78e567c9887826a588e3ad414 Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Sat, 8 Aug 2026 20:00:14 -0600 Subject: [PATCH 1/7] bugfix(audio): Reapply Bink movie volume every frame Fixes #2850. Movie audio ignored the Options volume sliders because BinkSetVolume was called once in createStream(), before Bink's audio output had started, so it never took effect. Extract the volume calc into calculateMovieAudioVolume() and reapply it on every decoded frame in frameDecompress() so it takes effect and tracks live slider changes. --- .../VideoDevice/Bink/BinkVideoPlayer.h | 4 +++ .../VideoDevice/Bink/BinkVideoPlayer.cpp | 36 +++++++++++++++---- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h index 38047636245..1d0d1f51e5d 100644 --- a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h +++ b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h @@ -108,6 +108,10 @@ class BinkVideoPlayer : public VideoPlayer public: + // TheSuperHackers @bugfix Compute the Bink volume for the current speech + // volume setting. Shared by stream creation and per-frame volume refresh. + static Int calculateMovieAudioVolume(); + // subsytem requirements virtual void init() override; ///< Initialize video playback code virtual void reset() override; ///< Reset video playback diff --git a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp index ebbc91179c1..a2468ed2577 100644 --- a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp +++ b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp @@ -202,18 +202,31 @@ VideoStreamInterface* BinkVideoPlayer::createStream( HBINK handle ) stream->m_player = this; m_firstStream = stream; - // never let volume go to 0, as Bink will interpret that as "play at full volume". - Int mod = (Int) ((TheAudio->getVolume(AudioAffect_Speech) * 0.8f) * 100) + 1; - Int volume = (32768*mod)/100; - DEBUG_LOG(("BinkVideoPlayer::createStream() - About to set volume (%g -> %d -> %d", - TheAudio->getVolume(AudioAffect_Speech), mod, volume)); - BinkSetVolume( stream->m_handle,0, volume); + BinkSetVolume( stream->m_handle, 0, calculateMovieAudioVolume() ); DEBUG_LOG(("BinkVideoPlayer::createStream() - set volume")); } return stream; } +//============================================================================ +// BinkVideoPlayer::calculateMovieAudioVolume +//============================================================================ + +Int BinkVideoPlayer::calculateMovieAudioVolume() +{ + if (TheAudio == nullptr) + { + return 0; + } + + // Never let volume go to 0, as Bink will interpret that as "play at full + // volume". Floor at 1 out of 32768 (~-90dB, effectively silent) instead of + // the old floor of ~327, which was clearly audible at a 0 speech slider. + Int mod = (Int) ((TheAudio->getVolume(AudioAffect_Speech) * 0.8f) * 100) + 1; + return (32768*mod)/100; +} + //============================================================================ // BinkVideoPlayer::open //============================================================================ @@ -342,7 +355,16 @@ Bool BinkVideoStream::isFrameReady() void BinkVideoStream::frameDecompress() { - BinkDoFrame( m_handle ); + BinkDoFrame( m_handle ); + + // Reapply the volume every decoded frame. BinkSetVolume only takes effect + // reliably once Bink's audio output is actually running, so the one-shot + // call in createStream() (before the first frame) never stuck. Refreshing + // here also picks up live volume slider changes during playback. + if ( m_player != nullptr ) + { + BinkSetVolume( m_handle, 0, BinkVideoPlayer::calculateMovieAudioVolume() ); + } } //============================================================================ From b34a88cb1e2af7b9679a96427f5eb8827fa83ba4 Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Sun, 9 Aug 2026 07:37:03 -0600 Subject: [PATCH 2/7] docs(audio): Correct Bink volume comments per review Fix the floor comment (formula is unchanged from retail, floor is 327 not 1) and drop the live-slider-change claim from the per-frame comment; the Options menu isn't reachable during movie playback. The reason to reapply every frame is that the one-shot createStream() call ran before Bink's audio output started, so it never took effect. --- .../Source/VideoDevice/Bink/BinkVideoPlayer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp index a2468ed2577..7ce64aa0f6b 100644 --- a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp +++ b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp @@ -221,8 +221,8 @@ Int BinkVideoPlayer::calculateMovieAudioVolume() } // Never let volume go to 0, as Bink will interpret that as "play at full - // volume". Floor at 1 out of 32768 (~-90dB, effectively silent) instead of - // the old floor of ~327, which was clearly audible at a 0 speech slider. + // volume". Floor at 327 out of 32768 (~1%), effectively silent. This is + // retail's formula, unchanged. Int mod = (Int) ((TheAudio->getVolume(AudioAffect_Speech) * 0.8f) * 100) + 1; return (32768*mod)/100; } @@ -357,10 +357,10 @@ void BinkVideoStream::frameDecompress() { BinkDoFrame( m_handle ); - // Reapply the volume every decoded frame. BinkSetVolume only takes effect - // reliably once Bink's audio output is actually running, so the one-shot - // call in createStream() (before the first frame) never stuck. Refreshing - // here also picks up live volume slider changes during playback. + // Reapply the volume on every decoded frame. The one-shot BinkSetVolume in + // createStream() runs before Bink's audio output has started, so it never + // actually took effect. Reapplying once audio is running is what makes the + // setting stick. if ( m_player != nullptr ) { BinkSetVolume( m_handle, 0, BinkVideoPlayer::calculateMovieAudioVolume() ); From 53f7abd7c7513a9b1dc0160c9dfdc21cedc1915a Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Sun, 9 Aug 2026 14:13:18 -0600 Subject: [PATCH 3/7] refactor(audio): Apply Bink volume once on first decoded frame Per review: don't reapply the volume every frame. The original defect was that BinkSetVolume ran in createStream(), before Bink's audio output existed, so it was discarded. Apply it once on the first BinkDoFrame(), the earliest point it can actually take effect. Drops the createStream() call and the per-frame poll in favor of a one-shot latch. --- .../Include/VideoDevice/Bink/BinkVideoPlayer.h | 5 +++-- .../Source/VideoDevice/Bink/BinkVideoPlayer.cpp | 15 +++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h index 1d0d1f51e5d..6759119d036 100644 --- a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h +++ b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h @@ -68,8 +68,9 @@ class BinkVideoStream : public VideoStream protected: - HBINK m_handle; ///< Bink streaming handle; - Char *m_memFile; ///< Pointer to memory resident file + HBINK m_handle; ///< Bink streaming handle; + Char *m_memFile; ///< Pointer to memory resident file + Bool m_volumeSet; ///< True once the movie volume has been applied BinkVideoStream(); ///< only BinkVideoPlayer can create these virtual ~BinkVideoStream() override; diff --git a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp index 7ce64aa0f6b..43d42a598ab 100644 --- a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp +++ b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp @@ -201,9 +201,6 @@ VideoStreamInterface* BinkVideoPlayer::createStream( HBINK handle ) stream->m_next = m_firstStream; stream->m_player = this; m_firstStream = stream; - - BinkSetVolume( stream->m_handle, 0, calculateMovieAudioVolume() ); - DEBUG_LOG(("BinkVideoPlayer::createStream() - set volume")); } return stream; @@ -314,6 +311,7 @@ void BinkVideoPlayer::initializeBinkWithMiles() BinkVideoStream::BinkVideoStream() : m_handle(nullptr) +, m_volumeSet(FALSE) { } @@ -357,13 +355,14 @@ void BinkVideoStream::frameDecompress() { BinkDoFrame( m_handle ); - // Reapply the volume on every decoded frame. The one-shot BinkSetVolume in - // createStream() runs before Bink's audio output has started, so it never - // actually took effect. Reapplying once audio is running is what makes the - // setting stick. - if ( m_player != nullptr ) + // Apply the volume on the first decoded frame. Setting it in createStream() + // is too early: Bink's audio output is not running yet, so the volume is + // discarded. The first BinkDoFrame() is when audio output actually starts, + // so that is the earliest the volume can be applied and stick. + if ( !m_volumeSet ) { BinkSetVolume( m_handle, 0, BinkVideoPlayer::calculateMovieAudioVolume() ); + m_volumeSet = TRUE; } } From d46e4b3e6778a14d51d4c19dba8514ff839e73ee Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Mon, 10 Aug 2026 07:46:16 -0600 Subject: [PATCH 4/7] fixup(audio): Address Skyaero42 review on Bink volume helper - Return the 327 floor instead of 0 on the null-audio path so it does not trip Bink's 'play at full volume' quirk. - Trim the redundant formula comment. - Restore retail tab alignment on m_handle/m_memFile and align m_volumeSet. --- .../Include/VideoDevice/Bink/BinkVideoPlayer.h | 2 +- .../Source/VideoDevice/Bink/BinkVideoPlayer.cpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h index 6759119d036..6ef49d61cde 100644 --- a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h +++ b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h @@ -70,7 +70,7 @@ class BinkVideoStream : public VideoStream HBINK m_handle; ///< Bink streaming handle; Char *m_memFile; ///< Pointer to memory resident file - Bool m_volumeSet; ///< True once the movie volume has been applied + Bool m_volumeSet; ///< True once the movie volume has been applied BinkVideoStream(); ///< only BinkVideoPlayer can create these virtual ~BinkVideoStream() override; diff --git a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp index 43d42a598ab..6690e707e9c 100644 --- a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp +++ b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp @@ -214,12 +214,11 @@ Int BinkVideoPlayer::calculateMovieAudioVolume() { if (TheAudio == nullptr) { - return 0; + return 327; } // Never let volume go to 0, as Bink will interpret that as "play at full - // volume". Floor at 327 out of 32768 (~1%), effectively silent. This is - // retail's formula, unchanged. + // volume". Int mod = (Int) ((TheAudio->getVolume(AudioAffect_Speech) * 0.8f) * 100) + 1; return (32768*mod)/100; } From 9130511678ae9200568522778d4937b4e42ec146 Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Mon, 10 Aug 2026 12:28:45 -0600 Subject: [PATCH 5/7] refactor(audio): Push speech volume to Bink movies instead of polling Per xezon's review. Replace the per-frame latch with a push model: - VideoPlayerInterface gains a setVolume(Real) virtual (no-op default in VideoPlayer); BinkVideoPlayer overrides it to push the volume to every open stream's Bink audio output. - MilesAudioManager::processPlayingList() pushes the speech volume to TheVideoPlayer whenever the volume changes, so movies that bypass the Miles mixer follow the sliders. - BinkVideoPlayer::update() applies the volume once on the first frame a stream exists, fixing the original too-early set in createStream() (Bink's audio output is not running yet at creation, so it was lost). - calculateMovieAudioVolume() now takes the speech volume as a parameter. --- .../Include/GameClient/VideoPlayer.h | 4 ++ .../VideoDevice/Bink/BinkVideoPlayer.h | 10 ++-- .../MilesAudioDevice/MilesAudioManager.cpp | 6 +++ .../VideoDevice/Bink/BinkVideoPlayer.cpp | 48 +++++++++++-------- 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/Core/GameEngine/Include/GameClient/VideoPlayer.h b/Core/GameEngine/Include/GameClient/VideoPlayer.h index 98a7d4c8d67..4ac77a4b9dd 100644 --- a/Core/GameEngine/Include/GameClient/VideoPlayer.h +++ b/Core/GameEngine/Include/GameClient/VideoPlayer.h @@ -245,6 +245,8 @@ class VideoPlayerInterface : public SubsystemInterface virtual const FieldParse *getFieldParse() const = 0; ///< Return the field parse info virtual void notifyVideoPlayerOfNewProvider( Bool nowHasValid ) = 0; ///< Notify the video player that they can now ask for an audio handle, or they need to give theirs up. + + virtual void setVolume( Real volume ) = 0; ///< Push a new speech volume to the video player's audio output }; @@ -294,6 +296,8 @@ class VideoPlayer : public VideoPlayerInterface virtual void notifyVideoPlayerOfNewProvider( Bool nowHasValid ) override { } + virtual void setVolume( Real volume ) override { } + // Implementation specific void remove( VideoStream *stream ); ///< remove stream from active list diff --git a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h index 6ef49d61cde..473fa716e79 100644 --- a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h +++ b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h @@ -107,11 +107,9 @@ class BinkVideoPlayer : public VideoPlayer VideoStreamInterface* createStream( HBINK handle ); - public: + Bool m_volumeApplied; ///< True once the movie volume has been applied to a live audio output - // TheSuperHackers @bugfix Compute the Bink volume for the current speech - // volume setting. Shared by stream creation and per-frame volume refresh. - static Int calculateMovieAudioVolume(); + public: // subsytem requirements virtual void init() override; ///< Initialize video playback code @@ -131,7 +129,11 @@ class BinkVideoPlayer : public VideoPlayer virtual VideoStreamInterface* open( AsciiString movieTitle ) override; ///< Open video file for playback virtual VideoStreamInterface* load( AsciiString movieTitle ) override; ///< Load video file in to memory for playback + // TheSuperHackers @bugfix Compute the Bink volume for a given speech volume. + static Int calculateMovieAudioVolume( Real speechVolume ); + virtual void notifyVideoPlayerOfNewProvider( Bool nowHasValid ) override; + virtual void setVolume( Real volume ) override; virtual void initializeBinkWithMiles(); }; diff --git a/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp b/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp index 23a2cfef6ee..4f302dca1f4 100644 --- a/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp +++ b/Core/GameEngineDevice/Source/MilesAudioDevice/MilesAudioManager.cpp @@ -2269,6 +2269,12 @@ void MilesAudioManager::processPlayingList() if (m_volumeHasChanged) { m_volumeHasChanged = false; + + // Push the new speech volume to any playing movie's audio output, which + // bypasses the Miles mixer and so does not see volume changes on its own. + if (TheVideoPlayer) { + TheVideoPlayer->setVolume(getVolume(AudioAffect_Speech)); + } } } diff --git a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp index 6690e707e9c..5fb9d1a6abf 100644 --- a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp +++ b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp @@ -108,6 +108,7 @@ //============================================================================ BinkVideoPlayer::BinkVideoPlayer() +: m_volumeApplied(FALSE) { } @@ -160,6 +161,15 @@ void BinkVideoPlayer::update() { VideoPlayer::update(); + // Apply the volume once a stream's audio output is actually running. Setting + // it in createStream() is too early: Bink's audio output is not up yet, so + // the volume is discarded. By the first update() with a live stream the audio + // output exists, so the set sticks. + if ( !m_volumeApplied && firstStream() != nullptr ) + { + setVolume( TheAudio->getVolume(AudioAffect_Speech) ); + m_volumeApplied = TRUE; + } } //============================================================================ @@ -201,6 +211,8 @@ VideoStreamInterface* BinkVideoPlayer::createStream( HBINK handle ) stream->m_next = m_firstStream; stream->m_player = this; m_firstStream = stream; + + BinkSetVolume( stream->m_handle, 0, calculateMovieAudioVolume(TheAudio->getVolume(AudioAffect_Speech)) ); } return stream; @@ -210,19 +222,28 @@ VideoStreamInterface* BinkVideoPlayer::createStream( HBINK handle ) // BinkVideoPlayer::calculateMovieAudioVolume //============================================================================ -Int BinkVideoPlayer::calculateMovieAudioVolume() +Int BinkVideoPlayer::calculateMovieAudioVolume( Real speechVolume ) { - if (TheAudio == nullptr) - { - return 327; - } - // Never let volume go to 0, as Bink will interpret that as "play at full // volume". - Int mod = (Int) ((TheAudio->getVolume(AudioAffect_Speech) * 0.8f) * 100) + 1; + Int mod = (Int) ((speechVolume * 0.8f) * 100) + 1; return (32768*mod)/100; } +//============================================================================ +// BinkVideoPlayer::setVolume +//============================================================================ + +void BinkVideoPlayer::setVolume( Real volume ) +{ + // Push the new volume to every open stream's audio output. + Int binkVolume = calculateMovieAudioVolume( volume ); + for ( VideoStreamInterface *stream = firstStream(); stream != nullptr; stream = stream->next() ) + { + BinkSetVolume( static_cast( stream )->m_handle, 0, binkVolume ); + } +} + //============================================================================ // BinkVideoPlayer::open //============================================================================ @@ -310,7 +331,6 @@ void BinkVideoPlayer::initializeBinkWithMiles() BinkVideoStream::BinkVideoStream() : m_handle(nullptr) -, m_volumeSet(FALSE) { } @@ -352,17 +372,7 @@ Bool BinkVideoStream::isFrameReady() void BinkVideoStream::frameDecompress() { - BinkDoFrame( m_handle ); - - // Apply the volume on the first decoded frame. Setting it in createStream() - // is too early: Bink's audio output is not running yet, so the volume is - // discarded. The first BinkDoFrame() is when audio output actually starts, - // so that is the earliest the volume can be applied and stick. - if ( !m_volumeSet ) - { - BinkSetVolume( m_handle, 0, BinkVideoPlayer::calculateMovieAudioVolume() ); - m_volumeSet = TRUE; - } + BinkDoFrame( m_handle ); } //============================================================================ From 87a335d20b5e445977a3e6e95411dab6d46c2b3c Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Mon, 10 Aug 2026 14:28:08 -0600 Subject: [PATCH 6/7] fixup(audio): Remove stale Bink volume state --- .../Include/VideoDevice/Bink/BinkVideoPlayer.h | 7 ++----- .../Source/VideoDevice/Bink/BinkVideoPlayer.cpp | 11 ----------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h index 473fa716e79..8330c219cb5 100644 --- a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h +++ b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h @@ -68,9 +68,8 @@ class BinkVideoStream : public VideoStream protected: - HBINK m_handle; ///< Bink streaming handle; - Char *m_memFile; ///< Pointer to memory resident file - Bool m_volumeSet; ///< True once the movie volume has been applied + HBINK m_handle; ///< Bink streaming handle; + Char *m_memFile; ///< Pointer to memory resident file BinkVideoStream(); ///< only BinkVideoPlayer can create these virtual ~BinkVideoStream() override; @@ -107,8 +106,6 @@ class BinkVideoPlayer : public VideoPlayer VideoStreamInterface* createStream( HBINK handle ); - Bool m_volumeApplied; ///< True once the movie volume has been applied to a live audio output - public: // subsytem requirements diff --git a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp index 5fb9d1a6abf..3aaeec376f2 100644 --- a/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp +++ b/Core/GameEngineDevice/Source/VideoDevice/Bink/BinkVideoPlayer.cpp @@ -108,7 +108,6 @@ //============================================================================ BinkVideoPlayer::BinkVideoPlayer() -: m_volumeApplied(FALSE) { } @@ -160,16 +159,6 @@ void BinkVideoPlayer::reset() void BinkVideoPlayer::update() { VideoPlayer::update(); - - // Apply the volume once a stream's audio output is actually running. Setting - // it in createStream() is too early: Bink's audio output is not up yet, so - // the volume is discarded. By the first update() with a live stream the audio - // output exists, so the set sticks. - if ( !m_volumeApplied && firstStream() != nullptr ) - { - setVolume( TheAudio->getVolume(AudioAffect_Speech) ); - m_volumeApplied = TRUE; - } } //============================================================================ From 7ed80ac80814d8a7b5a91e2cd3962084eeac8abc Mon Sep 17 00:00:00 2001 From: Jacob Ledbetter Date: Tue, 11 Aug 2026 09:43:15 -0600 Subject: [PATCH 7/7] fixup(audio): Make Bink volume helper private --- .../Include/VideoDevice/Bink/BinkVideoPlayer.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h index 8330c219cb5..fff5709d993 100644 --- a/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h +++ b/Core/GameEngineDevice/Include/VideoDevice/Bink/BinkVideoPlayer.h @@ -101,6 +101,10 @@ class BinkVideoStream : public VideoStream class BinkVideoPlayer : public VideoPlayer { + private: + + // TheSuperHackers @bugfix Compute the Bink volume for a given speech volume. + static Int calculateMovieAudioVolume( Real speechVolume ); protected: @@ -126,9 +130,6 @@ class BinkVideoPlayer : public VideoPlayer virtual VideoStreamInterface* open( AsciiString movieTitle ) override; ///< Open video file for playback virtual VideoStreamInterface* load( AsciiString movieTitle ) override; ///< Load video file in to memory for playback - // TheSuperHackers @bugfix Compute the Bink volume for a given speech volume. - static Int calculateMovieAudioVolume( Real speechVolume ); - virtual void notifyVideoPlayerOfNewProvider( Bool nowHasValid ) override; virtual void setVolume( Real volume ) override; virtual void initializeBinkWithMiles();