History log of /haiku/src/add-ons/media/media-add-ons/mixer/Resampler.cpp
Revision Date Author Comments
# 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>


# 2e68fbd2 11-Dec-2020 Máximo Castañeda <antiswen@yahoo.es>

Fix wrap for AUDIO_INT

Floats don't have enough precision for all 32 bit integers. In
particular, near INT32_MAX their value is INT32_MAX + 1, which, when
converted back to int becomes INT32_MIN.

Change-Id: Ief3c1177b4f69baac13df5bac977882fea95ae01
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3511
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>


# 27606dae 08-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

Mixer resampler: refactor using templates.

There is no need to copypaste the resampling code which is mostly the
same for all formats. However, gcc2 is confused by member function
templates (I hit an internal compiler error) so the resampling code was
moved to a static function instead.


# 78341a93 30-Jul-2012 John Scipione <jscipione@gmail.com>

Revert "Fix gcc2 build on Mac OS X Lion"

now that Alex Smith has fixed the build system on Lion this
work-around can now be reverted.

This reverts commit 7c369a4b3ff7b9204bb71c039489a82e78d55955.


# 7c369a4b 07-Apr-2012 John Scipione <jscipione@gmail.com>

Fix gcc2 build on Mac OS X Lion.

The gcc2 cross-compiler built on Mac OS X Lion has a bug in it
where it is erroring with 'cast specifies signature type' when
assigning 0 or NULL to a pointer to a member fuction. NULL in this
instance is correctly converted to 0 since it is illegal to assign
((void*)0) to a pointer to a member function. However, it should
be legal to assign 0 to a pointer to a member function. Thus, there
is a bug. Since I can't fix the gcc2 compiler I am working around
this bug by assigning the pointer to a do nothing function instead.

My host compiler version is
i686-apple-darwin11-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)

The same error occurs using the default gcc-llvm compiler and
a standard gcc 4.61 built from source. This bug does not occur on
Mac OS X 10.6 gcc2 or gcc4, nor does it occur on Mac OS X 10.7 with
the gcc4 cross-compiler.

If and when we decide to finally leave gcc2 behind we can revert this
change.


# 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


# 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


# 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


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

added haiku-mixer-cvs
added float to 20bits convert method
fix the 24 bits one
clean up Resampler.h


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16478 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


# c6a2e89f 11-Oct-2004 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed small typos in the comments


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


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

most likely fixed downsampling bugs


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3720 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


# fb71d3a9 03-Jun-2003 beveloper <beveloper@nowhere.fake>

fixed copy&paste errors


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


# 9b875fba 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added remaining float_to_*()


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


# 88e430cb 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added remaining *_to_float()


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


# 7ca83dac 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added float_to_float resampling


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


# 575526ff 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added a resampling class


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


# 27606dae3658767f5995699ada7fc8a645677ee5 08-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

Mixer resampler: refactor using templates.

There is no need to copypaste the resampling code which is mostly the
same for all formats. However, gcc2 is confused by member function
templates (I hit an internal compiler error) so the resampling code was
moved to a static function instead.


# 78341a9351713b13dc9097957d467dfe6e4b636c 30-Jul-2012 John Scipione <jscipione@gmail.com>

Revert "Fix gcc2 build on Mac OS X Lion"

now that Alex Smith has fixed the build system on Lion this
work-around can now be reverted.

This reverts commit 7c369a4b3ff7b9204bb71c039489a82e78d55955.


# 7c369a4b3ff7b9204bb71c039489a82e78d55955 07-Apr-2012 John Scipione <jscipione@gmail.com>

Fix gcc2 build on Mac OS X Lion.

The gcc2 cross-compiler built on Mac OS X Lion has a bug in it
where it is erroring with 'cast specifies signature type' when
assigning 0 or NULL to a pointer to a member fuction. NULL in this
instance is correctly converted to 0 since it is illegal to assign
((void*)0) to a pointer to a member function. However, it should
be legal to assign 0 to a pointer to a member function. Thus, there
is a bug. Since I can't fix the gcc2 compiler I am working around
this bug by assigning the pointer to a do nothing function instead.

My host compiler version is
i686-apple-darwin11-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)

The same error occurs using the default gcc-llvm compiler and
a standard gcc 4.61 built from source. This bug does not occur on
Mac OS X 10.6 gcc2 or gcc4, nor does it occur on Mac OS X 10.7 with
the gcc4 cross-compiler.

If and when we decide to finally leave gcc2 behind we can revert this
change.


# 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


# 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


# 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


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

added haiku-mixer-cvs
added float to 20bits convert method
fix the 24 bits one
clean up Resampler.h


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16478 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


# c6a2e89fec67d7083b5af37efb64d1b599d5d127 11-Oct-2004 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed small typos in the comments


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


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

most likely fixed downsampling bugs


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3720 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


# fb71d3a960348e23fd295a2304d961e1388c8b10 03-Jun-2003 beveloper <beveloper@nowhere.fake>

fixed copy&paste errors


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


# 9b875fba0c595319d00b092f77119f682d8f378a 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added remaining float_to_*()


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


# 88e430cbebce77a23304a89177ae8e9dcbd6cede 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added remaining *_to_float()


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


# 7ca83dacf00d14a9424026a2b038497c3e1e58f0 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added float_to_float resampling


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


# 575526ff3480553ab6c41cb90dc5ba8d66d09fa2 03-Jun-2003 beveloper <beveloper@nowhere.fake>

added a resampling class


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