зеркало из https://github.com/mozilla/cubeb.git
Replace autotools build system with CMake.
This commit is contained in:
Родитель
22557d466e
Коммит
0aea9e0438
|
@ -1,68 +0,0 @@
|
|||
*.lo
|
||||
*.o
|
||||
*.swp
|
||||
*~
|
||||
*.trs
|
||||
*.raw
|
||||
*.wav
|
||||
*.log
|
||||
.deps
|
||||
.dirstamp
|
||||
.libs
|
||||
Makefile
|
||||
Makefile.in
|
||||
_stdint.h
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
compile
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
configure
|
||||
depcomp
|
||||
docs/Doxyfile
|
||||
docs/doxygen-build.stamp
|
||||
docs/html
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
m4/libtool.m4
|
||||
m4/ltoptions.m4
|
||||
m4/ltsugar.m4
|
||||
m4/ltversion.m4
|
||||
m4/lt~obsolete.m4
|
||||
missing
|
||||
cubeb-uninstalled.pc
|
||||
cubeb.pc
|
||||
src/.dirstamp
|
||||
src/libcubeb.la
|
||||
src/speex/libspeex.la
|
||||
stamp-h1
|
||||
test-driver
|
||||
test/test_audio
|
||||
test/test_audio.exe
|
||||
test/test_latency
|
||||
test/test_latency.exe
|
||||
test/test_sanity
|
||||
test/test_sanity.exe
|
||||
test/test_tone
|
||||
test/test_tone.exe
|
||||
test/test_devices
|
||||
test/test_devices.exe
|
||||
test/test_resampler
|
||||
test/test_resampler.exe
|
||||
test/test_record
|
||||
test/test_record.exe
|
||||
test/test_duplex
|
||||
test/test_duplex.exe
|
||||
test/test_utils
|
||||
test/test_utils.exe
|
||||
include/cubeb/cubeb-stdint.h
|
||||
test-suite.log
|
||||
test/test_sanity.log
|
||||
test/test_sanity.trs
|
||||
test/test_ring_array
|
||||
test/test_ring_array.exe
|
31
.travis.yml
31
.travis.yml
|
@ -48,13 +48,16 @@ before_install:
|
|||
fi
|
||||
- if [[ $TRAVIS_OS_NAME = "linux" ]]; then
|
||||
if [ ! -z "$HOST" ]; then
|
||||
sudo apt-get install -qq mingw-w64 g++-mingw-w64 binutils-mingw-w64;
|
||||
wget http://mirrors.kernel.org/ubuntu/pool/universe/m/mingw-w64/mingw-w64-tools_3.1.0-1_amd64.deb;
|
||||
sudo dpkg -i mingw-w64-tools_3.1.0-1_amd64.deb;
|
||||
sudo apt-get install -qq mingw-w64 mingw-w64-tools g++-mingw-w64 binutils-mingw-w64;
|
||||
fi
|
||||
fi
|
||||
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew uninstall libtool && brew install libtool; fi
|
||||
- if [[ $TRAVIS_OS_NAME = "osx" ]]; then
|
||||
brew update;
|
||||
brew uninstall libtool && brew install libtool;
|
||||
brew uninstall cmake && brew install cmake;
|
||||
fi
|
||||
before_script:
|
||||
- cmake --version
|
||||
- if [[ $TRAVIS_OS_NAME = "linux" ]]; then
|
||||
if [ ! -z "$HOST" ]; then
|
||||
unset CC;
|
||||
|
@ -67,15 +70,23 @@ before_script:
|
|||
export CXX=$COMPILER_CXX;
|
||||
fi
|
||||
fi
|
||||
- autoreconf -i
|
||||
- $SCAN_BUILD_PATH ./configure --host=$HOST
|
||||
- mkdir build
|
||||
- cd build
|
||||
- if [[ $TRAVIS_OS_NAME = "linux" ]]; then
|
||||
if [ ! -z "$HOST" ]; then
|
||||
$SCAN_BUILD_PATH cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-cross-mingw.cmake ..;
|
||||
else
|
||||
$SCAN_BUILD_PATH cmake ..;
|
||||
fi
|
||||
else
|
||||
$SCAN_BUILD_PATH cmake ..;
|
||||
fi
|
||||
script:
|
||||
- echo $SCAN_BUILD_PATH
|
||||
- $SCAN_BUILD_PATH make
|
||||
- if [ -z "$HOST" ]; then
|
||||
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
|
||||
make check;
|
||||
cat test/*.log;
|
||||
- if [[ $TRAVIS_OS_NAME = "linux" ]]; then
|
||||
if [ -z "$HOST" ]; then
|
||||
make test ARGS=-V;
|
||||
fi
|
||||
fi
|
||||
addons:
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
# TODO
|
||||
# - backend selection via command line, rather than simply detecting headers.
|
||||
|
||||
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
|
||||
project(cubeb
|
||||
VERSION 0.0.0)
|
||||
|
||||
if(POLICY CMP0063)
|
||||
cmake_policy(SET CMP0063 NEW)
|
||||
endif()
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_C_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
|
||||
|
||||
add_library(cubeb
|
||||
src/cubeb.c
|
||||
src/cubeb_resampler.cpp
|
||||
src/cubeb_panner.cpp
|
||||
$<TARGET_OBJECTS:speex>)
|
||||
target_include_directories(cubeb PUBLIC include)
|
||||
target_include_directories(cubeb PRIVATE src)
|
||||
target_compile_definitions(cubeb PRIVATE OUTSIDE_SPEEX)
|
||||
target_compile_definitions(cubeb PRIVATE FLOATING_POINT)
|
||||
target_compile_definitions(cubeb PRIVATE EXPORT=)
|
||||
target_compile_definitions(cubeb PRIVATE RANDOM_PREFIX=speex)
|
||||
|
||||
include(GenerateExportHeader)
|
||||
generate_export_header(cubeb EXPORT_FILE_NAME ${CMAKE_BINARY_DIR}/exports/cubeb_export.h)
|
||||
target_include_directories(cubeb PUBLIC ${CMAKE_BINARY_DIR}/exports)
|
||||
|
||||
add_library(speex OBJECT
|
||||
src/speex/resample.c)
|
||||
set_target_properties(speex PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
target_compile_definitions(speex PRIVATE OUTSIDE_SPEEX)
|
||||
target_compile_definitions(speex PRIVATE FLOATING_POINT)
|
||||
target_compile_definitions(speex PRIVATE EXPORT=)
|
||||
target_compile_definitions(speex PRIVATE RANDOM_PREFIX=speex)
|
||||
|
||||
include(CheckIncludeFiles)
|
||||
|
||||
check_include_files(AudioUnit/AudioUnit.h USE_AUDIOUNIT)
|
||||
if(USE_AUDIOUNIT)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_audiounit.cpp
|
||||
src/cubeb_osx_run_loop.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_AUDIOUNIT)
|
||||
target_link_libraries(cubeb PRIVATE "-framework AudioUnit" "-framework CoreAudio" "-framework CoreServices")
|
||||
endif()
|
||||
|
||||
check_include_files(pulse/pulseaudio.h USE_PULSE)
|
||||
if(USE_PULSE)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_pulse.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_PULSE)
|
||||
target_link_libraries(cubeb PRIVATE pulse)
|
||||
endif()
|
||||
|
||||
check_include_files(alsa/asoundlib.h USE_ALSA)
|
||||
if(USE_ALSA)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_alsa.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_ALSA)
|
||||
target_link_libraries(cubeb PRIVATE asound dl pthread)
|
||||
endif()
|
||||
|
||||
check_include_files(jack/jack.h USE_JACK)
|
||||
if(USE_JACK)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_jack.cpp)
|
||||
target_compile_definitions(cubeb PRIVATE USE_JACK)
|
||||
target_link_libraries(cubeb PRIVATE jack dl pthread)
|
||||
endif()
|
||||
|
||||
check_include_files(audioclient.h USE_WASAPI)
|
||||
if(USE_WASAPI)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_wasapi.cpp)
|
||||
target_compile_definitions(cubeb PRIVATE USE_WASAPI)
|
||||
endif()
|
||||
|
||||
check_include_files("windows.h;mmsystem.h" USE_WINMM)
|
||||
if(USE_WINMM)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_winmm.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_WINMM)
|
||||
target_link_libraries(cubeb PRIVATE winmm)
|
||||
endif()
|
||||
|
||||
check_include_files(SLES/OpenSLES.h USE_OPENSL)
|
||||
if(USE_OPENSL)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_opensl.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_OPENSL)
|
||||
target_link_libraries(cubeb PRIVATE OpenSLES)
|
||||
endif()
|
||||
|
||||
check_include_files(android/log.h USE_AUDIOTRACK)
|
||||
if(USE_AUDIOTRACK)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_audiotrack.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_AUDIOTRACK)
|
||||
endif()
|
||||
|
||||
check_include_files(sndio.h USE_SNDIO)
|
||||
if(USE_SNDIO)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_sndio.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_SNDIO)
|
||||
target_link_libraries(cubeb PRIVATE sndio)
|
||||
endif()
|
||||
|
||||
check_include_files(kai.h USE_KAI)
|
||||
if(USE_KAI)
|
||||
target_sources(cubeb PRIVATE
|
||||
src/cubeb_kai.c)
|
||||
target_compile_definitions(cubeb PRIVATE USE_KAI)
|
||||
target_link_libraries(cubeb PRIVATE kai)
|
||||
endif()
|
||||
|
||||
find_package(Doxygen)
|
||||
if(DOXYGEN_FOUND)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/docs/Doxyfile @ONLY)
|
||||
add_custom_target(doc ALL
|
||||
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/docs/Doxyfile
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/docs
|
||||
COMMENT "Generating API documentation with Doxygen" VERBATIM)
|
||||
endif()
|
||||
|
||||
enable_testing()
|
||||
|
||||
add_executable(test_sanity test/test_sanity.cpp)
|
||||
target_link_libraries(test_sanity PRIVATE cubeb)
|
||||
add_test(sanity test_sanity)
|
||||
|
||||
add_executable(test_tone test/test_tone.cpp)
|
||||
target_link_libraries(test_tone PRIVATE cubeb)
|
||||
add_test(tone test_tone)
|
||||
|
||||
add_executable(test_audio test/test_audio.cpp)
|
||||
target_link_libraries(test_audio PRIVATE cubeb)
|
||||
add_test(audio test_audio)
|
||||
|
||||
add_executable(test_record test/test_record.cpp)
|
||||
target_link_libraries(test_record PRIVATE cubeb)
|
||||
add_test(record test_record)
|
||||
|
||||
add_executable(test_devices test/test_devices.c)
|
||||
target_link_libraries(test_devices PRIVATE cubeb)
|
||||
add_test(devices test_devices)
|
||||
|
||||
add_executable(test_resampler test/test_resampler.cpp src/cubeb_resampler.cpp $<TARGET_OBJECTS:speex>)
|
||||
target_include_directories(test_resampler PRIVATE src)
|
||||
target_compile_definitions(test_resampler PRIVATE OUTSIDE_SPEEX)
|
||||
target_compile_definitions(test_resampler PRIVATE FLOATING_POINT)
|
||||
target_compile_definitions(test_resampler PRIVATE EXPORT=)
|
||||
target_compile_definitions(test_resampler PRIVATE RANDOM_PREFIX=speex)
|
||||
target_link_libraries(test_resampler PRIVATE cubeb)
|
||||
add_test(resampler test_resampler)
|
||||
|
||||
add_executable(test_duplex test/test_duplex.cpp)
|
||||
target_link_libraries(test_duplex PRIVATE cubeb)
|
||||
add_test(duplex test_duplex)
|
||||
|
||||
add_executable(test_latency test/test_latency.cpp)
|
||||
target_link_libraries(test_latency PRIVATE cubeb)
|
||||
add_test(latency test_latency)
|
||||
|
||||
add_executable(test_ring_array test/test_ring_array.cpp)
|
||||
target_include_directories(test_ring_array PRIVATE src)
|
||||
target_link_libraries(test_ring_array PRIVATE cubeb)
|
||||
add_test(ring_array test_ring_array)
|
||||
|
||||
add_executable(test_utils test/test_utils.cpp)
|
||||
target_include_directories(test_utils PRIVATE src)
|
||||
target_link_libraries(test_utils PRIVATE cubeb)
|
||||
add_test(utils test_utils)
|
46
INSTALL.md
46
INSTALL.md
|
@ -1,36 +1,24 @@
|
|||
# Build instructions for libcubeb
|
||||
|
||||
Note Also:Cubeb does not currently build under Cygwin, but this is being worked on.
|
||||
You must have CMake v3.1 or later installed.
|
||||
|
||||
0. Change directory into the source directory.
|
||||
1. Run |autoreconf --install| to generate configure.
|
||||
2. Run |./configure| to configure the build.
|
||||
3. Run |make| to build.
|
||||
4. Run |make check| to run the test suite.
|
||||
1. `git clone https://github.com/kinetiknz/cubeb.git`
|
||||
2. `mkdir cubeb-build`
|
||||
3. `cd cubeb-build`
|
||||
3. `cmake ../cubeb`
|
||||
4. `cmake --build .`
|
||||
5. `ctest`
|
||||
|
||||
# Debugging
|
||||
# Windows build notes
|
||||
|
||||
Debugging tests can be done like so:
|
||||
Windows builds can use Microsoft Visual Studio 2015 (the default) or MinGW-w64
|
||||
with Win32 threads (by passing `cmake -G` to generate the appropriate build
|
||||
configuration). To build with MinGW-w64, install the following items:
|
||||
|
||||
```libtool --mode=execute gdb test/test_tone```
|
||||
|
||||
# Windows build prerequisite, using `msys2`
|
||||
|
||||
Cubeb for Windows uses win32 threads
|
||||
|
||||
- Download and install `msys2` 32-bits from <https://msys2.github.io>. Let it
|
||||
install in `C:\msys32`.
|
||||
- Download and install `7z` from <http://www.7-zip.org/>.
|
||||
- Run `msys2` (a shortcut has been added to the start menu, or use the `.bat`
|
||||
script: `C:\msys32\mingw32_shell.bat`), and issue the following commands to
|
||||
install the dependencies:
|
||||
```
|
||||
pacman -S git automake autoconf libtool m4 make pkg-config gdb
|
||||
```
|
||||
- Download a `mingw` compiler with the WIN32 thread model [here](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.9.2/threads-win32/sjlj/i686-4.9.2-release-win32-sjlj-rt_v3-rev0.7z/download). `msys2` does not have `mingw` builds with win32 threads,
|
||||
so we have to install another compiler.
|
||||
- Unzip the compiler, and copy all folders in `C:\msys32\opt`
|
||||
- Exit the `msys2` shell, and run `C:\msys32\autorebase.bat` (double clicking
|
||||
works).
|
||||
- Open an `msys2` shell and follow the build instructions.
|
||||
- Download and install MinGW-w64 with Win32 threads.
|
||||
- Download and install CMake.
|
||||
- Run MinGW-w64 Terminal from the Start Menu.
|
||||
- Follow the build steps above, but at step 3 run:
|
||||
`cmake -G "MinGW Makefiles" ..`
|
||||
- Continue the build steps above.
|
||||
|
||||
|
|
129
Makefile.am
129
Makefile.am
|
@ -1,129 +0,0 @@
|
|||
AUTOMAKE_OPTIONS = foreign 1.10 dist-bzip2 subdir-objects
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I. -I$(top_srcdir)/src
|
||||
AM_CFLAGS = -ansi -std=gnu99 -Wall -Wextra -Wno-long-long -O2 -g -Wno-unused-parameter
|
||||
AM_CXXFLAGS = -std=c++11 -Wall -Wextra -g
|
||||
|
||||
SUBDIRS = docs
|
||||
|
||||
EXTRA_DIST = \
|
||||
AUTHORS README LICENSE \
|
||||
cubeb-uninstalled.pc.in \
|
||||
m4/as-ac-expand.m4 \
|
||||
m4/pkg.m4
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = cubeb.pc
|
||||
|
||||
cubebincludedir = $(includedir)/cubeb
|
||||
cubebinclude_HEADERS = include/cubeb/cubeb.h
|
||||
|
||||
lib_LTLIBRARIES = src/libcubeb.la
|
||||
|
||||
src_libcubeb_la_SOURCES = src/cubeb.c src/cubeb_panner.cpp
|
||||
|
||||
if PULSE
|
||||
src_libcubeb_la_SOURCES += src/cubeb_pulse.c
|
||||
endif
|
||||
if JACK
|
||||
src_libcubeb_la_SOURCES += src/cubeb_jack.cpp
|
||||
endif
|
||||
if ALSA
|
||||
src_libcubeb_la_SOURCES += src/cubeb_alsa.c
|
||||
endif
|
||||
if AUDIOUNIT
|
||||
src_libcubeb_la_SOURCES += src/cubeb_audiounit.cpp src/cubeb_osx_run_loop.c
|
||||
endif
|
||||
if WASAPI
|
||||
src_libcubeb_la_SOURCES += src/cubeb_wasapi.cpp
|
||||
endif
|
||||
if WINMM
|
||||
src_libcubeb_la_SOURCES += src/cubeb_winmm.c
|
||||
endif
|
||||
if SNDIO
|
||||
src_libcubeb_la_SOURCES += src/cubeb_sndio.c
|
||||
endif
|
||||
if OPENSL
|
||||
src_libcubeb_la_SOURCES += src/cubeb_opensl.c
|
||||
endif
|
||||
if AUDIOTRACK
|
||||
src_libcubeb_la_SOURCES += src/cubeb_audiotrack.c
|
||||
endif
|
||||
if KAI
|
||||
src_libcubeb_la_SOURCES += src/cubeb_kai.c
|
||||
endif
|
||||
|
||||
src_libcubeb_la_SOURCES += src/cubeb_resampler.cpp
|
||||
|
||||
noinst_LTLIBRARIES = src/speex/libspeex.la
|
||||
src_speex_libspeex_la_SOURCES = src/speex/resample.c
|
||||
src_speex_libspeex_la_CFLAGS = -Wno-sign-compare
|
||||
src_libcubeb_la_LIBADD = src/speex/libspeex.la
|
||||
|
||||
EXTRA_src_libcubeb_la_SOURCES = \
|
||||
src/cubeb.c \
|
||||
src/cubeb_jack.cpp \
|
||||
src/cubeb_alsa.c \
|
||||
src/cubeb_pulse.c \
|
||||
src/cubeb_audiounit.cpp \
|
||||
src/cubeb_sndio.c \
|
||||
src/cubeb_winmm.c \
|
||||
src/cubeb_wasapi.cpp \
|
||||
src/speex/resample.c \
|
||||
src/cubeb_opensl.c \
|
||||
src/cubeb_audiotrack.c \
|
||||
$(NULL)
|
||||
|
||||
src_libcubeb_la_LDFLAGS = -export-symbols-regex '^cubeb_' $(platform_lib) -no-undefined
|
||||
|
||||
check_PROGRAMS = test/test_sanity \
|
||||
test/test_tone \
|
||||
test/test_audio \
|
||||
test/test_latency \
|
||||
test/test_devices \
|
||||
test/test_duplex \
|
||||
test/test_resampler \
|
||||
test/test_record \
|
||||
test/test_utils \
|
||||
test/test_ring_array\
|
||||
$(NULL)
|
||||
|
||||
test_test_sanity_SOURCES = test/test_sanity.cpp
|
||||
test_test_sanity_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_tone_SOURCES = test/test_tone.cpp
|
||||
test_test_tone_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_audio_SOURCES = test/test_audio.cpp
|
||||
test_test_audio_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_latency_SOURCES = test/test_latency.cpp
|
||||
test_test_latency_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_devices_SOURCES = test/test_devices.cpp
|
||||
test_test_devices_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_resampler_SOURCES = test/test_resampler.cpp
|
||||
test_test_resampler_LDADD = -lm src/libcubeb.la $(platform_lib) src/cubeb_resampler.o src/speex/libspeex.la
|
||||
|
||||
test_test_duplex_SOURCES = test/test_duplex.cpp
|
||||
test_test_duplex_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_record_SOURCES = test/test_record.cpp
|
||||
test_test_record_LDADD = -lm src/libcubeb.la $(platform_lib)
|
||||
|
||||
test_test_utils_SOURCES = test/test_utils.cpp
|
||||
|
||||
test_test_ring_array_SOURCES = test/test_ring_array.cpp
|
||||
|
||||
TESTS = $(check_PROGRAMS)
|
||||
|
||||
dist-hook:
|
||||
find $(distdir) -type d -name '.git' | xargs rm -rf
|
||||
|
||||
debug:
|
||||
$(MAKE) all CFLAGS="@DEBUG@"
|
||||
|
||||
profile:
|
||||
$(MAKE) all CFLAGS="@PROFILE@"
|
|
@ -1,5 +1,5 @@
|
|||
[![Build Status](https://travis-ci.org/kinetiknz/cubeb.svg?branch=master)](https://travis-ci.org/kinetiknz/cubeb)
|
||||
|
||||
See INSTALL for build instructions.
|
||||
See INSTALL.md for build instructions.
|
||||
|
||||
Licensed under an ISC-style license. See LICENSE for details.
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
SET(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
set(COMPILER_PREFIX "i686-w64-mingw32")
|
||||
|
||||
find_program(CMAKE_RC_COMPILER NAMES ${COMPILER_PREFIX}-windres)
|
||||
find_program(CMAKE_C_COMPILER NAMES ${COMPILER_PREFIX}-gcc)
|
||||
find_program(CMAKE_CXX_COMPILER NAMES ${COMPILER_PREFIX}-g++)
|
||||
|
||||
SET(CMAKE_FIND_ROOT_PATH /usr/${COMPILER_PREFIX})
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
228
configure.ac
228
configure.ac
|
@ -1,228 +0,0 @@
|
|||
dnl ------------------------------------------------
|
||||
dnl Initialization and Versioning
|
||||
dnl ------------------------------------------------
|
||||
|
||||
AC_INIT(libcubeb,[0.3git])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/cubeb.c])
|
||||
AM_INIT_AUTOMAKE
|
||||
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
dnl Library versioning
|
||||
dnl CURRENT, REVISION, AGE
|
||||
dnl - library source changed -> increment REVISION
|
||||
dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
|
||||
dnl - interfaces added -> increment AGE
|
||||
dnl - interfaces removed -> AGE = 0
|
||||
|
||||
CUBEB_CURRENT=0
|
||||
CUBEB_REVISION=0
|
||||
CUBEB_AGE=1
|
||||
AC_SUBST(CUBEB_CURRENT)
|
||||
AC_SUBST(CUBEB_REVISION)
|
||||
AC_SUBST(CUBEB_AGE)
|
||||
|
||||
|
||||
dnl --------------------------------------------------
|
||||
dnl Check for programs
|
||||
dnl --------------------------------------------------
|
||||
|
||||
dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2"
|
||||
dnl if $CFLAGS is blank
|
||||
cflags_save="$CFLAGS"
|
||||
cxxflags_save="$CXXFLAGS"
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_PROG_CXX
|
||||
CFLAGS="$cflags_save"
|
||||
CXXFLAGS="$cxxflags_save"
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
AC_LIBTOOL_WIN32_DLL
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
|
||||
AC_ARG_WITH([pulse],
|
||||
AS_HELP_STRING([--with-pulse], [with PulseAudio @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_pulse" != xno],
|
||||
[PKG_CHECK_MODULES(PULSE, libpulse >= 0.9.16, [
|
||||
HAVE_PULSE=1
|
||||
PULSE_LIBS="-ldl"
|
||||
AC_DEFINE([USE_PULSE], [], [Use PulseAudio])
|
||||
], [
|
||||
HAVE_PULSE=0
|
||||
AS_IF([test "x$with_pulse" = xyes], [AC_MSG_ERROR(PulseAudio not detected)])])])
|
||||
AM_CONDITIONAL([PULSE], [test $HAVE_PULSE -eq 1])
|
||||
|
||||
AC_ARG_WITH([jack],
|
||||
AS_HELP_STRING([--with-jack], [with JACK @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_jack" != xno],
|
||||
[PKG_CHECK_MODULES(JACK, jack >= 1.9.9, [
|
||||
HAVE_JACK=1
|
||||
JACK_LIBS="-ldl"
|
||||
AC_DEFINE([USE_JACK], [], [Use JACK])
|
||||
], [
|
||||
HAVE_JACK=0
|
||||
AS_IF([test "x$with_jack" = xyes], [AC_MSG_ERROR(JACK not detected)])])])
|
||||
AM_CONDITIONAL([JACK], [test $HAVE_JACK -eq 1])
|
||||
|
||||
AC_ARG_WITH([alsa],
|
||||
AS_HELP_STRING([--with-alsa], [with ALSA @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_alsa" != xno],
|
||||
[PKG_CHECK_MODULES(ALSA, alsa >= 1.0.17, [
|
||||
HAVE_ALSA=1
|
||||
AC_DEFINE([USE_ALSA], [], [Use ALSA])
|
||||
], [
|
||||
HAVE_ALSA=0
|
||||
AS_IF([test "x$with_alsa" = xyes], [AC_MSG_ERROR(ALSA not detected)])])])
|
||||
AM_CONDITIONAL([ALSA], [test $HAVE_ALSA -eq 1])
|
||||
|
||||
AC_ARG_WITH([audiounit],
|
||||
AS_HELP_STRING([--with-audiounit], [with AudioUnit @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_audiounit" != xno],
|
||||
[AC_CHECK_HEADER([AudioUnit/AudioUnit.h], [
|
||||
HAVE_AUDIOUNIT=1
|
||||
AUDIOUNIT_LIBS="-framework CoreServices -framework AudioUnit -framework CoreAudio"
|
||||
AC_DEFINE([USE_AUDIOUNIT], [], [Use AudioUnit])
|
||||
], [
|
||||
HAVE_AUDIOUNIT=0
|
||||
AS_IF([test "x$with_audiounit" = xyes], [AC_MSG_ERROR(AudioUnit not detected)])])])
|
||||
AM_CONDITIONAL([AUDIOUNIT], [test $HAVE_AUDIOUNIT -eq 1])
|
||||
|
||||
AC_ARG_WITH([sndio],
|
||||
AS_HELP_STRING([--with-sndio], [with sndio @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_sndio" != xno],
|
||||
[AC_CHECK_HEADER([sndio.h], [
|
||||
HAVE_SNDIO=1
|
||||
SNDIO_LIBS="-lsndio"
|
||||
AC_DEFINE([USE_SNDIO], [], [Use sndio])
|
||||
], [
|
||||
HAVE_SNDIO=0
|
||||
AS_IF([test "x$with_sndio" = xyes], [AC_MSG_ERROR(sndio not detected)])])])
|
||||
AM_CONDITIONAL([SNDIO], [test $HAVE_SNDIO -eq 1])
|
||||
|
||||
AC_ARG_WITH([opensl],
|
||||
AS_HELP_STRING([--with-opensl], [with OpenSL @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_opensl" != xno],
|
||||
[AC_CHECK_HEADER([SLES/OpenSLES.h], [
|
||||
HAVE_OPENSL=1
|
||||
AC_DEFINE([USE_OPENSL], [], [Use OpenSL])
|
||||
], [
|
||||
HAVE_OPENSL=0
|
||||
AS_IF([test "x$with_opensl" = xyes], [AC_MSG_ERROR(OpenSL not detected)])])])
|
||||
AM_CONDITIONAL([OPENSL], [test $HAVE_OPENSL -eq 1])
|
||||
|
||||
AC_ARG_WITH([audiotrack],
|
||||
AS_HELP_STRING([--with-audiotrack], [with OpenSL @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_audiotrack" != xno],
|
||||
[AC_CHECK_HEADER([android/log.h], [
|
||||
HAVE_AUDIOTRACK=1
|
||||
AC_DEFINE([USE_AUDIOTRACK], [], [Use AudioTrack])
|
||||
], [
|
||||
HAVE_AUDIOTRACK=0
|
||||
AS_IF([test "x$with_audiotrack" = xyes], [AC_MSG_ERROR(AudioTrack not detected)])])])
|
||||
AM_CONDITIONAL([AUDIOTRACK], [test $HAVE_AUDIOTRACK -eq 1])
|
||||
|
||||
AC_ARG_WITH([wasapi],
|
||||
AS_HELP_STRING([--with-wasapi], [with WASAPI @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_wasapi" != xno],
|
||||
[AC_CHECK_HEADERS([audioclient.h], [
|
||||
HAVE_WASAPI=1
|
||||
AC_DEFINE([USE_WASAPI], [], [Use WASAPI])
|
||||
WASAPI_LIBS="-lole32"
|
||||
], [
|
||||
HAVE_WASAPI=0
|
||||
AS_IF([test "x$with_wasapi" = xyes], [AC_MSG_ERROR(WASAPI not detected)])
|
||||
], [#include <windows.h>])])
|
||||
AM_CONDITIONAL([WASAPI], [test $HAVE_WASAPI -eq 1])
|
||||
|
||||
AC_ARG_WITH([winmm],
|
||||
AS_HELP_STRING([--with-winmm], [with WinMM @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_winmm" != xno],
|
||||
[AC_CHECK_HEADERS([mmsystem.h], [
|
||||
HAVE_WINMM=1
|
||||
WINMM_LIBS="-lwinmm"
|
||||
AC_DEFINE([USE_WINMM], [], [Use WinMM])
|
||||
], [
|
||||
HAVE_WINMM=0
|
||||
AS_IF([test "x$with_winmm" = xyes], [AC_MSG_ERROR(WinMM not detected)])
|
||||
], [#include <windows.h>])])
|
||||
AM_CONDITIONAL([WINMM], [test $HAVE_WINMM -eq 1])
|
||||
|
||||
AC_ARG_WITH([kai],
|
||||
AS_HELP_STRING([--with-kai], [with KAI @<:@default=check@:>@]))
|
||||
AS_IF([test "x$with_kai" != xno],
|
||||
[AC_CHECK_HEADERS([kai.h], [
|
||||
HAVE_KAI=1
|
||||
KAI_LIBS="-lkai"
|
||||
AC_DEFINE([USE_KAI], [], [Use K Audio Interface])
|
||||
], [
|
||||
HAVE_KAI=0
|
||||
AS_IF([test "x$with_kai" = xyes], [AC_MSG_ERROR(KAI not detected)])
|
||||
])])
|
||||
AM_CONDITIONAL([KAI], [test $HAVE_KAI -eq 1])
|
||||
|
||||
AC_DEFINE([OUTSIDE_SPEEX], [], [Tell the speex resampler not to expect speex headers.])
|
||||
AC_DEFINE([RANDOM_PREFIX], [speex], [Required by the speex resampler.])
|
||||
AC_DEFINE([FLOATING_POINT], [], [Tell the resampler to only enable floating point support])
|
||||
AC_DEFINE([EXPORT], [], [Tell the resampler to export the symbols by default.])
|
||||
|
||||
platform_lib="$PULSE_LIBS $JACK_LIBS $ALSA_LIBS $AUDIOUNIT_LIBS $SNDIO_LIBS $OPENSL_LIBS $WINMM_LIBS $WASAPI_LIBS $KAI_LIBS"
|
||||
|
||||
dnl Check for doxygen
|
||||
AC_ARG_ENABLE([doc],
|
||||
AS_HELP_STRING([--enable-doc], [build API documentation]),
|
||||
[ac_enable_doc=$enableval], [ac_enable_doc=auto])
|
||||
|
||||
if test "x$ac_enable_doc" != "xno"; then
|
||||
AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
|
||||
|
||||
if test "x$HAVE_DOXYGEN" = "xfalse" -a "x$ac_enable_doc" = "xyes"; then
|
||||
AC_MSG_ERROR([*** API documentation explicitly requested but Doxygen not found])
|
||||
fi
|
||||
else
|
||||
HAVE_DOXYGEN=false
|
||||
fi
|
||||
AM_CONDITIONAL(HAVE_DOXYGEN,$HAVE_DOXYGEN)
|
||||
if test $HAVE_DOXYGEN = "false"; then
|
||||
AC_MSG_WARN([*** doxygen not found, API documentation will not be built])
|
||||
fi
|
||||
|
||||
# Test whenever ld supports -version-script
|
||||
AC_PROG_LD
|
||||
AC_PROG_LD_GNU
|
||||
AC_MSG_CHECKING([how to control symbol export])
|
||||
|
||||
dnl --------------------------------------------------
|
||||
dnl Do substitutions
|
||||
dnl --------------------------------------------------
|
||||
|
||||
AC_SUBST(DEBUG)
|
||||
AC_SUBST(PROFILE)
|
||||
AC_SUBST(platform_lib)
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
docs/Makefile
|
||||
docs/Doxyfile
|
||||
cubeb.pc
|
||||
cubeb-uninstalled.pc
|
||||
])
|
||||
|
||||
AS_AC_EXPAND(LIBDIR, ${libdir})
|
||||
AS_AC_EXPAND(INCLUDEDIR, ${includedir})
|
||||
AS_AC_EXPAND(BINDIR, ${bindir})
|
||||
AS_AC_EXPAND(DOCDIR, ${docdir})
|
||||
|
||||
if test $HAVE_DOXYGEN = "false"; then
|
||||
doc_build="no"
|
||||
else
|
||||
doc_build="yes"
|
||||
fi
|
|
@ -1,13 +0,0 @@
|
|||
# cubeb uninstalled pkg-config file
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: cubeb
|
||||
Description: WebM demuxer
|
||||
Version: @VERSION@
|
||||
Conflicts:
|
||||
Libs: -L${libdir} -lcubeb
|
||||
Cflags: -I${includedir}
|
13
cubeb.pc.in
13
cubeb.pc.in
|
@ -1,13 +0,0 @@
|
|||
# cubeb installed pkg-config file
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: cubeb
|
||||
Description: Portable audio API
|
||||
Version: @VERSION@
|
||||
Conflicts:
|
||||
Libs: -L${libdir} -lcubeb
|
||||
Cflags: -I${includedir}
|
|
@ -7,6 +7,6 @@ CASE_SENSE_NAMES = NO
|
|||
SORT_MEMBER_DOCS = NO
|
||||
QUIET = YES
|
||||
WARN_NO_PARAMDOC = YES
|
||||
INPUT = @top_srcdir@/include/cubeb
|
||||
INPUT = @CMAKE_CURRENT_SOURCE_DIR@/include/cubeb
|
||||
GENERATE_HTML = YES
|
||||
GENERATE_LATEX = NO
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
doc_DATA = doxygen-build.stamp
|
||||
|
||||
EXTRA_DIST = Doxyfile.in
|
||||
|
||||
if HAVE_DOXYGEN
|
||||
doxygen-build.stamp: Doxyfile ../include/cubeb/cubeb.h
|
||||
doxygen
|
||||
touch doxygen-build.stamp
|
||||
else
|
||||
doxygen-build.stamp:
|
||||
echo "*** Warning: Doxygen not found; documentation will not be built."
|
||||
touch doxygen-build.stamp
|
||||
endif
|
||||
|
||||
dist_docdir = $(distdir)/libcubeb
|
||||
|
||||
dist-hook:
|
||||
if test -d html; then \
|
||||
mkdir $(dist_docdir); \
|
||||
echo -n "copying built documenation..."; \
|
||||
cp -rp html $(dist_docdir)/html; \
|
||||
echo "OK"; \
|
||||
fi
|
||||
|
||||
|
||||
install-data-local: doxygen-build.stamp
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)
|
||||
if test -d html; then \
|
||||
cp -rp html $(DESTDIR)$(docdir)/html; \
|
||||
fi
|
||||
|
||||
uninstall-local:
|
||||
rm -rf $(DESTDIR)$(docdir)
|
||||
|
||||
clean-local:
|
||||
if test -d html; then rm -rf html; fi
|
||||
if test -f doxygen-build.stamp; then rm -f doxygen-build.stamp; fi
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
#define CUBEB_c2f983e9_c96f_e71c_72c3_bbf62992a382
|
||||
|
||||
#include <stdint.h>
|
||||
#include "cubeb_export.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
|
@ -359,12 +360,12 @@ typedef void (*cubeb_log_callback)(const char * msg);
|
|||
@retval CUBEB_OK in case of success.
|
||||
@retval CUBEB_ERROR in case of error, for example because the host
|
||||
has no audio hardware. */
|
||||
int cubeb_init(cubeb ** context, char const * context_name);
|
||||
CUBEB_EXPORT int cubeb_init(cubeb ** context, char const * context_name);
|
||||
|
||||
/** Get a read-only string identifying this context's current backend.
|
||||
@param context A pointer to the cubeb context.
|
||||
@retval Read-only string identifying current backend. */
|
||||
char const * cubeb_get_backend_id(cubeb * context);
|
||||
CUBEB_EXPORT char const * cubeb_get_backend_id(cubeb * context);
|
||||
|
||||
/** Get the maximum possible number of channels.
|
||||
@param context A pointer to the cubeb context.
|
||||
|
@ -373,7 +374,7 @@ char const * cubeb_get_backend_id(cubeb * context);
|
|||
@retval CUBEB_ERROR_INVALID_PARAMETER
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED
|
||||
@retval CUBEB_ERROR */
|
||||
int cubeb_get_max_channel_count(cubeb * context, uint32_t * max_channels);
|
||||
CUBEB_EXPORT int cubeb_get_max_channel_count(cubeb * context, uint32_t * max_channels);
|
||||
|
||||
/** Get the minimal latency value, in frames, that is guaranteed to work
|
||||
when creating a stream for the specified sample rate. This is platform,
|
||||
|
@ -386,7 +387,7 @@ int cubeb_get_max_channel_count(cubeb * context, uint32_t * max_channels);
|
|||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR_INVALID_PARAMETER
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_get_min_latency(cubeb * context,
|
||||
CUBEB_EXPORT int cubeb_get_min_latency(cubeb * context,
|
||||
cubeb_stream_params params,
|
||||
uint32_t * latency_frames);
|
||||
|
||||
|
@ -397,12 +398,12 @@ int cubeb_get_min_latency(cubeb * context,
|
|||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR_INVALID_PARAMETER
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_get_preferred_sample_rate(cubeb * context, uint32_t * rate);
|
||||
CUBEB_EXPORT int cubeb_get_preferred_sample_rate(cubeb * context, uint32_t * rate);
|
||||
|
||||
/** Destroy an application context. This must be called after all stream have
|
||||
* been destroyed.
|
||||
@param context A pointer to the cubeb context.*/
|
||||
void cubeb_destroy(cubeb * context);
|
||||
CUBEB_EXPORT void cubeb_destroy(cubeb * context);
|
||||
|
||||
/** Initialize a stream associated with the supplied application context.
|
||||
@param context A pointer to the cubeb context.
|
||||
|
@ -428,7 +429,7 @@ void cubeb_destroy(cubeb * context);
|
|||
@retval CUBEB_ERROR
|
||||
@retval CUBEB_ERROR_INVALID_FORMAT
|
||||
@retval CUBEB_ERROR_DEVICE_UNAVAILABLE */
|
||||
int cubeb_stream_init(cubeb * context,
|
||||
CUBEB_EXPORT int cubeb_stream_init(cubeb * context,
|
||||
cubeb_stream ** stream,
|
||||
char const * stream_name,
|
||||
cubeb_devid input_device,
|
||||
|
@ -443,26 +444,26 @@ int cubeb_stream_init(cubeb * context,
|
|||
/** Destroy a stream. `cubeb_stream_stop` MUST be called before destroying a
|
||||
stream.
|
||||
@param stream The stream to destroy. */
|
||||
void cubeb_stream_destroy(cubeb_stream * stream);
|
||||
CUBEB_EXPORT void cubeb_stream_destroy(cubeb_stream * stream);
|
||||
|
||||
/** Start playback.
|
||||
@param stream
|
||||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR */
|
||||
int cubeb_stream_start(cubeb_stream * stream);
|
||||
CUBEB_EXPORT int cubeb_stream_start(cubeb_stream * stream);
|
||||
|
||||
/** Stop playback.
|
||||
@param stream
|
||||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR */
|
||||
int cubeb_stream_stop(cubeb_stream * stream);
|
||||
CUBEB_EXPORT int cubeb_stream_stop(cubeb_stream * stream);
|
||||
|
||||
/** Get the current stream playback position.
|
||||
@param stream
|
||||
@param position Playback position in frames.
|
||||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR */
|
||||
int cubeb_stream_get_position(cubeb_stream * stream, uint64_t * position);
|
||||
CUBEB_EXPORT int cubeb_stream_get_position(cubeb_stream * stream, uint64_t * position);
|
||||
|
||||
/** Get the latency for this stream, in frames. This is the number of frames
|
||||
between the time cubeb acquires the data in the callback and the listener
|
||||
|
@ -472,7 +473,7 @@ int cubeb_stream_get_position(cubeb_stream * stream, uint64_t * position);
|
|||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED
|
||||
@retval CUBEB_ERROR */
|
||||
int cubeb_stream_get_latency(cubeb_stream * stream, uint32_t * latency);
|
||||
CUBEB_EXPORT int cubeb_stream_get_latency(cubeb_stream * stream, uint32_t * latency);
|
||||
|
||||
/** Set the volume for a stream.
|
||||
@param stream the stream for which to adjust the volume.
|
||||
|
@ -481,7 +482,7 @@ int cubeb_stream_get_latency(cubeb_stream * stream, uint32_t * latency);
|
|||
@retval CUBEB_ERROR_INVALID_PARAMETER volume is outside [0.0, 1.0] or
|
||||
stream is an invalid pointer
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_stream_set_volume(cubeb_stream * stream, float volume);
|
||||
CUBEB_EXPORT int cubeb_stream_set_volume(cubeb_stream * stream, float volume);
|
||||
|
||||
/** If the stream is stereo, set the left/right panning. If the stream is mono,
|
||||
this has no effect.
|
||||
|
@ -495,7 +496,7 @@ int cubeb_stream_set_volume(cubeb_stream * stream, float volume);
|
|||
outside the [-1.0, 1.0] range.
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED
|
||||
@retval CUBEB_ERROR stream is not mono nor stereo */
|
||||
int cubeb_stream_set_panning(cubeb_stream * stream, float panning);
|
||||
CUBEB_EXPORT int cubeb_stream_set_panning(cubeb_stream * stream, float panning);
|
||||
|
||||
/** Get the current output device for this stream.
|
||||
@param stm the stream for which to query the current output device
|
||||
|
@ -504,7 +505,7 @@ int cubeb_stream_set_panning(cubeb_stream * stream, float panning);
|
|||
@retval CUBEB_ERROR_INVALID_PARAMETER if either stm, device or count are
|
||||
invalid pointers
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_stream_get_current_device(cubeb_stream * stm,
|
||||
CUBEB_EXPORT int cubeb_stream_get_current_device(cubeb_stream * stm,
|
||||
cubeb_device ** const device);
|
||||
|
||||
/** Destroy a cubeb_device structure.
|
||||
|
@ -513,7 +514,7 @@ int cubeb_stream_get_current_device(cubeb_stream * stm,
|
|||
@retval CUBEB_OK in case of success
|
||||
@retval CUBEB_ERROR_INVALID_PARAMETER if devices is an invalid pointer
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_stream_device_destroy(cubeb_stream * stream,
|
||||
CUBEB_EXPORT int cubeb_stream_device_destroy(cubeb_stream * stream,
|
||||
cubeb_device * devices);
|
||||
|
||||
/** Set a callback to be notified when the output device changes.
|
||||
|
@ -524,7 +525,7 @@ int cubeb_stream_device_destroy(cubeb_stream * stream,
|
|||
@retval CUBEB_ERROR_INVALID_PARAMETER if either stream or
|
||||
device_changed_callback are invalid pointers.
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_stream_register_device_changed_callback(cubeb_stream * stream,
|
||||
CUBEB_EXPORT int cubeb_stream_register_device_changed_callback(cubeb_stream * stream,
|
||||
cubeb_device_changed_callback device_changed_callback);
|
||||
|
||||
/** Returns enumerated devices.
|
||||
|
@ -534,7 +535,7 @@ int cubeb_stream_register_device_changed_callback(cubeb_stream * stream,
|
|||
@retval CUBEB_OK in case of success
|
||||
@retval CUBEB_ERROR_INVALID_PARAMETER if collection is an invalid pointer
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_enumerate_devices(cubeb * context,
|
||||
CUBEB_EXPORT int cubeb_enumerate_devices(cubeb * context,
|
||||
cubeb_device_type devtype,
|
||||
cubeb_device_collection ** collection);
|
||||
|
||||
|
@ -542,13 +543,13 @@ int cubeb_enumerate_devices(cubeb * context,
|
|||
@param collection collection to destroy
|
||||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR_INVALID_PARAMETER if collection is an invalid pointer */
|
||||
int cubeb_device_collection_destroy(cubeb_device_collection * collection);
|
||||
CUBEB_EXPORT int cubeb_device_collection_destroy(cubeb_device_collection * collection);
|
||||
|
||||
/** Destroy a cubeb_device_info structure.
|
||||
@param info pointer to device info structure
|
||||
@retval CUBEB_OK
|
||||
@retval CUBEB_ERROR_INVALID_PARAMETER if info is an invalid pointer */
|
||||
int cubeb_device_info_destroy(cubeb_device_info * info);
|
||||
CUBEB_EXPORT int cubeb_device_info_destroy(cubeb_device_info * info);
|
||||
|
||||
/** Registers a callback which is called when the system detects
|
||||
a new device or a device is removed.
|
||||
|
@ -559,7 +560,7 @@ int cubeb_device_info_destroy(cubeb_device_info * info);
|
|||
@param user_ptr pointer to user specified data which will be present in
|
||||
subsequent callbacks.
|
||||
@retval CUBEB_ERROR_NOT_SUPPORTED */
|
||||
int cubeb_register_device_collection_changed(cubeb * context,
|
||||
CUBEB_EXPORT int cubeb_register_device_collection_changed(cubeb * context,
|
||||
cubeb_device_type devtype,
|
||||
cubeb_device_collection_changed_callback callback,
|
||||
void * user_ptr);
|
||||
|
@ -574,7 +575,7 @@ int cubeb_register_device_collection_changed(cubeb * context,
|
|||
@retval CUBEB_ERROR_INVALID_PARAMETER if either context or log_callback are
|
||||
invalid pointers, or if level is not
|
||||
in cubeb_log_level. */
|
||||
int cubeb_set_log_callback(cubeb_log_level log_level,
|
||||
CUBEB_EXPORT int cubeb_set_log_callback(cubeb_log_level log_level,
|
||||
cubeb_log_callback log_callback);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
dnl as-ac-expand.m4 0.2.0
|
||||
dnl autostars m4 macro for expanding directories using configure's prefix
|
||||
dnl thomas@apestaart.org
|
||||
|
||||
dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
|
||||
dnl example
|
||||
dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
|
||||
dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
|
||||
|
||||
AC_DEFUN([AS_AC_EXPAND],
|
||||
[
|
||||
EXP_VAR=[$1]
|
||||
FROM_VAR=[$2]
|
||||
|
||||
dnl first expand prefix and exec_prefix if necessary
|
||||
prefix_save=$prefix
|
||||
exec_prefix_save=$exec_prefix
|
||||
|
||||
dnl if no prefix given, then use /usr/local, the default prefix
|
||||
if test "x$prefix" = "xNONE"; then
|
||||
prefix="$ac_default_prefix"
|
||||
fi
|
||||
dnl if no exec_prefix given, then use prefix
|
||||
if test "x$exec_prefix" = "xNONE"; then
|
||||
exec_prefix=$prefix
|
||||
fi
|
||||
|
||||
full_var="$FROM_VAR"
|
||||
dnl loop until it doesn't change anymore
|
||||
while true; do
|
||||
new_full_var="`eval echo $full_var`"
|
||||
if test "x$new_full_var" = "x$full_var"; then break; fi
|
||||
full_var=$new_full_var
|
||||
done
|
||||
|
||||
dnl clean up
|
||||
full_var=$new_full_var
|
||||
AC_SUBST([$1], "$full_var")
|
||||
|
||||
dnl restore prefix and exec_prefix
|
||||
prefix=$prefix_save
|
||||
exec_prefix=$exec_prefix_save
|
||||
])
|
|
@ -8,9 +8,6 @@
|
|||
#include <assert.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include "cubeb/cubeb.h"
|
||||
#include "cubeb-internal.h"
|
||||
|
||||
|
@ -59,7 +56,7 @@ int kai_init(cubeb ** context, char const * context_name);
|
|||
#endif
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
validate_stream_params(cubeb_stream_params * input_stream_params,
|
||||
cubeb_stream_params * output_stream_params)
|
||||
{
|
||||
|
@ -101,7 +98,7 @@ validate_stream_params(cubeb_stream_params * input_stream_params,
|
|||
|
||||
|
||||
|
||||
int
|
||||
static int
|
||||
validate_latency(int latency)
|
||||
{
|
||||
if (latency < 1 || latency > 96000) {
|
||||
|
@ -473,4 +470,3 @@ cubeb_crash()
|
|||
*((volatile int *) NULL) = 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1090,7 +1090,7 @@ alsa_stream_get_position(cubeb_stream * stm, uint64_t * position)
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
alsa_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
|
||||
{
|
||||
snd_pcm_sframes_t delay;
|
||||
|
@ -1105,7 +1105,7 @@ alsa_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
alsa_stream_set_volume(cubeb_stream * stm, float volume)
|
||||
{
|
||||
/* setting the volume using an API call does not seem very stable/supported */
|
||||
|
|
|
@ -10,9 +10,17 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern cubeb_log_level g_log_level;
|
||||
extern cubeb_log_callback g_log_callback;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#define LOGV(...) do { \
|
||||
LOG_INTERNAL(CUBEB_LOG_VERBOSE, __VA_ARGS__); \
|
||||
} while(0)
|
||||
|
|
|
@ -116,7 +116,7 @@ struct cubeb_stream {
|
|||
cubeb_state state;
|
||||
};
|
||||
|
||||
const float PULSE_NO_GAIN = -1.0;
|
||||
static const float PULSE_NO_GAIN = -1.0;
|
||||
|
||||
enum cork_state {
|
||||
UNCORK = 0,
|
||||
|
@ -636,8 +636,8 @@ pulse_destroy(cubeb * ctx)
|
|||
|
||||
static void pulse_stream_destroy(cubeb_stream * stm);
|
||||
|
||||
pa_sample_format_t
|
||||
cubeb_to_pulse_format(cubeb_sample_format format)
|
||||
static pa_sample_format_t
|
||||
to_pulse_format(cubeb_sample_format format)
|
||||
{
|
||||
switch (format) {
|
||||
case CUBEB_SAMPLE_S16LE:
|
||||
|
@ -662,7 +662,7 @@ create_pa_stream(cubeb_stream * stm,
|
|||
assert(stm && stream_params);
|
||||
*pa_stm = NULL;
|
||||
pa_sample_spec ss;
|
||||
ss.format = cubeb_to_pulse_format(stream_params->format);
|
||||
ss.format = to_pulse_format(stream_params->format);
|
||||
if (ss.format == PA_SAMPLE_INVALID)
|
||||
return CUBEB_ERROR_INVALID_FORMAT;
|
||||
ss.rate = stream_params->rate;
|
||||
|
@ -835,7 +835,7 @@ pulse_stream_destroy(cubeb_stream * stm)
|
|||
free(stm);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
pulse_defer_event_cb(pa_mainloop_api * a, void * userdata)
|
||||
{
|
||||
cubeb_stream * stm = userdata;
|
||||
|
@ -908,7 +908,7 @@ pulse_stream_get_position(cubeb_stream * stm, uint64_t * position)
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
pulse_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
|
||||
{
|
||||
pa_usec_t r_usec;
|
||||
|
@ -928,14 +928,15 @@ pulse_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
void volume_success(pa_context *c, int success, void *userdata)
|
||||
static void
|
||||
volume_success(pa_context *c, int success, void *userdata)
|
||||
{
|
||||
cubeb_stream * stream = userdata;
|
||||
assert(success);
|
||||
WRAP(pa_threaded_mainloop_signal)(stream->context->mainloop, 0);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
pulse_stream_set_volume(cubeb_stream * stm, float volume)
|
||||
{
|
||||
uint32_t index;
|
||||
|
@ -980,7 +981,7 @@ pulse_stream_set_volume(cubeb_stream * stm, float volume)
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
pulse_stream_set_panning(cubeb_stream * stream, float panning)
|
||||
{
|
||||
const pa_channel_map * map;
|
||||
|
@ -1222,7 +1223,8 @@ pulse_enumerate_devices(cubeb * context, cubeb_device_type type,
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
int pulse_stream_get_current_device(cubeb_stream * stm, cubeb_device ** const device)
|
||||
static int
|
||||
pulse_stream_get_current_device(cubeb_stream * stm, cubeb_device ** const device)
|
||||
{
|
||||
#if PA_CHECK_VERSION(0, 9, 8)
|
||||
*device = calloc(1, sizeof(cubeb_device));
|
||||
|
@ -1245,7 +1247,8 @@ int pulse_stream_get_current_device(cubeb_stream * stm, cubeb_device ** const de
|
|||
#endif
|
||||
}
|
||||
|
||||
int pulse_stream_device_destroy(cubeb_stream * stream,
|
||||
static int
|
||||
pulse_stream_device_destroy(cubeb_stream * stream,
|
||||
cubeb_device * device)
|
||||
{
|
||||
free(device->input_name);
|
||||
|
@ -1254,7 +1257,8 @@ int pulse_stream_device_destroy(cubeb_stream * stream,
|
|||
return CUBEB_OK;
|
||||
}
|
||||
|
||||
void pulse_subscribe_callback(pa_context * ctx,
|
||||
static void
|
||||
pulse_subscribe_callback(pa_context * ctx,
|
||||
pa_subscription_event_type_t t,
|
||||
uint32_t index, void * userdata)
|
||||
{
|
||||
|
@ -1289,14 +1293,16 @@ void pulse_subscribe_callback(pa_context * ctx,
|
|||
}
|
||||
}
|
||||
|
||||
void subscribe_success(pa_context *c, int success, void *userdata)
|
||||
static void
|
||||
subscribe_success(pa_context *c, int success, void *userdata)
|
||||
{
|
||||
cubeb * context = userdata;
|
||||
assert(success);
|
||||
WRAP(pa_threaded_mainloop_signal)(context->mainloop, 0);
|
||||
}
|
||||
|
||||
int pulse_register_device_collection_changed(cubeb * context,
|
||||
static int
|
||||
pulse_register_device_collection_changed(cubeb * context,
|
||||
cubeb_device_type devtype,
|
||||
cubeb_device_collection_changed_callback collection_changed_callback,
|
||||
void * user_ptr)
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
* This program is made available under an ISC-style license. See the
|
||||
* accompanying file LICENSE for details.
|
||||
*/
|
||||
|
||||
#ifndef NOMINMAX
|
||||
#define NOMINMAX
|
||||
#endif // NOMINMAX
|
||||
|
@ -15,9 +14,6 @@
|
|||
#include <cstring>
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include "cubeb_resampler.h"
|
||||
#include "cubeb-speex-resampler.h"
|
||||
#include "cubeb_resampler_internal.h"
|
||||
|
|
|
@ -6,9 +6,6 @@
|
|||
*/
|
||||
#define NOMINMAX
|
||||
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include <initguid.h>
|
||||
#include <windows.h>
|
||||
#include <mmdeviceapi.h>
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
* This program is made available under an ISC-style license. See the
|
||||
* accompanying file LICENSE for details.
|
||||
*/
|
||||
#ifndef NOMINMAX
|
||||
#define NOMINMAX
|
||||
#endif // NOMINMAX
|
||||
|
||||
#ifdef NDEBUG
|
||||
#undef NDEBUG
|
||||
#endif
|
||||
#ifndef CUBEB_GECKO_BUILD
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include "cubeb_resampler_internal.h"
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
|
Загрузка…
Ссылка в новой задаче