M2V/OGG pairs now properly play audio when not in a framefile.

This commit is contained in:
Scott Duensing 2026-09-11 00:04:13 -05:00
parent 5bf69bb402
commit 9af9f7e35e
2 changed files with 13 additions and 1 deletions

View file

@ -832,6 +832,12 @@ API Changes
Fixes
-----
- A lone .m2v played with --framefile now finds the .ogg beside it, as a
framefile's segments always have. A Daphne era elementary stream
carries no audio of its own, so lair.m2v played silently unless it was
listed in a framefile or --altaudio was given. Any other container
keeps using the audio inside it.
- A single-frame image saved as a 1-bit PNG (many overlay assets from
the 2.x era) loads again; spriteLoad reported "Blit combination not
supported" on it. Images with 16 bits per channel or floating point

View file

@ -14412,6 +14412,7 @@ void singe(SDL_Window *window, SDL_Renderer *renderer, SDL_GPUDevice *device, Co
SDL_Event event;
ManyMouseEvent mouseEvent;
MouseT *mouse = NULL;
char *audioFile = NULL;
int32_t finished[SOUND_QUEUE_SIZE];
int32_t finishedCount = 0;
@ -14464,7 +14465,12 @@ void singe(SDL_Window *window, SDL_Renderer *renderer, SDL_GPUDevice *device, Co
_global.frameFileHandle = frameFileLoad(_global.conf->videoFile, _global.conf->dataDir, _global.renderer, _global.conf->showCalculated);
frameFileSeek(_global.frameFileHandle, 0, &_global.videoHandle, &thisFrame); // Fills in _global.videoHandle
} else {
_global.videoHandle = videoLoad(_global.conf->videoFile, NULL, _global.conf->dataDir, _global.renderer, false);
// A lone .m2v is a Daphne era elementary stream with no audio of its own; its sound is
// the .ogg beside it, which is the same sidecar a framefile's segments look for. Any
// other container keeps the audio inside it, and frameFileAudioName answers NULL.
audioFile = frameFileAudioName(_global.conf->videoFile, _startAudioSuffix());
_global.videoHandle = videoLoad(_global.conf->videoFile, audioFile, _global.conf->dataDir, _global.renderer, false);
free(audioFile);
}
videoSetVolume(_global.videoHandle, _global.conf->volumeVldp, _global.conf->volumeVldp);
_global.canvasWidth = videoGetWidth(_global.videoHandle);