mirror of
https://github.com/SFML/SFML.git
synced 2024-12-01 07:41:05 +08:00
Merge branch 'feature/no_libsndfile_all_os'
This commit is contained in:
commit
20af2a4dfa
@ -74,7 +74,7 @@ if(SFML_OS_MACOSX)
|
|||||||
# add an option to build frameworks instead of dylibs (release only)
|
# add an option to build frameworks instead of dylibs (release only)
|
||||||
sfml_set_option(SFML_BUILD_FRAMEWORKS FALSE BOOL "TRUE to build SFML as frameworks libraries (release only), FALSE to build according to BUILD_SHARED_LIBS")
|
sfml_set_option(SFML_BUILD_FRAMEWORKS FALSE BOOL "TRUE to build SFML as frameworks libraries (release only), FALSE to build according to BUILD_SHARED_LIBS")
|
||||||
|
|
||||||
# add an option to let the user specify a custom directory for frameworks installation (SFML, sndfile, ...)
|
# add an option to let the user specify a custom directory for frameworks installation (SFML, FLAC, ...)
|
||||||
sfml_set_option(CMAKE_INSTALL_FRAMEWORK_PREFIX "/Library/Frameworks" STRING "Frameworks installation directory")
|
sfml_set_option(CMAKE_INSTALL_FRAMEWORK_PREFIX "/Library/Frameworks" STRING "Frameworks installation directory")
|
||||||
|
|
||||||
# add an option to automatically install Xcode templates
|
# add an option to automatically install Xcode templates
|
||||||
@ -304,23 +304,43 @@ if(SFML_OS_WINDOWS)
|
|||||||
elseif(SFML_OS_MACOSX)
|
elseif(SFML_OS_MACOSX)
|
||||||
|
|
||||||
# install extlibs dependencies only when used
|
# install extlibs dependencies only when used
|
||||||
if("${SNDFILE_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/sndfile.framework")
|
if("${FLAC_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/FLAC.framework")
|
||||||
install(DIRECTORY extlibs/libs-osx/Frameworks/sndfile.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
install(DIRECTORY extlibs/libs-osx/Frameworks/FLAC.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if("${FREETYPE_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/freetype.framework")
|
if("${FREETYPE_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/freetype.framework")
|
||||||
install(DIRECTORY extlibs/libs-osx/Frameworks/freetype.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
install(DIRECTORY extlibs/libs-osx/Frameworks/freetype.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if("${OGG_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/ogg.framework")
|
||||||
|
install(DIRECTORY extlibs/libs-osx/Frameworks/ogg.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${VORBIS_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/vorbis.framework")
|
||||||
|
install(DIRECTORY extlibs/libs-osx/Frameworks/vorbis.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${VORBISENC_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/vorbisenc.framework")
|
||||||
|
install(DIRECTORY extlibs/libs-osx/Frameworks/vorbisenc.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${VORBISFILE_LIBRARY}" STREQUAL "${SFML_SOURCE_DIR}/extlibs/libs-osx/Frameworks/vorbisfile.framework")
|
||||||
|
install(DIRECTORY extlibs/libs-osx/Frameworks/vorbisfile.framework DESTINATION ${CMAKE_INSTALL_FRAMEWORK_PREFIX})
|
||||||
|
endif()
|
||||||
|
|
||||||
# install the Xcode templates if requested
|
# install the Xcode templates if requested
|
||||||
if(SFML_INSTALL_XCODE_TEMPLATES)
|
if(SFML_INSTALL_XCODE_TEMPLATES)
|
||||||
configure_file(
|
# configure the templates plist files
|
||||||
"tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist.in"
|
foreach(TEMPLATE "SFML Compiler" "SFML App")
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist"
|
configure_file(
|
||||||
@ONLY)
|
"tools/xcode/templates/SFML/${TEMPLATE}.xctemplate/TemplateInfo.plist.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/tools/xcode/templates/SFML/${TEMPLATE}.xctemplate/TemplateInfo.plist"
|
||||||
|
@ONLY)
|
||||||
|
endforeach()
|
||||||
install(DIRECTORY "tools/xcode/templates/SFML" "${CMAKE_CURRENT_BINARY_DIR}/tools/xcode/templates/SFML"
|
install(DIRECTORY "tools/xcode/templates/SFML" "${CMAKE_CURRENT_BINARY_DIR}/tools/xcode/templates/SFML"
|
||||||
DESTINATION /Library/Developer/Xcode/Templates
|
DESTINATION /Library/Developer/Xcode/Templates
|
||||||
PATTERN "*.in" EXCLUDE)
|
PATTERN "*.in" EXCLUDE
|
||||||
|
PATTERN ".DS_Store" EXCLUDE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
elseif(SFML_OS_IOS)
|
elseif(SFML_OS_IOS)
|
||||||
|
18
cmake/Modules/FindFLAC.cmake
Normal file
18
cmake/Modules/FindFLAC.cmake
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#
|
||||||
|
# Try to find FLAC libraries and include paths.
|
||||||
|
# Once done this will define
|
||||||
|
#
|
||||||
|
# FLAC_FOUND
|
||||||
|
# FLAC_INCLUDE_DIR
|
||||||
|
# FLAC_LIBRARY
|
||||||
|
#
|
||||||
|
|
||||||
|
find_path(FLAC_INCLUDE_DIR FLAC/all.h)
|
||||||
|
find_path(FLAC_INCLUDE_DIR FLAC/stream_decoder.h)
|
||||||
|
|
||||||
|
find_library(FLAC_LIBRARY NAMES FLAC)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(FLAC DEFAULT_MSG FLAC_LIBRARY FLAC_INCLUDE_DIR)
|
||||||
|
|
||||||
|
mark_as_advanced(FLAC_INCLUDE_DIR FLAC_LIBRARY)
|
@ -322,11 +322,14 @@ if(SFML_STATIC_LIBRARIES)
|
|||||||
|
|
||||||
# find libraries
|
# find libraries
|
||||||
find_sfml_dependency(OPENAL_LIBRARY "OpenAL" openal openal32)
|
find_sfml_dependency(OPENAL_LIBRARY "OpenAL" openal openal32)
|
||||||
find_sfml_dependency(SNDFILE_LIBRARY "libsndfile" sndfile)
|
find_sfml_dependency(OGG_LIBRARY "Ogg" ogg)
|
||||||
|
find_sfml_dependency(VORBIS_LIBRARY "Vorbis" vorbis)
|
||||||
|
find_sfml_dependency(VORBISFILE_LIBRARY "VorbisFile" vorbisfile)
|
||||||
|
find_sfml_dependency(FLAC_LIBRARY "FLAC" flac)
|
||||||
|
|
||||||
# update the list
|
# update the list
|
||||||
set(SFML_AUDIO_DEPENDENCIES ${OPENAL_LIBRARY} ${SNDFILE_LIBRARY})
|
set(SFML_AUDIO_DEPENDENCIES ${OPENAL_LIBRARY} ${FLAC_LIBRARY} ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARY})
|
||||||
set(SFML_DEPENDENCIES ${SFML_AUDIO_DEPENDENCIES} ${SFML_DEPENDENCIES})
|
set(SFML_DEPENDENCIES ${SFML_DEPENDENCIES} ${SFML_AUDIO_DEPENDENCIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
# - Find sndfile
|
|
||||||
# Find the native sndfile includes and libraries
|
|
||||||
#
|
|
||||||
# SNDFILE_INCLUDE_DIR - where to find sndfile.h, etc.
|
|
||||||
# SNDFILE_LIBRARIES - List of libraries when using libsndfile.
|
|
||||||
# SNDFILE_FOUND - True if libsndfile found.
|
|
||||||
|
|
||||||
if(SNDFILE_INCLUDE_DIR)
|
|
||||||
# Already in cache, be silent
|
|
||||||
set(SNDFILE_FIND_QUIETLY TRUE)
|
|
||||||
endif(SNDFILE_INCLUDE_DIR)
|
|
||||||
|
|
||||||
find_path(SNDFILE_INCLUDE_DIR sndfile.h)
|
|
||||||
|
|
||||||
find_library(SNDFILE_LIBRARY NAMES sndfile sndfile-1)
|
|
||||||
|
|
||||||
# Handle the QUIETLY and REQUIRED arguments and set SNDFILE_FOUND to TRUE if
|
|
||||||
# all listed variables are TRUE.
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(SNDFILE DEFAULT_MSG SNDFILE_LIBRARY SNDFILE_INCLUDE_DIR)
|
|
||||||
|
|
||||||
if(SNDFILE_FOUND)
|
|
||||||
set(SNDFILE_LIBRARIES ${SNDFILE_LIBRARY})
|
|
||||||
else(SNDFILE_FOUND)
|
|
||||||
set(SNDFILE_LIBRARIES)
|
|
||||||
endif(SNDFILE_FOUND)
|
|
||||||
|
|
||||||
mark_as_advanced(SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY)
|
|
24
cmake/Modules/FindVorbis.cmake
Normal file
24
cmake/Modules/FindVorbis.cmake
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#
|
||||||
|
# Try to find Ogg/Vorbis libraries and include paths.
|
||||||
|
# Once done this will define
|
||||||
|
#
|
||||||
|
# VORBIS_FOUND
|
||||||
|
# VORBIS_INCLUDE_DIRS
|
||||||
|
# VORBIS_LIBRARIES
|
||||||
|
#
|
||||||
|
|
||||||
|
find_path(OGG_INCLUDE_DIR ogg/ogg.h)
|
||||||
|
find_path(VORBIS_INCLUDE_DIR vorbis/vorbisfile.h)
|
||||||
|
|
||||||
|
find_library(OGG_LIBRARY NAMES ogg)
|
||||||
|
find_library(VORBIS_LIBRARY NAMES vorbis)
|
||||||
|
find_library(VORBISFILE_LIBRARY NAMES vorbisfile)
|
||||||
|
find_library(VORBISENC_LIBRARY NAMES vorbisenc)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(VORBIS DEFAULT_MSG VORBIS_LIBRARY VORBISFILE_LIBRARY VORBISENC_LIBRARY OGG_LIBRARY VORBIS_INCLUDE_DIR OGG_INCLUDE_DIR)
|
||||||
|
|
||||||
|
set(VORBIS_INCLUDE_DIRS ${OGG_INCLUDE_DIR} ${VORBIS_INCLUDE_DIR})
|
||||||
|
set(VORBIS_LIBRARIES ${VORBISENC_LIBRARY} ${VORBISFILE_LIBRARY} ${VORBIS_LIBRARY} ${OGG_LIBRARY})
|
||||||
|
|
||||||
|
mark_as_advanced(OGG_INCLUDE_DIR VORBIS_INCLUDE_DIR OGG_LIBRARY VORBIS_LIBRARY VORBISFILE_LIBRARY VORBISENC_LIBRARY)
|
6
extlibs/Android.mk
vendored
6
extlibs/Android.mk
vendored
@ -12,12 +12,6 @@ LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libjpeg.a
|
|||||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
||||||
include $(PREBUILT_STATIC_LIBRARY)
|
include $(PREBUILT_STATIC_LIBRARY)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
|
||||||
LOCAL_MODULE := sndfile
|
|
||||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libsndfile.so
|
|
||||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
|
|
||||||
include $(PREBUILT_SHARED_LIBRARY)
|
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
LOCAL_MODULE := openal
|
LOCAL_MODULE := openal
|
||||||
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libopenal.so
|
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libopenal.so
|
||||||
|
371
extlibs/headers/FLAC/all.h
vendored
Normal file
371
extlibs/headers/FLAC/all.h
vendored
Normal file
@ -0,0 +1,371 @@
|
|||||||
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
|
* Copyright (C) 2011-2013 Xiph.Org Foundation
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of the Xiph.org Foundation nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLAC__ALL_H
|
||||||
|
#define FLAC__ALL_H
|
||||||
|
|
||||||
|
#include "export.h"
|
||||||
|
|
||||||
|
#include "assert.h"
|
||||||
|
#include "callback.h"
|
||||||
|
#include "format.h"
|
||||||
|
#include "metadata.h"
|
||||||
|
#include "ordinals.h"
|
||||||
|
#include "stream_decoder.h"
|
||||||
|
#include "stream_encoder.h"
|
||||||
|
|
||||||
|
/** \mainpage
|
||||||
|
*
|
||||||
|
* \section intro Introduction
|
||||||
|
*
|
||||||
|
* This is the documentation for the FLAC C and C++ APIs. It is
|
||||||
|
* highly interconnected; this introduction should give you a top
|
||||||
|
* level idea of the structure and how to find the information you
|
||||||
|
* need. As a prerequisite you should have at least a basic
|
||||||
|
* knowledge of the FLAC format, documented
|
||||||
|
* <A HREF="../format.html">here</A>.
|
||||||
|
*
|
||||||
|
* \section c_api FLAC C API
|
||||||
|
*
|
||||||
|
* The FLAC C API is the interface to libFLAC, a set of structures
|
||||||
|
* describing the components of FLAC streams, and functions for
|
||||||
|
* encoding and decoding streams, as well as manipulating FLAC
|
||||||
|
* metadata in files. The public include files will be installed
|
||||||
|
* in your include area (for example /usr/include/FLAC/...).
|
||||||
|
*
|
||||||
|
* By writing a little code and linking against libFLAC, it is
|
||||||
|
* relatively easy to add FLAC support to another program. The
|
||||||
|
* library is licensed under <A HREF="../license.html">Xiph's BSD license</A>.
|
||||||
|
* Complete source code of libFLAC as well as the command-line
|
||||||
|
* encoder and plugins is available and is a useful source of
|
||||||
|
* examples.
|
||||||
|
*
|
||||||
|
* Aside from encoders and decoders, libFLAC provides a powerful
|
||||||
|
* metadata interface for manipulating metadata in FLAC files. It
|
||||||
|
* allows the user to add, delete, and modify FLAC metadata blocks
|
||||||
|
* and it can automatically take advantage of PADDING blocks to avoid
|
||||||
|
* rewriting the entire FLAC file when changing the size of the
|
||||||
|
* metadata.
|
||||||
|
*
|
||||||
|
* libFLAC usually only requires the standard C library and C math
|
||||||
|
* library. In particular, threading is not used so there is no
|
||||||
|
* dependency on a thread library. However, libFLAC does not use
|
||||||
|
* global variables and should be thread-safe.
|
||||||
|
*
|
||||||
|
* libFLAC also supports encoding to and decoding from Ogg FLAC.
|
||||||
|
* However the metadata editing interfaces currently have limited
|
||||||
|
* read-only support for Ogg FLAC files.
|
||||||
|
*
|
||||||
|
* \section cpp_api FLAC C++ API
|
||||||
|
*
|
||||||
|
* The FLAC C++ API is a set of classes that encapsulate the
|
||||||
|
* structures and functions in libFLAC. They provide slightly more
|
||||||
|
* functionality with respect to metadata but are otherwise
|
||||||
|
* equivalent. For the most part, they share the same usage as
|
||||||
|
* their counterparts in libFLAC, and the FLAC C API documentation
|
||||||
|
* can be used as a supplement. The public include files
|
||||||
|
* for the C++ API will be installed in your include area (for
|
||||||
|
* example /usr/include/FLAC++/...).
|
||||||
|
*
|
||||||
|
* libFLAC++ is also licensed under
|
||||||
|
* <A HREF="../license.html">Xiph's BSD license</A>.
|
||||||
|
*
|
||||||
|
* \section getting_started Getting Started
|
||||||
|
*
|
||||||
|
* A good starting point for learning the API is to browse through
|
||||||
|
* the <A HREF="modules.html">modules</A>. Modules are logical
|
||||||
|
* groupings of related functions or classes, which correspond roughly
|
||||||
|
* to header files or sections of header files. Each module includes a
|
||||||
|
* detailed description of the general usage of its functions or
|
||||||
|
* classes.
|
||||||
|
*
|
||||||
|
* From there you can go on to look at the documentation of
|
||||||
|
* individual functions. You can see different views of the individual
|
||||||
|
* functions through the links in top bar across this page.
|
||||||
|
*
|
||||||
|
* If you prefer a more hands-on approach, you can jump right to some
|
||||||
|
* <A HREF="../documentation_example_code.html">example code</A>.
|
||||||
|
*
|
||||||
|
* \section porting_guide Porting Guide
|
||||||
|
*
|
||||||
|
* Starting with FLAC 1.1.3 a \link porting Porting Guide \endlink
|
||||||
|
* has been introduced which gives detailed instructions on how to
|
||||||
|
* port your code to newer versions of FLAC.
|
||||||
|
*
|
||||||
|
* \section embedded_developers Embedded Developers
|
||||||
|
*
|
||||||
|
* libFLAC has grown larger over time as more functionality has been
|
||||||
|
* included, but much of it may be unnecessary for a particular embedded
|
||||||
|
* implementation. Unused parts may be pruned by some simple editing of
|
||||||
|
* src/libFLAC/Makefile.am. In general, the decoders, encoders, and
|
||||||
|
* metadata interface are all independent from each other.
|
||||||
|
*
|
||||||
|
* It is easiest to just describe the dependencies:
|
||||||
|
*
|
||||||
|
* - All modules depend on the \link flac_format Format \endlink module.
|
||||||
|
* - The decoders and encoders depend on the bitbuffer.
|
||||||
|
* - The decoder is independent of the encoder. The encoder uses the
|
||||||
|
* decoder because of the verify feature, but this can be removed if
|
||||||
|
* not needed.
|
||||||
|
* - Parts of the metadata interface require the stream decoder (but not
|
||||||
|
* the encoder).
|
||||||
|
* - Ogg support is selectable through the compile time macro
|
||||||
|
* \c FLAC__HAS_OGG.
|
||||||
|
*
|
||||||
|
* For example, if your application only requires the stream decoder, no
|
||||||
|
* encoder, and no metadata interface, you can remove the stream encoder
|
||||||
|
* and the metadata interface, which will greatly reduce the size of the
|
||||||
|
* library.
|
||||||
|
*
|
||||||
|
* Also, there are several places in the libFLAC code with comments marked
|
||||||
|
* with "OPT:" where a #define can be changed to enable code that might be
|
||||||
|
* faster on a specific platform. Experimenting with these can yield faster
|
||||||
|
* binaries.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup porting Porting Guide for New Versions
|
||||||
|
*
|
||||||
|
* This module describes differences in the library interfaces from
|
||||||
|
* version to version. It assists in the porting of code that uses
|
||||||
|
* the libraries to newer versions of FLAC.
|
||||||
|
*
|
||||||
|
* One simple facility for making porting easier that has been added
|
||||||
|
* in FLAC 1.1.3 is a set of \c #defines in \c export.h of each
|
||||||
|
* library's includes (e.g. \c include/FLAC/export.h). The
|
||||||
|
* \c #defines mirror the libraries'
|
||||||
|
* <A HREF="http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning">libtool version numbers</A>,
|
||||||
|
* e.g. in libFLAC there are \c FLAC_API_VERSION_CURRENT,
|
||||||
|
* \c FLAC_API_VERSION_REVISION, and \c FLAC_API_VERSION_AGE.
|
||||||
|
* These can be used to support multiple versions of an API during the
|
||||||
|
* transition phase, e.g.
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* #if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
|
||||||
|
* legacy code
|
||||||
|
* #else
|
||||||
|
* new code
|
||||||
|
* #endif
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* The the source will work for multiple versions and the legacy code can
|
||||||
|
* easily be removed when the transition is complete.
|
||||||
|
*
|
||||||
|
* Another available symbol is FLAC_API_SUPPORTS_OGG_FLAC (defined in
|
||||||
|
* include/FLAC/export.h), which can be used to determine whether or not
|
||||||
|
* the library has been compiled with support for Ogg FLAC. This is
|
||||||
|
* simpler than trying to call an Ogg init function and catching the
|
||||||
|
* error.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup porting_1_1_2_to_1_1_3 Porting from FLAC 1.1.2 to 1.1.3
|
||||||
|
* \ingroup porting
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module describes porting from FLAC 1.1.2 to FLAC 1.1.3.
|
||||||
|
*
|
||||||
|
* The main change between the APIs in 1.1.2 and 1.1.3 is that they have
|
||||||
|
* been simplified. First, libOggFLAC has been merged into libFLAC and
|
||||||
|
* libOggFLAC++ has been merged into libFLAC++. Second, both the three
|
||||||
|
* decoding layers and three encoding layers have been merged into a
|
||||||
|
* single stream decoder and stream encoder. That is, the functionality
|
||||||
|
* of FLAC__SeekableStreamDecoder and FLAC__FileDecoder has been merged
|
||||||
|
* into FLAC__StreamDecoder, and FLAC__SeekableStreamEncoder and
|
||||||
|
* FLAC__FileEncoder into FLAC__StreamEncoder. Only the
|
||||||
|
* FLAC__StreamDecoder and FLAC__StreamEncoder remain. What this means
|
||||||
|
* is there is now a single API that can be used to encode or decode
|
||||||
|
* streams to/from native FLAC or Ogg FLAC and the single API can work
|
||||||
|
* on both seekable and non-seekable streams.
|
||||||
|
*
|
||||||
|
* Instead of creating an encoder or decoder of a certain layer, now the
|
||||||
|
* client will always create a FLAC__StreamEncoder or
|
||||||
|
* FLAC__StreamDecoder. The old layers are now differentiated by the
|
||||||
|
* initialization function. For example, for the decoder,
|
||||||
|
* FLAC__stream_decoder_init() has been replaced by
|
||||||
|
* FLAC__stream_decoder_init_stream(). This init function takes
|
||||||
|
* callbacks for the I/O, and the seeking callbacks are optional. This
|
||||||
|
* allows the client to use the same object for seekable and
|
||||||
|
* non-seekable streams. For decoding a FLAC file directly, the client
|
||||||
|
* can use FLAC__stream_decoder_init_file() and pass just a filename
|
||||||
|
* and fewer callbacks; most of the other callbacks are supplied
|
||||||
|
* internally. For situations where fopen()ing by filename is not
|
||||||
|
* possible (e.g. Unicode filenames on Windows) the client can instead
|
||||||
|
* open the file itself and supply the FILE* to
|
||||||
|
* FLAC__stream_decoder_init_FILE(). The init functions now returns a
|
||||||
|
* FLAC__StreamDecoderInitStatus instead of FLAC__StreamDecoderState.
|
||||||
|
* Since the callbacks and client data are now passed to the init
|
||||||
|
* function, the FLAC__stream_decoder_set_*_callback() functions and
|
||||||
|
* FLAC__stream_decoder_set_client_data() are no longer needed. The
|
||||||
|
* rest of the calls to the decoder are the same as before.
|
||||||
|
*
|
||||||
|
* There are counterpart init functions for Ogg FLAC, e.g.
|
||||||
|
* FLAC__stream_decoder_init_ogg_stream(). All the rest of the calls
|
||||||
|
* and callbacks are the same as for native FLAC.
|
||||||
|
*
|
||||||
|
* As an example, in FLAC 1.1.2 a seekable stream decoder would have
|
||||||
|
* been set up like so:
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* FLAC__SeekableStreamDecoder *decoder = FLAC__seekable_stream_decoder_new();
|
||||||
|
* if(decoder == NULL) do_something;
|
||||||
|
* FLAC__seekable_stream_decoder_set_md5_checking(decoder, true);
|
||||||
|
* [... other settings ...]
|
||||||
|
* FLAC__seekable_stream_decoder_set_read_callback(decoder, my_read_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_seek_callback(decoder, my_seek_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_tell_callback(decoder, my_tell_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_length_callback(decoder, my_length_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_eof_callback(decoder, my_eof_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_write_callback(decoder, my_write_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_metadata_callback(decoder, my_metadata_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_error_callback(decoder, my_error_callback);
|
||||||
|
* FLAC__seekable_stream_decoder_set_client_data(decoder, my_client_data);
|
||||||
|
* if(FLAC__seekable_stream_decoder_init(decoder) != FLAC__SEEKABLE_STREAM_DECODER_OK) do_something;
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* In FLAC 1.1.3 it is like this:
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new();
|
||||||
|
* if(decoder == NULL) do_something;
|
||||||
|
* FLAC__stream_decoder_set_md5_checking(decoder, true);
|
||||||
|
* [... other settings ...]
|
||||||
|
* if(FLAC__stream_decoder_init_stream(
|
||||||
|
* decoder,
|
||||||
|
* my_read_callback,
|
||||||
|
* my_seek_callback, // or NULL
|
||||||
|
* my_tell_callback, // or NULL
|
||||||
|
* my_length_callback, // or NULL
|
||||||
|
* my_eof_callback, // or NULL
|
||||||
|
* my_write_callback,
|
||||||
|
* my_metadata_callback, // or NULL
|
||||||
|
* my_error_callback,
|
||||||
|
* my_client_data
|
||||||
|
* ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* or you could do;
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* [...]
|
||||||
|
* FILE *file = fopen("somefile.flac","rb");
|
||||||
|
* if(file == NULL) do_somthing;
|
||||||
|
* if(FLAC__stream_decoder_init_FILE(
|
||||||
|
* decoder,
|
||||||
|
* file,
|
||||||
|
* my_write_callback,
|
||||||
|
* my_metadata_callback, // or NULL
|
||||||
|
* my_error_callback,
|
||||||
|
* my_client_data
|
||||||
|
* ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* or just:
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* [...]
|
||||||
|
* if(FLAC__stream_decoder_init_file(
|
||||||
|
* decoder,
|
||||||
|
* "somefile.flac",
|
||||||
|
* my_write_callback,
|
||||||
|
* my_metadata_callback, // or NULL
|
||||||
|
* my_error_callback,
|
||||||
|
* my_client_data
|
||||||
|
* ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* Another small change to the decoder is in how it handles unparseable
|
||||||
|
* streams. Before, when the decoder found an unparseable stream
|
||||||
|
* (reserved for when the decoder encounters a stream from a future
|
||||||
|
* encoder that it can't parse), it changed the state to
|
||||||
|
* \c FLAC__STREAM_DECODER_UNPARSEABLE_STREAM. Now the decoder instead
|
||||||
|
* drops sync and calls the error callback with a new error code
|
||||||
|
* \c FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM. This is
|
||||||
|
* more robust. If your error callback does not discriminate on the the
|
||||||
|
* error state, your code does not need to be changed.
|
||||||
|
*
|
||||||
|
* The encoder now has a new setting:
|
||||||
|
* FLAC__stream_encoder_set_apodization(). This is for setting the
|
||||||
|
* method used to window the data before LPC analysis. You only need to
|
||||||
|
* add a call to this function if the default is not suitable. There
|
||||||
|
* are also two new convenience functions that may be useful:
|
||||||
|
* FLAC__metadata_object_cuesheet_calculate_cddb_id() and
|
||||||
|
* FLAC__metadata_get_cuesheet().
|
||||||
|
*
|
||||||
|
* The \a bytes parameter to FLAC__StreamDecoderReadCallback,
|
||||||
|
* FLAC__StreamEncoderReadCallback, and FLAC__StreamEncoderWriteCallback
|
||||||
|
* is now \c size_t instead of \c unsigned.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup porting_1_1_3_to_1_1_4 Porting from FLAC 1.1.3 to 1.1.4
|
||||||
|
* \ingroup porting
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module describes porting from FLAC 1.1.3 to FLAC 1.1.4.
|
||||||
|
*
|
||||||
|
* There were no changes to any of the interfaces from 1.1.3 to 1.1.4.
|
||||||
|
* There was a slight change in the implementation of
|
||||||
|
* FLAC__stream_encoder_set_metadata(); the function now makes a copy
|
||||||
|
* of the \a metadata array of pointers so the client no longer needs
|
||||||
|
* to maintain it after the call. The objects themselves that are
|
||||||
|
* pointed to by the array are still not copied though and must be
|
||||||
|
* maintained until the call to FLAC__stream_encoder_finish().
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup porting_1_1_4_to_1_2_0 Porting from FLAC 1.1.4 to 1.2.0
|
||||||
|
* \ingroup porting
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module describes porting from FLAC 1.1.4 to FLAC 1.2.0.
|
||||||
|
*
|
||||||
|
* There were only very minor changes to the interfaces from 1.1.4 to 1.2.0.
|
||||||
|
* In libFLAC, \c FLAC__format_sample_rate_is_subset() was added.
|
||||||
|
* In libFLAC++, \c FLAC::Decoder::Stream::get_decode_position() was added.
|
||||||
|
*
|
||||||
|
* Finally, value of the constant \c FLAC__FRAME_HEADER_RESERVED_LEN
|
||||||
|
* has changed to reflect the conversion of one of the reserved bits
|
||||||
|
* into active use. It used to be \c 2 and now is \c 1. However the
|
||||||
|
* FLAC frame header length has not changed, so to skip the proper
|
||||||
|
* number of bits, use \c FLAC__FRAME_HEADER_RESERVED_LEN +
|
||||||
|
* \c FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup flac FLAC C API
|
||||||
|
*
|
||||||
|
* The FLAC C API is the interface to libFLAC, a set of structures
|
||||||
|
* describing the components of FLAC streams, and functions for
|
||||||
|
* encoding and decoding streams, as well as manipulating FLAC
|
||||||
|
* metadata in files.
|
||||||
|
*
|
||||||
|
* You should start with the format components as all other modules
|
||||||
|
* are dependent on it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif
|
46
extlibs/headers/FLAC/assert.h
vendored
Normal file
46
extlibs/headers/FLAC/assert.h
vendored
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
|
* Copyright (C) 2001-2009 Josh Coalson
|
||||||
|
* Copyright (C) 2011-2013 Xiph.Org Foundation
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of the Xiph.org Foundation nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLAC__ASSERT_H
|
||||||
|
#define FLAC__ASSERT_H
|
||||||
|
|
||||||
|
/* we need this since some compilers (like MSVC) leave assert()s on release code (and we don't want to use their ASSERT) */
|
||||||
|
#ifdef DEBUG
|
||||||
|
#include <assert.h>
|
||||||
|
#define FLAC__ASSERT(x) assert(x)
|
||||||
|
#define FLAC__ASSERT_DECLARATION(x) x
|
||||||
|
#else
|
||||||
|
#define FLAC__ASSERT(x)
|
||||||
|
#define FLAC__ASSERT_DECLARATION(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
185
extlibs/headers/FLAC/callback.h
vendored
Normal file
185
extlibs/headers/FLAC/callback.h
vendored
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
|
* Copyright (C) 2004-2009 Josh Coalson
|
||||||
|
* Copyright (C) 2011-2013 Xiph.Org Foundation
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of the Xiph.org Foundation nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLAC__CALLBACK_H
|
||||||
|
#define FLAC__CALLBACK_H
|
||||||
|
|
||||||
|
#include "ordinals.h"
|
||||||
|
#include <stdlib.h> /* for size_t */
|
||||||
|
|
||||||
|
/** \file include/FLAC/callback.h
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module defines the structures for describing I/O callbacks
|
||||||
|
* to the other FLAC interfaces.
|
||||||
|
*
|
||||||
|
* See the detailed documentation for callbacks in the
|
||||||
|
* \link flac_callbacks callbacks \endlink module.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup flac_callbacks FLAC/callback.h: I/O callback structures
|
||||||
|
* \ingroup flac
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module defines the structures for describing I/O callbacks
|
||||||
|
* to the other FLAC interfaces.
|
||||||
|
*
|
||||||
|
* The purpose of the I/O callback functions is to create a common way
|
||||||
|
* for the metadata interfaces to handle I/O.
|
||||||
|
*
|
||||||
|
* Originally the metadata interfaces required filenames as the way of
|
||||||
|
* specifying FLAC files to operate on. This is problematic in some
|
||||||
|
* environments so there is an additional option to specify a set of
|
||||||
|
* callbacks for doing I/O on the FLAC file, instead of the filename.
|
||||||
|
*
|
||||||
|
* In addition to the callbacks, a FLAC__IOHandle type is defined as an
|
||||||
|
* opaque structure for a data source.
|
||||||
|
*
|
||||||
|
* The callback function prototypes are similar (but not identical) to the
|
||||||
|
* stdio functions fread, fwrite, fseek, ftell, feof, and fclose. If you use
|
||||||
|
* stdio streams to implement the callbacks, you can pass fread, fwrite, and
|
||||||
|
* fclose anywhere a FLAC__IOCallback_Read, FLAC__IOCallback_Write, or
|
||||||
|
* FLAC__IOCallback_Close is required, and a FILE* anywhere a FLAC__IOHandle
|
||||||
|
* is required. \warning You generally CANNOT directly use fseek or ftell
|
||||||
|
* for FLAC__IOCallback_Seek or FLAC__IOCallback_Tell since on most systems
|
||||||
|
* these use 32-bit offsets and FLAC requires 64-bit offsets to deal with
|
||||||
|
* large files. You will have to find an equivalent function (e.g. ftello),
|
||||||
|
* or write a wrapper. The same is true for feof() since this is usually
|
||||||
|
* implemented as a macro, not as a function whose address can be taken.
|
||||||
|
*
|
||||||
|
* \{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** This is the opaque handle type used by the callbacks. Typically
|
||||||
|
* this is a \c FILE* or address of a file descriptor.
|
||||||
|
*/
|
||||||
|
typedef void* FLAC__IOHandle;
|
||||||
|
|
||||||
|
/** Signature for the read callback.
|
||||||
|
* The signature and semantics match POSIX fread() implementations
|
||||||
|
* and can generally be used interchangeably.
|
||||||
|
*
|
||||||
|
* \param ptr The address of the read buffer.
|
||||||
|
* \param size The size of the records to be read.
|
||||||
|
* \param nmemb The number of records to be read.
|
||||||
|
* \param handle The handle to the data source.
|
||||||
|
* \retval size_t
|
||||||
|
* The number of records read.
|
||||||
|
*/
|
||||||
|
typedef size_t (*FLAC__IOCallback_Read) (void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle);
|
||||||
|
|
||||||
|
/** Signature for the write callback.
|
||||||
|
* The signature and semantics match POSIX fwrite() implementations
|
||||||
|
* and can generally be used interchangeably.
|
||||||
|
*
|
||||||
|
* \param ptr The address of the write buffer.
|
||||||
|
* \param size The size of the records to be written.
|
||||||
|
* \param nmemb The number of records to be written.
|
||||||
|
* \param handle The handle to the data source.
|
||||||
|
* \retval size_t
|
||||||
|
* The number of records written.
|
||||||
|
*/
|
||||||
|
typedef size_t (*FLAC__IOCallback_Write) (const void *ptr, size_t size, size_t nmemb, FLAC__IOHandle handle);
|
||||||
|
|
||||||
|
/** Signature for the seek callback.
|
||||||
|
* The signature and semantics mostly match POSIX fseek() WITH ONE IMPORTANT
|
||||||
|
* EXCEPTION: the offset is a 64-bit type whereas fseek() is generally 'long'
|
||||||
|
* and 32-bits wide.
|
||||||
|
*
|
||||||
|
* \param handle The handle to the data source.
|
||||||
|
* \param offset The new position, relative to \a whence
|
||||||
|
* \param whence \c SEEK_SET, \c SEEK_CUR, or \c SEEK_END
|
||||||
|
* \retval int
|
||||||
|
* \c 0 on success, \c -1 on error.
|
||||||
|
*/
|
||||||
|
typedef int (*FLAC__IOCallback_Seek) (FLAC__IOHandle handle, FLAC__int64 offset, int whence);
|
||||||
|
|
||||||
|
/** Signature for the tell callback.
|
||||||
|
* The signature and semantics mostly match POSIX ftell() WITH ONE IMPORTANT
|
||||||
|
* EXCEPTION: the offset is a 64-bit type whereas ftell() is generally 'long'
|
||||||
|
* and 32-bits wide.
|
||||||
|
*
|
||||||
|
* \param handle The handle to the data source.
|
||||||
|
* \retval FLAC__int64
|
||||||
|
* The current position on success, \c -1 on error.
|
||||||
|
*/
|
||||||
|
typedef FLAC__int64 (*FLAC__IOCallback_Tell) (FLAC__IOHandle handle);
|
||||||
|
|
||||||
|
/** Signature for the EOF callback.
|
||||||
|
* The signature and semantics mostly match POSIX feof() but WATCHOUT:
|
||||||
|
* on many systems, feof() is a macro, so in this case a wrapper function
|
||||||
|
* must be provided instead.
|
||||||
|
*
|
||||||
|
* \param handle The handle to the data source.
|
||||||
|
* \retval int
|
||||||
|
* \c 0 if not at end of file, nonzero if at end of file.
|
||||||
|
*/
|
||||||
|
typedef int (*FLAC__IOCallback_Eof) (FLAC__IOHandle handle);
|
||||||
|
|
||||||
|
/** Signature for the close callback.
|
||||||
|
* The signature and semantics match POSIX fclose() implementations
|
||||||
|
* and can generally be used interchangeably.
|
||||||
|
*
|
||||||
|
* \param handle The handle to the data source.
|
||||||
|
* \retval int
|
||||||
|
* \c 0 on success, \c EOF on error.
|
||||||
|
*/
|
||||||
|
typedef int (*FLAC__IOCallback_Close) (FLAC__IOHandle handle);
|
||||||
|
|
||||||
|
/** A structure for holding a set of callbacks.
|
||||||
|
* Each FLAC interface that requires a FLAC__IOCallbacks structure will
|
||||||
|
* describe which of the callbacks are required. The ones that are not
|
||||||
|
* required may be set to NULL.
|
||||||
|
*
|
||||||
|
* If the seek requirement for an interface is optional, you can signify that
|
||||||
|
* a data sorce is not seekable by setting the \a seek field to \c NULL.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
FLAC__IOCallback_Read read;
|
||||||
|
FLAC__IOCallback_Write write;
|
||||||
|
FLAC__IOCallback_Seek seek;
|
||||||
|
FLAC__IOCallback_Tell tell;
|
||||||
|
FLAC__IOCallback_Eof eof;
|
||||||
|
FLAC__IOCallback_Close close;
|
||||||
|
} FLAC__IOCallbacks;
|
||||||
|
|
||||||
|
/* \} */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
97
extlibs/headers/FLAC/export.h
vendored
Normal file
97
extlibs/headers/FLAC/export.h
vendored
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
|
* Copyright (C) 2011-2013 Xiph.Org Foundation
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of the Xiph.org Foundation nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLAC__EXPORT_H
|
||||||
|
#define FLAC__EXPORT_H
|
||||||
|
|
||||||
|
/** \file include/FLAC/export.h
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module contains #defines and symbols for exporting function
|
||||||
|
* calls, and providing version information and compiled-in features.
|
||||||
|
*
|
||||||
|
* See the \link flac_export export \endlink module.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup flac_export FLAC/export.h: export symbols
|
||||||
|
* \ingroup flac
|
||||||
|
*
|
||||||
|
* \brief
|
||||||
|
* This module contains #defines and symbols for exporting function
|
||||||
|
* calls, and providing version information and compiled-in features.
|
||||||
|
*
|
||||||
|
* If you are compiling with MSVC and will link to the static library
|
||||||
|
* (libFLAC.lib) you should define FLAC__NO_DLL in your project to
|
||||||
|
* make sure the symbols are exported properly.
|
||||||
|
*
|
||||||
|
* \{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(FLAC__NO_DLL)
|
||||||
|
#define FLAC_API
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
#ifdef FLAC_API_EXPORTS
|
||||||
|
#define FLAC_API _declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define FLAC_API _declspec(dllimport)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif defined(FLAC__USE_VISIBILITY_ATTR)
|
||||||
|
#define FLAC_API __attribute__ ((visibility ("default")))
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define FLAC_API
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** These #defines will mirror the libtool-based library version number, see
|
||||||
|
* http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning
|
||||||
|
*/
|
||||||
|
#define FLAC_API_VERSION_CURRENT 11
|
||||||
|
#define FLAC_API_VERSION_REVISION 0 /**< see above */
|
||||||
|
#define FLAC_API_VERSION_AGE 3 /**< see above */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** \c 1 if the library has been compiled with support for Ogg FLAC, else \c 0. */
|
||||||
|
extern FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* \} */
|
||||||
|
|
||||||
|
#endif
|
1023
extlibs/headers/FLAC/format.h
vendored
Normal file
1023
extlibs/headers/FLAC/format.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2182
extlibs/headers/FLAC/metadata.h
vendored
Normal file
2182
extlibs/headers/FLAC/metadata.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
86
extlibs/headers/FLAC/ordinals.h
vendored
Normal file
86
extlibs/headers/FLAC/ordinals.h
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
/* libFLAC - Free Lossless Audio Codec library
|
||||||
|
* Copyright (C) 2000-2009 Josh Coalson
|
||||||
|
* Copyright (C) 2011-2013 Xiph.Org Foundation
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of the Xiph.org Foundation nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLAC__ORDINALS_H
|
||||||
|
#define FLAC__ORDINALS_H
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER < 1600
|
||||||
|
|
||||||
|
/* Microsoft Visual Studio earlier than the 2010 version did not provide
|
||||||
|
* the 1999 ISO C Standard header file <stdint.h>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef __int8 FLAC__int8;
|
||||||
|
typedef unsigned __int8 FLAC__uint8;
|
||||||
|
|
||||||
|
typedef __int16 FLAC__int16;
|
||||||
|
typedef __int32 FLAC__int32;
|
||||||
|
typedef __int64 FLAC__int64;
|
||||||
|
typedef unsigned __int16 FLAC__uint16;
|
||||||
|
typedef unsigned __int32 FLAC__uint32;
|
||||||
|
typedef unsigned __int64 FLAC__uint64;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* For MSVC 2010 and everything else which provides <stdint.h>. */
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
typedef int8_t FLAC__int8;
|
||||||
|
typedef uint8_t FLAC__uint8;
|
||||||
|
|
||||||
|
typedef int16_t FLAC__int16;
|
||||||
|
typedef int32_t FLAC__int32;
|
||||||
|
typedef int64_t FLAC__int64;
|
||||||
|
typedef uint16_t FLAC__uint16;
|
||||||
|
typedef uint32_t FLAC__uint32;
|
||||||
|
typedef uint64_t FLAC__uint64;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef int FLAC__bool;
|
||||||
|
|
||||||
|
typedef FLAC__uint8 FLAC__byte;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef true
|
||||||
|
#undef true
|
||||||
|
#endif
|
||||||
|
#ifdef false
|
||||||
|
#undef false
|
||||||
|
#endif
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#define true 1
|
||||||
|
#define false 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
1560
extlibs/headers/FLAC/stream_decoder.h
vendored
Normal file
1560
extlibs/headers/FLAC/stream_decoder.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1769
extlibs/headers/FLAC/stream_encoder.h
vendored
Normal file
1769
extlibs/headers/FLAC/stream_encoder.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
666
extlibs/headers/libsndfile/android/sndfile.h
vendored
666
extlibs/headers/libsndfile/android/sndfile.h
vendored
@ -1,666 +0,0 @@
|
|||||||
/*
|
|
||||||
** Copyright (C) 1999-2011Erik de Castro Lopo <erikd@mega-nerd.com>
|
|
||||||
**
|
|
||||||
** This program is free software; you can redistribute it and/or modify
|
|
||||||
** it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
** the Free Software Foundation; either version 2.1 of the License, or
|
|
||||||
** (at your option) any later version.
|
|
||||||
**
|
|
||||||
** This program is distributed in the hope that it will be useful,
|
|
||||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
** GNU Lesser General Public License for more details.
|
|
||||||
**
|
|
||||||
** You should have received a copy of the GNU Lesser General Public License
|
|
||||||
** along with this program; if not, write to the Free Software
|
|
||||||
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** sndfile.h -- system-wide definitions
|
|
||||||
**
|
|
||||||
** API documentation is in the doc/ directory of the source code tarball
|
|
||||||
** and at http://www.mega-nerd.com/libsndfile/api.html.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SNDFILE_H
|
|
||||||
#define SNDFILE_H
|
|
||||||
|
|
||||||
/* This is the version 1.0.X header file. */
|
|
||||||
#define SNDFILE_1
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/* The following file types can be read and written.
|
|
||||||
** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise
|
|
||||||
** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and
|
|
||||||
** SF_FORMAT_SUBMASK can be used to separate the major and minor file
|
|
||||||
** types.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /* Major formats. */
|
|
||||||
SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian default). */
|
|
||||||
SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */
|
|
||||||
SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */
|
|
||||||
SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */
|
|
||||||
SF_FORMAT_PAF = 0x050000, /* Ensoniq PARIS file format. */
|
|
||||||
SF_FORMAT_SVX = 0x060000, /* Amiga IFF / SVX8 / SV16 format. */
|
|
||||||
SF_FORMAT_NIST = 0x070000, /* Sphere NIST format. */
|
|
||||||
SF_FORMAT_VOC = 0x080000, /* VOC files. */
|
|
||||||
SF_FORMAT_IRCAM = 0x0A0000, /* Berkeley/IRCAM/CARL */
|
|
||||||
SF_FORMAT_W64 = 0x0B0000, /* Sonic Foundry's 64 bit RIFF/WAV */
|
|
||||||
SF_FORMAT_MAT4 = 0x0C0000, /* Matlab (tm) V4.2 / GNU Octave 2.0 */
|
|
||||||
SF_FORMAT_MAT5 = 0x0D0000, /* Matlab (tm) V5.0 / GNU Octave 2.1 */
|
|
||||||
SF_FORMAT_PVF = 0x0E0000, /* Portable Voice Format */
|
|
||||||
SF_FORMAT_XI = 0x0F0000, /* Fasttracker 2 Extended Instrument */
|
|
||||||
SF_FORMAT_HTK = 0x100000, /* HMM Tool Kit format */
|
|
||||||
SF_FORMAT_SDS = 0x110000, /* Midi Sample Dump Standard */
|
|
||||||
SF_FORMAT_AVR = 0x120000, /* Audio Visual Research */
|
|
||||||
SF_FORMAT_WAVEX = 0x130000, /* MS WAVE with WAVEFORMATEX */
|
|
||||||
SF_FORMAT_SD2 = 0x160000, /* Sound Designer 2 */
|
|
||||||
SF_FORMAT_FLAC = 0x170000, /* FLAC lossless file format */
|
|
||||||
SF_FORMAT_CAF = 0x180000, /* Core Audio File format */
|
|
||||||
SF_FORMAT_WVE = 0x190000, /* Psion WVE format */
|
|
||||||
SF_FORMAT_OGG = 0x200000, /* Xiph OGG container */
|
|
||||||
SF_FORMAT_MPC2K = 0x210000, /* Akai MPC 2000 sampler */
|
|
||||||
SF_FORMAT_RF64 = 0x220000, /* RF64 WAV file */
|
|
||||||
|
|
||||||
/* Subtypes from here on. */
|
|
||||||
|
|
||||||
SF_FORMAT_PCM_S8 = 0x0001, /* Signed 8 bit data */
|
|
||||||
SF_FORMAT_PCM_16 = 0x0002, /* Signed 16 bit data */
|
|
||||||
SF_FORMAT_PCM_24 = 0x0003, /* Signed 24 bit data */
|
|
||||||
SF_FORMAT_PCM_32 = 0x0004, /* Signed 32 bit data */
|
|
||||||
|
|
||||||
SF_FORMAT_PCM_U8 = 0x0005, /* Unsigned 8 bit data (WAV and RAW only) */
|
|
||||||
|
|
||||||
SF_FORMAT_FLOAT = 0x0006, /* 32 bit float data */
|
|
||||||
SF_FORMAT_DOUBLE = 0x0007, /* 64 bit float data */
|
|
||||||
|
|
||||||
SF_FORMAT_ULAW = 0x0010, /* U-Law encoded. */
|
|
||||||
SF_FORMAT_ALAW = 0x0011, /* A-Law encoded. */
|
|
||||||
SF_FORMAT_IMA_ADPCM = 0x0012, /* IMA ADPCM. */
|
|
||||||
SF_FORMAT_MS_ADPCM = 0x0013, /* Microsoft ADPCM. */
|
|
||||||
|
|
||||||
SF_FORMAT_GSM610 = 0x0020, /* GSM 6.10 encoding. */
|
|
||||||
SF_FORMAT_VOX_ADPCM = 0x0021, /* OKI / Dialogix ADPCM */
|
|
||||||
|
|
||||||
SF_FORMAT_G721_32 = 0x0030, /* 32kbs G721 ADPCM encoding. */
|
|
||||||
SF_FORMAT_G723_24 = 0x0031, /* 24kbs G723 ADPCM encoding. */
|
|
||||||
SF_FORMAT_G723_40 = 0x0032, /* 40kbs G723 ADPCM encoding. */
|
|
||||||
|
|
||||||
SF_FORMAT_DWVW_12 = 0x0040, /* 12 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_16 = 0x0041, /* 16 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_24 = 0x0042, /* 24 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_N = 0x0043, /* N bit Delta Width Variable Word encoding. */
|
|
||||||
|
|
||||||
SF_FORMAT_DPCM_8 = 0x0050, /* 8 bit differential PCM (XI only) */
|
|
||||||
SF_FORMAT_DPCM_16 = 0x0051, /* 16 bit differential PCM (XI only) */
|
|
||||||
|
|
||||||
SF_FORMAT_VORBIS = 0x0060, /* Xiph Vorbis encoding. */
|
|
||||||
|
|
||||||
/* Endian-ness options. */
|
|
||||||
|
|
||||||
SF_ENDIAN_FILE = 0x00000000, /* Default file endian-ness. */
|
|
||||||
SF_ENDIAN_LITTLE = 0x10000000, /* Force little endian-ness. */
|
|
||||||
SF_ENDIAN_BIG = 0x20000000, /* Force big endian-ness. */
|
|
||||||
SF_ENDIAN_CPU = 0x30000000, /* Force CPU endian-ness. */
|
|
||||||
|
|
||||||
SF_FORMAT_SUBMASK = 0x0000FFFF,
|
|
||||||
SF_FORMAT_TYPEMASK = 0x0FFF0000,
|
|
||||||
SF_FORMAT_ENDMASK = 0x30000000
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** The following are the valid command numbers for the sf_command()
|
|
||||||
** interface. The use of these commands is documented in the file
|
|
||||||
** command.html in the doc directory of the source code distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SFC_GET_LIB_VERSION = 0x1000,
|
|
||||||
SFC_GET_LOG_INFO = 0x1001,
|
|
||||||
SFC_GET_CURRENT_SF_INFO = 0x1002,
|
|
||||||
|
|
||||||
|
|
||||||
SFC_GET_NORM_DOUBLE = 0x1010,
|
|
||||||
SFC_GET_NORM_FLOAT = 0x1011,
|
|
||||||
SFC_SET_NORM_DOUBLE = 0x1012,
|
|
||||||
SFC_SET_NORM_FLOAT = 0x1013,
|
|
||||||
SFC_SET_SCALE_FLOAT_INT_READ = 0x1014,
|
|
||||||
SFC_SET_SCALE_INT_FLOAT_WRITE = 0x1015,
|
|
||||||
|
|
||||||
SFC_GET_SIMPLE_FORMAT_COUNT = 0x1020,
|
|
||||||
SFC_GET_SIMPLE_FORMAT = 0x1021,
|
|
||||||
|
|
||||||
SFC_GET_FORMAT_INFO = 0x1028,
|
|
||||||
|
|
||||||
SFC_GET_FORMAT_MAJOR_COUNT = 0x1030,
|
|
||||||
SFC_GET_FORMAT_MAJOR = 0x1031,
|
|
||||||
SFC_GET_FORMAT_SUBTYPE_COUNT = 0x1032,
|
|
||||||
SFC_GET_FORMAT_SUBTYPE = 0x1033,
|
|
||||||
|
|
||||||
SFC_CALC_SIGNAL_MAX = 0x1040,
|
|
||||||
SFC_CALC_NORM_SIGNAL_MAX = 0x1041,
|
|
||||||
SFC_CALC_MAX_ALL_CHANNELS = 0x1042,
|
|
||||||
SFC_CALC_NORM_MAX_ALL_CHANNELS = 0x1043,
|
|
||||||
SFC_GET_SIGNAL_MAX = 0x1044,
|
|
||||||
SFC_GET_MAX_ALL_CHANNELS = 0x1045,
|
|
||||||
|
|
||||||
SFC_SET_ADD_PEAK_CHUNK = 0x1050,
|
|
||||||
SFC_SET_ADD_HEADER_PAD_CHUNK = 0x1051,
|
|
||||||
|
|
||||||
SFC_UPDATE_HEADER_NOW = 0x1060,
|
|
||||||
SFC_SET_UPDATE_HEADER_AUTO = 0x1061,
|
|
||||||
|
|
||||||
SFC_FILE_TRUNCATE = 0x1080,
|
|
||||||
|
|
||||||
SFC_SET_RAW_START_OFFSET = 0x1090,
|
|
||||||
|
|
||||||
SFC_SET_DITHER_ON_WRITE = 0x10A0,
|
|
||||||
SFC_SET_DITHER_ON_READ = 0x10A1,
|
|
||||||
|
|
||||||
SFC_GET_DITHER_INFO_COUNT = 0x10A2,
|
|
||||||
SFC_GET_DITHER_INFO = 0x10A3,
|
|
||||||
|
|
||||||
SFC_GET_EMBED_FILE_INFO = 0x10B0,
|
|
||||||
|
|
||||||
SFC_SET_CLIPPING = 0x10C0,
|
|
||||||
SFC_GET_CLIPPING = 0x10C1,
|
|
||||||
|
|
||||||
SFC_GET_INSTRUMENT = 0x10D0,
|
|
||||||
SFC_SET_INSTRUMENT = 0x10D1,
|
|
||||||
|
|
||||||
SFC_GET_LOOP_INFO = 0x10E0,
|
|
||||||
|
|
||||||
SFC_GET_BROADCAST_INFO = 0x10F0,
|
|
||||||
SFC_SET_BROADCAST_INFO = 0x10F1,
|
|
||||||
|
|
||||||
SFC_GET_CHANNEL_MAP_INFO = 0x1100,
|
|
||||||
SFC_SET_CHANNEL_MAP_INFO = 0x1101,
|
|
||||||
|
|
||||||
SFC_RAW_DATA_NEEDS_ENDSWAP = 0x1110,
|
|
||||||
|
|
||||||
/* Support for Wavex Ambisonics Format */
|
|
||||||
SFC_WAVEX_SET_AMBISONIC = 0x1200,
|
|
||||||
SFC_WAVEX_GET_AMBISONIC = 0x1201,
|
|
||||||
|
|
||||||
SFC_SET_VBR_ENCODING_QUALITY = 0x1300,
|
|
||||||
|
|
||||||
/* Following commands for testing only. */
|
|
||||||
SFC_TEST_IEEE_FLOAT_REPLACE = 0x6001,
|
|
||||||
|
|
||||||
/*
|
|
||||||
** SFC_SET_ADD_* values are deprecated and will disappear at some
|
|
||||||
** time in the future. They are guaranteed to be here up to and
|
|
||||||
** including version 1.0.8 to avoid breakage of existng software.
|
|
||||||
** They currently do nothing and will continue to do nothing.
|
|
||||||
*/
|
|
||||||
SFC_SET_ADD_DITHER_ON_WRITE = 0x1070,
|
|
||||||
SFC_SET_ADD_DITHER_ON_READ = 0x1071
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** String types that can be set and read from files. Not all file types
|
|
||||||
** support this and even the file types which support one, may not support
|
|
||||||
** all string types.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_STR_TITLE = 0x01,
|
|
||||||
SF_STR_COPYRIGHT = 0x02,
|
|
||||||
SF_STR_SOFTWARE = 0x03,
|
|
||||||
SF_STR_ARTIST = 0x04,
|
|
||||||
SF_STR_COMMENT = 0x05,
|
|
||||||
SF_STR_DATE = 0x06,
|
|
||||||
SF_STR_ALBUM = 0x07,
|
|
||||||
SF_STR_LICENSE = 0x08,
|
|
||||||
SF_STR_TRACKNUMBER = 0x09,
|
|
||||||
SF_STR_GENRE = 0x10
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Use the following as the start and end index when doing metadata
|
|
||||||
** transcoding.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define SF_STR_FIRST SF_STR_TITLE
|
|
||||||
#define SF_STR_LAST SF_STR_GENRE
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /* True and false */
|
|
||||||
SF_FALSE = 0,
|
|
||||||
SF_TRUE = 1,
|
|
||||||
|
|
||||||
/* Modes for opening files. */
|
|
||||||
SFM_READ = 0x10,
|
|
||||||
SFM_WRITE = 0x20,
|
|
||||||
SFM_RDWR = 0x30,
|
|
||||||
|
|
||||||
SF_AMBISONIC_NONE = 0x40,
|
|
||||||
SF_AMBISONIC_B_FORMAT = 0x41
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/* Public error values. These are guaranteed to remain unchanged for the duration
|
|
||||||
** of the library major version number.
|
|
||||||
** There are also a large number of private error numbers which are internal to
|
|
||||||
** the library which can change at any time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_ERR_NO_ERROR = 0,
|
|
||||||
SF_ERR_UNRECOGNISED_FORMAT = 1,
|
|
||||||
SF_ERR_SYSTEM = 2,
|
|
||||||
SF_ERR_MALFORMED_FILE = 3,
|
|
||||||
SF_ERR_UNSUPPORTED_ENCODING = 4
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Channel map values (used with SFC_SET/GET_CHANNEL_MAP).
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_CHANNEL_MAP_INVALID = 0,
|
|
||||||
SF_CHANNEL_MAP_MONO = 1,
|
|
||||||
SF_CHANNEL_MAP_LEFT, /* Apple calls this 'Left' */
|
|
||||||
SF_CHANNEL_MAP_RIGHT, /* Apple calls this 'Right' */
|
|
||||||
SF_CHANNEL_MAP_CENTER, /* Apple calls this 'Center' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_LEFT,
|
|
||||||
SF_CHANNEL_MAP_FRONT_RIGHT,
|
|
||||||
SF_CHANNEL_MAP_FRONT_CENTER,
|
|
||||||
SF_CHANNEL_MAP_REAR_CENTER, /* Apple calls this 'Center Surround', Msft calls this 'Back Center' */
|
|
||||||
SF_CHANNEL_MAP_REAR_LEFT, /* Apple calls this 'Left Surround', Msft calls this 'Back Left' */
|
|
||||||
SF_CHANNEL_MAP_REAR_RIGHT, /* Apple calls this 'Right Surround', Msft calls this 'Back Right' */
|
|
||||||
SF_CHANNEL_MAP_LFE, /* Apple calls this 'LFEScreen', Msft calls this 'Low Frequency' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER, /* Apple calls this 'Left Center' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER, /* Apple calls this 'Right Center */
|
|
||||||
SF_CHANNEL_MAP_SIDE_LEFT, /* Apple calls this 'Left Surround Direct' */
|
|
||||||
SF_CHANNEL_MAP_SIDE_RIGHT, /* Apple calls this 'Right Surround Direct' */
|
|
||||||
SF_CHANNEL_MAP_TOP_CENTER, /* Apple calls this 'Top Center Surround' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_LEFT, /* Apple calls this 'Vertical Height Left' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_RIGHT, /* Apple calls this 'Vertical Height Right' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_CENTER, /* Apple calls this 'Vertical Height Center' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_LEFT, /* Apple and MS call this 'Top Back Left' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_RIGHT, /* Apple and MS call this 'Top Back Right' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_CENTER, /* Apple and MS call this 'Top Back Center' */
|
|
||||||
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_W,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_X,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_Y,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_Z,
|
|
||||||
|
|
||||||
SF_CHANNEL_MAP_MAX
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */
|
|
||||||
|
|
||||||
typedef struct SNDFILE_tag SNDFILE ;
|
|
||||||
|
|
||||||
/* The following typedef is system specific and is defined when libsndfile is
|
|
||||||
** compiled. sf_count_t will be a 64 bit value when the underlying OS allows
|
|
||||||
** 64 bit file offsets.
|
|
||||||
** On windows, we need to allow the same header file to be compiler by both GCC
|
|
||||||
** and the Microsoft compiler.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if (defined (_MSCVER) || defined (_MSC_VER))
|
|
||||||
typedef __int64 sf_count_t ;
|
|
||||||
#define SF_COUNT_MAX 0x7fffffffffffffffi64
|
|
||||||
#else
|
|
||||||
typedef off_t sf_count_t ;
|
|
||||||
#define SF_COUNT_MAX 0x7FFFFFFF
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* A pointer to a SF_INFO structure is passed to sf_open () and filled in.
|
|
||||||
** On write, the SF_INFO structure is filled in by the user and passed into
|
|
||||||
** sf_open ().
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct SF_INFO
|
|
||||||
{ sf_count_t frames ; /* Used to be called samples. Changed to avoid confusion. */
|
|
||||||
int samplerate ;
|
|
||||||
int channels ;
|
|
||||||
int format ;
|
|
||||||
int sections ;
|
|
||||||
int seekable ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct SF_INFO SF_INFO ;
|
|
||||||
|
|
||||||
/* The SF_FORMAT_INFO struct is used to retrieve information about the sound
|
|
||||||
** file formats libsndfile supports using the sf_command () interface.
|
|
||||||
**
|
|
||||||
** Using this interface will allow applications to support new file formats
|
|
||||||
** and encoding types when libsndfile is upgraded, without requiring
|
|
||||||
** re-compilation of the application.
|
|
||||||
**
|
|
||||||
** Please consult the libsndfile documentation (particularly the information
|
|
||||||
** on the sf_command () interface) for examples of its use.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int format ;
|
|
||||||
const char *name ;
|
|
||||||
const char *extension ;
|
|
||||||
} SF_FORMAT_INFO ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Enums and typedefs for adding dither on read and write.
|
|
||||||
** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE
|
|
||||||
** and SFC_SET_DITHER_ON_READ.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SFD_DEFAULT_LEVEL = 0,
|
|
||||||
SFD_CUSTOM_LEVEL = 0x40000000,
|
|
||||||
|
|
||||||
SFD_NO_DITHER = 500,
|
|
||||||
SFD_WHITE = 501,
|
|
||||||
SFD_TRIANGULAR_PDF = 502
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int type ;
|
|
||||||
double level ;
|
|
||||||
const char *name ;
|
|
||||||
} SF_DITHER_INFO ;
|
|
||||||
|
|
||||||
/* Struct used to retrieve information about a file embedded within a
|
|
||||||
** larger file. See SFC_GET_EMBED_FILE_INFO.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ sf_count_t offset ;
|
|
||||||
sf_count_t length ;
|
|
||||||
} SF_EMBED_FILE_INFO ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Structs used to retrieve music sample information from a file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /*
|
|
||||||
** The loop mode field in SF_INSTRUMENT will be one of the following.
|
|
||||||
*/
|
|
||||||
SF_LOOP_NONE = 800,
|
|
||||||
SF_LOOP_FORWARD,
|
|
||||||
SF_LOOP_BACKWARD,
|
|
||||||
SF_LOOP_ALTERNATING
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int gain ;
|
|
||||||
char basenote, detune ;
|
|
||||||
char velocity_lo, velocity_hi ;
|
|
||||||
char key_lo, key_hi ;
|
|
||||||
int loop_count ;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{ int mode ;
|
|
||||||
unsigned int start ;
|
|
||||||
unsigned int end ;
|
|
||||||
unsigned int count ;
|
|
||||||
} loops [16] ; /* make variable in a sensible way */
|
|
||||||
} SF_INSTRUMENT ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Struct used to retrieve loop information from a file.*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
short time_sig_num ; /* any positive integer > 0 */
|
|
||||||
short time_sig_den ; /* any positive power of 2 > 0 */
|
|
||||||
int loop_mode ; /* see SF_LOOP enum */
|
|
||||||
|
|
||||||
int num_beats ; /* this is NOT the amount of quarter notes !!!*/
|
|
||||||
/* a full bar of 4/4 is 4 beats */
|
|
||||||
/* a full bar of 7/8 is 7 beats */
|
|
||||||
|
|
||||||
float bpm ; /* suggestion, as it can be calculated using other fields:*/
|
|
||||||
/* file's lenght, file's sampleRate and our time_sig_den*/
|
|
||||||
/* -> bpms are always the amount of _quarter notes_ per minute */
|
|
||||||
|
|
||||||
int root_key ; /* MIDI note, or -1 for None */
|
|
||||||
int future [6] ;
|
|
||||||
} SF_LOOP_INFO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Struct used to retrieve broadcast (EBU) information from a file.
|
|
||||||
** Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.
|
|
||||||
*/
|
|
||||||
#define SF_BROADCAST_INFO_VAR(coding_hist_size) \
|
|
||||||
struct \
|
|
||||||
{ char description [256] ; \
|
|
||||||
char originator [32] ; \
|
|
||||||
char originator_reference [32] ; \
|
|
||||||
char origination_date [10] ; \
|
|
||||||
char origination_time [8] ; \
|
|
||||||
unsigned int time_reference_low ; \
|
|
||||||
unsigned int time_reference_high ; \
|
|
||||||
short version ; \
|
|
||||||
char umid [64] ; \
|
|
||||||
char reserved [190] ; \
|
|
||||||
unsigned int coding_history_size ; \
|
|
||||||
char coding_history [coding_hist_size] ; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SF_BROADCAST_INFO is the above struct with coding_history field of 256 bytes. */
|
|
||||||
typedef SF_BROADCAST_INFO_VAR (256) SF_BROADCAST_INFO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Virtual I/O functionality. */
|
|
||||||
|
|
||||||
typedef sf_count_t (*sf_vio_get_filelen) (void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_seek) (sf_count_t offset, int whence, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_read) (void *ptr, sf_count_t count, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_write) (const void *ptr, sf_count_t count, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_tell) (void *user_data) ;
|
|
||||||
|
|
||||||
struct SF_VIRTUAL_IO
|
|
||||||
{ sf_vio_get_filelen get_filelen ;
|
|
||||||
sf_vio_seek seek ;
|
|
||||||
sf_vio_read read ;
|
|
||||||
sf_vio_write write ;
|
|
||||||
sf_vio_tell tell ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Open the specified file for read, write or both. On error, this will
|
|
||||||
** return a NULL pointer. To find the error number, pass a NULL SNDFILE
|
|
||||||
** to sf_strerror ().
|
|
||||||
** All calls to sf_open() should be matched with a call to sf_close().
|
|
||||||
*/
|
|
||||||
|
|
||||||
SNDFILE* sf_open (const char *path, int mode, SF_INFO *sfinfo) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Use the existing file descriptor to create a SNDFILE object. If close_desc
|
|
||||||
** is TRUE, the file descriptor will be closed when sf_close() is called. If
|
|
||||||
** it is FALSE, the descritor will not be closed.
|
|
||||||
** When passed a descriptor like this, the library will assume that the start
|
|
||||||
** of file header is at the current file offset. This allows sound files within
|
|
||||||
** larger container files to be read and/or written.
|
|
||||||
** On error, this will return a NULL pointer. To find the error number, pass a
|
|
||||||
** NULL SNDFILE to sf_strerror ().
|
|
||||||
** All calls to sf_open_fd() should be matched with a call to sf_close().
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
|
|
||||||
|
|
||||||
SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_error () returns a error number which can be translated to a text
|
|
||||||
** string using sf_error_number().
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_error (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_strerror () returns to the caller a pointer to the current error message for
|
|
||||||
** the given SNDFILE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* sf_strerror (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_error_number () allows the retrieval of the error string for each internal
|
|
||||||
** error number.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* sf_error_number (int errnum) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* The following two error functions are deprecated but they will remain in the
|
|
||||||
** library for the forseeable future. The function sf_strerror() should be used
|
|
||||||
** in their place.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_perror (SNDFILE *sndfile) ;
|
|
||||||
int sf_error_str (SNDFILE *sndfile, char* str, size_t len) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
|
|
||||||
|
|
||||||
int sf_command (SNDFILE *sndfile, int command, void *data, int datasize) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
|
|
||||||
|
|
||||||
int sf_format_check (const SF_INFO *info) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses
|
|
||||||
** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as
|
|
||||||
** stdio.h function fseek ().
|
|
||||||
** An offset of zero with whence set to SEEK_SET will position the
|
|
||||||
** read / write pointer to the first data sample.
|
|
||||||
** On success sf_seek returns the current position in (multi-channel)
|
|
||||||
** samples from the start of the file.
|
|
||||||
** Please see the libsndfile documentation for moving the read pointer
|
|
||||||
** separately from the write pointer on files open in mode SFM_RDWR.
|
|
||||||
** On error all of these functions return -1.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_seek (SNDFILE *sndfile, sf_count_t frames, int whence) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for retrieving and setting string data within sound files.
|
|
||||||
** Not all file types support this features; AIFF and WAV do. For both
|
|
||||||
** functions, the str_type parameter must be one of the SF_STR_* values
|
|
||||||
** defined above.
|
|
||||||
** On error, sf_set_string() returns non-zero while sf_get_string()
|
|
||||||
** returns NULL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
|
|
||||||
|
|
||||||
const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return the library version string. */
|
|
||||||
|
|
||||||
const char * sf_version_string (void) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading/writing the waveform data of a sound file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
|
|
||||||
sf_count_t sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading and writing the data chunk in terms of frames.
|
|
||||||
** The number of items actually read/written = frames * number of channels.
|
|
||||||
** sf_xxxx_raw read/writes the raw data bytes from/to the file
|
|
||||||
** sf_xxxx_short passes data in the native short format
|
|
||||||
** sf_xxxx_int passes data in the native int format
|
|
||||||
** sf_xxxx_float passes data in the native float format
|
|
||||||
** sf_xxxx_double passes data in the native double format
|
|
||||||
** All of these read/write function return number of frames read/written.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading and writing the data chunk in terms of items.
|
|
||||||
** Otherwise similar to above.
|
|
||||||
** All of these read/write function return number of items read/written.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Close the SNDFILE and clean up all memory allocations associated with this
|
|
||||||
** file.
|
|
||||||
** Returns 0 on success, or an error number.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_close (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file
|
|
||||||
** to force the writing of data to disk. If the file is opened SFM_READ
|
|
||||||
** no action is taken.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void sf_write_sync (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* The function sf_wchar_open() is Windows Only!
|
|
||||||
** Open a file passing in a Windows Unicode filename. Otherwise, this is
|
|
||||||
** the same as sf_open().
|
|
||||||
**
|
|
||||||
** In order for this to work, you need to do the following:
|
|
||||||
**
|
|
||||||
** #include <windows.h>
|
|
||||||
** #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1
|
|
||||||
** #including <sndfile.h>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if (defined (ENABLE_SNDFILE_WINDOWS_PROTOTYPES) && ENABLE_SNDFILE_WINDOWS_PROTOTYPES)
|
|
||||||
SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} /* extern "C" */
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#endif /* SNDFILE_H */
|
|
||||||
|
|
666
extlibs/headers/libsndfile/osx/sndfile.h
vendored
666
extlibs/headers/libsndfile/osx/sndfile.h
vendored
@ -1,666 +0,0 @@
|
|||||||
/*
|
|
||||||
** Copyright (C) 1999-2011Erik de Castro Lopo <erikd@mega-nerd.com>
|
|
||||||
**
|
|
||||||
** This program is free software; you can redistribute it and/or modify
|
|
||||||
** it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
** the Free Software Foundation; either version 2.1 of the License, or
|
|
||||||
** (at your option) any later version.
|
|
||||||
**
|
|
||||||
** This program is distributed in the hope that it will be useful,
|
|
||||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
** GNU Lesser General Public License for more details.
|
|
||||||
**
|
|
||||||
** You should have received a copy of the GNU Lesser General Public License
|
|
||||||
** along with this program; if not, write to the Free Software
|
|
||||||
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** sndfile.h -- system-wide definitions
|
|
||||||
**
|
|
||||||
** API documentation is in the doc/ directory of the source code tarball
|
|
||||||
** and at http://www.mega-nerd.com/libsndfile/api.html.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SNDFILE_H
|
|
||||||
#define SNDFILE_H
|
|
||||||
|
|
||||||
/* This is the version 1.0.X header file. */
|
|
||||||
#define SNDFILE_1
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/* The following file types can be read and written.
|
|
||||||
** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise
|
|
||||||
** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and
|
|
||||||
** SF_FORMAT_SUBMASK can be used to separate the major and minor file
|
|
||||||
** types.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /* Major formats. */
|
|
||||||
SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian default). */
|
|
||||||
SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */
|
|
||||||
SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */
|
|
||||||
SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */
|
|
||||||
SF_FORMAT_PAF = 0x050000, /* Ensoniq PARIS file format. */
|
|
||||||
SF_FORMAT_SVX = 0x060000, /* Amiga IFF / SVX8 / SV16 format. */
|
|
||||||
SF_FORMAT_NIST = 0x070000, /* Sphere NIST format. */
|
|
||||||
SF_FORMAT_VOC = 0x080000, /* VOC files. */
|
|
||||||
SF_FORMAT_IRCAM = 0x0A0000, /* Berkeley/IRCAM/CARL */
|
|
||||||
SF_FORMAT_W64 = 0x0B0000, /* Sonic Foundry's 64 bit RIFF/WAV */
|
|
||||||
SF_FORMAT_MAT4 = 0x0C0000, /* Matlab (tm) V4.2 / GNU Octave 2.0 */
|
|
||||||
SF_FORMAT_MAT5 = 0x0D0000, /* Matlab (tm) V5.0 / GNU Octave 2.1 */
|
|
||||||
SF_FORMAT_PVF = 0x0E0000, /* Portable Voice Format */
|
|
||||||
SF_FORMAT_XI = 0x0F0000, /* Fasttracker 2 Extended Instrument */
|
|
||||||
SF_FORMAT_HTK = 0x100000, /* HMM Tool Kit format */
|
|
||||||
SF_FORMAT_SDS = 0x110000, /* Midi Sample Dump Standard */
|
|
||||||
SF_FORMAT_AVR = 0x120000, /* Audio Visual Research */
|
|
||||||
SF_FORMAT_WAVEX = 0x130000, /* MS WAVE with WAVEFORMATEX */
|
|
||||||
SF_FORMAT_SD2 = 0x160000, /* Sound Designer 2 */
|
|
||||||
SF_FORMAT_FLAC = 0x170000, /* FLAC lossless file format */
|
|
||||||
SF_FORMAT_CAF = 0x180000, /* Core Audio File format */
|
|
||||||
SF_FORMAT_WVE = 0x190000, /* Psion WVE format */
|
|
||||||
SF_FORMAT_OGG = 0x200000, /* Xiph OGG container */
|
|
||||||
SF_FORMAT_MPC2K = 0x210000, /* Akai MPC 2000 sampler */
|
|
||||||
SF_FORMAT_RF64 = 0x220000, /* RF64 WAV file */
|
|
||||||
|
|
||||||
/* Subtypes from here on. */
|
|
||||||
|
|
||||||
SF_FORMAT_PCM_S8 = 0x0001, /* Signed 8 bit data */
|
|
||||||
SF_FORMAT_PCM_16 = 0x0002, /* Signed 16 bit data */
|
|
||||||
SF_FORMAT_PCM_24 = 0x0003, /* Signed 24 bit data */
|
|
||||||
SF_FORMAT_PCM_32 = 0x0004, /* Signed 32 bit data */
|
|
||||||
|
|
||||||
SF_FORMAT_PCM_U8 = 0x0005, /* Unsigned 8 bit data (WAV and RAW only) */
|
|
||||||
|
|
||||||
SF_FORMAT_FLOAT = 0x0006, /* 32 bit float data */
|
|
||||||
SF_FORMAT_DOUBLE = 0x0007, /* 64 bit float data */
|
|
||||||
|
|
||||||
SF_FORMAT_ULAW = 0x0010, /* U-Law encoded. */
|
|
||||||
SF_FORMAT_ALAW = 0x0011, /* A-Law encoded. */
|
|
||||||
SF_FORMAT_IMA_ADPCM = 0x0012, /* IMA ADPCM. */
|
|
||||||
SF_FORMAT_MS_ADPCM = 0x0013, /* Microsoft ADPCM. */
|
|
||||||
|
|
||||||
SF_FORMAT_GSM610 = 0x0020, /* GSM 6.10 encoding. */
|
|
||||||
SF_FORMAT_VOX_ADPCM = 0x0021, /* OKI / Dialogix ADPCM */
|
|
||||||
|
|
||||||
SF_FORMAT_G721_32 = 0x0030, /* 32kbs G721 ADPCM encoding. */
|
|
||||||
SF_FORMAT_G723_24 = 0x0031, /* 24kbs G723 ADPCM encoding. */
|
|
||||||
SF_FORMAT_G723_40 = 0x0032, /* 40kbs G723 ADPCM encoding. */
|
|
||||||
|
|
||||||
SF_FORMAT_DWVW_12 = 0x0040, /* 12 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_16 = 0x0041, /* 16 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_24 = 0x0042, /* 24 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_N = 0x0043, /* N bit Delta Width Variable Word encoding. */
|
|
||||||
|
|
||||||
SF_FORMAT_DPCM_8 = 0x0050, /* 8 bit differential PCM (XI only) */
|
|
||||||
SF_FORMAT_DPCM_16 = 0x0051, /* 16 bit differential PCM (XI only) */
|
|
||||||
|
|
||||||
SF_FORMAT_VORBIS = 0x0060, /* Xiph Vorbis encoding. */
|
|
||||||
|
|
||||||
/* Endian-ness options. */
|
|
||||||
|
|
||||||
SF_ENDIAN_FILE = 0x00000000, /* Default file endian-ness. */
|
|
||||||
SF_ENDIAN_LITTLE = 0x10000000, /* Force little endian-ness. */
|
|
||||||
SF_ENDIAN_BIG = 0x20000000, /* Force big endian-ness. */
|
|
||||||
SF_ENDIAN_CPU = 0x30000000, /* Force CPU endian-ness. */
|
|
||||||
|
|
||||||
SF_FORMAT_SUBMASK = 0x0000FFFF,
|
|
||||||
SF_FORMAT_TYPEMASK = 0x0FFF0000,
|
|
||||||
SF_FORMAT_ENDMASK = 0x30000000
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** The following are the valid command numbers for the sf_command()
|
|
||||||
** interface. The use of these commands is documented in the file
|
|
||||||
** command.html in the doc directory of the source code distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SFC_GET_LIB_VERSION = 0x1000,
|
|
||||||
SFC_GET_LOG_INFO = 0x1001,
|
|
||||||
SFC_GET_CURRENT_SF_INFO = 0x1002,
|
|
||||||
|
|
||||||
|
|
||||||
SFC_GET_NORM_DOUBLE = 0x1010,
|
|
||||||
SFC_GET_NORM_FLOAT = 0x1011,
|
|
||||||
SFC_SET_NORM_DOUBLE = 0x1012,
|
|
||||||
SFC_SET_NORM_FLOAT = 0x1013,
|
|
||||||
SFC_SET_SCALE_FLOAT_INT_READ = 0x1014,
|
|
||||||
SFC_SET_SCALE_INT_FLOAT_WRITE = 0x1015,
|
|
||||||
|
|
||||||
SFC_GET_SIMPLE_FORMAT_COUNT = 0x1020,
|
|
||||||
SFC_GET_SIMPLE_FORMAT = 0x1021,
|
|
||||||
|
|
||||||
SFC_GET_FORMAT_INFO = 0x1028,
|
|
||||||
|
|
||||||
SFC_GET_FORMAT_MAJOR_COUNT = 0x1030,
|
|
||||||
SFC_GET_FORMAT_MAJOR = 0x1031,
|
|
||||||
SFC_GET_FORMAT_SUBTYPE_COUNT = 0x1032,
|
|
||||||
SFC_GET_FORMAT_SUBTYPE = 0x1033,
|
|
||||||
|
|
||||||
SFC_CALC_SIGNAL_MAX = 0x1040,
|
|
||||||
SFC_CALC_NORM_SIGNAL_MAX = 0x1041,
|
|
||||||
SFC_CALC_MAX_ALL_CHANNELS = 0x1042,
|
|
||||||
SFC_CALC_NORM_MAX_ALL_CHANNELS = 0x1043,
|
|
||||||
SFC_GET_SIGNAL_MAX = 0x1044,
|
|
||||||
SFC_GET_MAX_ALL_CHANNELS = 0x1045,
|
|
||||||
|
|
||||||
SFC_SET_ADD_PEAK_CHUNK = 0x1050,
|
|
||||||
SFC_SET_ADD_HEADER_PAD_CHUNK = 0x1051,
|
|
||||||
|
|
||||||
SFC_UPDATE_HEADER_NOW = 0x1060,
|
|
||||||
SFC_SET_UPDATE_HEADER_AUTO = 0x1061,
|
|
||||||
|
|
||||||
SFC_FILE_TRUNCATE = 0x1080,
|
|
||||||
|
|
||||||
SFC_SET_RAW_START_OFFSET = 0x1090,
|
|
||||||
|
|
||||||
SFC_SET_DITHER_ON_WRITE = 0x10A0,
|
|
||||||
SFC_SET_DITHER_ON_READ = 0x10A1,
|
|
||||||
|
|
||||||
SFC_GET_DITHER_INFO_COUNT = 0x10A2,
|
|
||||||
SFC_GET_DITHER_INFO = 0x10A3,
|
|
||||||
|
|
||||||
SFC_GET_EMBED_FILE_INFO = 0x10B0,
|
|
||||||
|
|
||||||
SFC_SET_CLIPPING = 0x10C0,
|
|
||||||
SFC_GET_CLIPPING = 0x10C1,
|
|
||||||
|
|
||||||
SFC_GET_INSTRUMENT = 0x10D0,
|
|
||||||
SFC_SET_INSTRUMENT = 0x10D1,
|
|
||||||
|
|
||||||
SFC_GET_LOOP_INFO = 0x10E0,
|
|
||||||
|
|
||||||
SFC_GET_BROADCAST_INFO = 0x10F0,
|
|
||||||
SFC_SET_BROADCAST_INFO = 0x10F1,
|
|
||||||
|
|
||||||
SFC_GET_CHANNEL_MAP_INFO = 0x1100,
|
|
||||||
SFC_SET_CHANNEL_MAP_INFO = 0x1101,
|
|
||||||
|
|
||||||
SFC_RAW_DATA_NEEDS_ENDSWAP = 0x1110,
|
|
||||||
|
|
||||||
/* Support for Wavex Ambisonics Format */
|
|
||||||
SFC_WAVEX_SET_AMBISONIC = 0x1200,
|
|
||||||
SFC_WAVEX_GET_AMBISONIC = 0x1201,
|
|
||||||
|
|
||||||
SFC_SET_VBR_ENCODING_QUALITY = 0x1300,
|
|
||||||
|
|
||||||
/* Following commands for testing only. */
|
|
||||||
SFC_TEST_IEEE_FLOAT_REPLACE = 0x6001,
|
|
||||||
|
|
||||||
/*
|
|
||||||
** SFC_SET_ADD_* values are deprecated and will disappear at some
|
|
||||||
** time in the future. They are guaranteed to be here up to and
|
|
||||||
** including version 1.0.8 to avoid breakage of existng software.
|
|
||||||
** They currently do nothing and will continue to do nothing.
|
|
||||||
*/
|
|
||||||
SFC_SET_ADD_DITHER_ON_WRITE = 0x1070,
|
|
||||||
SFC_SET_ADD_DITHER_ON_READ = 0x1071
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** String types that can be set and read from files. Not all file types
|
|
||||||
** support this and even the file types which support one, may not support
|
|
||||||
** all string types.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_STR_TITLE = 0x01,
|
|
||||||
SF_STR_COPYRIGHT = 0x02,
|
|
||||||
SF_STR_SOFTWARE = 0x03,
|
|
||||||
SF_STR_ARTIST = 0x04,
|
|
||||||
SF_STR_COMMENT = 0x05,
|
|
||||||
SF_STR_DATE = 0x06,
|
|
||||||
SF_STR_ALBUM = 0x07,
|
|
||||||
SF_STR_LICENSE = 0x08,
|
|
||||||
SF_STR_TRACKNUMBER = 0x09,
|
|
||||||
SF_STR_GENRE = 0x10
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Use the following as the start and end index when doing metadata
|
|
||||||
** transcoding.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define SF_STR_FIRST SF_STR_TITLE
|
|
||||||
#define SF_STR_LAST SF_STR_LICENSE
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /* True and false */
|
|
||||||
SF_FALSE = 0,
|
|
||||||
SF_TRUE = 1,
|
|
||||||
|
|
||||||
/* Modes for opening files. */
|
|
||||||
SFM_READ = 0x10,
|
|
||||||
SFM_WRITE = 0x20,
|
|
||||||
SFM_RDWR = 0x30,
|
|
||||||
|
|
||||||
SF_AMBISONIC_NONE = 0x40,
|
|
||||||
SF_AMBISONIC_B_FORMAT = 0x41
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/* Public error values. These are guaranteed to remain unchanged for the duration
|
|
||||||
** of the library major version number.
|
|
||||||
** There are also a large number of private error numbers which are internal to
|
|
||||||
** the library which can change at any time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_ERR_NO_ERROR = 0,
|
|
||||||
SF_ERR_UNRECOGNISED_FORMAT = 1,
|
|
||||||
SF_ERR_SYSTEM = 2,
|
|
||||||
SF_ERR_MALFORMED_FILE = 3,
|
|
||||||
SF_ERR_UNSUPPORTED_ENCODING = 4
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Channel map values (used with SFC_SET/GET_CHANNEL_MAP).
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_CHANNEL_MAP_INVALID = 0,
|
|
||||||
SF_CHANNEL_MAP_MONO = 1,
|
|
||||||
SF_CHANNEL_MAP_LEFT, /* Apple calls this 'Left' */
|
|
||||||
SF_CHANNEL_MAP_RIGHT, /* Apple calls this 'Right' */
|
|
||||||
SF_CHANNEL_MAP_CENTER, /* Apple calls this 'Center' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_LEFT,
|
|
||||||
SF_CHANNEL_MAP_FRONT_RIGHT,
|
|
||||||
SF_CHANNEL_MAP_FRONT_CENTER,
|
|
||||||
SF_CHANNEL_MAP_REAR_CENTER, /* Apple calls this 'Center Surround', Msft calls this 'Back Center' */
|
|
||||||
SF_CHANNEL_MAP_REAR_LEFT, /* Apple calls this 'Left Surround', Msft calls this 'Back Left' */
|
|
||||||
SF_CHANNEL_MAP_REAR_RIGHT, /* Apple calls this 'Right Surround', Msft calls this 'Back Right' */
|
|
||||||
SF_CHANNEL_MAP_LFE, /* Apple calls this 'LFEScreen', Msft calls this 'Low Frequency' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER, /* Apple calls this 'Left Center' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER, /* Apple calls this 'Right Center */
|
|
||||||
SF_CHANNEL_MAP_SIDE_LEFT, /* Apple calls this 'Left Surround Direct' */
|
|
||||||
SF_CHANNEL_MAP_SIDE_RIGHT, /* Apple calls this 'Right Surround Direct' */
|
|
||||||
SF_CHANNEL_MAP_TOP_CENTER, /* Apple calls this 'Top Center Surround' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_LEFT, /* Apple calls this 'Vertical Height Left' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_RIGHT, /* Apple calls this 'Vertical Height Right' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_CENTER, /* Apple calls this 'Vertical Height Center' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_LEFT, /* Apple and MS call this 'Top Back Left' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_RIGHT, /* Apple and MS call this 'Top Back Right' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_CENTER, /* Apple and MS call this 'Top Back Center' */
|
|
||||||
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_W,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_X,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_Y,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_Z,
|
|
||||||
|
|
||||||
SF_CHANNEL_MAP_MAX
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */
|
|
||||||
|
|
||||||
typedef struct SNDFILE_tag SNDFILE ;
|
|
||||||
|
|
||||||
/* The following typedef is system specific and is defined when libsndfile is
|
|
||||||
** compiled. sf_count_t will be a 64 bit value when the underlying OS allows
|
|
||||||
** 64 bit file offsets.
|
|
||||||
** On windows, we need to allow the same header file to be compiler by both GCC
|
|
||||||
** and the Microsoft compiler.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if (defined (_MSCVER) || defined (_MSC_VER))
|
|
||||||
typedef __int64 sf_count_t ;
|
|
||||||
#define SF_COUNT_MAX 0x7fffffffffffffffi64
|
|
||||||
#else
|
|
||||||
typedef int64_t sf_count_t ;
|
|
||||||
#define SF_COUNT_MAX 0x7FFFFFFFFFFFFFFFLL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* A pointer to a SF_INFO structure is passed to sf_open () and filled in.
|
|
||||||
** On write, the SF_INFO structure is filled in by the user and passed into
|
|
||||||
** sf_open ().
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct SF_INFO
|
|
||||||
{ sf_count_t frames ; /* Used to be called samples. Changed to avoid confusion. */
|
|
||||||
int samplerate ;
|
|
||||||
int channels ;
|
|
||||||
int format ;
|
|
||||||
int sections ;
|
|
||||||
int seekable ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct SF_INFO SF_INFO ;
|
|
||||||
|
|
||||||
/* The SF_FORMAT_INFO struct is used to retrieve information about the sound
|
|
||||||
** file formats libsndfile supports using the sf_command () interface.
|
|
||||||
**
|
|
||||||
** Using this interface will allow applications to support new file formats
|
|
||||||
** and encoding types when libsndfile is upgraded, without requiring
|
|
||||||
** re-compilation of the application.
|
|
||||||
**
|
|
||||||
** Please consult the libsndfile documentation (particularly the information
|
|
||||||
** on the sf_command () interface) for examples of its use.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int format ;
|
|
||||||
const char *name ;
|
|
||||||
const char *extension ;
|
|
||||||
} SF_FORMAT_INFO ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Enums and typedefs for adding dither on read and write.
|
|
||||||
** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE
|
|
||||||
** and SFC_SET_DITHER_ON_READ.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SFD_DEFAULT_LEVEL = 0,
|
|
||||||
SFD_CUSTOM_LEVEL = 0x40000000,
|
|
||||||
|
|
||||||
SFD_NO_DITHER = 500,
|
|
||||||
SFD_WHITE = 501,
|
|
||||||
SFD_TRIANGULAR_PDF = 502
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int type ;
|
|
||||||
double level ;
|
|
||||||
const char *name ;
|
|
||||||
} SF_DITHER_INFO ;
|
|
||||||
|
|
||||||
/* Struct used to retrieve information about a file embedded within a
|
|
||||||
** larger file. See SFC_GET_EMBED_FILE_INFO.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ sf_count_t offset ;
|
|
||||||
sf_count_t length ;
|
|
||||||
} SF_EMBED_FILE_INFO ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Structs used to retrieve music sample information from a file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /*
|
|
||||||
** The loop mode field in SF_INSTRUMENT will be one of the following.
|
|
||||||
*/
|
|
||||||
SF_LOOP_NONE = 800,
|
|
||||||
SF_LOOP_FORWARD,
|
|
||||||
SF_LOOP_BACKWARD,
|
|
||||||
SF_LOOP_ALTERNATING
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int gain ;
|
|
||||||
char basenote, detune ;
|
|
||||||
char velocity_lo, velocity_hi ;
|
|
||||||
char key_lo, key_hi ;
|
|
||||||
int loop_count ;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{ int mode ;
|
|
||||||
unsigned int start ;
|
|
||||||
unsigned int end ;
|
|
||||||
unsigned int count ;
|
|
||||||
} loops [16] ; /* make variable in a sensible way */
|
|
||||||
} SF_INSTRUMENT ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Struct used to retrieve loop information from a file.*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
short time_sig_num ; /* any positive integer > 0 */
|
|
||||||
short time_sig_den ; /* any positive power of 2 > 0 */
|
|
||||||
int loop_mode ; /* see SF_LOOP enum */
|
|
||||||
|
|
||||||
int num_beats ; /* this is NOT the amount of quarter notes !!!*/
|
|
||||||
/* a full bar of 4/4 is 4 beats */
|
|
||||||
/* a full bar of 7/8 is 7 beats */
|
|
||||||
|
|
||||||
float bpm ; /* suggestion, as it can be calculated using other fields:*/
|
|
||||||
/* file's lenght, file's sampleRate and our time_sig_den*/
|
|
||||||
/* -> bpms are always the amount of _quarter notes_ per minute */
|
|
||||||
|
|
||||||
int root_key ; /* MIDI note, or -1 for None */
|
|
||||||
int future [6] ;
|
|
||||||
} SF_LOOP_INFO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Struct used to retrieve broadcast (EBU) information from a file.
|
|
||||||
** Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.
|
|
||||||
*/
|
|
||||||
#define SF_BROADCAST_INFO_VAR(coding_hist_size) \
|
|
||||||
struct \
|
|
||||||
{ char description [256] ; \
|
|
||||||
char originator [32] ; \
|
|
||||||
char originator_reference [32] ; \
|
|
||||||
char origination_date [10] ; \
|
|
||||||
char origination_time [8] ; \
|
|
||||||
unsigned int time_reference_low ; \
|
|
||||||
unsigned int time_reference_high ; \
|
|
||||||
short version ; \
|
|
||||||
char umid [64] ; \
|
|
||||||
char reserved [190] ; \
|
|
||||||
unsigned int coding_history_size ; \
|
|
||||||
char coding_history [coding_hist_size] ; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SF_BROADCAST_INFO is the above struct with coding_history field of 256 bytes. */
|
|
||||||
typedef SF_BROADCAST_INFO_VAR (256) SF_BROADCAST_INFO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Virtual I/O functionality. */
|
|
||||||
|
|
||||||
typedef sf_count_t (*sf_vio_get_filelen) (void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_seek) (sf_count_t offset, int whence, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_read) (void *ptr, sf_count_t count, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_write) (const void *ptr, sf_count_t count, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_tell) (void *user_data) ;
|
|
||||||
|
|
||||||
struct SF_VIRTUAL_IO
|
|
||||||
{ sf_vio_get_filelen get_filelen ;
|
|
||||||
sf_vio_seek seek ;
|
|
||||||
sf_vio_read read ;
|
|
||||||
sf_vio_write write ;
|
|
||||||
sf_vio_tell tell ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Open the specified file for read, write or both. On error, this will
|
|
||||||
** return a NULL pointer. To find the error number, pass a NULL SNDFILE
|
|
||||||
** to sf_strerror ().
|
|
||||||
** All calls to sf_open() should be matched with a call to sf_close().
|
|
||||||
*/
|
|
||||||
|
|
||||||
SNDFILE* sf_open (const char *path, int mode, SF_INFO *sfinfo) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Use the existing file descriptor to create a SNDFILE object. If close_desc
|
|
||||||
** is TRUE, the file descriptor will be closed when sf_close() is called. If
|
|
||||||
** it is FALSE, the descritor will not be closed.
|
|
||||||
** When passed a descriptor like this, the library will assume that the start
|
|
||||||
** of file header is at the current file offset. This allows sound files within
|
|
||||||
** larger container files to be read and/or written.
|
|
||||||
** On error, this will return a NULL pointer. To find the error number, pass a
|
|
||||||
** NULL SNDFILE to sf_strerror ().
|
|
||||||
** All calls to sf_open_fd() should be matched with a call to sf_close().
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
|
|
||||||
|
|
||||||
SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_error () returns a error number which can be translated to a text
|
|
||||||
** string using sf_error_number().
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_error (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_strerror () returns to the caller a pointer to the current error message for
|
|
||||||
** the given SNDFILE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* sf_strerror (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_error_number () allows the retrieval of the error string for each internal
|
|
||||||
** error number.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* sf_error_number (int errnum) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* The following two error functions are deprecated but they will remain in the
|
|
||||||
** library for the forseeable future. The function sf_strerror() should be used
|
|
||||||
** in their place.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_perror (SNDFILE *sndfile) ;
|
|
||||||
int sf_error_str (SNDFILE *sndfile, char* str, size_t len) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
|
|
||||||
|
|
||||||
int sf_command (SNDFILE *sndfile, int command, void *data, int datasize) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
|
|
||||||
|
|
||||||
int sf_format_check (const SF_INFO *info) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses
|
|
||||||
** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as
|
|
||||||
** stdio.h function fseek ().
|
|
||||||
** An offset of zero with whence set to SEEK_SET will position the
|
|
||||||
** read / write pointer to the first data sample.
|
|
||||||
** On success sf_seek returns the current position in (multi-channel)
|
|
||||||
** samples from the start of the file.
|
|
||||||
** Please see the libsndfile documentation for moving the read pointer
|
|
||||||
** separately from the write pointer on files open in mode SFM_RDWR.
|
|
||||||
** On error all of these functions return -1.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_seek (SNDFILE *sndfile, sf_count_t frames, int whence) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for retrieving and setting string data within sound files.
|
|
||||||
** Not all file types support this features; AIFF and WAV do. For both
|
|
||||||
** functions, the str_type parameter must be one of the SF_STR_* values
|
|
||||||
** defined above.
|
|
||||||
** On error, sf_set_string() returns non-zero while sf_get_string()
|
|
||||||
** returns NULL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
|
|
||||||
|
|
||||||
const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return the library version string. */
|
|
||||||
|
|
||||||
const char * sf_version_string (void) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading/writing the waveform data of a sound file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
|
|
||||||
sf_count_t sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading and writing the data chunk in terms of frames.
|
|
||||||
** The number of items actually read/written = frames * number of channels.
|
|
||||||
** sf_xxxx_raw read/writes the raw data bytes from/to the file
|
|
||||||
** sf_xxxx_short passes data in the native short format
|
|
||||||
** sf_xxxx_int passes data in the native int format
|
|
||||||
** sf_xxxx_float passes data in the native float format
|
|
||||||
** sf_xxxx_double passes data in the native double format
|
|
||||||
** All of these read/write function return number of frames read/written.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading and writing the data chunk in terms of items.
|
|
||||||
** Otherwise similar to above.
|
|
||||||
** All of these read/write function return number of items read/written.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Close the SNDFILE and clean up all memory allocations associated with this
|
|
||||||
** file.
|
|
||||||
** Returns 0 on success, or an error number.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_close (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file
|
|
||||||
** to force the writing of data to disk. If the file is opened SFM_READ
|
|
||||||
** no action is taken.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void sf_write_sync (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* The function sf_wchar_open() is Windows Only!
|
|
||||||
** Open a file passing in a Windows Unicode filename. Otherwise, this is
|
|
||||||
** the same as sf_open().
|
|
||||||
**
|
|
||||||
** In order for this to work, you need to do the following:
|
|
||||||
**
|
|
||||||
** #include <windows.h>
|
|
||||||
** #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1
|
|
||||||
** #including <sndfile.h>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if ENABLE_SNDFILE_WINDOWS_PROTOTYPES
|
|
||||||
SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} /* extern "C" */
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#endif /* SNDFILE_H */
|
|
||||||
|
|
666
extlibs/headers/libsndfile/windows/sndfile.h
vendored
666
extlibs/headers/libsndfile/windows/sndfile.h
vendored
@ -1,666 +0,0 @@
|
|||||||
/*
|
|
||||||
** Copyright (C) 1999-2011Erik de Castro Lopo <erikd@mega-nerd.com>
|
|
||||||
**
|
|
||||||
** This program is free software; you can redistribute it and/or modify
|
|
||||||
** it under the terms of the GNU Lesser General Public License as published by
|
|
||||||
** the Free Software Foundation; either version 2.1 of the License, or
|
|
||||||
** (at your option) any later version.
|
|
||||||
**
|
|
||||||
** This program is distributed in the hope that it will be useful,
|
|
||||||
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
** GNU Lesser General Public License for more details.
|
|
||||||
**
|
|
||||||
** You should have received a copy of the GNU Lesser General Public License
|
|
||||||
** along with this program; if not, write to the Free Software
|
|
||||||
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
** sndfile.h -- system-wide definitions
|
|
||||||
**
|
|
||||||
** API documentation is in the doc/ directory of the source code tarball
|
|
||||||
** and at http://www.mega-nerd.com/libsndfile/api.html.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SNDFILE_H
|
|
||||||
#define SNDFILE_H
|
|
||||||
|
|
||||||
/* This is the version 1.0.X header file. */
|
|
||||||
#define SNDFILE_1
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
/* The following file types can be read and written.
|
|
||||||
** A file type would consist of a major type (ie SF_FORMAT_WAV) bitwise
|
|
||||||
** ORed with a minor type (ie SF_FORMAT_PCM). SF_FORMAT_TYPEMASK and
|
|
||||||
** SF_FORMAT_SUBMASK can be used to separate the major and minor file
|
|
||||||
** types.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /* Major formats. */
|
|
||||||
SF_FORMAT_WAV = 0x010000, /* Microsoft WAV format (little endian default). */
|
|
||||||
SF_FORMAT_AIFF = 0x020000, /* Apple/SGI AIFF format (big endian). */
|
|
||||||
SF_FORMAT_AU = 0x030000, /* Sun/NeXT AU format (big endian). */
|
|
||||||
SF_FORMAT_RAW = 0x040000, /* RAW PCM data. */
|
|
||||||
SF_FORMAT_PAF = 0x050000, /* Ensoniq PARIS file format. */
|
|
||||||
SF_FORMAT_SVX = 0x060000, /* Amiga IFF / SVX8 / SV16 format. */
|
|
||||||
SF_FORMAT_NIST = 0x070000, /* Sphere NIST format. */
|
|
||||||
SF_FORMAT_VOC = 0x080000, /* VOC files. */
|
|
||||||
SF_FORMAT_IRCAM = 0x0A0000, /* Berkeley/IRCAM/CARL */
|
|
||||||
SF_FORMAT_W64 = 0x0B0000, /* Sonic Foundry's 64 bit RIFF/WAV */
|
|
||||||
SF_FORMAT_MAT4 = 0x0C0000, /* Matlab (tm) V4.2 / GNU Octave 2.0 */
|
|
||||||
SF_FORMAT_MAT5 = 0x0D0000, /* Matlab (tm) V5.0 / GNU Octave 2.1 */
|
|
||||||
SF_FORMAT_PVF = 0x0E0000, /* Portable Voice Format */
|
|
||||||
SF_FORMAT_XI = 0x0F0000, /* Fasttracker 2 Extended Instrument */
|
|
||||||
SF_FORMAT_HTK = 0x100000, /* HMM Tool Kit format */
|
|
||||||
SF_FORMAT_SDS = 0x110000, /* Midi Sample Dump Standard */
|
|
||||||
SF_FORMAT_AVR = 0x120000, /* Audio Visual Research */
|
|
||||||
SF_FORMAT_WAVEX = 0x130000, /* MS WAVE with WAVEFORMATEX */
|
|
||||||
SF_FORMAT_SD2 = 0x160000, /* Sound Designer 2 */
|
|
||||||
SF_FORMAT_FLAC = 0x170000, /* FLAC lossless file format */
|
|
||||||
SF_FORMAT_CAF = 0x180000, /* Core Audio File format */
|
|
||||||
SF_FORMAT_WVE = 0x190000, /* Psion WVE format */
|
|
||||||
SF_FORMAT_OGG = 0x200000, /* Xiph OGG container */
|
|
||||||
SF_FORMAT_MPC2K = 0x210000, /* Akai MPC 2000 sampler */
|
|
||||||
SF_FORMAT_RF64 = 0x220000, /* RF64 WAV file */
|
|
||||||
|
|
||||||
/* Subtypes from here on. */
|
|
||||||
|
|
||||||
SF_FORMAT_PCM_S8 = 0x0001, /* Signed 8 bit data */
|
|
||||||
SF_FORMAT_PCM_16 = 0x0002, /* Signed 16 bit data */
|
|
||||||
SF_FORMAT_PCM_24 = 0x0003, /* Signed 24 bit data */
|
|
||||||
SF_FORMAT_PCM_32 = 0x0004, /* Signed 32 bit data */
|
|
||||||
|
|
||||||
SF_FORMAT_PCM_U8 = 0x0005, /* Unsigned 8 bit data (WAV and RAW only) */
|
|
||||||
|
|
||||||
SF_FORMAT_FLOAT = 0x0006, /* 32 bit float data */
|
|
||||||
SF_FORMAT_DOUBLE = 0x0007, /* 64 bit float data */
|
|
||||||
|
|
||||||
SF_FORMAT_ULAW = 0x0010, /* U-Law encoded. */
|
|
||||||
SF_FORMAT_ALAW = 0x0011, /* A-Law encoded. */
|
|
||||||
SF_FORMAT_IMA_ADPCM = 0x0012, /* IMA ADPCM. */
|
|
||||||
SF_FORMAT_MS_ADPCM = 0x0013, /* Microsoft ADPCM. */
|
|
||||||
|
|
||||||
SF_FORMAT_GSM610 = 0x0020, /* GSM 6.10 encoding. */
|
|
||||||
SF_FORMAT_VOX_ADPCM = 0x0021, /* OKI / Dialogix ADPCM */
|
|
||||||
|
|
||||||
SF_FORMAT_G721_32 = 0x0030, /* 32kbs G721 ADPCM encoding. */
|
|
||||||
SF_FORMAT_G723_24 = 0x0031, /* 24kbs G723 ADPCM encoding. */
|
|
||||||
SF_FORMAT_G723_40 = 0x0032, /* 40kbs G723 ADPCM encoding. */
|
|
||||||
|
|
||||||
SF_FORMAT_DWVW_12 = 0x0040, /* 12 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_16 = 0x0041, /* 16 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_24 = 0x0042, /* 24 bit Delta Width Variable Word encoding. */
|
|
||||||
SF_FORMAT_DWVW_N = 0x0043, /* N bit Delta Width Variable Word encoding. */
|
|
||||||
|
|
||||||
SF_FORMAT_DPCM_8 = 0x0050, /* 8 bit differential PCM (XI only) */
|
|
||||||
SF_FORMAT_DPCM_16 = 0x0051, /* 16 bit differential PCM (XI only) */
|
|
||||||
|
|
||||||
SF_FORMAT_VORBIS = 0x0060, /* Xiph Vorbis encoding. */
|
|
||||||
|
|
||||||
/* Endian-ness options. */
|
|
||||||
|
|
||||||
SF_ENDIAN_FILE = 0x00000000, /* Default file endian-ness. */
|
|
||||||
SF_ENDIAN_LITTLE = 0x10000000, /* Force little endian-ness. */
|
|
||||||
SF_ENDIAN_BIG = 0x20000000, /* Force big endian-ness. */
|
|
||||||
SF_ENDIAN_CPU = 0x30000000, /* Force CPU endian-ness. */
|
|
||||||
|
|
||||||
SF_FORMAT_SUBMASK = 0x0000FFFF,
|
|
||||||
SF_FORMAT_TYPEMASK = 0x0FFF0000,
|
|
||||||
SF_FORMAT_ENDMASK = 0x30000000
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** The following are the valid command numbers for the sf_command()
|
|
||||||
** interface. The use of these commands is documented in the file
|
|
||||||
** command.html in the doc directory of the source code distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SFC_GET_LIB_VERSION = 0x1000,
|
|
||||||
SFC_GET_LOG_INFO = 0x1001,
|
|
||||||
SFC_GET_CURRENT_SF_INFO = 0x1002,
|
|
||||||
|
|
||||||
|
|
||||||
SFC_GET_NORM_DOUBLE = 0x1010,
|
|
||||||
SFC_GET_NORM_FLOAT = 0x1011,
|
|
||||||
SFC_SET_NORM_DOUBLE = 0x1012,
|
|
||||||
SFC_SET_NORM_FLOAT = 0x1013,
|
|
||||||
SFC_SET_SCALE_FLOAT_INT_READ = 0x1014,
|
|
||||||
SFC_SET_SCALE_INT_FLOAT_WRITE = 0x1015,
|
|
||||||
|
|
||||||
SFC_GET_SIMPLE_FORMAT_COUNT = 0x1020,
|
|
||||||
SFC_GET_SIMPLE_FORMAT = 0x1021,
|
|
||||||
|
|
||||||
SFC_GET_FORMAT_INFO = 0x1028,
|
|
||||||
|
|
||||||
SFC_GET_FORMAT_MAJOR_COUNT = 0x1030,
|
|
||||||
SFC_GET_FORMAT_MAJOR = 0x1031,
|
|
||||||
SFC_GET_FORMAT_SUBTYPE_COUNT = 0x1032,
|
|
||||||
SFC_GET_FORMAT_SUBTYPE = 0x1033,
|
|
||||||
|
|
||||||
SFC_CALC_SIGNAL_MAX = 0x1040,
|
|
||||||
SFC_CALC_NORM_SIGNAL_MAX = 0x1041,
|
|
||||||
SFC_CALC_MAX_ALL_CHANNELS = 0x1042,
|
|
||||||
SFC_CALC_NORM_MAX_ALL_CHANNELS = 0x1043,
|
|
||||||
SFC_GET_SIGNAL_MAX = 0x1044,
|
|
||||||
SFC_GET_MAX_ALL_CHANNELS = 0x1045,
|
|
||||||
|
|
||||||
SFC_SET_ADD_PEAK_CHUNK = 0x1050,
|
|
||||||
SFC_SET_ADD_HEADER_PAD_CHUNK = 0x1051,
|
|
||||||
|
|
||||||
SFC_UPDATE_HEADER_NOW = 0x1060,
|
|
||||||
SFC_SET_UPDATE_HEADER_AUTO = 0x1061,
|
|
||||||
|
|
||||||
SFC_FILE_TRUNCATE = 0x1080,
|
|
||||||
|
|
||||||
SFC_SET_RAW_START_OFFSET = 0x1090,
|
|
||||||
|
|
||||||
SFC_SET_DITHER_ON_WRITE = 0x10A0,
|
|
||||||
SFC_SET_DITHER_ON_READ = 0x10A1,
|
|
||||||
|
|
||||||
SFC_GET_DITHER_INFO_COUNT = 0x10A2,
|
|
||||||
SFC_GET_DITHER_INFO = 0x10A3,
|
|
||||||
|
|
||||||
SFC_GET_EMBED_FILE_INFO = 0x10B0,
|
|
||||||
|
|
||||||
SFC_SET_CLIPPING = 0x10C0,
|
|
||||||
SFC_GET_CLIPPING = 0x10C1,
|
|
||||||
|
|
||||||
SFC_GET_INSTRUMENT = 0x10D0,
|
|
||||||
SFC_SET_INSTRUMENT = 0x10D1,
|
|
||||||
|
|
||||||
SFC_GET_LOOP_INFO = 0x10E0,
|
|
||||||
|
|
||||||
SFC_GET_BROADCAST_INFO = 0x10F0,
|
|
||||||
SFC_SET_BROADCAST_INFO = 0x10F1,
|
|
||||||
|
|
||||||
SFC_GET_CHANNEL_MAP_INFO = 0x1100,
|
|
||||||
SFC_SET_CHANNEL_MAP_INFO = 0x1101,
|
|
||||||
|
|
||||||
SFC_RAW_DATA_NEEDS_ENDSWAP = 0x1110,
|
|
||||||
|
|
||||||
/* Support for Wavex Ambisonics Format */
|
|
||||||
SFC_WAVEX_SET_AMBISONIC = 0x1200,
|
|
||||||
SFC_WAVEX_GET_AMBISONIC = 0x1201,
|
|
||||||
|
|
||||||
SFC_SET_VBR_ENCODING_QUALITY = 0x1300,
|
|
||||||
|
|
||||||
/* Following commands for testing only. */
|
|
||||||
SFC_TEST_IEEE_FLOAT_REPLACE = 0x6001,
|
|
||||||
|
|
||||||
/*
|
|
||||||
** SFC_SET_ADD_* values are deprecated and will disappear at some
|
|
||||||
** time in the future. They are guaranteed to be here up to and
|
|
||||||
** including version 1.0.8 to avoid breakage of existng software.
|
|
||||||
** They currently do nothing and will continue to do nothing.
|
|
||||||
*/
|
|
||||||
SFC_SET_ADD_DITHER_ON_WRITE = 0x1070,
|
|
||||||
SFC_SET_ADD_DITHER_ON_READ = 0x1071
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
** String types that can be set and read from files. Not all file types
|
|
||||||
** support this and even the file types which support one, may not support
|
|
||||||
** all string types.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_STR_TITLE = 0x01,
|
|
||||||
SF_STR_COPYRIGHT = 0x02,
|
|
||||||
SF_STR_SOFTWARE = 0x03,
|
|
||||||
SF_STR_ARTIST = 0x04,
|
|
||||||
SF_STR_COMMENT = 0x05,
|
|
||||||
SF_STR_DATE = 0x06,
|
|
||||||
SF_STR_ALBUM = 0x07,
|
|
||||||
SF_STR_LICENSE = 0x08,
|
|
||||||
SF_STR_TRACKNUMBER = 0x09,
|
|
||||||
SF_STR_GENRE = 0x10
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Use the following as the start and end index when doing metadata
|
|
||||||
** transcoding.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define SF_STR_FIRST SF_STR_TITLE
|
|
||||||
#define SF_STR_LAST SF_STR_LICENSE
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /* True and false */
|
|
||||||
SF_FALSE = 0,
|
|
||||||
SF_TRUE = 1,
|
|
||||||
|
|
||||||
/* Modes for opening files. */
|
|
||||||
SFM_READ = 0x10,
|
|
||||||
SFM_WRITE = 0x20,
|
|
||||||
SFM_RDWR = 0x30,
|
|
||||||
|
|
||||||
SF_AMBISONIC_NONE = 0x40,
|
|
||||||
SF_AMBISONIC_B_FORMAT = 0x41
|
|
||||||
} ;
|
|
||||||
|
|
||||||
/* Public error values. These are guaranteed to remain unchanged for the duration
|
|
||||||
** of the library major version number.
|
|
||||||
** There are also a large number of private error numbers which are internal to
|
|
||||||
** the library which can change at any time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_ERR_NO_ERROR = 0,
|
|
||||||
SF_ERR_UNRECOGNISED_FORMAT = 1,
|
|
||||||
SF_ERR_SYSTEM = 2,
|
|
||||||
SF_ERR_MALFORMED_FILE = 3,
|
|
||||||
SF_ERR_UNSUPPORTED_ENCODING = 4
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Channel map values (used with SFC_SET/GET_CHANNEL_MAP).
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SF_CHANNEL_MAP_INVALID = 0,
|
|
||||||
SF_CHANNEL_MAP_MONO = 1,
|
|
||||||
SF_CHANNEL_MAP_LEFT, /* Apple calls this 'Left' */
|
|
||||||
SF_CHANNEL_MAP_RIGHT, /* Apple calls this 'Right' */
|
|
||||||
SF_CHANNEL_MAP_CENTER, /* Apple calls this 'Center' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_LEFT,
|
|
||||||
SF_CHANNEL_MAP_FRONT_RIGHT,
|
|
||||||
SF_CHANNEL_MAP_FRONT_CENTER,
|
|
||||||
SF_CHANNEL_MAP_REAR_CENTER, /* Apple calls this 'Center Surround', Msft calls this 'Back Center' */
|
|
||||||
SF_CHANNEL_MAP_REAR_LEFT, /* Apple calls this 'Left Surround', Msft calls this 'Back Left' */
|
|
||||||
SF_CHANNEL_MAP_REAR_RIGHT, /* Apple calls this 'Right Surround', Msft calls this 'Back Right' */
|
|
||||||
SF_CHANNEL_MAP_LFE, /* Apple calls this 'LFEScreen', Msft calls this 'Low Frequency' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_LEFT_OF_CENTER, /* Apple calls this 'Left Center' */
|
|
||||||
SF_CHANNEL_MAP_FRONT_RIGHT_OF_CENTER, /* Apple calls this 'Right Center */
|
|
||||||
SF_CHANNEL_MAP_SIDE_LEFT, /* Apple calls this 'Left Surround Direct' */
|
|
||||||
SF_CHANNEL_MAP_SIDE_RIGHT, /* Apple calls this 'Right Surround Direct' */
|
|
||||||
SF_CHANNEL_MAP_TOP_CENTER, /* Apple calls this 'Top Center Surround' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_LEFT, /* Apple calls this 'Vertical Height Left' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_RIGHT, /* Apple calls this 'Vertical Height Right' */
|
|
||||||
SF_CHANNEL_MAP_TOP_FRONT_CENTER, /* Apple calls this 'Vertical Height Center' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_LEFT, /* Apple and MS call this 'Top Back Left' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_RIGHT, /* Apple and MS call this 'Top Back Right' */
|
|
||||||
SF_CHANNEL_MAP_TOP_REAR_CENTER, /* Apple and MS call this 'Top Back Center' */
|
|
||||||
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_W,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_X,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_Y,
|
|
||||||
SF_CHANNEL_MAP_AMBISONIC_B_Z,
|
|
||||||
|
|
||||||
SF_CHANNEL_MAP_MAX
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
/* A SNDFILE* pointer can be passed around much like stdio.h's FILE* pointer. */
|
|
||||||
|
|
||||||
typedef struct SNDFILE_tag SNDFILE ;
|
|
||||||
|
|
||||||
/* The following typedef is system specific and is defined when libsndfile is
|
|
||||||
** compiled. sf_count_t will be a 64 bit value when the underlying OS allows
|
|
||||||
** 64 bit file offsets.
|
|
||||||
** On windows, we need to allow the same header file to be compiler by both GCC
|
|
||||||
** and the Microsoft compiler.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if (defined (_MSCVER) || defined (_MSC_VER))
|
|
||||||
typedef __int64 sf_count_t ;
|
|
||||||
#define SF_COUNT_MAX 0x7fffffffffffffffi64
|
|
||||||
#else
|
|
||||||
typedef __int64 sf_count_t ;
|
|
||||||
#define SF_COUNT_MAX 0x7FFFFFFFFFFFFFFFLL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* A pointer to a SF_INFO structure is passed to sf_open () and filled in.
|
|
||||||
** On write, the SF_INFO structure is filled in by the user and passed into
|
|
||||||
** sf_open ().
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct SF_INFO
|
|
||||||
{ sf_count_t frames ; /* Used to be called samples. Changed to avoid confusion. */
|
|
||||||
int samplerate ;
|
|
||||||
int channels ;
|
|
||||||
int format ;
|
|
||||||
int sections ;
|
|
||||||
int seekable ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct SF_INFO SF_INFO ;
|
|
||||||
|
|
||||||
/* The SF_FORMAT_INFO struct is used to retrieve information about the sound
|
|
||||||
** file formats libsndfile supports using the sf_command () interface.
|
|
||||||
**
|
|
||||||
** Using this interface will allow applications to support new file formats
|
|
||||||
** and encoding types when libsndfile is upgraded, without requiring
|
|
||||||
** re-compilation of the application.
|
|
||||||
**
|
|
||||||
** Please consult the libsndfile documentation (particularly the information
|
|
||||||
** on the sf_command () interface) for examples of its use.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int format ;
|
|
||||||
const char *name ;
|
|
||||||
const char *extension ;
|
|
||||||
} SF_FORMAT_INFO ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Enums and typedefs for adding dither on read and write.
|
|
||||||
** See the html documentation for sf_command(), SFC_SET_DITHER_ON_WRITE
|
|
||||||
** and SFC_SET_DITHER_ON_READ.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ SFD_DEFAULT_LEVEL = 0,
|
|
||||||
SFD_CUSTOM_LEVEL = 0x40000000,
|
|
||||||
|
|
||||||
SFD_NO_DITHER = 500,
|
|
||||||
SFD_WHITE = 501,
|
|
||||||
SFD_TRIANGULAR_PDF = 502
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int type ;
|
|
||||||
double level ;
|
|
||||||
const char *name ;
|
|
||||||
} SF_DITHER_INFO ;
|
|
||||||
|
|
||||||
/* Struct used to retrieve information about a file embedded within a
|
|
||||||
** larger file. See SFC_GET_EMBED_FILE_INFO.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ sf_count_t offset ;
|
|
||||||
sf_count_t length ;
|
|
||||||
} SF_EMBED_FILE_INFO ;
|
|
||||||
|
|
||||||
/*
|
|
||||||
** Structs used to retrieve music sample information from a file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum
|
|
||||||
{ /*
|
|
||||||
** The loop mode field in SF_INSTRUMENT will be one of the following.
|
|
||||||
*/
|
|
||||||
SF_LOOP_NONE = 800,
|
|
||||||
SF_LOOP_FORWARD,
|
|
||||||
SF_LOOP_BACKWARD,
|
|
||||||
SF_LOOP_ALTERNATING
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{ int gain ;
|
|
||||||
char basenote, detune ;
|
|
||||||
char velocity_lo, velocity_hi ;
|
|
||||||
char key_lo, key_hi ;
|
|
||||||
int loop_count ;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{ int mode ;
|
|
||||||
unsigned int start ;
|
|
||||||
unsigned int end ;
|
|
||||||
unsigned int count ;
|
|
||||||
} loops [16] ; /* make variable in a sensible way */
|
|
||||||
} SF_INSTRUMENT ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Struct used to retrieve loop information from a file.*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
short time_sig_num ; /* any positive integer > 0 */
|
|
||||||
short time_sig_den ; /* any positive power of 2 > 0 */
|
|
||||||
int loop_mode ; /* see SF_LOOP enum */
|
|
||||||
|
|
||||||
int num_beats ; /* this is NOT the amount of quarter notes !!!*/
|
|
||||||
/* a full bar of 4/4 is 4 beats */
|
|
||||||
/* a full bar of 7/8 is 7 beats */
|
|
||||||
|
|
||||||
float bpm ; /* suggestion, as it can be calculated using other fields:*/
|
|
||||||
/* file's lenght, file's sampleRate and our time_sig_den*/
|
|
||||||
/* -> bpms are always the amount of _quarter notes_ per minute */
|
|
||||||
|
|
||||||
int root_key ; /* MIDI note, or -1 for None */
|
|
||||||
int future [6] ;
|
|
||||||
} SF_LOOP_INFO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Struct used to retrieve broadcast (EBU) information from a file.
|
|
||||||
** Strongly (!) based on EBU "bext" chunk format used in Broadcast WAVE.
|
|
||||||
*/
|
|
||||||
#define SF_BROADCAST_INFO_VAR(coding_hist_size) \
|
|
||||||
struct \
|
|
||||||
{ char description [256] ; \
|
|
||||||
char originator [32] ; \
|
|
||||||
char originator_reference [32] ; \
|
|
||||||
char origination_date [10] ; \
|
|
||||||
char origination_time [8] ; \
|
|
||||||
unsigned int time_reference_low ; \
|
|
||||||
unsigned int time_reference_high ; \
|
|
||||||
short version ; \
|
|
||||||
char umid [64] ; \
|
|
||||||
char reserved [190] ; \
|
|
||||||
unsigned int coding_history_size ; \
|
|
||||||
char coding_history [coding_hist_size] ; \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* SF_BROADCAST_INFO is the above struct with coding_history field of 256 bytes. */
|
|
||||||
typedef SF_BROADCAST_INFO_VAR (256) SF_BROADCAST_INFO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Virtual I/O functionality. */
|
|
||||||
|
|
||||||
typedef sf_count_t (*sf_vio_get_filelen) (void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_seek) (sf_count_t offset, int whence, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_read) (void *ptr, sf_count_t count, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_write) (const void *ptr, sf_count_t count, void *user_data) ;
|
|
||||||
typedef sf_count_t (*sf_vio_tell) (void *user_data) ;
|
|
||||||
|
|
||||||
struct SF_VIRTUAL_IO
|
|
||||||
{ sf_vio_get_filelen get_filelen ;
|
|
||||||
sf_vio_seek seek ;
|
|
||||||
sf_vio_read read ;
|
|
||||||
sf_vio_write write ;
|
|
||||||
sf_vio_tell tell ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct SF_VIRTUAL_IO SF_VIRTUAL_IO ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Open the specified file for read, write or both. On error, this will
|
|
||||||
** return a NULL pointer. To find the error number, pass a NULL SNDFILE
|
|
||||||
** to sf_strerror ().
|
|
||||||
** All calls to sf_open() should be matched with a call to sf_close().
|
|
||||||
*/
|
|
||||||
|
|
||||||
SNDFILE* sf_open (const char *path, int mode, SF_INFO *sfinfo) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Use the existing file descriptor to create a SNDFILE object. If close_desc
|
|
||||||
** is TRUE, the file descriptor will be closed when sf_close() is called. If
|
|
||||||
** it is FALSE, the descritor will not be closed.
|
|
||||||
** When passed a descriptor like this, the library will assume that the start
|
|
||||||
** of file header is at the current file offset. This allows sound files within
|
|
||||||
** larger container files to be read and/or written.
|
|
||||||
** On error, this will return a NULL pointer. To find the error number, pass a
|
|
||||||
** NULL SNDFILE to sf_strerror ().
|
|
||||||
** All calls to sf_open_fd() should be matched with a call to sf_close().
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
SNDFILE* sf_open_fd (int fd, int mode, SF_INFO *sfinfo, int close_desc) ;
|
|
||||||
|
|
||||||
SNDFILE* sf_open_virtual (SF_VIRTUAL_IO *sfvirtual, int mode, SF_INFO *sfinfo, void *user_data) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_error () returns a error number which can be translated to a text
|
|
||||||
** string using sf_error_number().
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_error (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_strerror () returns to the caller a pointer to the current error message for
|
|
||||||
** the given SNDFILE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* sf_strerror (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* sf_error_number () allows the retrieval of the error string for each internal
|
|
||||||
** error number.
|
|
||||||
**
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* sf_error_number (int errnum) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* The following two error functions are deprecated but they will remain in the
|
|
||||||
** library for the forseeable future. The function sf_strerror() should be used
|
|
||||||
** in their place.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_perror (SNDFILE *sndfile) ;
|
|
||||||
int sf_error_str (SNDFILE *sndfile, char* str, size_t len) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
|
|
||||||
|
|
||||||
int sf_command (SNDFILE *sndfile, int command, void *data, int datasize) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return TRUE if fields of the SF_INFO struct are a valid combination of values. */
|
|
||||||
|
|
||||||
int sf_format_check (const SF_INFO *info) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Seek within the waveform data chunk of the SNDFILE. sf_seek () uses
|
|
||||||
** the same values for whence (SEEK_SET, SEEK_CUR and SEEK_END) as
|
|
||||||
** stdio.h function fseek ().
|
|
||||||
** An offset of zero with whence set to SEEK_SET will position the
|
|
||||||
** read / write pointer to the first data sample.
|
|
||||||
** On success sf_seek returns the current position in (multi-channel)
|
|
||||||
** samples from the start of the file.
|
|
||||||
** Please see the libsndfile documentation for moving the read pointer
|
|
||||||
** separately from the write pointer on files open in mode SFM_RDWR.
|
|
||||||
** On error all of these functions return -1.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_seek (SNDFILE *sndfile, sf_count_t frames, int whence) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for retrieving and setting string data within sound files.
|
|
||||||
** Not all file types support this features; AIFF and WAV do. For both
|
|
||||||
** functions, the str_type parameter must be one of the SF_STR_* values
|
|
||||||
** defined above.
|
|
||||||
** On error, sf_set_string() returns non-zero while sf_get_string()
|
|
||||||
** returns NULL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_set_string (SNDFILE *sndfile, int str_type, const char* str) ;
|
|
||||||
|
|
||||||
const char* sf_get_string (SNDFILE *sndfile, int str_type) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return the library version string. */
|
|
||||||
|
|
||||||
const char * sf_version_string (void) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading/writing the waveform data of a sound file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_read_raw (SNDFILE *sndfile, void *ptr, sf_count_t bytes) ;
|
|
||||||
sf_count_t sf_write_raw (SNDFILE *sndfile, const void *ptr, sf_count_t bytes) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading and writing the data chunk in terms of frames.
|
|
||||||
** The number of items actually read/written = frames * number of channels.
|
|
||||||
** sf_xxxx_raw read/writes the raw data bytes from/to the file
|
|
||||||
** sf_xxxx_short passes data in the native short format
|
|
||||||
** sf_xxxx_int passes data in the native int format
|
|
||||||
** sf_xxxx_float passes data in the native float format
|
|
||||||
** sf_xxxx_double passes data in the native double format
|
|
||||||
** All of these read/write function return number of frames read/written.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_readf_short (SNDFILE *sndfile, short *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_short (SNDFILE *sndfile, const short *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_int (SNDFILE *sndfile, int *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_int (SNDFILE *sndfile, const int *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_float (SNDFILE *sndfile, float *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_float (SNDFILE *sndfile, const float *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
sf_count_t sf_readf_double (SNDFILE *sndfile, double *ptr, sf_count_t frames) ;
|
|
||||||
sf_count_t sf_writef_double (SNDFILE *sndfile, const double *ptr, sf_count_t frames) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Functions for reading and writing the data chunk in terms of items.
|
|
||||||
** Otherwise similar to above.
|
|
||||||
** All of these read/write function return number of items read/written.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sf_count_t sf_read_short (SNDFILE *sndfile, short *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_short (SNDFILE *sndfile, const short *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_int (SNDFILE *sndfile, int *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_int (SNDFILE *sndfile, const int *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_float (SNDFILE *sndfile, float *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_float (SNDFILE *sndfile, const float *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
sf_count_t sf_read_double (SNDFILE *sndfile, double *ptr, sf_count_t items) ;
|
|
||||||
sf_count_t sf_write_double (SNDFILE *sndfile, const double *ptr, sf_count_t items) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* Close the SNDFILE and clean up all memory allocations associated with this
|
|
||||||
** file.
|
|
||||||
** Returns 0 on success, or an error number.
|
|
||||||
*/
|
|
||||||
|
|
||||||
int sf_close (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
/* If the file is opened SFM_WRITE or SFM_RDWR, call fsync() on the file
|
|
||||||
** to force the writing of data to disk. If the file is opened SFM_READ
|
|
||||||
** no action is taken.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void sf_write_sync (SNDFILE *sndfile) ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* The function sf_wchar_open() is Windows Only!
|
|
||||||
** Open a file passing in a Windows Unicode filename. Otherwise, this is
|
|
||||||
** the same as sf_open().
|
|
||||||
**
|
|
||||||
** In order for this to work, you need to do the following:
|
|
||||||
**
|
|
||||||
** #include <windows.h>
|
|
||||||
** #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1
|
|
||||||
** #including <sndfile.h>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if ENABLE_SNDFILE_WINDOWS_PROTOTYPES
|
|
||||||
SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} /* extern "C" */
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
#endif /* SNDFILE_H */
|
|
||||||
|
|
25
extlibs/headers/ogg/config_types.h
vendored
Normal file
25
extlibs/headers/ogg/config_types.h
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#ifndef __CONFIG_TYPES_H__
|
||||||
|
#define __CONFIG_TYPES_H__
|
||||||
|
|
||||||
|
/* these are filled in by configure */
|
||||||
|
#define INCLUDE_INTTYPES_H 1
|
||||||
|
#define INCLUDE_STDINT_H 1
|
||||||
|
#define INCLUDE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
#if INCLUDE_INTTYPES_H
|
||||||
|
# include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
#if INCLUDE_STDINT_H
|
||||||
|
# include <stdint.h>
|
||||||
|
#endif
|
||||||
|
#if INCLUDE_SYS_TYPES_H
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef int16_t ogg_int16_t;
|
||||||
|
typedef uint16_t ogg_uint16_t;
|
||||||
|
typedef int32_t ogg_int32_t;
|
||||||
|
typedef uint32_t ogg_uint32_t;
|
||||||
|
typedef int64_t ogg_int64_t;
|
||||||
|
|
||||||
|
#endif
|
210
extlibs/headers/ogg/ogg.h
vendored
Normal file
210
extlibs/headers/ogg/ogg.h
vendored
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
/********************************************************************
|
||||||
|
* *
|
||||||
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||||||
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||||||
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||||||
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||||||
|
* *
|
||||||
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
|
||||||
|
* by the Xiph.Org Foundation http://www.xiph.org/ *
|
||||||
|
* *
|
||||||
|
********************************************************************
|
||||||
|
|
||||||
|
function: toplevel libogg include
|
||||||
|
last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $
|
||||||
|
|
||||||
|
********************************************************************/
|
||||||
|
#ifndef _OGG_H
|
||||||
|
#define _OGG_H
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <ogg/os_types.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
void *iov_base;
|
||||||
|
size_t iov_len;
|
||||||
|
} ogg_iovec_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
long endbyte;
|
||||||
|
int endbit;
|
||||||
|
|
||||||
|
unsigned char *buffer;
|
||||||
|
unsigned char *ptr;
|
||||||
|
long storage;
|
||||||
|
} oggpack_buffer;
|
||||||
|
|
||||||
|
/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char *header;
|
||||||
|
long header_len;
|
||||||
|
unsigned char *body;
|
||||||
|
long body_len;
|
||||||
|
} ogg_page;
|
||||||
|
|
||||||
|
/* ogg_stream_state contains the current encode/decode state of a logical
|
||||||
|
Ogg bitstream **********************************************************/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char *body_data; /* bytes from packet bodies */
|
||||||
|
long body_storage; /* storage elements allocated */
|
||||||
|
long body_fill; /* elements stored; fill mark */
|
||||||
|
long body_returned; /* elements of fill returned */
|
||||||
|
|
||||||
|
|
||||||
|
int *lacing_vals; /* The values that will go to the segment table */
|
||||||
|
ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
|
||||||
|
this way, but it is simple coupled to the
|
||||||
|
lacing fifo */
|
||||||
|
long lacing_storage;
|
||||||
|
long lacing_fill;
|
||||||
|
long lacing_packet;
|
||||||
|
long lacing_returned;
|
||||||
|
|
||||||
|
unsigned char header[282]; /* working space for header encode */
|
||||||
|
int header_fill;
|
||||||
|
|
||||||
|
int e_o_s; /* set when we have buffered the last packet in the
|
||||||
|
logical bitstream */
|
||||||
|
int b_o_s; /* set after we've written the initial page
|
||||||
|
of a logical bitstream */
|
||||||
|
long serialno;
|
||||||
|
long pageno;
|
||||||
|
ogg_int64_t packetno; /* sequence number for decode; the framing
|
||||||
|
knows where there's a hole in the data,
|
||||||
|
but we need coupling so that the codec
|
||||||
|
(which is in a separate abstraction
|
||||||
|
layer) also knows about the gap */
|
||||||
|
ogg_int64_t granulepos;
|
||||||
|
|
||||||
|
} ogg_stream_state;
|
||||||
|
|
||||||
|
/* ogg_packet is used to encapsulate the data and metadata belonging
|
||||||
|
to a single raw Ogg/Vorbis packet *************************************/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char *packet;
|
||||||
|
long bytes;
|
||||||
|
long b_o_s;
|
||||||
|
long e_o_s;
|
||||||
|
|
||||||
|
ogg_int64_t granulepos;
|
||||||
|
|
||||||
|
ogg_int64_t packetno; /* sequence number for decode; the framing
|
||||||
|
knows where there's a hole in the data,
|
||||||
|
but we need coupling so that the codec
|
||||||
|
(which is in a separate abstraction
|
||||||
|
layer) also knows about the gap */
|
||||||
|
} ogg_packet;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned char *data;
|
||||||
|
int storage;
|
||||||
|
int fill;
|
||||||
|
int returned;
|
||||||
|
|
||||||
|
int unsynced;
|
||||||
|
int headerbytes;
|
||||||
|
int bodybytes;
|
||||||
|
} ogg_sync_state;
|
||||||
|
|
||||||
|
/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
|
||||||
|
|
||||||
|
extern void oggpack_writeinit(oggpack_buffer *b);
|
||||||
|
extern int oggpack_writecheck(oggpack_buffer *b);
|
||||||
|
extern void oggpack_writetrunc(oggpack_buffer *b,long bits);
|
||||||
|
extern void oggpack_writealign(oggpack_buffer *b);
|
||||||
|
extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
|
||||||
|
extern void oggpack_reset(oggpack_buffer *b);
|
||||||
|
extern void oggpack_writeclear(oggpack_buffer *b);
|
||||||
|
extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
|
||||||
|
extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
|
||||||
|
extern long oggpack_look(oggpack_buffer *b,int bits);
|
||||||
|
extern long oggpack_look1(oggpack_buffer *b);
|
||||||
|
extern void oggpack_adv(oggpack_buffer *b,int bits);
|
||||||
|
extern void oggpack_adv1(oggpack_buffer *b);
|
||||||
|
extern long oggpack_read(oggpack_buffer *b,int bits);
|
||||||
|
extern long oggpack_read1(oggpack_buffer *b);
|
||||||
|
extern long oggpack_bytes(oggpack_buffer *b);
|
||||||
|
extern long oggpack_bits(oggpack_buffer *b);
|
||||||
|
extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
|
||||||
|
|
||||||
|
extern void oggpackB_writeinit(oggpack_buffer *b);
|
||||||
|
extern int oggpackB_writecheck(oggpack_buffer *b);
|
||||||
|
extern void oggpackB_writetrunc(oggpack_buffer *b,long bits);
|
||||||
|
extern void oggpackB_writealign(oggpack_buffer *b);
|
||||||
|
extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
|
||||||
|
extern void oggpackB_reset(oggpack_buffer *b);
|
||||||
|
extern void oggpackB_writeclear(oggpack_buffer *b);
|
||||||
|
extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
|
||||||
|
extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
|
||||||
|
extern long oggpackB_look(oggpack_buffer *b,int bits);
|
||||||
|
extern long oggpackB_look1(oggpack_buffer *b);
|
||||||
|
extern void oggpackB_adv(oggpack_buffer *b,int bits);
|
||||||
|
extern void oggpackB_adv1(oggpack_buffer *b);
|
||||||
|
extern long oggpackB_read(oggpack_buffer *b,int bits);
|
||||||
|
extern long oggpackB_read1(oggpack_buffer *b);
|
||||||
|
extern long oggpackB_bytes(oggpack_buffer *b);
|
||||||
|
extern long oggpackB_bits(oggpack_buffer *b);
|
||||||
|
extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
|
||||||
|
|
||||||
|
/* Ogg BITSTREAM PRIMITIVES: encoding **************************/
|
||||||
|
|
||||||
|
extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
|
||||||
|
extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
|
||||||
|
int count, long e_o_s, ogg_int64_t granulepos);
|
||||||
|
extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
|
||||||
|
extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
|
||||||
|
extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
|
||||||
|
extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
|
||||||
|
|
||||||
|
/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
|
||||||
|
|
||||||
|
extern int ogg_sync_init(ogg_sync_state *oy);
|
||||||
|
extern int ogg_sync_clear(ogg_sync_state *oy);
|
||||||
|
extern int ogg_sync_reset(ogg_sync_state *oy);
|
||||||
|
extern int ogg_sync_destroy(ogg_sync_state *oy);
|
||||||
|
extern int ogg_sync_check(ogg_sync_state *oy);
|
||||||
|
|
||||||
|
extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
|
||||||
|
extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
|
||||||
|
extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
|
||||||
|
extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
|
||||||
|
extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
|
||||||
|
extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
|
||||||
|
extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
|
||||||
|
|
||||||
|
/* Ogg BITSTREAM PRIMITIVES: general ***************************/
|
||||||
|
|
||||||
|
extern int ogg_stream_init(ogg_stream_state *os,int serialno);
|
||||||
|
extern int ogg_stream_clear(ogg_stream_state *os);
|
||||||
|
extern int ogg_stream_reset(ogg_stream_state *os);
|
||||||
|
extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
|
||||||
|
extern int ogg_stream_destroy(ogg_stream_state *os);
|
||||||
|
extern int ogg_stream_check(ogg_stream_state *os);
|
||||||
|
extern int ogg_stream_eos(ogg_stream_state *os);
|
||||||
|
|
||||||
|
extern void ogg_page_checksum_set(ogg_page *og);
|
||||||
|
|
||||||
|
extern int ogg_page_version(const ogg_page *og);
|
||||||
|
extern int ogg_page_continued(const ogg_page *og);
|
||||||
|
extern int ogg_page_bos(const ogg_page *og);
|
||||||
|
extern int ogg_page_eos(const ogg_page *og);
|
||||||
|
extern ogg_int64_t ogg_page_granulepos(const ogg_page *og);
|
||||||
|
extern int ogg_page_serialno(const ogg_page *og);
|
||||||
|
extern long ogg_page_pageno(const ogg_page *og);
|
||||||
|
extern int ogg_page_packets(const ogg_page *og);
|
||||||
|
|
||||||
|
extern void ogg_packet_clear(ogg_packet *op);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _OGG_H */
|
147
extlibs/headers/ogg/os_types.h
vendored
Normal file
147
extlibs/headers/ogg/os_types.h
vendored
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
/********************************************************************
|
||||||
|
* *
|
||||||
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||||||
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||||||
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||||||
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||||||
|
* *
|
||||||
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
|
||||||
|
* by the Xiph.Org Foundation http://www.xiph.org/ *
|
||||||
|
* *
|
||||||
|
********************************************************************
|
||||||
|
|
||||||
|
function: #ifdef jail to whip a few platforms into the UNIX ideal.
|
||||||
|
last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $
|
||||||
|
|
||||||
|
********************************************************************/
|
||||||
|
#ifndef _OS_TYPES_H
|
||||||
|
#define _OS_TYPES_H
|
||||||
|
|
||||||
|
/* make it easy on the folks that want to compile the libs with a
|
||||||
|
different malloc than stdlib */
|
||||||
|
#define _ogg_malloc malloc
|
||||||
|
#define _ogg_calloc calloc
|
||||||
|
#define _ogg_realloc realloc
|
||||||
|
#define _ogg_free free
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
|
||||||
|
# if defined(__CYGWIN__)
|
||||||
|
# include <stdint.h>
|
||||||
|
typedef int16_t ogg_int16_t;
|
||||||
|
typedef uint16_t ogg_uint16_t;
|
||||||
|
typedef int32_t ogg_int32_t;
|
||||||
|
typedef uint32_t ogg_uint32_t;
|
||||||
|
typedef int64_t ogg_int64_t;
|
||||||
|
typedef uint64_t ogg_uint64_t;
|
||||||
|
# elif defined(__MINGW32__)
|
||||||
|
# include <sys/types.h>
|
||||||
|
typedef short ogg_int16_t;
|
||||||
|
typedef unsigned short ogg_uint16_t;
|
||||||
|
typedef int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef long long ogg_int64_t;
|
||||||
|
typedef unsigned long long ogg_uint64_t;
|
||||||
|
# elif defined(__MWERKS__)
|
||||||
|
typedef long long ogg_int64_t;
|
||||||
|
typedef int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef short ogg_int16_t;
|
||||||
|
typedef unsigned short ogg_uint16_t;
|
||||||
|
# else
|
||||||
|
/* MSVC/Borland */
|
||||||
|
typedef __int64 ogg_int64_t;
|
||||||
|
typedef __int32 ogg_int32_t;
|
||||||
|
typedef unsigned __int32 ogg_uint32_t;
|
||||||
|
typedef __int16 ogg_int16_t;
|
||||||
|
typedef unsigned __int16 ogg_uint16_t;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__MACOS__)
|
||||||
|
|
||||||
|
# include <sys/types.h>
|
||||||
|
typedef SInt16 ogg_int16_t;
|
||||||
|
typedef UInt16 ogg_uint16_t;
|
||||||
|
typedef SInt32 ogg_int32_t;
|
||||||
|
typedef UInt32 ogg_uint32_t;
|
||||||
|
typedef SInt64 ogg_int64_t;
|
||||||
|
|
||||||
|
#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
|
||||||
|
|
||||||
|
# include <inttypes.h>
|
||||||
|
typedef int16_t ogg_int16_t;
|
||||||
|
typedef uint16_t ogg_uint16_t;
|
||||||
|
typedef int32_t ogg_int32_t;
|
||||||
|
typedef uint32_t ogg_uint32_t;
|
||||||
|
typedef int64_t ogg_int64_t;
|
||||||
|
|
||||||
|
#elif defined(__HAIKU__)
|
||||||
|
|
||||||
|
/* Haiku */
|
||||||
|
# include <sys/types.h>
|
||||||
|
typedef short ogg_int16_t;
|
||||||
|
typedef unsigned short ogg_uint16_t;
|
||||||
|
typedef int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef long long ogg_int64_t;
|
||||||
|
|
||||||
|
#elif defined(__BEOS__)
|
||||||
|
|
||||||
|
/* Be */
|
||||||
|
# include <inttypes.h>
|
||||||
|
typedef int16_t ogg_int16_t;
|
||||||
|
typedef uint16_t ogg_uint16_t;
|
||||||
|
typedef int32_t ogg_int32_t;
|
||||||
|
typedef uint32_t ogg_uint32_t;
|
||||||
|
typedef int64_t ogg_int64_t;
|
||||||
|
|
||||||
|
#elif defined (__EMX__)
|
||||||
|
|
||||||
|
/* OS/2 GCC */
|
||||||
|
typedef short ogg_int16_t;
|
||||||
|
typedef unsigned short ogg_uint16_t;
|
||||||
|
typedef int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef long long ogg_int64_t;
|
||||||
|
|
||||||
|
#elif defined (DJGPP)
|
||||||
|
|
||||||
|
/* DJGPP */
|
||||||
|
typedef short ogg_int16_t;
|
||||||
|
typedef int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef long long ogg_int64_t;
|
||||||
|
|
||||||
|
#elif defined(R5900)
|
||||||
|
|
||||||
|
/* PS2 EE */
|
||||||
|
typedef long ogg_int64_t;
|
||||||
|
typedef int ogg_int32_t;
|
||||||
|
typedef unsigned ogg_uint32_t;
|
||||||
|
typedef short ogg_int16_t;
|
||||||
|
|
||||||
|
#elif defined(__SYMBIAN32__)
|
||||||
|
|
||||||
|
/* Symbian GCC */
|
||||||
|
typedef signed short ogg_int16_t;
|
||||||
|
typedef unsigned short ogg_uint16_t;
|
||||||
|
typedef signed int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef long long int ogg_int64_t;
|
||||||
|
|
||||||
|
#elif defined(__TMS320C6X__)
|
||||||
|
|
||||||
|
/* TI C64x compiler */
|
||||||
|
typedef signed short ogg_int16_t;
|
||||||
|
typedef unsigned short ogg_uint16_t;
|
||||||
|
typedef signed int ogg_int32_t;
|
||||||
|
typedef unsigned int ogg_uint32_t;
|
||||||
|
typedef long long int ogg_int64_t;
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# include <ogg/config_types.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _OS_TYPES_H */
|
243
extlibs/headers/vorbis/codec.h
vendored
Normal file
243
extlibs/headers/vorbis/codec.h
vendored
Normal file
@ -0,0 +1,243 @@
|
|||||||
|
/********************************************************************
|
||||||
|
* *
|
||||||
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||||||
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||||||
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||||||
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||||||
|
* *
|
||||||
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
|
||||||
|
* by the Xiph.Org Foundation http://www.xiph.org/ *
|
||||||
|
|
||||||
|
********************************************************************
|
||||||
|
|
||||||
|
function: libvorbis codec headers
|
||||||
|
last mod: $Id: codec.h 17021 2010-03-24 09:29:41Z xiphmont $
|
||||||
|
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
#ifndef _vorbis_codec_h_
|
||||||
|
#define _vorbis_codec_h_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#include <ogg/ogg.h>
|
||||||
|
|
||||||
|
typedef struct vorbis_info{
|
||||||
|
int version;
|
||||||
|
int channels;
|
||||||
|
long rate;
|
||||||
|
|
||||||
|
/* The below bitrate declarations are *hints*.
|
||||||
|
Combinations of the three values carry the following implications:
|
||||||
|
|
||||||
|
all three set to the same value:
|
||||||
|
implies a fixed rate bitstream
|
||||||
|
only nominal set:
|
||||||
|
implies a VBR stream that averages the nominal bitrate. No hard
|
||||||
|
upper/lower limit
|
||||||
|
upper and or lower set:
|
||||||
|
implies a VBR bitstream that obeys the bitrate limits. nominal
|
||||||
|
may also be set to give a nominal rate.
|
||||||
|
none set:
|
||||||
|
the coder does not care to speculate.
|
||||||
|
*/
|
||||||
|
|
||||||
|
long bitrate_upper;
|
||||||
|
long bitrate_nominal;
|
||||||
|
long bitrate_lower;
|
||||||
|
long bitrate_window;
|
||||||
|
|
||||||
|
void *codec_setup;
|
||||||
|
} vorbis_info;
|
||||||
|
|
||||||
|
/* vorbis_dsp_state buffers the current vorbis audio
|
||||||
|
analysis/synthesis state. The DSP state belongs to a specific
|
||||||
|
logical bitstream ****************************************************/
|
||||||
|
typedef struct vorbis_dsp_state{
|
||||||
|
int analysisp;
|
||||||
|
vorbis_info *vi;
|
||||||
|
|
||||||
|
float **pcm;
|
||||||
|
float **pcmret;
|
||||||
|
int pcm_storage;
|
||||||
|
int pcm_current;
|
||||||
|
int pcm_returned;
|
||||||
|
|
||||||
|
int preextrapolate;
|
||||||
|
int eofflag;
|
||||||
|
|
||||||
|
long lW;
|
||||||
|
long W;
|
||||||
|
long nW;
|
||||||
|
long centerW;
|
||||||
|
|
||||||
|
ogg_int64_t granulepos;
|
||||||
|
ogg_int64_t sequence;
|
||||||
|
|
||||||
|
ogg_int64_t glue_bits;
|
||||||
|
ogg_int64_t time_bits;
|
||||||
|
ogg_int64_t floor_bits;
|
||||||
|
ogg_int64_t res_bits;
|
||||||
|
|
||||||
|
void *backend_state;
|
||||||
|
} vorbis_dsp_state;
|
||||||
|
|
||||||
|
typedef struct vorbis_block{
|
||||||
|
/* necessary stream state for linking to the framing abstraction */
|
||||||
|
float **pcm; /* this is a pointer into local storage */
|
||||||
|
oggpack_buffer opb;
|
||||||
|
|
||||||
|
long lW;
|
||||||
|
long W;
|
||||||
|
long nW;
|
||||||
|
int pcmend;
|
||||||
|
int mode;
|
||||||
|
|
||||||
|
int eofflag;
|
||||||
|
ogg_int64_t granulepos;
|
||||||
|
ogg_int64_t sequence;
|
||||||
|
vorbis_dsp_state *vd; /* For read-only access of configuration */
|
||||||
|
|
||||||
|
/* local storage to avoid remallocing; it's up to the mapping to
|
||||||
|
structure it */
|
||||||
|
void *localstore;
|
||||||
|
long localtop;
|
||||||
|
long localalloc;
|
||||||
|
long totaluse;
|
||||||
|
struct alloc_chain *reap;
|
||||||
|
|
||||||
|
/* bitmetrics for the frame */
|
||||||
|
long glue_bits;
|
||||||
|
long time_bits;
|
||||||
|
long floor_bits;
|
||||||
|
long res_bits;
|
||||||
|
|
||||||
|
void *internal;
|
||||||
|
|
||||||
|
} vorbis_block;
|
||||||
|
|
||||||
|
/* vorbis_block is a single block of data to be processed as part of
|
||||||
|
the analysis/synthesis stream; it belongs to a specific logical
|
||||||
|
bitstream, but is independent from other vorbis_blocks belonging to
|
||||||
|
that logical bitstream. *************************************************/
|
||||||
|
|
||||||
|
struct alloc_chain{
|
||||||
|
void *ptr;
|
||||||
|
struct alloc_chain *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* vorbis_info contains all the setup information specific to the
|
||||||
|
specific compression/decompression mode in progress (eg,
|
||||||
|
psychoacoustic settings, channel setup, options, codebook
|
||||||
|
etc). vorbis_info and substructures are in backends.h.
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* the comments are not part of vorbis_info so that vorbis_info can be
|
||||||
|
static storage */
|
||||||
|
typedef struct vorbis_comment{
|
||||||
|
/* unlimited user comment fields. libvorbis writes 'libvorbis'
|
||||||
|
whatever vendor is set to in encode */
|
||||||
|
char **user_comments;
|
||||||
|
int *comment_lengths;
|
||||||
|
int comments;
|
||||||
|
char *vendor;
|
||||||
|
|
||||||
|
} vorbis_comment;
|
||||||
|
|
||||||
|
|
||||||
|
/* libvorbis encodes in two abstraction layers; first we perform DSP
|
||||||
|
and produce a packet (see docs/analysis.txt). The packet is then
|
||||||
|
coded into a framed OggSquish bitstream by the second layer (see
|
||||||
|
docs/framing.txt). Decode is the reverse process; we sync/frame
|
||||||
|
the bitstream and extract individual packets, then decode the
|
||||||
|
packet back into PCM audio.
|
||||||
|
|
||||||
|
The extra framing/packetizing is used in streaming formats, such as
|
||||||
|
files. Over the net (such as with UDP), the framing and
|
||||||
|
packetization aren't necessary as they're provided by the transport
|
||||||
|
and the streaming layer is not used */
|
||||||
|
|
||||||
|
/* Vorbis PRIMITIVES: general ***************************************/
|
||||||
|
|
||||||
|
extern void vorbis_info_init(vorbis_info *vi);
|
||||||
|
extern void vorbis_info_clear(vorbis_info *vi);
|
||||||
|
extern int vorbis_info_blocksize(vorbis_info *vi,int zo);
|
||||||
|
extern void vorbis_comment_init(vorbis_comment *vc);
|
||||||
|
extern void vorbis_comment_add(vorbis_comment *vc, const char *comment);
|
||||||
|
extern void vorbis_comment_add_tag(vorbis_comment *vc,
|
||||||
|
const char *tag, const char *contents);
|
||||||
|
extern char *vorbis_comment_query(vorbis_comment *vc, const char *tag, int count);
|
||||||
|
extern int vorbis_comment_query_count(vorbis_comment *vc, const char *tag);
|
||||||
|
extern void vorbis_comment_clear(vorbis_comment *vc);
|
||||||
|
|
||||||
|
extern int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb);
|
||||||
|
extern int vorbis_block_clear(vorbis_block *vb);
|
||||||
|
extern void vorbis_dsp_clear(vorbis_dsp_state *v);
|
||||||
|
extern double vorbis_granule_time(vorbis_dsp_state *v,
|
||||||
|
ogg_int64_t granulepos);
|
||||||
|
|
||||||
|
extern const char *vorbis_version_string(void);
|
||||||
|
|
||||||
|
/* Vorbis PRIMITIVES: analysis/DSP layer ****************************/
|
||||||
|
|
||||||
|
extern int vorbis_analysis_init(vorbis_dsp_state *v,vorbis_info *vi);
|
||||||
|
extern int vorbis_commentheader_out(vorbis_comment *vc, ogg_packet *op);
|
||||||
|
extern int vorbis_analysis_headerout(vorbis_dsp_state *v,
|
||||||
|
vorbis_comment *vc,
|
||||||
|
ogg_packet *op,
|
||||||
|
ogg_packet *op_comm,
|
||||||
|
ogg_packet *op_code);
|
||||||
|
extern float **vorbis_analysis_buffer(vorbis_dsp_state *v,int vals);
|
||||||
|
extern int vorbis_analysis_wrote(vorbis_dsp_state *v,int vals);
|
||||||
|
extern int vorbis_analysis_blockout(vorbis_dsp_state *v,vorbis_block *vb);
|
||||||
|
extern int vorbis_analysis(vorbis_block *vb,ogg_packet *op);
|
||||||
|
|
||||||
|
extern int vorbis_bitrate_addblock(vorbis_block *vb);
|
||||||
|
extern int vorbis_bitrate_flushpacket(vorbis_dsp_state *vd,
|
||||||
|
ogg_packet *op);
|
||||||
|
|
||||||
|
/* Vorbis PRIMITIVES: synthesis layer *******************************/
|
||||||
|
extern int vorbis_synthesis_idheader(ogg_packet *op);
|
||||||
|
extern int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,
|
||||||
|
ogg_packet *op);
|
||||||
|
|
||||||
|
extern int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi);
|
||||||
|
extern int vorbis_synthesis_restart(vorbis_dsp_state *v);
|
||||||
|
extern int vorbis_synthesis(vorbis_block *vb,ogg_packet *op);
|
||||||
|
extern int vorbis_synthesis_trackonly(vorbis_block *vb,ogg_packet *op);
|
||||||
|
extern int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb);
|
||||||
|
extern int vorbis_synthesis_pcmout(vorbis_dsp_state *v,float ***pcm);
|
||||||
|
extern int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm);
|
||||||
|
extern int vorbis_synthesis_read(vorbis_dsp_state *v,int samples);
|
||||||
|
extern long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op);
|
||||||
|
|
||||||
|
extern int vorbis_synthesis_halfrate(vorbis_info *v,int flag);
|
||||||
|
extern int vorbis_synthesis_halfrate_p(vorbis_info *v);
|
||||||
|
|
||||||
|
/* Vorbis ERRORS and return codes ***********************************/
|
||||||
|
|
||||||
|
#define OV_FALSE -1
|
||||||
|
#define OV_EOF -2
|
||||||
|
#define OV_HOLE -3
|
||||||
|
|
||||||
|
#define OV_EREAD -128
|
||||||
|
#define OV_EFAULT -129
|
||||||
|
#define OV_EIMPL -130
|
||||||
|
#define OV_EINVAL -131
|
||||||
|
#define OV_ENOTVORBIS -132
|
||||||
|
#define OV_EBADHEADER -133
|
||||||
|
#define OV_EVERSION -134
|
||||||
|
#define OV_ENOTAUDIO -135
|
||||||
|
#define OV_EBADPACKET -136
|
||||||
|
#define OV_EBADLINK -137
|
||||||
|
#define OV_ENOSEEK -138
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
436
extlibs/headers/vorbis/vorbisenc.h
vendored
Normal file
436
extlibs/headers/vorbis/vorbisenc.h
vendored
Normal file
@ -0,0 +1,436 @@
|
|||||||
|
/********************************************************************
|
||||||
|
* *
|
||||||
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||||||
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||||||
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||||||
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||||||
|
* *
|
||||||
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001 *
|
||||||
|
* by the Xiph.Org Foundation http://www.xiph.org/ *
|
||||||
|
* *
|
||||||
|
********************************************************************
|
||||||
|
|
||||||
|
function: vorbis encode-engine setup
|
||||||
|
last mod: $Id: vorbisenc.h 17021 2010-03-24 09:29:41Z xiphmont $
|
||||||
|
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
* Libvorbisenc is a convenient API for setting up an encoding
|
||||||
|
* environment using libvorbis. Libvorbisenc encapsulates the
|
||||||
|
* actions needed to set up the encoder properly.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _OV_ENC_H_
|
||||||
|
#define _OV_ENC_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#include "codec.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the primary function within libvorbisenc for setting up managed
|
||||||
|
* bitrate modes.
|
||||||
|
*
|
||||||
|
* Before this function is called, the \ref vorbis_info
|
||||||
|
* struct should be initialized by using vorbis_info_init() from the libvorbis
|
||||||
|
* API. After encoding, vorbis_info_clear() should be called.
|
||||||
|
*
|
||||||
|
* The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
|
||||||
|
* constraints for the encoded file. This function uses these settings to
|
||||||
|
* select the appropriate encoding mode and set it up.
|
||||||
|
*
|
||||||
|
* \param vi Pointer to an initialized \ref vorbis_info struct.
|
||||||
|
* \param channels The number of channels to be encoded.
|
||||||
|
* \param rate The sampling rate of the source audio.
|
||||||
|
* \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset.
|
||||||
|
* \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset.
|
||||||
|
* \param min_bitrate Desired minimum bitrate. -1 indicates unset.
|
||||||
|
*
|
||||||
|
* \return Zero for success, and negative values for failure.
|
||||||
|
*
|
||||||
|
* \retval 0 Success.
|
||||||
|
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
||||||
|
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
||||||
|
* \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request.
|
||||||
|
*/
|
||||||
|
extern int vorbis_encode_init(vorbis_info *vi,
|
||||||
|
long channels,
|
||||||
|
long rate,
|
||||||
|
|
||||||
|
long max_bitrate,
|
||||||
|
long nominal_bitrate,
|
||||||
|
long min_bitrate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function performs step-one of a three-step bitrate-managed encode
|
||||||
|
* setup. It functions similarly to the one-step setup performed by \ref
|
||||||
|
* vorbis_encode_init but allows an application to make further encode setup
|
||||||
|
* tweaks using \ref vorbis_encode_ctl before finally calling \ref
|
||||||
|
* vorbis_encode_setup_init to complete the setup process.
|
||||||
|
*
|
||||||
|
* Before this function is called, the \ref vorbis_info struct should be
|
||||||
|
* initialized by using vorbis_info_init() from the libvorbis API. After
|
||||||
|
* encoding, vorbis_info_clear() should be called.
|
||||||
|
*
|
||||||
|
* The max_bitrate, nominal_bitrate, and min_bitrate settings are used to set
|
||||||
|
* constraints for the encoded file. This function uses these settings to
|
||||||
|
* select the appropriate encoding mode and set it up.
|
||||||
|
*
|
||||||
|
* \param vi Pointer to an initialized vorbis_info struct.
|
||||||
|
* \param channels The number of channels to be encoded.
|
||||||
|
* \param rate The sampling rate of the source audio.
|
||||||
|
* \param max_bitrate Desired maximum bitrate (limit). -1 indicates unset.
|
||||||
|
* \param nominal_bitrate Desired average, or central, bitrate. -1 indicates unset.
|
||||||
|
* \param min_bitrate Desired minimum bitrate. -1 indicates unset.
|
||||||
|
*
|
||||||
|
* \return Zero for success, and negative for failure.
|
||||||
|
*
|
||||||
|
* \retval 0 Success
|
||||||
|
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
||||||
|
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
||||||
|
* \retval OV_EIMPL Unimplemented mode; unable to comply with bitrate request.
|
||||||
|
*/
|
||||||
|
extern int vorbis_encode_setup_managed(vorbis_info *vi,
|
||||||
|
long channels,
|
||||||
|
long rate,
|
||||||
|
|
||||||
|
long max_bitrate,
|
||||||
|
long nominal_bitrate,
|
||||||
|
long min_bitrate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function performs step-one of a three-step variable bitrate
|
||||||
|
* (quality-based) encode setup. It functions similarly to the one-step setup
|
||||||
|
* performed by \ref vorbis_encode_init_vbr() but allows an application to
|
||||||
|
* make further encode setup tweaks using \ref vorbis_encode_ctl() before
|
||||||
|
* finally calling \ref vorbis_encode_setup_init to complete the setup
|
||||||
|
* process.
|
||||||
|
*
|
||||||
|
* Before this function is called, the \ref vorbis_info struct should be
|
||||||
|
* initialized by using \ref vorbis_info_init() from the libvorbis API. After
|
||||||
|
* encoding, vorbis_info_clear() should be called.
|
||||||
|
*
|
||||||
|
* \param vi Pointer to an initialized vorbis_info struct.
|
||||||
|
* \param channels The number of channels to be encoded.
|
||||||
|
* \param rate The sampling rate of the source audio.
|
||||||
|
* \param quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
|
||||||
|
*
|
||||||
|
* \return Zero for success, and negative values for failure.
|
||||||
|
*
|
||||||
|
* \retval 0 Success
|
||||||
|
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
||||||
|
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
||||||
|
* \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request.
|
||||||
|
*/
|
||||||
|
extern int vorbis_encode_setup_vbr(vorbis_info *vi,
|
||||||
|
long channels,
|
||||||
|
long rate,
|
||||||
|
|
||||||
|
float quality
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the primary function within libvorbisenc for setting up variable
|
||||||
|
* bitrate ("quality" based) modes.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Before this function is called, the vorbis_info struct should be
|
||||||
|
* initialized by using vorbis_info_init() from the libvorbis API. After
|
||||||
|
* encoding, vorbis_info_clear() should be called.
|
||||||
|
*
|
||||||
|
* \param vi Pointer to an initialized vorbis_info struct.
|
||||||
|
* \param channels The number of channels to be encoded.
|
||||||
|
* \param rate The sampling rate of the source audio.
|
||||||
|
* \param base_quality Desired quality level, currently from -0.1 to 1.0 (lo to hi).
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* \return Zero for success, or a negative number for failure.
|
||||||
|
*
|
||||||
|
* \retval 0 Success
|
||||||
|
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
||||||
|
* \retval OV_EINVAL Invalid setup request, eg, out of range argument.
|
||||||
|
* \retval OV_EIMPL Unimplemented mode; unable to comply with quality level request.
|
||||||
|
*/
|
||||||
|
extern int vorbis_encode_init_vbr(vorbis_info *vi,
|
||||||
|
long channels,
|
||||||
|
long rate,
|
||||||
|
|
||||||
|
float base_quality
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function performs the last stage of three-step encoding setup, as
|
||||||
|
* described in the API overview under managed bitrate modes.
|
||||||
|
*
|
||||||
|
* Before this function is called, the \ref vorbis_info struct should be
|
||||||
|
* initialized by using vorbis_info_init() from the libvorbis API, one of
|
||||||
|
* \ref vorbis_encode_setup_managed() or \ref vorbis_encode_setup_vbr() called to
|
||||||
|
* initialize the high-level encoding setup, and \ref vorbis_encode_ctl()
|
||||||
|
* called if necessary to make encoding setup changes.
|
||||||
|
* vorbis_encode_setup_init() finalizes the highlevel encoding structure into
|
||||||
|
* a complete encoding setup after which the application may make no further
|
||||||
|
* setup changes.
|
||||||
|
*
|
||||||
|
* After encoding, vorbis_info_clear() should be called.
|
||||||
|
*
|
||||||
|
* \param vi Pointer to an initialized \ref vorbis_info struct.
|
||||||
|
*
|
||||||
|
* \return Zero for success, and negative values for failure.
|
||||||
|
*
|
||||||
|
* \retval 0 Success.
|
||||||
|
* \retval OV_EFAULT Internal logic fault; indicates a bug or heap/stack corruption.
|
||||||
|
*
|
||||||
|
* \retval OV_EINVAL Attempt to use vorbis_encode_setup_init() without first
|
||||||
|
* calling one of vorbis_encode_setup_managed() or vorbis_encode_setup_vbr() to
|
||||||
|
* initialize the high-level encoding setup
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
extern int vorbis_encode_setup_init(vorbis_info *vi);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function implements a generic interface to miscellaneous encoder
|
||||||
|
* settings similar to the classic UNIX 'ioctl()' system call. Applications
|
||||||
|
* may use vorbis_encode_ctl() to query or set bitrate management or quality
|
||||||
|
* mode details by using one of several \e request arguments detailed below.
|
||||||
|
* vorbis_encode_ctl() must be called after one of
|
||||||
|
* vorbis_encode_setup_managed() or vorbis_encode_setup_vbr(). When used
|
||||||
|
* to modify settings, \ref vorbis_encode_ctl() must be called before \ref
|
||||||
|
* vorbis_encode_setup_init().
|
||||||
|
*
|
||||||
|
* \param vi Pointer to an initialized vorbis_info struct.
|
||||||
|
*
|
||||||
|
* \param number Specifies the desired action; See \ref encctlcodes "the list
|
||||||
|
* of available requests".
|
||||||
|
*
|
||||||
|
* \param arg void * pointing to a data structure matching the request
|
||||||
|
* argument.
|
||||||
|
*
|
||||||
|
* \retval 0 Success. Any further return information (such as the result of a
|
||||||
|
* query) is placed into the storage pointed to by *arg.
|
||||||
|
*
|
||||||
|
* \retval OV_EINVAL Invalid argument, or an attempt to modify a setting after
|
||||||
|
* calling vorbis_encode_setup_init().
|
||||||
|
*
|
||||||
|
* \retval OV_EIMPL Unimplemented or unknown request
|
||||||
|
*/
|
||||||
|
extern int vorbis_encode_ctl(vorbis_info *vi,int number,void *arg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \deprecated This is a deprecated interface. Please use vorbis_encode_ctl()
|
||||||
|
* with the \ref ovectl_ratemanage2_arg struct and \ref
|
||||||
|
* OV_ECTL_RATEMANAGE2_GET and \ref OV_ECTL_RATEMANAGE2_SET calls in new code.
|
||||||
|
*
|
||||||
|
* The \ref ovectl_ratemanage_arg structure is used with vorbis_encode_ctl()
|
||||||
|
* and the \ref OV_ECTL_RATEMANAGE_GET, \ref OV_ECTL_RATEMANAGE_SET, \ref
|
||||||
|
* OV_ECTL_RATEMANAGE_AVG, \ref OV_ECTL_RATEMANAGE_HARD calls in order to
|
||||||
|
* query and modify specifics of the encoder's bitrate management
|
||||||
|
* configuration.
|
||||||
|
*/
|
||||||
|
struct ovectl_ratemanage_arg {
|
||||||
|
int management_active; /**< nonzero if bitrate management is active*/
|
||||||
|
/** hard lower limit (in kilobits per second) below which the stream bitrate
|
||||||
|
will never be allowed for any given bitrate_hard_window seconds of time.*/
|
||||||
|
long bitrate_hard_min;
|
||||||
|
/** hard upper limit (in kilobits per second) above which the stream bitrate
|
||||||
|
will never be allowed for any given bitrate_hard_window seconds of time.*/
|
||||||
|
long bitrate_hard_max;
|
||||||
|
/** the window period (in seconds) used to regulate the hard bitrate minimum
|
||||||
|
and maximum*/
|
||||||
|
double bitrate_hard_window;
|
||||||
|
/** soft lower limit (in kilobits per second) below which the average bitrate
|
||||||
|
tracker will start nudging the bitrate higher.*/
|
||||||
|
long bitrate_av_lo;
|
||||||
|
/** soft upper limit (in kilobits per second) above which the average bitrate
|
||||||
|
tracker will start nudging the bitrate lower.*/
|
||||||
|
long bitrate_av_hi;
|
||||||
|
/** the window period (in seconds) used to regulate the average bitrate
|
||||||
|
minimum and maximum.*/
|
||||||
|
double bitrate_av_window;
|
||||||
|
/** Regulates the relative centering of the average and hard windows; in
|
||||||
|
libvorbis 1.0 and 1.0.1, the hard window regulation overlapped but
|
||||||
|
followed the average window regulation. In libvorbis 1.1 a bit-reservoir
|
||||||
|
interface replaces the old windowing interface; the older windowing
|
||||||
|
interface is simulated and this field has no effect.*/
|
||||||
|
double bitrate_av_window_center;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \name struct ovectl_ratemanage2_arg
|
||||||
|
*
|
||||||
|
* The ovectl_ratemanage2_arg structure is used with vorbis_encode_ctl() and
|
||||||
|
* the OV_ECTL_RATEMANAGE2_GET and OV_ECTL_RATEMANAGE2_SET calls in order to
|
||||||
|
* query and modify specifics of the encoder's bitrate management
|
||||||
|
* configuration.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
struct ovectl_ratemanage2_arg {
|
||||||
|
int management_active; /**< nonzero if bitrate management is active */
|
||||||
|
/** Lower allowed bitrate limit in kilobits per second */
|
||||||
|
long bitrate_limit_min_kbps;
|
||||||
|
/** Upper allowed bitrate limit in kilobits per second */
|
||||||
|
long bitrate_limit_max_kbps;
|
||||||
|
long bitrate_limit_reservoir_bits; /**<Size of the bitrate reservoir in bits */
|
||||||
|
/** Regulates the bitrate reservoir's preferred fill level in a range from 0.0
|
||||||
|
* to 1.0; 0.0 tries to bank bits to buffer against future bitrate spikes, 1.0
|
||||||
|
* buffers against future sudden drops in instantaneous bitrate. Default is
|
||||||
|
* 0.1
|
||||||
|
*/
|
||||||
|
double bitrate_limit_reservoir_bias;
|
||||||
|
/** Average bitrate setting in kilobits per second */
|
||||||
|
long bitrate_average_kbps;
|
||||||
|
/** Slew rate limit setting for average bitrate adjustment; sets the minimum
|
||||||
|
* time in seconds the bitrate tracker may swing from one extreme to the
|
||||||
|
* other when boosting or damping average bitrate.
|
||||||
|
*/
|
||||||
|
double bitrate_average_damping;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \name vorbis_encode_ctl() codes
|
||||||
|
*
|
||||||
|
* \anchor encctlcodes
|
||||||
|
*
|
||||||
|
* These values are passed as the \c number parameter of vorbis_encode_ctl().
|
||||||
|
* The type of the referent of that function's \c arg pointer depends on these
|
||||||
|
* codes.
|
||||||
|
*/
|
||||||
|
/*@{*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query the current encoder bitrate management setting.
|
||||||
|
*
|
||||||
|
*Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
|
||||||
|
*
|
||||||
|
* Used to query the current encoder bitrate management setting. Also used to
|
||||||
|
* initialize fields of an ovectl_ratemanage2_arg structure for use with
|
||||||
|
* \ref OV_ECTL_RATEMANAGE2_SET.
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_RATEMANAGE2_GET 0x14
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the current encoder bitrate management settings.
|
||||||
|
*
|
||||||
|
* Argument: <tt>struct ovectl_ratemanage2_arg *</tt>
|
||||||
|
*
|
||||||
|
* Used to set the current encoder bitrate management settings to the values
|
||||||
|
* listed in the ovectl_ratemanage2_arg. Passing a NULL pointer will disable
|
||||||
|
* bitrate management.
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_RATEMANAGE2_SET 0x15
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current encoder hard-lowpass setting (kHz) in the double
|
||||||
|
* pointed to by arg.
|
||||||
|
*
|
||||||
|
* Argument: <tt>double *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_LOWPASS_GET 0x20
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the encoder hard-lowpass to the value (kHz) pointed to by arg. Valid
|
||||||
|
* lowpass settings range from 2 to 99.
|
||||||
|
*
|
||||||
|
* Argument: <tt>double *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_LOWPASS_SET 0x21
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current encoder impulse block setting in the double pointed
|
||||||
|
* to by arg.
|
||||||
|
*
|
||||||
|
* Argument: <tt>double *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_IBLOCK_GET 0x30
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the impulse block bias to the the value pointed to by arg.
|
||||||
|
*
|
||||||
|
* Argument: <tt>double *</tt>
|
||||||
|
*
|
||||||
|
* Valid range is -15.0 to 0.0 [default]. A negative impulse block bias will
|
||||||
|
* direct to encoder to use more bits when incoding short blocks that contain
|
||||||
|
* strong impulses, thus improving the accuracy of impulse encoding.
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_IBLOCK_SET 0x31
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the current encoder coupling setting in the int pointed
|
||||||
|
* to by arg.
|
||||||
|
*
|
||||||
|
* Argument: <tt>int *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_COUPLING_GET 0x40
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables/disables channel coupling in multichannel encoding according to arg.
|
||||||
|
*
|
||||||
|
* Argument: <tt>int *</tt>
|
||||||
|
*
|
||||||
|
* Zero disables channel coupling for multichannel inputs, nonzer enables
|
||||||
|
* channel coupling. Setting has no effect on monophonic encoding or
|
||||||
|
* multichannel counts that do not offer coupling. At present, coupling is
|
||||||
|
* available for stereo and 5.1 encoding.
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_COUPLING_SET 0x41
|
||||||
|
|
||||||
|
/* deprecated rate management supported only for compatibility */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Old interface to querying bitrate management settings.
|
||||||
|
*
|
||||||
|
* Deprecated after move to bit-reservoir style management in 1.1 rendered
|
||||||
|
* this interface partially obsolete.
|
||||||
|
|
||||||
|
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_GET instead.
|
||||||
|
*
|
||||||
|
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_RATEMANAGE_GET 0x10
|
||||||
|
/**
|
||||||
|
* Old interface to modifying bitrate management settings.
|
||||||
|
*
|
||||||
|
* deprecated after move to bit-reservoir style management in 1.1 rendered
|
||||||
|
* this interface partially obsolete.
|
||||||
|
*
|
||||||
|
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
|
||||||
|
*
|
||||||
|
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_RATEMANAGE_SET 0x11
|
||||||
|
/**
|
||||||
|
* Old interface to setting average-bitrate encoding mode.
|
||||||
|
*
|
||||||
|
* Deprecated after move to bit-reservoir style management in 1.1 rendered
|
||||||
|
* this interface partially obsolete.
|
||||||
|
*
|
||||||
|
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
|
||||||
|
*
|
||||||
|
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_RATEMANAGE_AVG 0x12
|
||||||
|
/**
|
||||||
|
* Old interface to setting bounded-bitrate encoding modes.
|
||||||
|
*
|
||||||
|
* deprecated after move to bit-reservoir style management in 1.1 rendered
|
||||||
|
* this interface partially obsolete.
|
||||||
|
*
|
||||||
|
* \deprecated Please use \ref OV_ECTL_RATEMANAGE2_SET instead.
|
||||||
|
*
|
||||||
|
* Argument: <tt>struct ovectl_ratemanage_arg *</tt>
|
||||||
|
*/
|
||||||
|
#define OV_ECTL_RATEMANAGE_HARD 0x13
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif
|
206
extlibs/headers/vorbis/vorbisfile.h
vendored
Normal file
206
extlibs/headers/vorbis/vorbisfile.h
vendored
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
/********************************************************************
|
||||||
|
* *
|
||||||
|
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
|
||||||
|
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
|
||||||
|
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
|
||||||
|
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
|
||||||
|
* *
|
||||||
|
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
|
||||||
|
* by the Xiph.Org Foundation http://www.xiph.org/ *
|
||||||
|
* *
|
||||||
|
********************************************************************
|
||||||
|
|
||||||
|
function: stdio-based convenience library for opening/seeking/decoding
|
||||||
|
last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $
|
||||||
|
|
||||||
|
********************************************************************/
|
||||||
|
|
||||||
|
#ifndef _OV_FILE_H_
|
||||||
|
#define _OV_FILE_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "codec.h"
|
||||||
|
|
||||||
|
/* The function prototypes for the callbacks are basically the same as for
|
||||||
|
* the stdio functions fread, fseek, fclose, ftell.
|
||||||
|
* The one difference is that the FILE * arguments have been replaced with
|
||||||
|
* a void * - this is to be used as a pointer to whatever internal data these
|
||||||
|
* functions might need. In the stdio case, it's just a FILE * cast to a void *
|
||||||
|
*
|
||||||
|
* If you use other functions, check the docs for these functions and return
|
||||||
|
* the right values. For seek_func(), you *MUST* return -1 if the stream is
|
||||||
|
* unseekable
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
|
||||||
|
int (*seek_func) (void *datasource, ogg_int64_t offset, int whence);
|
||||||
|
int (*close_func) (void *datasource);
|
||||||
|
long (*tell_func) (void *datasource);
|
||||||
|
} ov_callbacks;
|
||||||
|
|
||||||
|
#ifndef OV_EXCLUDE_STATIC_CALLBACKS
|
||||||
|
|
||||||
|
/* a few sets of convenient callbacks, especially for use under
|
||||||
|
* Windows where ov_open_callbacks() should always be used instead of
|
||||||
|
* ov_open() to avoid problems with incompatible crt.o version linking
|
||||||
|
* issues. */
|
||||||
|
|
||||||
|
static int _ov_header_fseek_wrap(FILE *f,ogg_int64_t off,int whence){
|
||||||
|
if(f==NULL)return(-1);
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
return fseeko64(f,off,whence);
|
||||||
|
#elif defined (_WIN32)
|
||||||
|
return _fseeki64(f,off,whence);
|
||||||
|
#else
|
||||||
|
return fseek(f,off,whence);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* These structs below (OV_CALLBACKS_DEFAULT etc) are defined here as
|
||||||
|
* static data. That means that every file which includes this header
|
||||||
|
* will get its own copy of these structs whether it uses them or
|
||||||
|
* not unless it #defines OV_EXCLUDE_STATIC_CALLBACKS.
|
||||||
|
* These static symbols are essential on platforms such as Windows on
|
||||||
|
* which several different versions of stdio support may be linked to
|
||||||
|
* by different DLLs, and we need to be certain we know which one
|
||||||
|
* we're using (the same one as the main application).
|
||||||
|
*/
|
||||||
|
|
||||||
|
static ov_callbacks OV_CALLBACKS_DEFAULT = {
|
||||||
|
(size_t (*)(void *, size_t, size_t, void *)) fread,
|
||||||
|
(int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap,
|
||||||
|
(int (*)(void *)) fclose,
|
||||||
|
(long (*)(void *)) ftell
|
||||||
|
};
|
||||||
|
|
||||||
|
static ov_callbacks OV_CALLBACKS_NOCLOSE = {
|
||||||
|
(size_t (*)(void *, size_t, size_t, void *)) fread,
|
||||||
|
(int (*)(void *, ogg_int64_t, int)) _ov_header_fseek_wrap,
|
||||||
|
(int (*)(void *)) NULL,
|
||||||
|
(long (*)(void *)) ftell
|
||||||
|
};
|
||||||
|
|
||||||
|
static ov_callbacks OV_CALLBACKS_STREAMONLY = {
|
||||||
|
(size_t (*)(void *, size_t, size_t, void *)) fread,
|
||||||
|
(int (*)(void *, ogg_int64_t, int)) NULL,
|
||||||
|
(int (*)(void *)) fclose,
|
||||||
|
(long (*)(void *)) NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
static ov_callbacks OV_CALLBACKS_STREAMONLY_NOCLOSE = {
|
||||||
|
(size_t (*)(void *, size_t, size_t, void *)) fread,
|
||||||
|
(int (*)(void *, ogg_int64_t, int)) NULL,
|
||||||
|
(int (*)(void *)) NULL,
|
||||||
|
(long (*)(void *)) NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define NOTOPEN 0
|
||||||
|
#define PARTOPEN 1
|
||||||
|
#define OPENED 2
|
||||||
|
#define STREAMSET 3
|
||||||
|
#define INITSET 4
|
||||||
|
|
||||||
|
typedef struct OggVorbis_File {
|
||||||
|
void *datasource; /* Pointer to a FILE *, etc. */
|
||||||
|
int seekable;
|
||||||
|
ogg_int64_t offset;
|
||||||
|
ogg_int64_t end;
|
||||||
|
ogg_sync_state oy;
|
||||||
|
|
||||||
|
/* If the FILE handle isn't seekable (eg, a pipe), only the current
|
||||||
|
stream appears */
|
||||||
|
int links;
|
||||||
|
ogg_int64_t *offsets;
|
||||||
|
ogg_int64_t *dataoffsets;
|
||||||
|
long *serialnos;
|
||||||
|
ogg_int64_t *pcmlengths; /* overloaded to maintain binary
|
||||||
|
compatibility; x2 size, stores both
|
||||||
|
beginning and end values */
|
||||||
|
vorbis_info *vi;
|
||||||
|
vorbis_comment *vc;
|
||||||
|
|
||||||
|
/* Decoding working state local storage */
|
||||||
|
ogg_int64_t pcm_offset;
|
||||||
|
int ready_state;
|
||||||
|
long current_serialno;
|
||||||
|
int current_link;
|
||||||
|
|
||||||
|
double bittrack;
|
||||||
|
double samptrack;
|
||||||
|
|
||||||
|
ogg_stream_state os; /* take physical pages, weld into a logical
|
||||||
|
stream of packets */
|
||||||
|
vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
|
||||||
|
vorbis_block vb; /* local working space for packet->PCM decode */
|
||||||
|
|
||||||
|
ov_callbacks callbacks;
|
||||||
|
|
||||||
|
} OggVorbis_File;
|
||||||
|
|
||||||
|
|
||||||
|
extern int ov_clear(OggVorbis_File *vf);
|
||||||
|
extern int ov_fopen(const char *path,OggVorbis_File *vf);
|
||||||
|
extern int ov_open(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
|
||||||
|
extern int ov_open_callbacks(void *datasource, OggVorbis_File *vf,
|
||||||
|
const char *initial, long ibytes, ov_callbacks callbacks);
|
||||||
|
|
||||||
|
extern int ov_test(FILE *f,OggVorbis_File *vf,const char *initial,long ibytes);
|
||||||
|
extern int ov_test_callbacks(void *datasource, OggVorbis_File *vf,
|
||||||
|
const char *initial, long ibytes, ov_callbacks callbacks);
|
||||||
|
extern int ov_test_open(OggVorbis_File *vf);
|
||||||
|
|
||||||
|
extern long ov_bitrate(OggVorbis_File *vf,int i);
|
||||||
|
extern long ov_bitrate_instant(OggVorbis_File *vf);
|
||||||
|
extern long ov_streams(OggVorbis_File *vf);
|
||||||
|
extern long ov_seekable(OggVorbis_File *vf);
|
||||||
|
extern long ov_serialnumber(OggVorbis_File *vf,int i);
|
||||||
|
|
||||||
|
extern ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
|
||||||
|
extern ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
|
||||||
|
extern double ov_time_total(OggVorbis_File *vf,int i);
|
||||||
|
|
||||||
|
extern int ov_raw_seek(OggVorbis_File *vf,ogg_int64_t pos);
|
||||||
|
extern int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
|
||||||
|
extern int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
|
||||||
|
extern int ov_time_seek(OggVorbis_File *vf,double pos);
|
||||||
|
extern int ov_time_seek_page(OggVorbis_File *vf,double pos);
|
||||||
|
|
||||||
|
extern int ov_raw_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
|
||||||
|
extern int ov_pcm_seek_lap(OggVorbis_File *vf,ogg_int64_t pos);
|
||||||
|
extern int ov_pcm_seek_page_lap(OggVorbis_File *vf,ogg_int64_t pos);
|
||||||
|
extern int ov_time_seek_lap(OggVorbis_File *vf,double pos);
|
||||||
|
extern int ov_time_seek_page_lap(OggVorbis_File *vf,double pos);
|
||||||
|
|
||||||
|
extern ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
|
||||||
|
extern ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
|
||||||
|
extern double ov_time_tell(OggVorbis_File *vf);
|
||||||
|
|
||||||
|
extern vorbis_info *ov_info(OggVorbis_File *vf,int link);
|
||||||
|
extern vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
|
||||||
|
|
||||||
|
extern long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int samples,
|
||||||
|
int *bitstream);
|
||||||
|
extern long ov_read_filter(OggVorbis_File *vf,char *buffer,int length,
|
||||||
|
int bigendianp,int word,int sgned,int *bitstream,
|
||||||
|
void (*filter)(float **pcm,long channels,long samples,void *filter_param),void *filter_param);
|
||||||
|
extern long ov_read(OggVorbis_File *vf,char *buffer,int length,
|
||||||
|
int bigendianp,int word,int sgned,int *bitstream);
|
||||||
|
extern int ov_crosslap(OggVorbis_File *vf1,OggVorbis_File *vf2);
|
||||||
|
|
||||||
|
extern int ov_halfrate(OggVorbis_File *vf,int flag);
|
||||||
|
extern int ov_halfrate_p(OggVorbis_File *vf);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
BIN
extlibs/libs-android/armeabi-v7a/libFLAC++.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi-v7a/libFLAC++.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi-v7a/libFLAC.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi-v7a/libFLAC.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi-v7a/libogg.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi-v7a/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi-v7a/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi-v7a/libvorbis.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi-v7a/libsndfile.so → extlibs/libs-android/armeabi-v7a/libvorbisenc.a
vendored
Executable file → Normal file
BIN
extlibs/libs-android/armeabi-v7a/libsndfile.so → extlibs/libs-android/armeabi-v7a/libvorbisenc.a
vendored
Executable file → Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi-v7a/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi-v7a/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi/libFLAC++.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi/libFLAC++.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi/libFLAC.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi/libFLAC.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi/libogg.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi/libvorbis.a
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
extlibs/libs-android/armeabi/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-android/armeabi/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/mips/libFLAC++.a
vendored
Normal file
BIN
extlibs/libs-android/mips/libFLAC++.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/mips/libFLAC.a
vendored
Normal file
BIN
extlibs/libs-android/mips/libFLAC.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/mips/libogg.a
vendored
Normal file
BIN
extlibs/libs-android/mips/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/mips/libsndfile.so
vendored
BIN
extlibs/libs-android/mips/libsndfile.so
vendored
Binary file not shown.
BIN
extlibs/libs-android/mips/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-android/mips/libvorbis.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/armeabi/libsndfile.so → extlibs/libs-android/mips/libvorbisenc.a
vendored
Executable file → Normal file
BIN
extlibs/libs-android/armeabi/libsndfile.so → extlibs/libs-android/mips/libvorbisenc.a
vendored
Executable file → Normal file
Binary file not shown.
BIN
extlibs/libs-android/mips/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-android/mips/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/x86/libFLAC++.a
vendored
Normal file
BIN
extlibs/libs-android/x86/libFLAC++.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/x86/libFLAC.a
vendored
Normal file
BIN
extlibs/libs-android/x86/libFLAC.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/x86/libogg.a
vendored
Normal file
BIN
extlibs/libs-android/x86/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-android/x86/libsndfile.so
vendored
BIN
extlibs/libs-android/x86/libsndfile.so
vendored
Binary file not shown.
BIN
extlibs/libs-android/x86/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-android/x86/libvorbis.a
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
extlibs/libs-android/x86/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-android/x86/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-ios/libflac.a
vendored
Normal file
BIN
extlibs/libs-ios/libflac.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-ios/libogg.a
vendored
Normal file
BIN
extlibs/libs-ios/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-ios/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-ios/libvorbis.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-ios/libvorbisenc.a
vendored
Normal file
BIN
extlibs/libs-ios/libvorbisenc.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-ios/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-ios/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x64/libFLAC.a
vendored
Normal file
BIN
extlibs/libs-mingw/x64/libFLAC.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x64/libogg.a
vendored
Normal file
BIN
extlibs/libs-mingw/x64/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x64/libsndfile.a
vendored
BIN
extlibs/libs-mingw/x64/libsndfile.a
vendored
Binary file not shown.
BIN
extlibs/libs-mingw/x64/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-mingw/x64/libvorbis.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x64/libvorbisenc.a
vendored
Normal file
BIN
extlibs/libs-mingw/x64/libvorbisenc.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x64/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-mingw/x64/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x86/libFLAC.a
vendored
Normal file
BIN
extlibs/libs-mingw/x86/libFLAC.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x86/libogg.a
vendored
Normal file
BIN
extlibs/libs-mingw/x86/libogg.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x86/libsndfile.a
vendored
BIN
extlibs/libs-mingw/x86/libsndfile.a
vendored
Binary file not shown.
BIN
extlibs/libs-mingw/x86/libvorbis.a
vendored
Normal file
BIN
extlibs/libs-mingw/x86/libvorbis.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x86/libvorbisenc.a
vendored
Normal file
BIN
extlibs/libs-mingw/x86/libvorbisenc.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-mingw/x86/libvorbisfile.a
vendored
Normal file
BIN
extlibs/libs-mingw/x86/libvorbisfile.a
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x64/flac.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x64/flac.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x64/ogg.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x64/ogg.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x64/sndfile.lib
vendored
BIN
extlibs/libs-msvc/x64/sndfile.lib
vendored
Binary file not shown.
BIN
extlibs/libs-msvc/x64/vorbis.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x64/vorbis.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x64/vorbisenc.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x64/vorbisenc.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x64/vorbisfile.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x64/vorbisfile.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x86/flac.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x86/flac.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x86/ogg.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x86/ogg.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x86/sndfile.lib
vendored
BIN
extlibs/libs-msvc/x86/sndfile.lib
vendored
Binary file not shown.
BIN
extlibs/libs-msvc/x86/vorbis.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x86/vorbis.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x86/vorbisenc.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x86/vorbisenc.lib
vendored
Normal file
Binary file not shown.
BIN
extlibs/libs-msvc/x86/vorbisfile.lib
vendored
Normal file
BIN
extlibs/libs-msvc/x86/vorbisfile.lib
vendored
Normal file
Binary file not shown.
1
extlibs/libs-osx/Frameworks/FLAC.framework/FLAC
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/FLAC.framework/FLAC
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
Versions/Current/FLAC
|
1
extlibs/libs-osx/Frameworks/FLAC.framework/Resources
vendored
Normal file
1
extlibs/libs-osx/Frameworks/FLAC.framework/Resources
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
Versions/Current/Resources
|
BIN
extlibs/libs-osx/Frameworks/FLAC.framework/Versions/A/FLAC
vendored
Executable file
BIN
extlibs/libs-osx/Frameworks/FLAC.framework/Versions/A/FLAC
vendored
Executable file
Binary file not shown.
@ -5,9 +5,9 @@
|
|||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>English</string>
|
<string>English</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>sndfile</string>
|
<string>FLAC</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.mega-nerd.sndfile</string>
|
<string>org.sfml-dev.FLAC</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
1
extlibs/libs-osx/Frameworks/FLAC.framework/Versions/Current
vendored
Normal file
1
extlibs/libs-osx/Frameworks/FLAC.framework/Versions/Current
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
A
|
20
extlibs/libs-osx/Frameworks/ogg.framework/Versions/A/Resources/Info.plist
vendored
Normal file
20
extlibs/libs-osx/Frameworks/ogg.framework/Versions/A/Resources/Info.plist
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>ogg</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.sfml-dev.ogg</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
BIN
extlibs/libs-osx/Frameworks/ogg.framework/Versions/A/ogg
vendored
Executable file
BIN
extlibs/libs-osx/Frameworks/ogg.framework/Versions/A/ogg
vendored
Executable file
Binary file not shown.
1
extlibs/libs-osx/Frameworks/ogg.framework/ogg
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/ogg.framework/ogg
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
Versions/Current/ogg
|
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
Versions/Current/sndfile
|
|
1
extlibs/libs-osx/Frameworks/vorbis.framework/Resources
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/vorbis.framework/Resources
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
Versions/Current/Resources
|
20
extlibs/libs-osx/Frameworks/vorbis.framework/Versions/A/Resources/Info.plist
vendored
Normal file
20
extlibs/libs-osx/Frameworks/vorbis.framework/Versions/A/Resources/Info.plist
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>vorbis</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.sfml-dev.vorbis</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
BIN
extlibs/libs-osx/Frameworks/vorbis.framework/Versions/A/vorbis
vendored
Executable file
BIN
extlibs/libs-osx/Frameworks/vorbis.framework/Versions/A/vorbis
vendored
Executable file
Binary file not shown.
1
extlibs/libs-osx/Frameworks/vorbis.framework/Versions/Current
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/vorbis.framework/Versions/Current
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
A
|
1
extlibs/libs-osx/Frameworks/vorbis.framework/vorbis
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/vorbis.framework/vorbis
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
Versions/Current/vorbis
|
1
extlibs/libs-osx/Frameworks/vorbisenc.framework/Resources
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/vorbisenc.framework/Resources
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
Versions/Current/Resources
|
20
extlibs/libs-osx/Frameworks/vorbisenc.framework/Versions/A/Resources/Info.plist
vendored
Normal file
20
extlibs/libs-osx/Frameworks/vorbisenc.framework/Versions/A/Resources/Info.plist
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>vorbisenc</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.sfml-dev.vorbisenc</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>FMWK</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
BIN
extlibs/libs-osx/Frameworks/vorbisenc.framework/Versions/A/vorbisenc
vendored
Executable file
BIN
extlibs/libs-osx/Frameworks/vorbisenc.framework/Versions/A/vorbisenc
vendored
Executable file
Binary file not shown.
1
extlibs/libs-osx/Frameworks/vorbisenc.framework/Versions/Current
vendored
Symbolic link
1
extlibs/libs-osx/Frameworks/vorbisenc.framework/Versions/Current
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
A
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user