shithub: m8c

ref: 02832de008c7e904f7d1a9847fc2f0094ff149d3
dir: /src/audio.c/

View raw version
// Copyright 2021 Jonne Kokkonen
// Released under the MIT licence, https://opensource.org/licenses/MIT
#ifndef USE_LIBUSB
#include "audio.h"
#include <SDL3/SDL.h>
#include <stdint.h>

static SDL_AudioDeviceID devid_in = 0;
static SDL_AudioDeviceID devid_out = 0;

static unsigned int audio_paused = 0;
static unsigned int audio_initialized = 0;

void toggle_audio(const unsigned int audio_buffer_size, const char *output_device_name) {
  /*if (!audio_initialized) {
    audio_init(audio_buffer_size, output_device_name);
    return;
  }
  audio_paused = !audio_paused;
  SDL_PauseAudioDevice(devid_in, audio_paused);
  SDL_PauseAudioDevice(devid_out, audio_paused);
  SDL_Log(audio_paused ? "Audio paused" : "Audio resumed");*/
}

void SDLCALL audio_cb_in(void *userdata, uint8_t *stream, int len) {
  /*(void)userdata; // suppress compiler warning
  SDL_QueueAudio(devid_out, stream, len);*/
}

int audio_init(const unsigned int audio_buffer_size, const char *output_device_name) {

  /*
  int m8_device_id = -1;

  // wait for system to initialize possible new audio devices
  SDL_Delay(500);

  const int devcount_in = SDL_GetNumAudioDevices(SDL_TRUE);

  if (devcount_in < 1) {
    SDL_Log("No audio capture devices, SDL Error: %s", SDL_GetError());
    return 0;
  }
  for (int i = 0; i < devcount_in; i++) {
    // Check if input device exists before doing anything else
    SDL_LogDebug(SDL_LOG_CATEGORY_AUDIO, "%s", SDL_GetAudioDeviceName(i, SDL_TRUE));
    if (SDL_strstr(SDL_GetAudioDeviceName(i, SDL_TRUE), "M8") != NULL) {
      SDL_Log("M8 Audio Input device found: %s", SDL_GetAudioDeviceName(i, SDL_TRUE));
      m8_device_id = i;
    }
  }
  if (m8_device_id == -1) {
    // forget about it
    SDL_Log("Cannot find M8 audio input device");
    return 0;
  }

  SDL_AudioSpec want_in, have_in, want_out, have_out;

  // Open output device first to avoid possible Directsound errors
  SDL_zero(want_out);
  want_out.freq = 44100;
  want_out.format = SDL_AUDIO_S16LE;
  want_out.channels = 2;
  devid_out =
      SDL_OpenAudioDevice(output_device_name, 0, &want_out, &have_out, SDL_AUDIO_ALLOW_ANY_CHANGE);
  if (devid_out == 0) {
    SDL_Log("Failed to open output: %s", SDL_GetError());
    return 0;
  }

  SDL_zero(want_in);
  want_in.freq = 44100;
  want_in.format = SDL_AUDIO_S16LE;
  want_in.channels = 2;
  devid_in = SDL_OpenAudioDevice(SDL_GetAudioDeviceName(m8_device_id, SDL_TRUE), SDL_TRUE, &want_in,
                                 &have_in, SDL_AUDIO_ALLOW_ANY_CHANGE);
  if (devid_in == 0) {
    SDL_Log("Failed to open M8 audio device, SDL Error: %s", SDL_GetError());
    return 0;
  }

  // Start audio processing
  SDL_Log("Opening audio devices");

  audio_paused = 0;
  audio_initialized = 1;

  return 1;*/
}

void audio_destroy() {
  /*if (!audio_initialized)
    return;
  SDL_Log("Closing audio devices");
  SDL_PauseAudioDevice(devid_in);
  SDL_PauseAudioDevice(devid_out);
  SDL_CloseAudioDevice(devid_in);
  SDL_CloseAudioDevice(devid_out);

  audio_initialized = 0;*/
}

#endif