blender/extern/audaspace
Sebastian Parborg 6dfb1cdf22 Fix: Crash/Assert in the pusleaudio lib when pausing playback
After 91eb50ec2f436c026233f184a2dfc7141d6f3b44, we would get random crashes/asserts from the pulseaudio library like:
`Assertion 'e->mainloop->n_enabled_defer_events > 0' failed at ../pulseaudio-17.0/src/pulse/mainloop.c:261, function mainloop_defer_enable(). Aborting.`

It seems like we would run into a race condition if we didn't guard the
pulseaudio flush command with the pulseaudio mutex.

This is probably because the pulseaudio thread would try to read the
buffer for a tiny bit even after pausing the playback.

Sadly the only way to reproduce this is to playback any scene (seem to happen more often if A/V sync is on) and spam play/pause.
Note that I could not reproduce this on every computer I tested this on.

But by expanding the main pulseaudio mutex lock, I can't seem to reproduce this anymore.
So I think that is the correct solution.

Pull Request: https://projects.blender.org/blender/blender/pulls/120072
2024-03-29 19:47:16 +01:00
..
bindings Extern: update Audaspace to latest version 2024-02-29 12:08:00 +01:00
config Fix audaspace mess in 2.8 2018-02-01 09:22:57 -02:00
include Audaspace: Bugfix for PulseAudio ported from upstream. 2024-03-08 17:02:26 +01:00
plugins Fix: Crash/Assert in the pusleaudio lib when pausing playback 2024-03-29 19:47:16 +01:00
src Audaspace: Bugfix for PulseAudio ported from upstream. 2024-03-08 17:02:26 +01:00
AUTHORS Audaspace: porting changes from upstream. 2023-05-25 23:00:22 +02:00
blender_config.cmake Build: forward SDL defines to audaspace 2024-03-01 16:14:47 +11:00
CHANGES Audaspace: porting changes from upstream. 2023-04-08 10:36:40 +02:00
CMakeLists.txt Audaspace: porting changes from upstream. 2024-03-05 18:22:17 +01:00
INSTALL Audaspace: porting changes from upstream. 2023-04-08 10:36:40 +02:00
LICENSE Fix audaspace mess in 2.8 2018-02-01 09:22:57 -02:00
README.blender Extern: update Audaspace to latest version 2024-02-29 12:08:00 +01:00
README.md Audaspace: porting changes from upstream. 2023-04-08 10:36:40 +02:00

audaspace

Audaspace (pronounced "outer space") is a high level audio library written in C++ with language bindings for Python for example. It started out as the audio engine of the 3D modelling application Blender and is now released as a standalone library.

Documentation and Community

The documentation including guides for building and installing, demos, tutorials as well as the API reference for C++, C and python can be found on https://audaspace.github.io.

Bug reports and feature requests should go to the issue tracker.

For any other discussions about audaspace there is a mailing list and there is also the IRC channel #audaspace on irc.freenode.net.

Features

The following (probably incomplete) features are supported by audaspace:

  • input/output devices
  • input from microphones, line in, etc.
  • output devices including 3D audio support
  • file reading/writing
  • filters like low-/highpass and effects like delay, reverse or fading
  • generators for simple waveforms like silence, sine and triangle
  • respecification - this term is used for changing stream parameters which are
  • channel count - channel remapping
  • sample format - the library internally uses 32 bit floats
  • sample rate - resampling
  • simple (superposition, joining and ping-pong aka forward-reverse) and more complex (non-linear audio editing) sequencing of sounds

License

Copyright © 2009-2023 Jörg Müller. All rights reserved.

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.