1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-02-05 13:04:54 +02:00

Merge pull request #4278 from IvanSavenko/video_fixes

Video playback fixes
This commit is contained in:
Ivan Savenko 2024-07-18 21:18:39 +03:00 committed by GitHub
commit 37284efd74
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 9 deletions

View File

@ -741,7 +741,7 @@ BattleResultResources BattleResultWindow::getResources(const BattleResult & br)
else
{
resources.musicName = AudioPath::builtin("Music/Win Battle");
resources.prologueVideo = VideoPath();
resources.prologueVideo = VideoPath::builtin("WIN3.BIK");
resources.loopedVideo = VideoPath::builtin("WIN3.BIK");
}

View File

@ -494,7 +494,11 @@ std::pair<std::unique_ptr<ui8 []>, si64> CAudioInstance::extractAudio(const Vide
if (!openInput(videoToOpen))
return { nullptr, 0};
openContext();
openCodec(findAudioStream());
int audioStreamIndex = findAudioStream();
if (audioStreamIndex == -1)
return { nullptr, 0};
openCodec(audioStreamIndex);
const auto * codecpar = getCodecParameters();
@ -547,7 +551,7 @@ std::pair<std::unique_ptr<ui8 []>, si64> CAudioInstance::extractAudio(const Vide
ui16 NumOfChan = 2;
ui32 SamplesPerSec = 22050;
ui32 bytesPerSec = 22050 * 2;
ui16 blockAlign = 2;
ui16 blockAlign = 1;
ui16 bitsPerSample = 32;
ui8 Subchunk2ID[4] = {'d', 'a', 't', 'a'};
ui32 Subchunk2Size;
@ -582,7 +586,7 @@ bool CVideoPlayer::openAndPlayVideoImpl(const VideoPath & name, const Point & po
return true;
instance.openVideo();
instance.prepareOutput(scale, useOverlay);
instance.prepareOutput(scale, true);
auto lastTimePoint = boost::chrono::steady_clock::now();
@ -604,10 +608,7 @@ bool CVideoPlayer::openAndPlayVideoImpl(const VideoPath & name, const Point & po
rect.w = instance.dimensions.x;
rect.h = instance.dimensions.y;
if(useOverlay)
SDL_RenderFillRect(mainRenderer, &rect);
else
SDL_RenderClear(mainRenderer);
SDL_RenderFillRect(mainRenderer, &rect);
if(instance.textureYUV)
SDL_RenderCopy(mainRenderer, instance.textureYUV, nullptr, &rect);
@ -623,7 +624,6 @@ bool CVideoPlayer::openAndPlayVideoImpl(const VideoPath & name, const Point & po
auto timePointAfterPresent = boost::chrono::steady_clock::now();
auto timeSpentBusy = boost::chrono::duration_cast<boost::chrono::milliseconds>(timePointAfterPresent - lastTimePoint);
logGlobal->info("Sleeping for %d", (targetFrameTime - timeSpentBusy).count());
if(targetFrameTime > timeSpentBusy)
boost::this_thread::sleep_for(targetFrameTime - timeSpentBusy);