Chris Robinson
46b9802902
Force the point resampler when the source plays at normal speed
2010-11-25 22:15:38 -08:00
Chris Robinson
b6fb28de1a
Pass a pointer to the samplers so they can read just the samples they need
2010-11-25 22:04:17 -08:00
Chris Robinson
17fc4ba5e3
Add "pre-padding" to the temp buffer
...
This will help to implement resamplers that want previous samples
2010-11-25 21:42:15 -08:00
Chris Robinson
6e3a6f90e9
Be less wave-in-specific in the winmm backend
2010-11-25 17:37:34 -08:00
Chris Robinson
fbd6439bd2
Make the first enumerated DirectSound device use the default, and fix the name
2010-11-25 14:35:32 -08:00
Chris Robinson
f72c735f9e
Make sure the target buffer size is frame aligned
2010-11-25 14:23:03 -08:00
Chris Robinson
9b23fc5db8
Minor rework of the template macros
2010-11-25 14:07:52 -08:00
Chris Robinson
aaff188b3b
Remove the cosine resampler
...
It's too slow when auxiliary sends are being used.
2010-11-25 13:49:51 -08:00
Chris Robinson
2595d85cca
Double-up the interpolation functions (and make them use doubles)
2010-11-25 13:45:35 -08:00
Chris Robinson
2c96c29938
Rename some "template" functions
2010-11-25 13:22:54 -08:00
Chris Robinson
65919b7037
Always make sure there's a sample available to mix, for pending click removal
2010-11-25 13:17:51 -08:00
Chris Robinson
f4e0c6a348
Use a temporary stack buffer to store the source buffer data to be mixed
...
This makes it much easier to pack the playable buffer data so that it's a
continuous data stream. This could normally be broken up otherwise, such as
when using loop points or small queued buffers.
Currently it defaults to a 16KB stack buffer, but this can be overridden at
compile time.
2010-11-25 11:16:19 -08:00
Chris Robinson
885a5e9f90
Use 0-based access for the buffer data
2010-11-24 20:44:21 -08:00
Chris Robinson
22e3e9a18b
Support 8-bit sample data in the mixer
2010-11-24 19:41:25 -08:00
Chris Robinson
445cde2dd4
Check the sample byte size after the resampler
2010-11-24 17:23:09 -08:00
Chris Robinson
3dd58cf765
Get rid of a useless union
2010-11-24 17:10:41 -08:00
Chris Robinson
cd87061749
Change the mixer macros to declare functions
2010-11-24 17:07:50 -08:00
Chris Robinson
1311e051d9
Set mixer sample pos and frac when needed
2010-11-24 14:54:46 -08:00
Chris Robinson
6ab22e7cbb
Reorder some stored source params
2010-11-24 10:01:50 -08:00
Chris Robinson
bb13f7f234
Make sure the buffer padding is always cleared before looking for the next buffer
2010-11-24 07:20:41 -08:00
Chris Robinson
13ba253aec
Calculate ALSA buffer length with the other values
2010-11-23 07:24:27 -08:00
Chris Robinson
c58469e234
Handle the timer wrapping in the wave and null output devices
2010-11-21 11:34:16 -08:00
Chris Robinson
57a03bc2b5
Use helpers to write 16- and 32-bit values
2010-11-21 06:54:41 -08:00
Chris Robinson
a7b4e0b5c5
Get rid of the device timer stuff
2010-11-21 06:32:59 -08:00
Chris Robinson
bbb45e326c
Avoid temporary float variables
2010-11-21 03:58:37 -08:00
Chris Robinson
dfe3e402a8
Pass the data pointer and proper sampler to the mixer macro
2010-11-21 03:33:33 -08:00
Chris Robinson
e884da50ea
Move aluMixData back to ALu.c
2010-11-21 02:51:18 -08:00
Chris Robinson
4c576631ad
Hide AL_EXTX_sample_buffer_object
...
It hasn't been going anywhere, and it's current use is dubious. Leave the code
in for now, but it may be removed later.
2010-11-21 02:36:34 -08:00
Chris Robinson
65e033c64b
Increase the max number of source sends to 4, and decrease the default to 1
2010-11-06 15:08:54 -07:00
Chris Robinson
07346da740
Use the number of sends the device is configured for in more places
2010-11-06 14:27:33 -07:00
Chris Robinson
289c74788e
Use a switch to select the appropriate channel-count mixer
2010-11-06 12:21:46 -07:00
Chris Robinson
65a8d9278d
Declare a variable where it's used
2010-11-01 12:44:56 -07:00
Chris Robinson
6db4e08efb
Fix fpu state handling with _controlfp
2010-10-15 10:35:47 -07:00
Chris Robinson
314832e35a
Rename a couple more variables
2010-10-10 04:00:50 -07:00
Chris Robinson
6a9dd185e6
Improve naming and placement of a couple variables
2010-10-10 03:47:57 -07:00
Chris Robinson
2172827f43
Simplify a calculation
2010-10-09 15:24:24 -07:00
Chris Robinson
90e9cd970a
Check resampler mode first when selecting the mixer
2010-09-26 13:53:02 -07:00
Chris Robinson
845ca95888
Get a variable where it's needed
2010-09-26 13:30:46 -07:00
Chris Robinson
92d8d2f8a4
Pass the device to the mix function and localize the dry mix and click buffers
2010-09-26 12:23:22 -07:00
Chris Robinson
7cd52b2857
Clarify a check
2010-09-26 01:29:28 -07:00
Chris Robinson
9fbd6c6c3f
Make the SourceMix function a method of the ALsource struct
2010-09-26 01:15:27 -07:00
Chris Robinson
08fdc5fa98
Avoid updating the source in MixSource
2010-09-25 23:49:57 -07:00
Chris Robinson
7e362249ff
Convert shorts so that 0 remains 0
2010-09-25 21:13:40 -07:00
Chris Robinson
9fa2db0227
Don't try to open the ALSA device a second time if the first fails
2010-09-25 20:20:10 -07:00
Chris Robinson
4c75a72a90
Avoid some code duplication
2010-09-25 20:18:07 -07:00
Chris Robinson
a0b2778161
Localize more variables and remove unnecessary ones
2010-09-25 14:19:36 -07:00
Chris Robinson
bc6d94cd25
Avoid sampling beyond the end of the loop
2010-09-24 23:32:50 -07:00
Chris Robinson
e70141e57b
Localize some variables to the mixer macros
...
The hope here is to help break the mixer loops into separate functions, so the
macro expansion doesn't cause the MixSource function to explode in size and
kill compilation speed.
2010-09-24 23:24:01 -07:00
Chris Robinson
2e70b82eaa
Use separate mixing loops for the dry path and wet paths
...
This will increase CPU use a bit for sources that use auxiliary sends
(particularly with the cosine resampler), but it makes it more scalable when
adding more sends per source. Additionally, it will improve performance of
sources that don't use auxiliary sends.
The cosine resampler can probably be improved by using a lookup table instead
of calling cos() as there are 14 bits of fractional precision, so a 16384-
element float array would cover it all. This can also be reduced to a half or
quarter size if the precision loss is found to be acceptable.
2010-09-24 18:29:49 -07:00
Chris Robinson
117ed52091
Better protect against negative attenuation
2010-09-24 13:16:09 -07:00