Commit Graph

446 Commits

Author SHA1 Message Date
Themaister d98af82baf Honor ident param. 2014-02-25 09:56:39 +01:00
Themaister b782778edf Forgot that FFmpeg also uses resampler. 2014-02-25 09:51:24 +01:00
Themaister cd597dc247 Make resampler "driver" hook code consistent with rest. 2014-02-25 09:39:48 +01:00
twinaphex 69267a8fa2 (Resampler) Change 'OSK' to 'Resampler' 2014-02-25 03:27:17 +01:00
twinaphex 4b1438e4b2 (Menu) Add audio resampler selection to 'Drivers' section 2014-02-25 03:23:50 +01:00
twinaphex 7452a48864 Add back resampler selection code 2014-02-25 02:55:25 +01:00
Themaister 190db263b0 [ALSA] Try to fallback on get_buffer_size.
Apparently some driver returns error here.
2014-02-22 15:31:23 +01:00
twinaphex ff94787d86 (PPC Altivec) turn vec_splats into vec_splat - PPC OSX (Leopard) doesn't
support vec_splats intrinsic
2014-02-11 18:32:18 +11:00
Themaister 57e48f7ee2 Rewrite threaded audio a bit.
Avoid calling stop() right after init.
Driver init/teardown now happens only in audio thread.
2014-01-26 13:08:51 +01:00
Themaister 8c9e1a5f5c Fix some unused function warnings.
Clang 3.4 is more aggressive on this.
2014-01-22 16:39:39 +01:00
twinaphex 0a15a17d44 Update years on all license headers 2014-01-01 01:50:59 +01:00
twinaphex c71a688d18 (ARM NEON ASM) Ifdef sinc_neon.S / utils_neon.S with __ARM_NEON__
and/or HAVE_NEON
2013-12-30 20:22:31 +01:00
twinaphex c80e4c4315 (iOS) Linker requires that ASM function names are prefixed with '_' -
verified it still builds on Android
2013-12-30 17:53:13 +01:00
Themaister 92753e8b8a Add volume control to NEON ASM. 2013-12-29 12:59:57 +01:00
twinaphex 4ba46df0ef (Android) Build fix 2013-12-19 03:45:17 +01:00
twinaphex ec5153ab57 (Android) Build fix 2013-12-17 20:56:31 +01:00
twinaphex 38d785984f Add RETRO_ENVIRONMENT_GET_PERF_INTERFACE to libretro.h 2013-12-17 19:10:40 +01:00
twinaphex d417669d48 (GX) Compile in HAVE_RSOUND for both Wii and NGC 2013-11-11 11:14:55 +01:00
Lioncash db2a619a90 Shrink another struct. This shrinks audio_lock from 32 bytes to 24 bytes. 2013-11-04 00:10:22 -05:00
Lioncash fac2783a09 Optimize some struct sizes.
This is the list of reduced sizes:

file: dsound.c         - struct dsound_t reduced from 56 bytes to 52 bytes.
file: shader_parse.h   - struct gfx_fbo_scale reduced from 32 bytes to 28 bytes.
file: thread_wrapper.c - struct texture reduced from 28 bytes to 24 bytes.
file: libretro.h       - struct retro_hw_render_callback reduced from 40 bytes to 36 bytes.
file: movie.c          - struct bsv_movie reduced from 36 bytes to 32 bytes.
file: netplay.c        - struct delta_frame reduced from 16 bytes to 12 bytes.
file: performance.h    - struct rarch_perf_counter_t reduced from 40 bytes to 32 bytes.
2013-11-03 23:57:41 -05:00
Themaister 83cdd0f250 Remove sthread_exit(). Fix detach. 2013-11-01 09:12:36 +01:00
twinaphex e4c1ebf344 Expand thread.c - replace pthread with thread.c wrappers 2013-11-01 04:49:29 +01:00
twinaphex 93c1bae991 (Librsound) Update comment in rsnd_get_time_usec 2013-11-01 00:13:17 +01:00
twinaphex a8696e2506 (RSound) Bake in rsound for Android port - should also be possible
to bake it in by default for PC now - made librsound.c crossplatform
2013-11-01 00:07:52 +01:00
Themaister 7aa8b40759 Fixup C89 for loops. 2013-10-22 21:37:56 +02:00
twinaphex d2c87e3039 Convert most C99-style for loop initial declarations to C89-compliant
ones
2013-10-22 15:08:17 +02:00
twinaphex 8487cd0204 Start using C89-style for loop initial declarations for
reusable code module parts that we reuse in other projects. It's
a huge maintenance burden having to change this stuff around everytime
when compiling in non-C99 mode
2013-10-19 19:39:38 +02:00
Alcaro c8f28f25d7 Fix typo 2013-09-28 22:39:03 +02:00
meancoot c9d968fa79 (iOS, CoreAudio) Don't deadlock in coreaudio_write if the audio session is interrupted. 2013-09-25 11:56:02 -04:00
Themaister 38ec55573c Rework SET_AUDIO_CALLBACK.
When disabling audio and/or muting, the core has no way
of knowing this, causing potential issues in a threaded mixer.

This environ is not used by any public core to my knowledge so the old
API has been removed and replaced with a change to environment number
(20 -> 22).
2013-09-14 17:28:09 +02:00
Hans-Kristian Arntzen 7d90ff4011 Merge pull request #303 from libretro/emscripten
Emscripten/Javascript port
2013-09-11 01:01:29 -07:00
ToadKing a09dda3a9d [EMSCRIPTEN] add custom input driver, removes SDL dependency + adds mouse support 2013-09-10 20:21:48 -04:00
meancoot 081e526bf9 (OSX) Support video_monitor_index and audio_device settings 2013-09-07 21:30:58 -04:00
Themaister 73cb566620 "Revert" audio buffer behavior on Android.
Add audio_block_frames setting (only used by OpenSL atm).
2013-08-24 12:04:47 +02:00
twinaphex d13542f12b (Android) Detects buffer size properly now on Android 4.2 and up -
bases requested latency on this. Old fallback applies for non-4.2
2013-08-24 05:10:14 +02:00
Themaister 16ca310f93 Add high latency audio support for Android.
Should fix ghetto hardware again.
2013-08-12 20:13:06 +02:00
Themaister 4bf3d47be1 Use GCC atomics to avoid locking in callback. 2013-08-11 01:08:19 +02:00
Themaister a543b5da74 Fix threaded audio race conditions. 2013-08-11 01:07:59 +02:00
Themaister bb0993b6eb Fix Android build. 2013-08-11 01:07:30 +02:00
Themaister 6a82db13d5 Fixups for frame time callback. 2013-08-11 01:05:33 +02:00
Themaister f4a23115c2 Begin adding AUDIO_CALLBACK/FRAME_TIME_CALLBACK. 2013-08-11 01:05:33 +02:00
Themaister 510ed100e8 Use GCC atomics to avoid locking in callback.
Conflicts:
	audio/opensl.c
2013-07-17 22:47:34 +02:00
Themaister 54cc4ee469 Fixes and tweaks for OpenSL. 2013-07-17 22:46:38 +02:00
twinaphex 4e390c0dd1 Add librsound_orig.c for targets other than PS3 2013-07-08 00:38:03 +02:00
twinaphex 6d1e9dcaff Change asoundlib.h include to <alsa/asoundlib.h> 2013-07-07 19:26:03 +02:00
twinaphex 75cce7fb4d (Pandora) Add static preliminary Makefile for Pandora
(Alsathread) Name functions uniquely vs. alsa to resolve
symbol namespace conflicts when compiling with Griffin
2013-07-07 19:22:54 +02:00
twinaphex 3a0cc21d7a QNX ALSA is too different from regular mainline ALSA - QNX ALSA driver
will be separate from main ALSA driver
2013-06-20 10:13:45 +02:00
twinaphex 8bb8b3aea3 (Blackberry/ALSA) Start work on Blackberry ALSA support 2013-06-19 12:53:19 +02:00
Themaister 347fdaadce Fix ALSA error when unpause on driver reinit. 2013-06-05 20:51:57 +02:00
Themaister e215033edd Fix CXX_BUILD. 2013-06-05 10:47:19 +02:00
Themaister 973f35339c Add pausing to ALSA.
Also use snd_pcm_avail() instead of avail_update()
for more accuracy (helps dynamic rate control).
2013-06-05 02:12:34 +02:00
Themaister 8d716f4ca1 Fixup log message in pulse. 2013-06-02 23:57:43 +02:00
Themaister 0aa157a5b9 Handle when pulse spuriously changes buffer size. 2013-06-02 23:43:04 +02:00
Themaister 74f3e8e11c Pause audio when going into RGUI. 2013-06-02 23:10:03 +02:00
Themaister de01d42cd8 Fixups in pulse.
Add proper pause/unpause, and improve pa_write().
2013-06-02 22:57:44 +02:00
Themaister 4dd117b5ab Use correct buffer size in Pulse. 2013-05-27 00:56:41 +02:00
meancoot c15463ad7c (iOS) Various:
Fix symbol conflict for audio_cb in CoreAudio driver and dummy lib
   Don't show a frame from the last loaded game when loading a new one
   Fix settings not being refreshed after a failed game load
   Fix issue that could cause the display time of the native pause button to be cut short
2013-04-18 20:39:43 -04:00
twinaphex 250b52c130 (RARCH_CONSOLE) Build fix for now - dummy loading sidestepped
for now until solution arrives
2013-04-14 17:15:57 +02:00
twinaphex 06d3fd16ae Simplify resampler.c 2013-04-07 18:38:21 +02:00
twinaphex 4102d1cfb8 Make sinc resampler the default and remove Hermite - audio
quality at high samplerates was too bad to be of any use
2013-04-07 03:41:06 +02:00
Themaister 913aeabe47 Use more compatible .globl symbols in NEON ASM. 2013-03-27 00:38:11 +01:00
twinaphex 3bc487be87 Merge branch 'ios' of git://github.com/meancoot/RetroArch 2013-03-15 20:05:15 +01:00
Themaister 9fd1f7edad Fix audio test build on Windows. 2013-03-12 12:23:28 +01:00
meancoot 9fadca2a54 Merge branch 'master' of https://github.com/Themaister/RetroArch into ios 2013-03-09 20:09:32 -05:00
Themaister 1e44407bd8 Bump SINC_HIGHEST BW to 0.962. 2013-03-09 13:28:40 +01:00
meancoot e8e822ffc3 Merge branch 'master' of https://github.com/Themaister/RetroArch into ios
Conflicts:
	gfx/gfx_context.c
	gfx/gfx_context.h
	retroarch.c
2013-03-03 21:36:47 -05:00
Themaister 3ed3217270 Seed rand(). 2013-03-03 12:39:11 +01:00
Themaister f11ccfc108 Add simple script to generate rate control tests. 2013-03-01 17:05:13 +01:00
Themaister 2499cccb1a Add rate control simulation to resampler test. 2013-02-28 17:14:34 +01:00
Themaister 7b389b70bc Use more correct modulation factor in SSE convert.
Use same factor as C.
2013-02-27 20:46:55 +01:00
meancoot 06bb6b7840 Merge branch 'master' of https://github.com/Themaister/RetroArch into ios 2013-02-21 22:18:14 -05:00
Themaister 0c6e456e65 Merge branch 'master' into thread_video 2013-02-17 15:49:58 +01:00
Themaister 59e7bc82db Move warning disable to msvc_compat.h. 2013-02-17 15:10:03 +01:00
twinaphex 6e1cec5090 (Xbox 1) Sinc - get rid of warning 2013-02-17 15:05:36 +01:00
Themaister 76bf41188a Add video_threaded option to Android. 2013-02-17 00:26:17 +01:00
Themaister 75a51c191b Fix Android build. 2013-02-16 12:33:47 +01:00
meancoot 5d139b185b Merge branch 'master' of https://github.com/Themaister/RetroArch into ios 2013-02-15 18:54:57 -05:00
Themaister 3e3d9ec3af Use higher precision Kaiser.
Add test case for Kaiser window in MATLAB.
2013-02-14 12:58:50 +01:00
Themaister dc413ab605 Fix SNR test getting broken result. 2013-02-14 12:30:57 +01:00
Themaister ff14092d8d Use -ffast-math.
Helps SINC resampler to auto-vectorize.
2013-02-14 11:57:07 +01:00
Themaister 11d919b9e8 Fix downsampling for SINC. 2013-02-13 21:55:58 +01:00
Themaister 2aecc0e5f5 De-hardcode number of SINC taps.
Prepare for possible downsampling.
2013-02-13 12:11:49 +01:00
Themaister d68fe248f3 Start using LERP optionally for SINC again. 2013-02-13 11:56:20 +01:00
Themaister 7ceefc9172 Clarify requirements for NEON. 2013-02-12 22:43:04 +01:00
Themaister 578a47d73d Rework SINC resampler. Use Kaiser window. 2013-02-12 22:41:26 +01:00
meancoot 634f4dd543 ios: Patch coreaudio.c and use it instead of OpenAL. 2013-02-11 18:45:45 -05:00
Themaister 8c4410158d Fix potential segfault in AL. 2013-02-11 20:38:16 +01:00
Themaister fe1d9a5a2a Add rate control interfaces to AL. 2013-02-11 20:14:12 +01:00
Themaister db876d59ac Fix resampler tests. 2013-02-08 15:37:40 +01:00
Themaister e19555d394 Make number of sinc taps variable in NEON. 2013-02-08 14:28:25 +01:00
Themaister 202e204fd7 Add resampler.c. 2013-02-08 11:50:45 +01:00
Themaister d33d2e9f0c Make resamplers more modular. 2013-02-08 11:49:51 +01:00
Themaister 64c0e39596 Add NEON check for sinc taps. 2013-02-07 07:32:10 +01:00
Themaister b2226de89d Add some basic SINC profiles. 2013-02-07 07:22:33 +01:00
Themaister 7ab8eaec02 Use NEON conditionally for sample conversions. 2013-01-24 18:37:42 +01:00
Themaister 77207332f1 Use NEON conditionally in SINC. 2013-01-24 18:30:37 +01:00
Themaister a52c0502d0 Actually use POT size in SL. 2013-01-18 11:29:02 +01:00
Themaister 5292191b63 Add some logging to OpenSL. 2013-01-18 01:10:18 +01:00
Themaister aadff4658f Use OpenSL in a more correct fashion. 2013-01-18 01:10:18 +01:00
twinaphex 70e64897be Fixes PC build 2013-01-17 14:24:26 +01:00
twinaphex 3b43155b06 rarch_console_rsound.c code moved to audio/utils.c 2013-01-17 14:21:49 +01:00
Themaister f3309b8997 Compiled XAudio as C++.
No point hacking around with vtables in C and shit ...
2013-01-11 01:13:55 +01:00
twinaphex 6795d74025 (XAudio2) Fix Xbox360 build 2013-01-10 16:33:29 +01:00
Themaister b1eb277d1f Actually use 2.7 CLS id ... 2013-01-10 16:39:39 +01:00
Themaister bd483fbb6b Use XAudio2 2.7 CLS. 2013-01-10 16:33:14 +01:00
Themaister a0f12d6887 Correct XAudio2 interface. 2013-01-10 16:22:39 +01:00
Themaister dec73e17ef Refactor out some redundancies. 2013-01-10 11:05:55 +01:00
Themaister f3da29706c Fix build on Windows. 2013-01-10 10:55:14 +01:00
twinaphex cd28dbcd92 (360) Uses the same Xaudio header now as PC 2013-01-10 02:46:35 +01:00
twinaphex 436f05709b (360) Xaudio2 360 driver uses same C backend file as PC now 2013-01-10 01:53:37 +01:00
twinaphex 11c1d149d6 (Xaudio) indenting nits 2013-01-09 22:17:43 +01:00
twinaphex 589b5eefdb (360) 360 audio driver now goes through the same Xaudio driver
as PC
2013-01-09 22:04:28 +01:00
twinaphex 05863ffe31 (360) Move xaudio.h header to audio/xaudio-c/xaudio_xdk360.h 2013-01-09 20:57:20 +01:00
ToadKing aed2aa146c copyrights 2013-01-04 15:02:40 -05:00
ToadKing fd0bb1b3ee make alsathread a seperate audio driver 2013-01-04 14:58:34 -05:00
Themaister 0b4cf2d053 Update license headers to 2013. 2013-01-01 01:41:15 +01:00
Themaister e3a0668f55 Fix segfault when samples < 8 on NEON. 2012-12-28 21:25:41 +01:00
Themaister 6bb2349833 Kill off external driver plug interfaces.
These are too much work to maintain, and aren't really all
that useful.
2012-12-22 11:37:15 +01:00
OV2 a193bac6a1 Fix hermite compile 2012-12-19 20:01:12 +01:00
twinaphex 5598c75071 (OpenSL) Get rid of Android-specific hack 2012-12-11 14:16:47 +01:00
notaz f6de3722ef (utils_neon) Don't use callee-save registers 2012-12-09 18:58:47 +02:00
notaz 17f42531c3 (sinc_neon) Don't use callee-save registers
fixes a crash on ARM Linux.
2012-12-09 18:30:05 +02:00
notaz 16edc7c80e Add ARM NEON support for main build. 2012-12-09 18:30:04 +02:00
twinaphex 242d2d0d65 (Android) Fixes crippled performance on 4.1 (Jelly Bean) - I thought
4.1 - Jelly Bean - had a fast SL mixer? How to get lower latency with
this then?
2012-12-08 18:10:08 +01:00
twinaphex 3a3953aef3 (Android) Add back PHOENIX_LEGACY hack because new Phoenix frontend
doesn't work yet for me
2012-12-08 12:58:16 +01:00
twinaphex ecc2376e6f (Phoenix Legacy) Adding back phoenix legacy for now 2012-12-08 12:37:00 +01:00
Themaister 4adf390486 Actually align samples to 8. 2012-12-05 23:17:07 +01:00
Themaister eba6cfa3eb Fix build for NEON. 2012-12-05 23:04:44 +01:00
Themaister 36c595335b NEON optimized s16->float->s16. 2012-12-05 22:45:29 +01:00
twinaphex 2c2328d8a0 (NEON) Change WANT_NEON define back to HAVE_NEON 2012-12-04 07:57:31 +01:00
twinaphex 6a7e03aadb (Android) Fix sound - don't fix samplerate at 44Khz 2012-12-03 03:21:10 +01:00
twinaphex 7403faa608 HAVE_NEON define seems to give problems - WANT_NEON seems to work
- so quick-fix hack for now
2012-12-03 00:20:21 +01:00
twinaphex 63cf9247f1 (Hermite) Add log 2012-12-02 23:53:08 +01:00
twinaphex 1c9dec56a8 (NEON/Android) Some fixes 2012-12-02 23:50:32 +01:00
Themaister 2b04e1ece6 Start adding NEON sinc. 2012-12-03 00:22:51 +01:00
Themaister 511995311f Fix very stupid SINC bug.
Note to self: Don't write code when you're
an emotional wreck.
2012-12-02 16:57:04 +01:00
Themaister 92616a66a7 Fix variable shadowing in hermite. 2012-12-02 10:51:28 +01:00
twinaphex a2b0f9afb6 (Android) Set audio_out rate to 44100 2012-12-02 09:09:33 +01:00
twinaphex 623822126a (Android) Set buffer count to 4 instead of 8 for Jelly Bean and
higher - test experimental lower latency for fast OpenSL mixer
2012-12-02 07:32:28 +01:00
Themaister 78d0edc4aa Don't use a crazy large phase LUT. 2012-11-29 17:27:21 +01:00
Themaister c1a00fac4d Improve ratio accuracy in SINC. 2012-11-29 11:49:57 +01:00
Themaister f2e02bde1e Guard against high frequency aliasing a bit. 2012-11-25 14:54:07 +01:00
Themaister ccd1449aa8 Fix hermite cracking when ratio < 1.0. 2012-11-25 12:32:24 +01:00
twinaphex aae3b10169 Move baked-in dependencies to 'deps' directory 2012-11-20 03:34:45 +01:00
twinaphex 1d99cb62a2 (Xbox 1) Build fixes - don't compile in pragma comments for
XBOX
2012-11-15 14:24:56 +01:00
Themaister 0e729bcaa0 Style nits. 2012-11-15 09:40:31 +01:00
OV2 54d39dff74 win32: make d3d9 compile in msvc, add linker pragmas to source files 2012-11-14 21:07:06 +01:00
Themaister 752b7608e7 Fix audio test. 2012-11-07 23:42:23 +01:00
Themaister 6421fe248b Optimize SINC resampler.
Trade memory for performance. Avoid using linear interpolation
between phases.
2012-11-07 23:27:31 +01:00
Themaister bebe0d78a7 Optimize sinc for AVX as well.
Disable it for now however, as it's slightly slower
than SSE1 for the few taps we're using.

From testing, it's 10-20% faster when number of taps are increased.
The AVX path might need some more tuning, but it's fair to
assume the algorithm is memory bound.
2012-11-06 18:52:09 +01:00