History log of /haiku/src/add-ons/media/media-add-ons/mixer/MixerCore.cpp
Revision Date Author Comments
# 425ac1b6 20-Jun-2023 Alexander von Gluck IV <kallisti5@unixzen.com>

refactor: Swap %Ld for %lld in all format usages

* %Ld is an undocumented alias for %lld in glibc.
* muslc doesn't implement it for this reason.
* While we will likely never drop %Ld support,
lets clean house and set a better example.

Change-Id: Id46dad3104abae483e80cc5c05d1464d3ecd8030
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6636
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 95080923 15-Aug-2022 Michael Brumbelow <mbrumbelow@mac.com>

Removed 'register' storage class compiler warnings

Change-Id: Iba89a9d0845bf7e816983f903281d33e273f6e35
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5558
Reviewed-by: X512 <danger_mail@list.ru>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 775eaaaf 10-Dec-2020 Máximo Castañeda <antiswen@yahoo.es>

Mixer: fix debug build

Change-Id: I9e998d8fd35b7fd3d505067bd30e1bbcbcdd8e96
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3508
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# cfe72209 27-Nov-2020 Máximo Castañeda <antiswen@yahoo.es>

U8 sound format

U8 sound has a nonzero value as its zero amplitude, so it needs to be
special-cased when mixing, applying gains and other transformations.

Change-Id: I5ad96b5f39d454bffad2449ac9f27b2ae61e2ccd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3470
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 7abf1b6f 21-Sep-2019 Murai Takashi <tmurai01@gmail.com>

media-add-ons/mixer: Fix 'new[]' array freed with 'delete'

fMixBufferChannelTypes is allocated by new[] in _ApplyOutputFormat(),
but freed by delete.
Pointed out by LGTM.

Change-Id: I07b85801e0103094c5751306ea2c50ca9354ddb9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1877
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>


# 1fb59be1 14-Apr-2018 Jérôme Duval <jerome.duval@gmail.com>

Fix some usages of BStackOrHeapArray.

Validates the buffer with IsValid() before actually using it. Thanks Rene!


# 17078f99 16-Apr-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

MixerCore: Use a normal acquire_sem call

* Make the thread really wake up only when requested.


# 598880fc 11-Apr-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

MixerCore: Remove wrong flag


# b0dd37b7 11-Apr-2016 Dario Casalinuovo <b.vitruvio@gmail.com>

AudioMixer: Review and rework synchronization

* The event time is managed through the main node control
loop.
* Make the mix thread to activate only when needed.
* Make the locking more simple and remove a race condition,
this will make the thread to be more silent too.


# f4c2f7eb 10-Jan-2014 Jonathan Schleifer <js@webkeks.org>

Remove variable length arrays of non-PODs.

Variable length arrays of non-PODs are not part of the C++ standard, but
a GNU extension that never worked correctly. Instead, BStackOrHeap array
is used now, which makes sure that it's not too big for the stack, calls
all constructors and is valid C++.


# 973f1214 10-May-2013 Jérôme Duval <jerome.duval@gmail.com>

mixer.media_addon: fixes 64 bit warnings


# b006bbe1 01-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Resolved TODO and implemented updating resampling implementation on the fly.
* Reordered some methods in the source to align with declaration order.
* Applied naming conventions for private methods.
* Switched asterix style in MixerInput.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38488 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a79b30c3 31-Aug-2010 Stephan Aßmus <superstippi@gmx.de>

* In the MixerInput, also use the Linear resampler if requested by the
settings. (There is a common "mixing frame rate" to which all inputs
resample, before the MixerCore resamples to the frame rate of the
output.)
* Some more coding style fixes in MixerCore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38479 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4cc71346 30-Aug-2010 Stephan Aßmus <superstippi@gmx.de>

Fixed more coding style violations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38446 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 77fa0021 12-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Enable the "interpolate" resampling method. Results are not as good as I expected, however.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38066 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff617a11 12-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Add a resampler that interpolates instead of dropping/copying samples.
* Not plugged anywhere yet.
* I'm not sure the downsampling is done properly, either.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38037 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b289aaf6 12-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* A BBuffer does not know where it came from, so
BBufferConsumer::BufferReceived() cannot know whom to send the "buffer is
late" notification (unless we only have a single input). To solve this, the
media_header now contains extra fields that can be used to create a
media_source object.
* Unfortunately, BBufferProducer::SendBuffer() cannot know the output either in
case there is more than one. Hence, I deprecated the existing SendBuffer()
call and moved it into "private" - IOW old sources using it won't compile
anymore under Haiku.
* I introduced a new SendBuffer() variant that also gets the media_source as
argument.
* Updated all sources (that are part of the image) to use the new variant.
* Removed some purposely commented out code in the audio mixer.
* Implemented late buffer notification, as well as late buffer handling in the
audio mixer; this is a bit of work in progress, so the debug output is left
in there.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36184 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a9cf57cf 02-Dec-2009 Axel Dörfler <axeld@pinc-software.de>

* Cleanup, no functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34437 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c4570c8 21-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

Also name these BLockers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b71c18c4 17-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Revert the unintentional commit from r30222. Sorry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30223 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 49705454 17-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Make header self-contained.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30222 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eef7a677 17-Sep-2008 Jérôme Duval <korli@users.berlios.de>

whitespace cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27600 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f0a85f97 07-Sep-2008 Jérôme Duval <korli@users.berlios.de>

* I misunderstood what means 24 bits B_AUDIO_INT (more than 2 years ago!): as audio data is left justified in a 32 bits container, we don't care much and convert as usual
32 bits data
* Echo audio driver doesn't support 24 bits in a 32 bits container as proposed by the media kit. We just manage 24 bits as 32 bits samples.
* The main benefit of this change is that the hda driver is now working with 24 bits samples (and 192khz).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27362 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bf7ab50d 03-Oct-2007 Stephan Aßmus <superstippi@gmx.de>

large patch by Bek (HOST team):
* style improvements, header reformatting, small refactoring and adding
of missing copyrights

(to Marcus: this is not the original patch, it has already been revised two
times by myself and I thought it was very nice now)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22426 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f916862c 13-Mar-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

Switched to using a local debug header file, instead of using the private media kit file.
This should prevent mixer from beeing build with debug enabled, when media kit is build with debug.
Thus CPU usage will be reduced as mixer no longer prints a lot of information to stdout.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16759 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff14d245 06-Feb-2006 Jérôme Duval <korli@users.berlios.de>

* mixer media addon builds on beos, fixed includes missing
* added 24 bits B_AUDIO_INT support (20 bits still missing)
Marcus please review and fix if needed


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dfbe8043 08-Sep-2003 beveloper <beveloper@nowhere.fake>

I fixed a timing bug. The mixer was accidentally sending itself
a notification about downstream latency change, when it really
should have send that to the connected inputs. This is now done
by the PublishEventLatencyChange() function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4567 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f91503b9 07-Sep-2003 beveloper <beveloper@nowhere.fake>

added a debbuging outputs, start threads always at high priority


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4539 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d91580cd 30-Aug-2003 beveloper <beveloper@nowhere.fake>

removed/fixed warnings


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4418 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1165d5e1 17-Aug-2003 beveloper <beveloper@nowhere.fake>

added support for a settings file,
some fixes in the deferred saving code,
added save/load to mixer connections


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4294 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 26bf7cd3 16-Aug-2003 beveloper <beveloper@nowhere.fake>

added mixer setup tab functionality and storage of settings


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4287 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b6270d60 02-Jul-2003 beveloper <beveloper@nowhere.fake>

Cleanup of MixerOutput class, the channel type is now used instead of channel designation or channel_mask
Implemented output channel remapping controls.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3813 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c63c7d0 02-Jul-2003 beveloper <beveloper@nowhere.fake>

Started implementing input and output channel mapping controls.
Optimized inner loop of mix thread, up to 10% faster now.
Moved some #includes around.
Added #define for maximum supported channel types.
Removed static buffers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3812 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c378a5ec 01-Jul-2003 beveloper <beveloper@nowhere.fake>

limit maximum latency


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3796 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b326a30e 30-Jun-2003 beveloper <beveloper@nowhere.fake>

implemented muting of the master output


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9391f0a5 30-Jun-2003 beveloper <beveloper@nowhere.fake>

added mixer gain controls


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3775 a95241bf-73f2-0310-859d-f6bbb57e9c96


# af8d0a4d 30-Jun-2003 beveloper <beveloper@nowhere.fake>

Fixed the input buffer looping bug that existed if an input wouldn't receive new buffers. Now kips inputs that have no available data.
When no input is connected, use a fast path for sending an empty buffer.
No more debugging output when DEUBG < 1


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3763 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2ca4723 30-Jun-2003 beveloper <beveloper@nowhere.fake>

cleanup of debugging code


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3761 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1081d7ce 30-Jun-2003 beveloper <beveloper@nowhere.fake>

now supports endian adjustment at the output


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3760 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 15dca740 30-Jun-2003 beveloper <beveloper@nowhere.fake>

a minor performance improvement


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3759 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fbd39201 30-Jun-2003 beveloper <beveloper@nowhere.fake>

uses about 20% less CPU now


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3757 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52ae1ec6 29-Jun-2003 beveloper <beveloper@nowhere.fake>

disabled double rate mixing, it's not useful with the current resampling implementation.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3750 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60e2e68c 29-Jun-2003 beveloper <beveloper@nowhere.fake>

finally it does mixing, but we should get rid of the CPU eating List template
at this place, as it internally calls malloc, free, new and delete quite often


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3748 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 806cf560 29-Jun-2003 beveloper <beveloper@nowhere.fake>

default channel assignment profiles


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3747 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fae6ce82 29-Jun-2003 beveloper <beveloper@nowhere.fake>

added output channel control functions,
made most often called functions inline


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3746 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 191033ef 29-Jun-2003 beveloper <beveloper@nowhere.fake>

debugging improvement, fixed locking, fixed sample copy bug in channel 1


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3730 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d5848e21 28-Jun-2003 beveloper <beveloper@nowhere.fake>

rewrote start and stop handling to allow connecting an input without
having an output, followed by starting the node.
fix some bugs of handling an unconnected output
added better locking to the mix thread


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3727 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d28117f 28-Jun-2003 beveloper <beveloper@nowhere.fake>

multiple bugfixes, but still many pops in output audio stream


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3725 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8df36cdd 25-Jun-2003 beveloper <beveloper@nowhere.fake>

Added experimental copying of the left channel from either input 1 or 0,
there seem to be some resampling related bugs


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3667 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 78563dca 25-Jun-2003 beveloper <beveloper@nowhere.fake>

use sample size when calculating channel offsets, no more buffer overruns


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3664 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 16cecbde 25-Jun-2003 beveloper <beveloper@nowhere.fake>

some workarounds, fMixStartTime is now always 0,
delay mix thread if timesource has negative time,
calculate correct time and frame base for mix thread


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3663 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b9bc8577 24-Jun-2003 beveloper <beveloper@nowhere.fake>

added mixing thread, as well as start and stop


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3660 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7b0daf5c 24-Jun-2003 beveloper <beveloper@nowhere.fake>

allocate mixer buffers of the correct size,
place incoming data in input specific mix buffer


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3646 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a4b8db85 20-Jun-2003 beveloper <beveloper@nowhere.fake>

identify mixer channels by a type number (0 to 31)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3587 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c6f7aae1 20-Jun-2003 beveloper <beveloper@nowhere.fake>

synced


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3586 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2e9d6607 20-Jun-2003 beveloper <beveloper@nowhere.fake>

mixer input buffer assignment and gain setting implemented


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3585 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e6c7c99f 19-Jun-2003 beveloper <beveloper@nowhere.fake>

added connecting/disconnecting of inputs/outputs
changed debug functions
added multiaudio format correction
added workaround for broken BeOS R5 media_format:SpecializeTo()
fixed AudioMixer::Connect function to use correct destination
added utility functions
fixed locking bugs


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3575 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7ee2c804 15-Jun-2003 beveloper <beveloper@nowhere.fake>

Internal API rewritten, BMediaNode and derived classes functionality implemented.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3525 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be2a2489 11-Jun-2003 beveloper <beveloper@nowhere.fake>

Mixer rewrite, work in progress.
Moved Input and Output handling into the MixerCore class,
format and connection negotiation remains in AudioMixer class.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3481 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 678c2017 06-Jun-2003 beveloper <beveloper@nowhere.fake>

added new mixer components


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3446 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f4c2f7ebdb11576420c00fc4ecb23b32c3ce3137 10-Jan-2014 Jonathan Schleifer <js@webkeks.org>

Remove variable length arrays of non-PODs.

Variable length arrays of non-PODs are not part of the C++ standard, but
a GNU extension that never worked correctly. Instead, BStackOrHeap array
is used now, which makes sure that it's not too big for the stack, calls
all constructors and is valid C++.


# 973f12146b02030523dca4771408d1a0e8cf31ec 10-May-2013 Jérôme Duval <jerome.duval@gmail.com>

mixer.media_addon: fixes 64 bit warnings


# b006bbe1304984932aa2bb114a332a63c2c3cc03 01-Sep-2010 Stephan Aßmus <superstippi@gmx.de>

* Resolved TODO and implemented updating resampling implementation on the fly.
* Reordered some methods in the source to align with declaration order.
* Applied naming conventions for private methods.
* Switched asterix style in MixerInput.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38488 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a79b30c3b65a0035ccda843c6685accec08f833f 31-Aug-2010 Stephan Aßmus <superstippi@gmx.de>

* In the MixerInput, also use the Linear resampler if requested by the
settings. (There is a common "mixing frame rate" to which all inputs
resample, before the MixerCore resamples to the frame rate of the
output.)
* Some more coding style fixes in MixerCore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38479 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4cc71346c483bf425e3939bab9beb8b30d4243f9 30-Aug-2010 Stephan Aßmus <superstippi@gmx.de>

Fixed more coding style violations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38446 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 77fa0021d98154eb4781f55642663ac66bfdb637 12-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Enable the "interpolate" resampling method. Results are not as good as I expected, however.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38066 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff617a11dda81e55fd32cfc1a6e926d14c4fbe9e 12-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Add a resampler that interpolates instead of dropping/copying samples.
* Not plugged anywhere yet.
* I'm not sure the downsampling is done properly, either.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38037 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b289aaf66bbf6e173aa90fa194fc256965f1b34d 12-Apr-2010 Axel Dörfler <axeld@pinc-software.de>

* A BBuffer does not know where it came from, so
BBufferConsumer::BufferReceived() cannot know whom to send the "buffer is
late" notification (unless we only have a single input). To solve this, the
media_header now contains extra fields that can be used to create a
media_source object.
* Unfortunately, BBufferProducer::SendBuffer() cannot know the output either in
case there is more than one. Hence, I deprecated the existing SendBuffer()
call and moved it into "private" - IOW old sources using it won't compile
anymore under Haiku.
* I introduced a new SendBuffer() variant that also gets the media_source as
argument.
* Updated all sources (that are part of the image) to use the new variant.
* Removed some purposely commented out code in the audio mixer.
* Implemented late buffer notification, as well as late buffer handling in the
audio mixer; this is a bit of work in progress, so the debug output is left
in there.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36184 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a9cf57cff5dfe040f74a96705d98d6711b6b1b50 02-Dec-2009 Axel Dörfler <axeld@pinc-software.de>

* Cleanup, no functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34437 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c4570c80740649df7a25ae290e8601c948cc7b4 21-Oct-2009 Michael Lotz <mmlr@mlotz.ch>

Also name these BLockers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b71c18c4e8fbcb1a5a04af1992cd797c0cae0098 17-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Revert the unintentional commit from r30222. Sorry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30223 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4970545477381336577230bc7c5a2599265c06e1 17-Apr-2009 Stephan Aßmus <superstippi@gmx.de>

Make header self-contained.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30222 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eef7a6772e16e8d1c739d149588b549693894198 17-Sep-2008 Jérôme Duval <korli@users.berlios.de>

whitespace cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27600 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f0a85f978d3a208d80c5fc14e51e4a395aa38e66 07-Sep-2008 Jérôme Duval <korli@users.berlios.de>

* I misunderstood what means 24 bits B_AUDIO_INT (more than 2 years ago!): as audio data is left justified in a 32 bits container, we don't care much and convert as usual
32 bits data
* Echo audio driver doesn't support 24 bits in a 32 bits container as proposed by the media kit. We just manage 24 bits as 32 bits samples.
* The main benefit of this change is that the hda driver is now working with 24 bits samples (and 192khz).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27362 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bf7ab50d4ced3f1735551c8f6d9032a42e548f7e 03-Oct-2007 Stephan Aßmus <superstippi@gmx.de>

large patch by Bek (HOST team):
* style improvements, header reformatting, small refactoring and adding
of missing copyrights

(to Marcus: this is not the original patch, it has already been revised two
times by myself and I thought it was very nice now)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22426 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f916862c2ebbbf3a1fdeac1541fc75ded977bccf 13-Mar-2006 Marcus Overhagen <marcusoverhagen@gmail.com>

Switched to using a local debug header file, instead of using the private media kit file.
This should prevent mixer from beeing build with debug enabled, when media kit is build with debug.
Thus CPU usage will be reduced as mixer no longer prints a lot of information to stdout.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16759 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ff14d2457aff9cf4b08cb8d7765c1bbc450c2ba4 06-Feb-2006 Jérôme Duval <korli@users.berlios.de>

* mixer media addon builds on beos, fixed includes missing
* added 24 bits B_AUDIO_INT support (20 bits still missing)
Marcus please review and fix if needed


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dfbe8043fafe879bbceb621762b62d088a117690 08-Sep-2003 beveloper <beveloper@nowhere.fake>

I fixed a timing bug. The mixer was accidentally sending itself
a notification about downstream latency change, when it really
should have send that to the connected inputs. This is now done
by the PublishEventLatencyChange() function.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4567 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f91503b9d9106a94a75f9430a961bd0a2c07c7be 07-Sep-2003 beveloper <beveloper@nowhere.fake>

added a debbuging outputs, start threads always at high priority


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4539 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d91580cd9a9f39e74f086d5ca31d997a56c111a9 30-Aug-2003 beveloper <beveloper@nowhere.fake>

removed/fixed warnings


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4418 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1165d5e18aa006db62ac40a8d218d7affb5151f7 17-Aug-2003 beveloper <beveloper@nowhere.fake>

added support for a settings file,
some fixes in the deferred saving code,
added save/load to mixer connections


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4294 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 26bf7cd399550ff1c49b40a77780b0a0afbcfd14 16-Aug-2003 beveloper <beveloper@nowhere.fake>

added mixer setup tab functionality and storage of settings


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4287 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b6270d60b29ad49ae09811b7d0b4968989229908 02-Jul-2003 beveloper <beveloper@nowhere.fake>

Cleanup of MixerOutput class, the channel type is now used instead of channel designation or channel_mask
Implemented output channel remapping controls.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3813 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c63c7d061f2d4490205d48b1e5008c8a2cf95f2 02-Jul-2003 beveloper <beveloper@nowhere.fake>

Started implementing input and output channel mapping controls.
Optimized inner loop of mix thread, up to 10% faster now.
Moved some #includes around.
Added #define for maximum supported channel types.
Removed static buffers.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3812 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c378a5ecf8201e4b78c67eda53ec839697d52e12 01-Jul-2003 beveloper <beveloper@nowhere.fake>

limit maximum latency


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3796 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b326a30e21605eb8b3bb4a2b7598bb30bfcd8957 30-Jun-2003 beveloper <beveloper@nowhere.fake>

implemented muting of the master output


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3780 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9391f0a5526a6a1efb50e7ca73f1d07ac1c93ee2 30-Jun-2003 beveloper <beveloper@nowhere.fake>

added mixer gain controls


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3775 a95241bf-73f2-0310-859d-f6bbb57e9c96


# af8d0a4d4e15c210c51678cd34de4057e43cf96e 30-Jun-2003 beveloper <beveloper@nowhere.fake>

Fixed the input buffer looping bug that existed if an input wouldn't receive new buffers. Now kips inputs that have no available data.
When no input is connected, use a fast path for sending an empty buffer.
No more debugging output when DEUBG < 1


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3763 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2ca4723941de50864eb7ef575591629cabb3318 30-Jun-2003 beveloper <beveloper@nowhere.fake>

cleanup of debugging code


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3761 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1081d7ce81eaf819dbac48eaa95be2eabad7d269 30-Jun-2003 beveloper <beveloper@nowhere.fake>

now supports endian adjustment at the output


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3760 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 15dca7402cfd85f1cfd3912a102d7ce02f4a1d07 30-Jun-2003 beveloper <beveloper@nowhere.fake>

a minor performance improvement


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3759 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fbd392018b696c4db10a0ba757e91219516e7169 30-Jun-2003 beveloper <beveloper@nowhere.fake>

uses about 20% less CPU now


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3757 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52ae1ec688e5f8d9b7f0dcc1d3fba9f4ef3429e1 29-Jun-2003 beveloper <beveloper@nowhere.fake>

disabled double rate mixing, it's not useful with the current resampling implementation.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3750 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 60e2e68ce4ee2cd63621a47d1f174c9c5158dcd1 29-Jun-2003 beveloper <beveloper@nowhere.fake>

finally it does mixing, but we should get rid of the CPU eating List template
at this place, as it internally calls malloc, free, new and delete quite often


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3748 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 806cf560779319fd7bf7af4672926dcbaef3cc59 29-Jun-2003 beveloper <beveloper@nowhere.fake>

default channel assignment profiles


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3747 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fae6ce82e324e852c65c0d791056e749994bbfd6 29-Jun-2003 beveloper <beveloper@nowhere.fake>

added output channel control functions,
made most often called functions inline


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3746 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 191033ef7649dec787b14d158a54eed82d12c3b9 29-Jun-2003 beveloper <beveloper@nowhere.fake>

debugging improvement, fixed locking, fixed sample copy bug in channel 1


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3730 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d5848e21a402ad57ae434b9982560e0f9c2c0dbf 28-Jun-2003 beveloper <beveloper@nowhere.fake>

rewrote start and stop handling to allow connecting an input without
having an output, followed by starting the node.
fix some bugs of handling an unconnected output
added better locking to the mix thread


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3727 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8d28117ff7c15fa966ab55e20e5e343d89186097 28-Jun-2003 beveloper <beveloper@nowhere.fake>

multiple bugfixes, but still many pops in output audio stream


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3725 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8df36cdd65a951ddd995877cbe404efe366bb632 25-Jun-2003 beveloper <beveloper@nowhere.fake>

Added experimental copying of the left channel from either input 1 or 0,
there seem to be some resampling related bugs


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3667 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 78563dcaec7a619acac5e67d8c47393133e009e2 25-Jun-2003 beveloper <beveloper@nowhere.fake>

use sample size when calculating channel offsets, no more buffer overruns


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3664 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 16cecbde360eb5fc03598dc7d05fb2d9be9b6931 25-Jun-2003 beveloper <beveloper@nowhere.fake>

some workarounds, fMixStartTime is now always 0,
delay mix thread if timesource has negative time,
calculate correct time and frame base for mix thread


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3663 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b9bc85776c298ca9cfc114225ab0cf7c8cf5dfba 24-Jun-2003 beveloper <beveloper@nowhere.fake>

added mixing thread, as well as start and stop


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3660 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7b0daf5ccadfdb073a738f291a2f4a74b29c46f0 24-Jun-2003 beveloper <beveloper@nowhere.fake>

allocate mixer buffers of the correct size,
place incoming data in input specific mix buffer


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3646 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a4b8db85300e877ad70fa2c13110eb8e0ab173a5 20-Jun-2003 beveloper <beveloper@nowhere.fake>

identify mixer channels by a type number (0 to 31)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3587 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c6f7aae127dd54ab12acfac324ee538f4ff65ece 20-Jun-2003 beveloper <beveloper@nowhere.fake>

synced


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3586 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2e9d660756e64ccd9bd2b779020a167b8c7a5824 20-Jun-2003 beveloper <beveloper@nowhere.fake>

mixer input buffer assignment and gain setting implemented


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3585 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e6c7c99fc916e8a498ef51a4940838d9f864df6c 19-Jun-2003 beveloper <beveloper@nowhere.fake>

added connecting/disconnecting of inputs/outputs
changed debug functions
added multiaudio format correction
added workaround for broken BeOS R5 media_format:SpecializeTo()
fixed AudioMixer::Connect function to use correct destination
added utility functions
fixed locking bugs


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3575 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7ee2c8049caebce89fd72e544a5db9f94cc6613f 15-Jun-2003 beveloper <beveloper@nowhere.fake>

Internal API rewritten, BMediaNode and derived classes functionality implemented.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3525 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be2a24894fa4b3e2578b1d1994d33bbb2b935216 11-Jun-2003 beveloper <beveloper@nowhere.fake>

Mixer rewrite, work in progress.
Moved Input and Output handling into the MixerCore class,
format and connection negotiation remains in AudioMixer class.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3481 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 678c20170c8b023b7d2e297b3ac436dbdea61e52 06-Jun-2003 beveloper <beveloper@nowhere.fake>

added new mixer components


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3446 a95241bf-73f2-0310-859d-f6bbb57e9c96