mirror of https://github.com/mgba-emu/mgba.git
Set buffer size to 512 samples in the SDL/GL port
This commit is contained in:
parent
e527220398
commit
6e727db553
|
@ -6,7 +6,7 @@
|
||||||
#include "gba-thread.h"
|
#include "gba-thread.h"
|
||||||
#include "gba-video.h"
|
#include "gba-video.h"
|
||||||
|
|
||||||
const unsigned GBA_AUDIO_SAMPLES = 512;
|
const unsigned GBA_AUDIO_SAMPLES = 2048;
|
||||||
const unsigned GBA_AUDIO_FIFO_SIZE = 8 * sizeof(int32_t);
|
const unsigned GBA_AUDIO_FIFO_SIZE = 8 * sizeof(int32_t);
|
||||||
#define SWEEP_CYCLES (GBA_ARM7TDMI_FREQUENCY / 128)
|
#define SWEEP_CYCLES (GBA_ARM7TDMI_FREQUENCY / 128)
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,7 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
struct GBAThread context = {
|
struct GBAThread context = {
|
||||||
.renderer = &renderer.d.d,
|
.renderer = &renderer.d.d,
|
||||||
|
.audioBuffers = 512,
|
||||||
.startCallback = _GBASDLStart,
|
.startCallback = _GBASDLStart,
|
||||||
.cleanCallback = _GBASDLClean,
|
.cleanCallback = _GBASDLClean,
|
||||||
.sync.videoFrameWait = 0,
|
.sync.videoFrameWait = 0,
|
||||||
|
@ -96,6 +97,9 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
GBAMapOptionsToContext(&opts, &context);
|
GBAMapOptionsToContext(&opts, &context);
|
||||||
|
|
||||||
|
renderer.audio.samples = context.audioBuffers;
|
||||||
|
GBASDLInitAudio(&renderer.audio);
|
||||||
|
|
||||||
GBAThreadStart(&context);
|
GBAThreadStart(&context);
|
||||||
|
|
||||||
_GBASDLRunloop(&context, &renderer);
|
_GBASDLRunloop(&context, &renderer);
|
||||||
|
@ -115,7 +119,6 @@ static int _GBASDLInit(struct GLSoftwareRenderer* renderer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
GBASDLInitEvents(&renderer->events);
|
GBASDLInitEvents(&renderer->events);
|
||||||
GBASDLInitAudio(&renderer->audio);
|
|
||||||
|
|
||||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||||
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
|
||||||
|
|
|
@ -16,7 +16,7 @@ bool GBASDLInitAudio(struct GBASDLAudio* context) {
|
||||||
context->desiredSpec.freq = 44100;
|
context->desiredSpec.freq = 44100;
|
||||||
context->desiredSpec.format = AUDIO_S16SYS;
|
context->desiredSpec.format = AUDIO_S16SYS;
|
||||||
context->desiredSpec.channels = 2;
|
context->desiredSpec.channels = 2;
|
||||||
context->desiredSpec.samples = BUFFER_SIZE;
|
context->desiredSpec.samples = context->samples;
|
||||||
context->desiredSpec.callback = _GBASDLAudioCallback;
|
context->desiredSpec.callback = _GBASDLAudioCallback;
|
||||||
context->desiredSpec.userdata = context;
|
context->desiredSpec.userdata = context;
|
||||||
context->audio = 0;
|
context->audio = 0;
|
||||||
|
|
|
@ -6,10 +6,15 @@
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
|
||||||
struct GBASDLAudio {
|
struct GBASDLAudio {
|
||||||
|
// Input
|
||||||
|
size_t samples;
|
||||||
|
|
||||||
|
// State
|
||||||
SDL_AudioSpec desiredSpec;
|
SDL_AudioSpec desiredSpec;
|
||||||
SDL_AudioSpec obtainedSpec;
|
SDL_AudioSpec obtainedSpec;
|
||||||
float drift;
|
float drift;
|
||||||
float ratio;
|
float ratio;
|
||||||
|
|
||||||
struct GBAAudio* audio;
|
struct GBAAudio* audio;
|
||||||
struct GBAThread* thread;
|
struct GBAThread* thread;
|
||||||
};
|
};
|
||||||
|
|
|
@ -79,6 +79,9 @@ int main(int argc, char** argv) {
|
||||||
|
|
||||||
GBAMapOptionsToContext(&opts, &context);
|
GBAMapOptionsToContext(&opts, &context);
|
||||||
|
|
||||||
|
renderer.audio.samples = context.audioBuffers;
|
||||||
|
GBASDLInitAudio(&renderer.audio);
|
||||||
|
|
||||||
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
#if SDL_VERSION_ATLEAST(2, 0, 0)
|
||||||
renderer.events.fullscreen = graphicsOpts.fullscreen;
|
renderer.events.fullscreen = graphicsOpts.fullscreen;
|
||||||
renderer.window = SDL_CreateWindow(PROJECT_NAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, renderer.viewportWidth, renderer.viewportHeight, SDL_WINDOW_OPENGL | (SDL_WINDOW_FULLSCREEN_DESKTOP * renderer.events.fullscreen));
|
renderer.window = SDL_CreateWindow(PROJECT_NAME, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, renderer.viewportWidth, renderer.viewportHeight, SDL_WINDOW_OPENGL | (SDL_WINDOW_FULLSCREEN_DESKTOP * renderer.events.fullscreen));
|
||||||
|
@ -145,7 +148,6 @@ static int _GBASDLInit(struct SoftwareRenderer* renderer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
GBASDLInitEvents(&renderer->events);
|
GBASDLInitEvents(&renderer->events);
|
||||||
GBASDLInitAudio(&renderer->audio);
|
|
||||||
|
|
||||||
#if !SDL_VERSION_ATLEAST(2, 0, 0)
|
#if !SDL_VERSION_ATLEAST(2, 0, 0)
|
||||||
#ifdef COLOR_16_BIT
|
#ifdef COLOR_16_BIT
|
||||||
|
|
Loading…
Reference in New Issue