seal 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +1 -1
- data/include/seal/buf.h +13 -8
- data/include/seal/core.h +1 -5
- data/include/seal/efs.h +22 -22
- data/include/seal/err.h +3 -8
- data/include/seal/fmt.h +1 -6
- data/include/seal/listener.h +7 -6
- data/include/seal/raw.h +2 -6
- data/include/seal/rvb.h +12 -6
- data/include/seal/src.h +27 -10
- data/include/seal/stream.h +12 -5
- data/mpg123/build/config.guess +0 -0
- data/mpg123/build/config.sub +0 -0
- data/mpg123/build/depcomp +0 -0
- data/mpg123/build/install-sh +0 -0
- data/mpg123/build/missing +0 -0
- data/mpg123/configure +0 -0
- data/mpg123/ports/MSVC++/2010/libmpg123/libmpg123.vcxproj +5 -0
- data/mpg123/ports/MSVC++/2010/libmpg123/yasm.exe +0 -0
- data/mpg123/scripts/benchmark-cpu.pl +0 -0
- data/mpg123/src/win32_net.c +0 -0
- data/mpg123/src/win32_support.c +0 -0
- data/mpg123/src/win32_support.h +0 -0
- data/mpg123/windows-builds.sh +0 -0
- data/spec/seal/core_spec.rb +1 -1
- data/spec/seal/effect_slot_spec.rb +5 -8
- data/spec/seal/reverb_spec.rb +10 -9
- data/spec/seal/source_spec.rb +23 -10
- data/spec/seal/stream_spec.rb +7 -0
- data/spec/spec_helper.rb +2 -1
- data/spec/support/boolean_reader_aliases.rb +9 -0
- data/src/rubyext.c +115 -67
- data/src/seal/buf.c +0 -6
- data/src/seal/core.c +1 -7
- data/src/seal/efs.c +0 -9
- data/src/seal/err.c +0 -6
- data/src/seal/fmt.c +0 -6
- data/src/seal/listener.c +0 -6
- data/src/seal/mpg.c +0 -6
- data/src/seal/mpg.h +0 -4
- data/src/seal/ov.c +0 -6
- data/src/seal/ov.h +1 -5
- data/src/seal/raw.c +0 -6
- data/src/seal/reader.c +4 -11
- data/src/seal/reader.h +1 -5
- data/src/seal/src.c +9 -6
- data/src/seal/stream.c +0 -6
- data/src/seal/threading.c +0 -6
- data/src/seal/threading.h +1 -6
- data/src/seal/wav.c +1 -8
- data/src/seal/wav.h +2 -6
- metadata +5 -3
- data/src/win32api.rb +0 -29
data/spec/seal/stream_spec.rb
CHANGED
@@ -9,6 +9,13 @@ describe Stream do
|
|
9
9
|
|
10
10
|
it_behaves_like 'an audio object with format'
|
11
11
|
|
12
|
+
specify 'open is equivalent to new' do
|
13
|
+
klass = described_class
|
14
|
+
class << klass; alias unit_test_open new; end
|
15
|
+
klass.method(:open).should eq klass.method(:unit_test_open)
|
16
|
+
class << klass; remove_method :unit_test_open; end
|
17
|
+
end
|
18
|
+
|
12
19
|
context 'that are closed' do
|
13
20
|
subject do
|
14
21
|
Stream.new(WAV_PATH).tap { |stream| stream.close }
|
data/spec/spec_helper.rb
CHANGED
@@ -20,7 +20,7 @@ class Symbol
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
Dir["./spec/support/**/*.rb"].each { |f| require f}
|
23
|
+
Dir["./spec/support/**/*.rb"].each { |f| require f }
|
24
24
|
require 'seal'
|
25
25
|
include Seal
|
26
26
|
|
@@ -32,6 +32,7 @@ OV_PATH = File.join FIXTURE_DIR, 'heal.ogg'
|
|
32
32
|
RSpec.configure do |config|
|
33
33
|
config.include CustomMatchers
|
34
34
|
config.alias_it_should_behave_like_to :it_validates, 'validates that'
|
35
|
+
config.alias_it_should_behave_like_to :it_defines, 'defines'
|
35
36
|
|
36
37
|
config.instance_eval do
|
37
38
|
before :all do
|
data/src/rubyext.c
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
/*
|
2
|
-
* ruby_binding.c is part of the Scorched End Audio Library (SEAL) and is
|
3
|
-
* licensed under the terms of the GNU Lesser General Public License.
|
4
|
-
* See COPYING attached with the library.
|
5
|
-
*/
|
6
|
-
|
7
1
|
#include <stdlib.h>
|
8
2
|
#include <seal.h>
|
9
3
|
#include "ruby.h"
|
@@ -138,15 +132,8 @@ set_obj_int(VALUE robj, VALUE rnum, void* set)
|
|
138
132
|
check_seal_err(((seal_err_t (*)(void*, int)) set)(
|
139
133
|
DATA_PTR(robj), NUM2INT(rnum)
|
140
134
|
));
|
141
|
-
}
|
142
135
|
|
143
|
-
|
144
|
-
VALUE
|
145
|
-
set_obj_ulong(VALUE robj, VALUE rnum, void* set)
|
146
|
-
{
|
147
|
-
check_seal_err(((seal_err_t (*)(void*, int)) set)(
|
148
|
-
DATA_PTR(robj), NUM2ULONG(rnum)
|
149
|
-
));
|
136
|
+
return rnum;
|
150
137
|
}
|
151
138
|
|
152
139
|
static
|
@@ -205,17 +192,6 @@ get_obj_int(VALUE robj, void* get)
|
|
205
192
|
return INT2NUM(integer);
|
206
193
|
}
|
207
194
|
|
208
|
-
static
|
209
|
-
VALUE
|
210
|
-
get_obj_ulong(VALUE robj, void* get)
|
211
|
-
{
|
212
|
-
unsigned long long_integer;
|
213
|
-
|
214
|
-
get_obj_attr(robj, &long_integer, get);
|
215
|
-
|
216
|
-
return ULONG2NUM(long_integer);
|
217
|
-
}
|
218
|
-
|
219
195
|
static
|
220
196
|
VALUE
|
221
197
|
get_obj_char(VALUE robj, void* get)
|
@@ -396,6 +372,9 @@ per_source_effect_limit()
|
|
396
372
|
* specifies the format of the audio file; automatic recognition of the audio
|
397
373
|
* format will be attempted if _format_ is not specified. See Seal::Format for
|
398
374
|
* possible values. Sets all the attributes appropriately.
|
375
|
+
*
|
376
|
+
* There is a limit on the number of allocated buffers. This method raises an
|
377
|
+
* error if it is exceeding the limit.
|
399
378
|
*/
|
400
379
|
static
|
401
380
|
VALUE
|
@@ -576,6 +555,9 @@ close_stream(VALUE rstream)
|
|
576
555
|
* Seal::Source.new -> source
|
577
556
|
*
|
578
557
|
* Initializes a new source.
|
558
|
+
*
|
559
|
+
* There is a limit on the number of allocated sources. This method raises an
|
560
|
+
* error if it is exceeding the limit.
|
579
561
|
*/
|
580
562
|
static
|
581
563
|
VALUE
|
@@ -745,6 +727,29 @@ get_src_stream(VALUE rsrc)
|
|
745
727
|
return rb_iv_get(rsrc, "@stream");
|
746
728
|
}
|
747
729
|
|
730
|
+
/*
|
731
|
+
* call-seq:
|
732
|
+
* source.feed(effect_slot, index) -> source
|
733
|
+
*
|
734
|
+
* Feeds an _effect_slot_ with the output of _source_ so the output is filtered
|
735
|
+
* based on the effect attached to _effect_slot_. Later calls to this method
|
736
|
+
* with a different effect slot and the same source and index will override the
|
737
|
+
* old association. _index_ is the zero-based index for the effect. Each
|
738
|
+
* different effect slot that _source_ is feeding must have a unique
|
739
|
+
* corresponding index. The max is <em>Seal.per_src_effect_limit - 1</em>.
|
740
|
+
*/
|
741
|
+
static
|
742
|
+
VALUE
|
743
|
+
feed_efs(VALUE rsrc, VALUE rslot, VALUE rindex)
|
744
|
+
{
|
745
|
+
seal_src_t* src;
|
746
|
+
|
747
|
+
Data_Get_Struct(rsrc, seal_src_t, src);
|
748
|
+
check_seal_err(seal_feed_efs(src, DATA_PTR(rslot), NUM2INT(rindex)));
|
749
|
+
|
750
|
+
return rsrc;
|
751
|
+
}
|
752
|
+
|
748
753
|
/*
|
749
754
|
* call-seq:
|
750
755
|
* source.update -> source
|
@@ -1081,7 +1086,7 @@ load_rvb(VALUE rrvb, VALUE rpreset)
|
|
1081
1086
|
seal_rvb_t* rvb;
|
1082
1087
|
|
1083
1088
|
Data_Get_Struct(rrvb, seal_rvb_t, rvb);
|
1084
|
-
check_seal_err(seal_load_rvb(
|
1089
|
+
check_seal_err(seal_load_rvb(rvb, NUM2INT(rpreset)));
|
1085
1090
|
|
1086
1091
|
return rrvb;
|
1087
1092
|
}
|
@@ -1093,6 +1098,9 @@ load_rvb(VALUE rrvb, VALUE rpreset)
|
|
1093
1098
|
*
|
1094
1099
|
* Initializes a new reverb effect. If a preset is specified, initializes
|
1095
1100
|
* the reverb object to load the preset.
|
1101
|
+
*
|
1102
|
+
* There is a limit on the number of allocated reverbs. This method raises an
|
1103
|
+
* error if it is exceeding the limit.
|
1096
1104
|
*/
|
1097
1105
|
static
|
1098
1106
|
VALUE
|
@@ -1544,7 +1552,11 @@ is_rvb_hfdecay_limited(VALUE rrvb)
|
|
1544
1552
|
* effect_slot.effect = effect -> effect
|
1545
1553
|
*
|
1546
1554
|
* Fills _effect_slot_ with _effect_, then _effect_slot_ will become ready to
|
1547
|
-
*
|
1555
|
+
* be fed by sources. Pass nil to unfill the slot.
|
1556
|
+
*
|
1557
|
+
* Changing the parameters of _effect_ after it is attached to _effect_slot_
|
1558
|
+
* will not change the sound effect provided by _effect_slot_. To update the
|
1559
|
+
* sound effect, the updated _effect_ must be re-attached to _effect_slot_.
|
1548
1560
|
*/
|
1549
1561
|
static
|
1550
1562
|
VALUE
|
@@ -1570,8 +1582,11 @@ set_efs_effect(VALUE rslot, VALUE reffect)
|
|
1570
1582
|
* EffectSlot.new -> effect_slot
|
1571
1583
|
* EffectSlot.new(effect) -> effect_slot
|
1572
1584
|
*
|
1573
|
-
* Initializes a new effect slot. If an effect object is specified,
|
1574
|
-
*
|
1585
|
+
* Initializes a new effect slot. If an effect object is specified, initializes
|
1586
|
+
* the effect slot to have that effect object associated.
|
1587
|
+
*
|
1588
|
+
* There is a limit on the number of allocated effect slots. This method raises
|
1589
|
+
* an error if it is exceeding the limit.
|
1575
1590
|
*/
|
1576
1591
|
static
|
1577
1592
|
VALUE
|
@@ -1600,26 +1615,6 @@ get_efs_effect(VALUE rslot)
|
|
1600
1615
|
return rb_iv_get(rslot, "@effect");
|
1601
1616
|
}
|
1602
1617
|
|
1603
|
-
/*
|
1604
|
-
* call-seq:
|
1605
|
-
* slot.feed(index, source) -> slot
|
1606
|
-
*
|
1607
|
-
* Mixes a sound effect loaded into _effect_slot_ with _source_'s output.
|
1608
|
-
* Later calls to this function with a different effect slot and the same
|
1609
|
-
* index will override the old effect slot association.
|
1610
|
-
*/
|
1611
|
-
static
|
1612
|
-
VALUE
|
1613
|
-
feed_efs(VALUE rslot, VALUE rindex, VALUE rsrc)
|
1614
|
-
{
|
1615
|
-
seal_src_t* src;
|
1616
|
-
|
1617
|
-
Data_Get_Struct(rsrc, seal_src_t, src);
|
1618
|
-
check_seal_err(seal_feed_efs(DATA_PTR(rslot), NUM2INT(rindex), src));
|
1619
|
-
|
1620
|
-
return rslot;
|
1621
|
-
}
|
1622
|
-
|
1623
1618
|
/*
|
1624
1619
|
* call-seq:
|
1625
1620
|
* effect_slot.gain = flt -> flt
|
@@ -1638,8 +1633,7 @@ set_efs_gain(VALUE refs, VALUE value)
|
|
1638
1633
|
* call-seq:
|
1639
1634
|
* effect_slot.gain -> flt
|
1640
1635
|
*
|
1641
|
-
* Gets the output level of _effect_slot_
|
1642
|
-
* 1.0.
|
1636
|
+
* Gets the output level of _effect_slot_. The default is 1.0.
|
1643
1637
|
*/
|
1644
1638
|
static
|
1645
1639
|
VALUE
|
@@ -1878,10 +1872,17 @@ bind_core(void)
|
|
1878
1872
|
/*
|
1879
1873
|
* Document-class: Seal::Buffer
|
1880
1874
|
*
|
1881
|
-
* Buffers are essentially abstract
|
1882
|
-
* and are used by sources. Buffers are
|
1883
|
-
* effect which can be efficiently loaded
|
1884
|
-
* other hand, are more suitable for
|
1875
|
+
* Interfaces for manipulating buffers. Buffers are essentially abstract
|
1876
|
+
* representations of (raw) audio data and are used by sources. Buffers are
|
1877
|
+
* most suitable for small-sized sound effect which can be efficiently loaded
|
1878
|
+
* to memory at once. Streams, on the other hand, are more suitable for massive
|
1879
|
+
* audio such as background music.
|
1880
|
+
*
|
1881
|
+
* In order to have 3D sound effect on the buffer, the audio file needs to have
|
1882
|
+
* mono-channel. If the audio file has multi-channel, the sound will not be
|
1883
|
+
* positioned in a 3D space. Multi-channel audio (a.k.a. stereo) is already
|
1884
|
+
* designed to have illusion of directionality and audible perspective. Most
|
1885
|
+
* sound effect should be monophonic.
|
1885
1886
|
*/
|
1886
1887
|
static
|
1887
1888
|
void
|
@@ -1901,8 +1902,19 @@ bind_buf(void)
|
|
1901
1902
|
/*
|
1902
1903
|
* Document-class: Seal::Stream
|
1903
1904
|
*
|
1904
|
-
*
|
1905
|
-
*
|
1905
|
+
* Interfaces for manipulating streams used by streaming sources. Streams are
|
1906
|
+
* usually necessary when the audio data is too massive to fit into main
|
1907
|
+
* memory as a whole (such as a background music, which can eat up to dozens of
|
1908
|
+
* megabytes of memory after decoding), in which case buffers are not suitable.
|
1909
|
+
*
|
1910
|
+
* Streams often contain multi-channel audio (since most of the time they are
|
1911
|
+
* used to play background music, and background music files are often
|
1912
|
+
* multi-channel already), which means that they often contain sound that are
|
1913
|
+
* not positioned, i.e., not processed by the 3D sound rendering pipeline. That
|
1914
|
+
* fact is totally fine for background music since they are usually not
|
1915
|
+
* associated to any object in the application. If positioned streams are
|
1916
|
+
* needed and the audio file has multi-channel, the audio file need to be
|
1917
|
+
* converted to mono-channel.
|
1906
1918
|
*/
|
1907
1919
|
static
|
1908
1920
|
void
|
@@ -1923,20 +1935,31 @@ bind_stream(void)
|
|
1923
1935
|
/*
|
1924
1936
|
* Document-class: Seal::Source
|
1925
1937
|
*
|
1926
|
-
* Sources are abstract representations of
|
1927
|
-
* Euclidean space.
|
1938
|
+
* Interfaces for manipulating sources. Sources are abstract representations of
|
1939
|
+
* sound sources which emit sound in a Euclidean space. The sound comes from
|
1940
|
+
* its attached buffer or stream. Its properties combined with those of the
|
1941
|
+
* listener singleton object determine how the sound should be rendered.
|
1928
1942
|
*/
|
1929
1943
|
|
1930
1944
|
/*
|
1931
1945
|
* Document-module: Seal::Source::State
|
1932
1946
|
*
|
1933
1947
|
* A collection of Source states.
|
1948
|
+
*
|
1949
|
+
* A just-initialized source is in the _INITIAL_ state. After a call to
|
1950
|
+
* _play_, the source will enter the _PLAYING_ state. After a call to _pause_,
|
1951
|
+
* the source will enter the _PAUSED_ state. After a call to _stop_, the source
|
1952
|
+
* will enter the _STOPPED_ state.
|
1934
1953
|
*/
|
1935
1954
|
|
1936
1955
|
/*
|
1937
1956
|
* Document-module: Seal::Source::Type
|
1938
1957
|
*
|
1939
1958
|
* A collection of Source types.
|
1959
|
+
*
|
1960
|
+
* A source not attached to anything is of the _UNDETERMINED_ type. A source
|
1961
|
+
* that is attached to a buffer will become the _STATIC_ type. A source that is
|
1962
|
+
* attached to a stream will become the _STREAMING_ type.
|
1940
1963
|
*/
|
1941
1964
|
static
|
1942
1965
|
void
|
@@ -1956,6 +1979,7 @@ bind_src(void)
|
|
1956
1979
|
rb_define_method(cSource, "buffer", get_src_buf, 0);
|
1957
1980
|
rb_define_method(cSource, "stream=", set_src_stream, 1);
|
1958
1981
|
rb_define_method(cSource, "stream", get_src_stream, 0);
|
1982
|
+
rb_define_method(cSource, "feed", feed_efs, 2);
|
1959
1983
|
rb_define_method(cSource, "update", update_src, 0);
|
1960
1984
|
rb_define_method(cSource, "position=", set_src_pos, 1);
|
1961
1985
|
rb_define_method(cSource, "position", get_src_pos, 0);
|
@@ -2001,8 +2025,15 @@ bind_src(void)
|
|
2001
2025
|
/*
|
2002
2026
|
* Document-class: Seal::Reverb
|
2003
2027
|
*
|
2004
|
-
*
|
2005
|
-
*
|
2028
|
+
* Interfaces for manipulating reverberation effect objects which can be loaded
|
2029
|
+
* into effect slots. The reverberation parameters can be customized to
|
2030
|
+
* emulate reverberations in different environment or can be loaded from
|
2031
|
+
* presets. The preset constants suggest the reverberation environment, for
|
2032
|
+
* example, <em>Reverb::Preset::IcePalace::LONGPASSAGE</em> emulates the
|
2033
|
+
* reverberation in a long passage of an ice palace.
|
2034
|
+
*
|
2035
|
+
* For more infomation about reverberations, check out the OpenAL effect
|
2036
|
+
* extension guide at: http://zhang.su/seal/EffectsExtensionGuide.pdf
|
2006
2037
|
*/
|
2007
2038
|
static
|
2008
2039
|
void
|
@@ -2263,8 +2294,20 @@ bind_rvb(void)
|
|
2263
2294
|
/*
|
2264
2295
|
* Document-class: Seal::EffectSlot
|
2265
2296
|
*
|
2266
|
-
*
|
2267
|
-
*
|
2297
|
+
* Interfaces for manipulating effect slots, which are containers for effect
|
2298
|
+
* objects. Effect slots can attach effect objects (such as reverb objects) and
|
2299
|
+
* then be fed with a mix of audio from different sources, essentially
|
2300
|
+
* filtering the rendering of the sound sources and output to the mixer based
|
2301
|
+
* on the attached effect object. For example, if a reverb object is attached
|
2302
|
+
* to an effect slot and one source is feeding the slot, the sound of that
|
2303
|
+
* source will have the reverberation effect defined by the reverb object.
|
2304
|
+
|
2305
|
+
* Multiple sources can feed the same effect slot, but conversely there is a
|
2306
|
+
* limit on the number of effect slots a source can feed concurrently. See the
|
2307
|
+
* documentation for EffectSlot#feed for more details.
|
2308
|
+
*
|
2309
|
+
* For more infomation about effect slots, check out the OpenAL effect
|
2310
|
+
* extension guide at: http://zhang.su/seal/EffectsExtensionGuide.pdf
|
2268
2311
|
*/
|
2269
2312
|
static
|
2270
2313
|
void
|
@@ -2276,7 +2319,6 @@ bind_efs(void)
|
|
2276
2319
|
rb_define_method(cEffectSlot, "initialize", init_efs, -1);
|
2277
2320
|
rb_define_method(cEffectSlot, "effect=", set_efs_effect, 1);
|
2278
2321
|
rb_define_method(cEffectSlot, "effect", get_efs_effect, 0);
|
2279
|
-
rb_define_method(cEffectSlot, "feed", feed_efs, 2);
|
2280
2322
|
rb_define_method(cEffectSlot, "gain=", set_efs_gain, 1);
|
2281
2323
|
rb_define_method(cEffectSlot, "gain", get_efs_gain, 0);
|
2282
2324
|
rb_define_method(cEffectSlot, "auto=", set_efs_auto, 1);
|
@@ -2287,8 +2329,13 @@ bind_efs(void)
|
|
2287
2329
|
/*
|
2288
2330
|
* Document-class: Seal::Listener
|
2289
2331
|
*
|
2290
|
-
*
|
2291
|
-
* the sound
|
2332
|
+
* Interfaces for manipulating the listener singleton object. The listener
|
2333
|
+
* object abstractly represents the main object in a sound application which
|
2334
|
+
* "hears" all the sound. For example, the listener object can be used to
|
2335
|
+
* represent the main character moving around on the map in a role-playing
|
2336
|
+
* game. The properties of the listener (position, velocity, etc.) combined
|
2337
|
+
* with those of the existing sources determine how the sound should be
|
2338
|
+
* rendered.
|
2292
2339
|
*/
|
2293
2340
|
static
|
2294
2341
|
void
|
@@ -2314,7 +2361,8 @@ bind_listener(void)
|
|
2314
2361
|
/*
|
2315
2362
|
* Document-module: Seal
|
2316
2363
|
*
|
2317
|
-
* The top-level namespace of Seal.
|
2364
|
+
* The top-level namespace of Seal. This module contains interfaces for global
|
2365
|
+
* Seal operations.
|
2318
2366
|
*/
|
2319
2367
|
void
|
2320
2368
|
Init_seal(void)
|
data/src/seal/buf.c
CHANGED
data/src/seal/core.c
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
/*
|
2
|
-
* core.c is part of the Scorched End Audio Library (SEAL) and is licensed
|
3
|
-
* under the terms of the GNU Lesser General Public License. See COPYING
|
4
|
-
* attached with the library.
|
5
|
-
*/
|
6
|
-
|
7
1
|
#include <stdlib.h>
|
8
2
|
#include <stddef.h>
|
9
3
|
#include <al/al.h>
|
@@ -137,7 +131,7 @@ seal_startup(const char* device_name)
|
|
137
131
|
/* Reset OpenAL's error state. */
|
138
132
|
alGetError();
|
139
133
|
|
140
|
-
alcGetIntegerv(device, ALC_MAX_AUXILIARY_SENDS, 1
|
134
|
+
alcGetIntegerv(device, ALC_MAX_AUXILIARY_SENDS, 1, &per_src_effect_limit);
|
141
135
|
|
142
136
|
return SEAL_OK;
|
143
137
|
|
data/src/seal/efs.c
CHANGED
@@ -31,15 +31,6 @@ seal_set_efs_effect(seal_efs_t* slot, void* effect)
|
|
31
31
|
return err;
|
32
32
|
}
|
33
33
|
|
34
|
-
seal_err_t
|
35
|
-
seal_feed_efs(seal_efs_t* slot, int index, seal_src_t* src)
|
36
|
-
{
|
37
|
-
alSource3i(src->id, AL_AUXILIARY_SEND_FILTER, slot->id, index,
|
38
|
-
AL_FILTER_NULL);
|
39
|
-
|
40
|
-
return _seal_get_openal_err();
|
41
|
-
}
|
42
|
-
|
43
34
|
seal_err_t
|
44
35
|
seal_set_efs_gain(seal_efs_t* slot, float gain)
|
45
36
|
{
|
data/src/seal/err.c
CHANGED
data/src/seal/fmt.c
CHANGED
data/src/seal/listener.c
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
/*
|
2
|
-
* listener.c is part of the Scorched End Audio Library (SEAL) and is licensed
|
3
|
-
* under the terms of the GNU Lesser General Public License. See COPYING
|
4
|
-
* attached with the library.
|
5
|
-
*/
|
6
|
-
|
7
1
|
#include <al/al.h>
|
8
2
|
#include <seal/listener.h>
|
9
3
|
#include <seal/err.h>
|