Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/audaspace/include/respec/Specification.h')
-rw-r--r--extern/audaspace/include/respec/Specification.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/extern/audaspace/include/respec/Specification.h b/extern/audaspace/include/respec/Specification.h
new file mode 100644
index 00000000000..efcbb4cabce
--- /dev/null
+++ b/extern/audaspace/include/respec/Specification.h
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright 2009-2016 Jörg Müller
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+#pragma once
+
+/**
+ * @file Specification.h
+ * @ingroup respec
+ * Defines all important macros and basic data structures for stream format descriptions.
+ */
+
+#include "Audaspace.h"
+
+/// The size of a format in bytes.
+#define AUD_FORMAT_SIZE(format) (format & 0x0F)
+/// The size of a sample in the specified device format in bytes.
+#define AUD_DEVICE_SAMPLE_SIZE(specs) (specs.channels * (specs.format & 0x0F))
+/// The size of a sample in the specified format in bytes.
+#define AUD_SAMPLE_SIZE(specs) (specs.channels * sizeof(sample_t))
+
+/// Compares two audio data specifications.
+#define AUD_COMPARE_SPECS(s1, s2) ((s1.rate == s2.rate) && (s1.channels == s2.channels))
+
+/// Returns the bit for a channel mask.
+#define AUD_CHANNEL_BIT(channel) (0x01 << channel)
+
+AUD_NAMESPACE_BEGIN
+
+/**
+ * The format of a sample.
+ * The last 4 bit save the byte count of the format.
+ */
+enum SampleFormat
+{
+ FORMAT_INVALID = 0x00, /// Invalid sample format.
+ FORMAT_U8 = 0x01, /// 1 byte unsigned byte.
+ FORMAT_S16 = 0x12, /// 2 byte signed integer.
+ FORMAT_S24 = 0x13, /// 3 byte signed integer.
+ FORMAT_S32 = 0x14, /// 4 byte signed integer.
+ FORMAT_FLOAT32 = 0x24, /// 4 byte float.
+ FORMAT_FLOAT64 = 0x28 /// 8 byte float.
+};
+
+/// The channel count.
+enum Channels
+{
+ CHANNELS_INVALID = 0, /// Invalid channel count.
+ CHANNELS_MONO = 1, /// Mono.
+ CHANNELS_STEREO = 2, /// Stereo.
+ CHANNELS_STEREO_LFE = 3, /// Stereo with LFE channel.
+ CHANNELS_SURROUND4 = 4, /// 4 channel surround sound.
+ CHANNELS_SURROUND5 = 5, /// 5 channel surround sound.
+ CHANNELS_SURROUND51 = 6, /// 5.1 surround sound.
+ CHANNELS_SURROUND61 = 7, /// 6.1 surround sound.
+ CHANNELS_SURROUND71 = 8 /// 7.1 surround sound.
+};
+
+/// The channel names.
+enum Channel
+{
+ CHANNEL_FRONT_LEFT = 0,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER,
+ CHANNEL_LFE,
+ CHANNEL_REAR_LEFT,
+ CHANNEL_REAR_RIGHT,
+ CHANNEL_REAR_CENTER,
+ CHANNEL_SIDE_LEFT,
+ CHANNEL_SIDE_RIGHT,
+ CHANNEL_MAX
+};
+
+/**
+ * The sample rate tells how many samples are played back within one second.
+ * Some exotic formats may use other sample rates than provided here.
+ */
+enum DefaultSampleRate
+{
+ RATE_INVALID = 0, /// Invalid sample rate.
+ RATE_8000 = 8000, /// 8000 Hz.
+ RATE_16000 = 16000, /// 16000 Hz.
+ RATE_11025 = 11025, /// 11025 Hz.
+ RATE_22050 = 22050, /// 22050 Hz.
+ RATE_32000 = 32000, /// 32000 Hz.
+ RATE_44100 = 44100, /// 44100 Hz.
+ RATE_48000 = 48000, /// 48000 Hz.
+ RATE_88200 = 88200, /// 88200 Hz.
+ RATE_96000 = 96000, /// 96000 Hz.
+ RATE_192000 = 192000 /// 192000 Hz.
+};
+
+/// Sample rate type.
+typedef double SampleRate;
+
+/// Specification of a sound source.
+struct Specs
+{
+ /// Sample rate in Hz.
+ SampleRate rate;
+
+ /// Channel count.
+ Channels channels;
+};
+
+/// Specification of a sound device.
+struct DeviceSpecs
+{
+ /// Sample format.
+ SampleFormat format;
+
+ union
+ {
+ struct
+ {
+ /// Sample rate in Hz.
+ SampleRate rate;
+
+ /// Channel count.
+ Channels channels;
+ };
+ Specs specs;
+ };
+};
+
+AUD_NAMESPACE_END