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 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 - 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 the 2.x era) loads again; spriteLoad reported "Blit combination not
supported" on it. Images with 16 bits per channel or floating point 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; SDL_Event event;
ManyMouseEvent mouseEvent; ManyMouseEvent mouseEvent;
MouseT *mouse = NULL; MouseT *mouse = NULL;
char *audioFile = NULL;
int32_t finished[SOUND_QUEUE_SIZE]; int32_t finished[SOUND_QUEUE_SIZE];
int32_t finishedCount = 0; 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); _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 frameFileSeek(_global.frameFileHandle, 0, &_global.videoHandle, &thisFrame); // Fills in _global.videoHandle
} else { } 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); videoSetVolume(_global.videoHandle, _global.conf->volumeVldp, _global.conf->volumeVldp);
_global.canvasWidth = videoGetWidth(_global.videoHandle); _global.canvasWidth = videoGetWidth(_global.videoHandle);