mirror of
https://github.com/Ryujinx/libsoundio.git
synced 2024-12-22 22:15:29 +00:00
WASAPI skeleton
This commit is contained in:
parent
34ba7e7564
commit
21bf405859
|
@ -77,6 +77,16 @@ else()
|
||||||
set(AUDIOUNIT_LIBRARY "")
|
set(AUDIOUNIT_LIBRARY "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
find_package(WASAPI)
|
||||||
|
if(WASAPI_FOUND)
|
||||||
|
set(STATUS_WASAPI "OK")
|
||||||
|
set(SOUNDIO_HAVE_WASAPI true)
|
||||||
|
else()
|
||||||
|
set(STATUS_WASAPI "not found")
|
||||||
|
set(SOUNDIO_HAVE_WASAPI false)
|
||||||
|
set(WASAPI_LIBRARIES "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
set(LIBSOUNDIO_SOURCES
|
set(LIBSOUNDIO_SOURCES
|
||||||
"${CMAKE_SOURCE_DIR}/src/soundio.cpp"
|
"${CMAKE_SOURCE_DIR}/src/soundio.cpp"
|
||||||
|
@ -136,6 +146,14 @@ if(SOUNDIO_HAVE_COREAUDIO)
|
||||||
"${CMAKE_SOURCE_DIR}/src/coreaudio.cpp"
|
"${CMAKE_SOURCE_DIR}/src/coreaudio.cpp"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
if(SOUNDIO_HAVE_WASAPI)
|
||||||
|
set(LIBSOUNDIO_SOURCES ${LIBSOUNDIO_SOURCES}
|
||||||
|
"${CMAKE_SOURCE_DIR}/src/wasapi.cpp"
|
||||||
|
)
|
||||||
|
set(TEST_SOURCES ${TEST_SOURCES}
|
||||||
|
"${CMAKE_SOURCE_DIR}/src/wasapi.cpp"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# GTFO, -lstdc++ !!
|
# GTFO, -lstdc++ !!
|
||||||
|
@ -186,6 +204,7 @@ target_link_libraries(libsoundio_shared LINK_PUBLIC
|
||||||
${COREAUDIO_LIBRARY}
|
${COREAUDIO_LIBRARY}
|
||||||
${COREFOUNDATION_LIBRARY}
|
${COREFOUNDATION_LIBRARY}
|
||||||
${AUDIOUNIT_LIBRARY}
|
${AUDIOUNIT_LIBRARY}
|
||||||
|
${WASAPI_LIBRARIES}
|
||||||
m
|
m
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
)
|
)
|
||||||
|
@ -242,6 +261,7 @@ target_link_libraries(unit_tests LINK_PUBLIC
|
||||||
${COREAUDIO_LIBRARY}
|
${COREAUDIO_LIBRARY}
|
||||||
${COREFOUNDATION_LIBRARY}
|
${COREFOUNDATION_LIBRARY}
|
||||||
${AUDIOUNIT_LIBRARY}
|
${AUDIOUNIT_LIBRARY}
|
||||||
|
${WASAPI_LIBRARIES}
|
||||||
m
|
m
|
||||||
)
|
)
|
||||||
set_target_properties(unit_tests PROPERTIES
|
set_target_properties(unit_tests PROPERTIES
|
||||||
|
@ -289,4 +309,5 @@ message(
|
||||||
"* PulseAudio (optional) : ${STATUS_PULSEAUDIO}\n"
|
"* PulseAudio (optional) : ${STATUS_PULSEAUDIO}\n"
|
||||||
"* ALSA (optional) : ${STATUS_ALSA}\n"
|
"* ALSA (optional) : ${STATUS_ALSA}\n"
|
||||||
"* CoreAudio (optional) : ${STATUS_COREAUDIO}\n"
|
"* CoreAudio (optional) : ${STATUS_COREAUDIO}\n"
|
||||||
|
"* WASAPI (optional) : ${STATUS_WASAPI}\n"
|
||||||
)
|
)
|
||||||
|
|
18
cmake/FindWASAPI.cmake
Normal file
18
cmake/FindWASAPI.cmake
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Copyright (c) 2015 Andrew Kelley
|
||||||
|
# This file is MIT licensed.
|
||||||
|
# See http://opensource.org/licenses/MIT
|
||||||
|
|
||||||
|
# WASAPI_FOUND
|
||||||
|
# WASAPI_INCLUDE_DIR
|
||||||
|
# WASAPI_LIBRARIES
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
find_path(WASAPI_INCLUDE_DIR NAMES audioclient.h)
|
||||||
|
|
||||||
|
set(WASAPI_LIBRARIES "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(WASAPI DEFAULT_MSG WASAPI_INCLUDE_DIR)
|
||||||
|
|
||||||
|
mark_as_advanced(WASAPI_INCLUDE_DIR WASAPI_LIBRARIES)
|
|
@ -154,6 +154,7 @@ enum SoundIoBackend {
|
||||||
SoundIoBackendPulseAudio,
|
SoundIoBackendPulseAudio,
|
||||||
SoundIoBackendAlsa,
|
SoundIoBackendAlsa,
|
||||||
SoundIoBackendCoreAudio,
|
SoundIoBackendCoreAudio,
|
||||||
|
SoundIoBackendWasapi,
|
||||||
SoundIoBackendDummy,
|
SoundIoBackendDummy,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,5 +20,6 @@
|
||||||
#cmakedefine SOUNDIO_HAVE_PULSEAUDIO
|
#cmakedefine SOUNDIO_HAVE_PULSEAUDIO
|
||||||
#cmakedefine SOUNDIO_HAVE_ALSA
|
#cmakedefine SOUNDIO_HAVE_ALSA
|
||||||
#cmakedefine SOUNDIO_HAVE_COREAUDIO
|
#cmakedefine SOUNDIO_HAVE_COREAUDIO
|
||||||
|
#cmakedefine SOUNDIO_HAVE_WASAPI
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,6 +25,9 @@ static const SoundIoBackend available_backends[] = {
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOUNDIO_HAVE_COREAUDIO
|
#ifdef SOUNDIO_HAVE_COREAUDIO
|
||||||
SoundIoBackendCoreAudio,
|
SoundIoBackendCoreAudio,
|
||||||
|
#endif
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
SoundIoBackendWasapi,
|
||||||
#endif
|
#endif
|
||||||
SoundIoBackendDummy,
|
SoundIoBackendDummy,
|
||||||
};
|
};
|
||||||
|
@ -50,6 +53,11 @@ static int (*backend_init_fns[])(SoundIoPrivate *) = {
|
||||||
[SoundIoBackendCoreAudio] = soundio_coreaudio_init,
|
[SoundIoBackendCoreAudio] = soundio_coreaudio_init,
|
||||||
#else
|
#else
|
||||||
[SoundIoBackendCoreAudio] = nullptr,
|
[SoundIoBackendCoreAudio] = nullptr,
|
||||||
|
#endif
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
[SoundIoBackendWasapi] = soundio_wasapi_init,
|
||||||
|
#else
|
||||||
|
[SoundIoBackendWasapi] = nullptr,
|
||||||
#endif
|
#endif
|
||||||
[SoundIoBackendDummy] = soundio_dummy_init,
|
[SoundIoBackendDummy] = soundio_dummy_init,
|
||||||
};
|
};
|
||||||
|
@ -137,6 +145,7 @@ const char *soundio_backend_name(enum SoundIoBackend backend) {
|
||||||
case SoundIoBackendPulseAudio: return "PulseAudio";
|
case SoundIoBackendPulseAudio: return "PulseAudio";
|
||||||
case SoundIoBackendAlsa: return "ALSA";
|
case SoundIoBackendAlsa: return "ALSA";
|
||||||
case SoundIoBackendCoreAudio: return "CoreAudio";
|
case SoundIoBackendCoreAudio: return "CoreAudio";
|
||||||
|
case SoundIoBackendWasapi: return "WASAPI";
|
||||||
case SoundIoBackendDummy: return "Dummy";
|
case SoundIoBackendDummy: return "Dummy";
|
||||||
}
|
}
|
||||||
return "(invalid backend)";
|
return "(invalid backend)";
|
||||||
|
|
|
@ -27,6 +27,10 @@
|
||||||
#include "coreaudio.hpp"
|
#include "coreaudio.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
#include "wasapi.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "dummy.hpp"
|
#include "dummy.hpp"
|
||||||
|
|
||||||
union SoundIoBackendData {
|
union SoundIoBackendData {
|
||||||
|
@ -41,6 +45,9 @@ union SoundIoBackendData {
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOUNDIO_HAVE_COREAUDIO
|
#ifdef SOUNDIO_HAVE_COREAUDIO
|
||||||
SoundIoCoreAudio coreaudio;
|
SoundIoCoreAudio coreaudio;
|
||||||
|
#endif
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
SoundIoWasapi wasapi;
|
||||||
#endif
|
#endif
|
||||||
SoundIoDummy dummy;
|
SoundIoDummy dummy;
|
||||||
};
|
};
|
||||||
|
@ -57,6 +64,9 @@ union SoundIoDeviceBackendData {
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOUNDIO_HAVE_COREAUDIO
|
#ifdef SOUNDIO_HAVE_COREAUDIO
|
||||||
SoundIoDeviceCoreAudio coreaudio;
|
SoundIoDeviceCoreAudio coreaudio;
|
||||||
|
#endif
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
SoundIoDeviceWasapi wasapi;
|
||||||
#endif
|
#endif
|
||||||
SoundIoDeviceDummy dummy;
|
SoundIoDeviceDummy dummy;
|
||||||
};
|
};
|
||||||
|
@ -73,6 +83,9 @@ union SoundIoOutStreamBackendData {
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOUNDIO_HAVE_COREAUDIO
|
#ifdef SOUNDIO_HAVE_COREAUDIO
|
||||||
SoundIoOutStreamCoreAudio coreaudio;
|
SoundIoOutStreamCoreAudio coreaudio;
|
||||||
|
#endif
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
SoundIoOutStreamWasapi wasapi;
|
||||||
#endif
|
#endif
|
||||||
SoundIoOutStreamDummy dummy;
|
SoundIoOutStreamDummy dummy;
|
||||||
};
|
};
|
||||||
|
@ -89,6 +102,9 @@ union SoundIoInStreamBackendData {
|
||||||
#endif
|
#endif
|
||||||
#ifdef SOUNDIO_HAVE_COREAUDIO
|
#ifdef SOUNDIO_HAVE_COREAUDIO
|
||||||
SoundIoInStreamCoreAudio coreaudio;
|
SoundIoInStreamCoreAudio coreaudio;
|
||||||
|
#endif
|
||||||
|
#ifdef SOUNDIO_HAVE_WASAPI
|
||||||
|
SoundIoInStreamWasapi wasapi;
|
||||||
#endif
|
#endif
|
||||||
SoundIoInStreamDummy dummy;
|
SoundIoInStreamDummy dummy;
|
||||||
};
|
};
|
||||||
|
|
101
src/wasapi.cpp
Normal file
101
src/wasapi.cpp
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
#include "wasapi.hpp"
|
||||||
|
#include "soundio.hpp"
|
||||||
|
|
||||||
|
static void flush_events_wasapi(struct SoundIoPrivate *si) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wait_events_wasapi(struct SoundIoPrivate *si) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wakeup_wasapi(struct SoundIoPrivate *si) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void outstream_destroy_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int outstream_open_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int outstream_pause_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os, bool pause) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int outstream_start_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int outstream_begin_write_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os,
|
||||||
|
SoundIoChannelArea **out_areas, int *frame_count)
|
||||||
|
{
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int outstream_end_write_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int outstream_clear_buffer_wasapi(struct SoundIoPrivate *si, struct SoundIoOutStreamPrivate *os) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void instream_destroy_wasapi(struct SoundIoPrivate *si, struct SoundIoInStreamPrivate *is) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int instream_open_wasapi(struct SoundIoPrivate *si, struct SoundIoInStreamPrivate *is) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int instream_pause_wasapi(struct SoundIoPrivate *si, struct SoundIoInStreamPrivate *is, bool pause) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int instream_start_wasapi(struct SoundIoPrivate *si, struct SoundIoInStreamPrivate *is) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int instream_begin_read_wasapi(struct SoundIoPrivate *si, struct SoundIoInStreamPrivate *is,
|
||||||
|
SoundIoChannelArea **out_areas, int *frame_count)
|
||||||
|
{
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int instream_end_read_wasapi(struct SoundIoPrivate *si, struct SoundIoInStreamPrivate *is) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void destroy_wasapi(struct SoundIoPrivate *si) {
|
||||||
|
soundio_panic("TODO");
|
||||||
|
}
|
||||||
|
|
||||||
|
int soundio_wasapi_init(SoundIoPrivate *si) {
|
||||||
|
si->destroy = destroy_wasapi;
|
||||||
|
si->flush_events = flush_events_wasapi;
|
||||||
|
si->wait_events = wait_events_wasapi;
|
||||||
|
si->wakeup = wakeup_wasapi;
|
||||||
|
|
||||||
|
si->outstream_open = outstream_open_wasapi;
|
||||||
|
si->outstream_destroy = outstream_destroy_wasapi;
|
||||||
|
si->outstream_start = outstream_start_wasapi;
|
||||||
|
si->outstream_begin_write = outstream_begin_write_wasapi;
|
||||||
|
si->outstream_end_write = outstream_end_write_wasapi;
|
||||||
|
si->outstream_clear_buffer = outstream_clear_buffer_wasapi;
|
||||||
|
si->outstream_pause = outstream_pause_wasapi;
|
||||||
|
|
||||||
|
si->instream_open = instream_open_wasapi;
|
||||||
|
si->instream_destroy = instream_destroy_wasapi;
|
||||||
|
si->instream_start = instream_start_wasapi;
|
||||||
|
si->instream_begin_read = instream_begin_read_wasapi;
|
||||||
|
si->instream_end_read = instream_end_read_wasapi;
|
||||||
|
si->instream_pause = instream_pause_wasapi;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
27
src/wasapi.hpp
Normal file
27
src/wasapi.hpp
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2015 Andrew Kelley
|
||||||
|
*
|
||||||
|
* This file is part of libsoundio, which is MIT licensed.
|
||||||
|
* See http://opensource.org/licenses/MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SOUNDIO_WASAPI_HPP
|
||||||
|
#define SOUNDIO_WASAPI_HPP
|
||||||
|
|
||||||
|
#include "soundio/soundio.h"
|
||||||
|
|
||||||
|
int soundio_wasapi_init(struct SoundIoPrivate *si);
|
||||||
|
|
||||||
|
struct SoundIoDeviceWasapi {
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SoundIoWasapi {
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SoundIoOutStreamWasapi {
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SoundIoInStreamWasapi {
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue