[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39629] branches/soc-2011-pepper: 3D Audio GSoC:
Joerg Mueller
nexyon at gmail.com
Mon Aug 22 20:59:57 CEST 2011
Revision: 39629
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39629
Author: nexyon
Date: 2011-08-22 18:59:56 +0000 (Mon, 22 Aug 2011)
Log Message:
-----------
3D Audio GSoC:
Final GSoC commit.
* Bugfix: Negative frames crashed
* Bugfix: JOS sample buffer size prediction error (wasted memory)
* Optimisation: for JOS upsampling (around 12 % difference measured here)
* Optimisation: Better filter for JOS resampling
* Bugfix: Error in relative 3D audio code.
* Removed Attenuation
* Bugfix: Multiple scenes in BGE lead to errors, BGE audio now all relative, to support multiple scenes.
Modified Paths:
--------------
branches/soc-2011-pepper/intern/audaspace/intern/AUD_C-API.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReader.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReaderCoeff.cpp
branches/soc-2011-pepper/intern/audaspace/intern/AUD_SoftwareDevice.cpp
branches/soc-2011-pepper/release/scripts/startup/bl_ui/space_sequencer.py
branches/soc-2011-pepper/source/blender/makesrna/intern/rna_sequencer.c
branches/soc-2011-pepper/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
branches/soc-2011-pepper/source/gameengine/Ketsji/KX_SoundActuator.cpp
Modified: branches/soc-2011-pepper/intern/audaspace/intern/AUD_C-API.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/intern/AUD_C-API.cpp 2011-08-22 18:56:13 UTC (rev 39628)
+++ branches/soc-2011-pepper/intern/audaspace/intern/AUD_C-API.cpp 2011-08-22 18:59:56 UTC (rev 39629)
@@ -967,7 +967,10 @@
{
AUD_AnimateableProperty* prop = (*entry)->getAnimProperty(type);
if(animated)
- prop->write(data, frame, 1);
+ {
+ if(frame >= 0)
+ prop->write(data, frame, 1);
+ }
else
prop->write(data);
}
@@ -976,7 +979,10 @@
{
AUD_AnimateableProperty* prop = dynamic_cast<AUD_SequencerFactory*>(sequencer->get())->getAnimProperty(type);
if(animated)
- prop->write(data, frame, 1);
+ {
+ if(frame >= 0)
+ prop->write(data, frame, 1);
+ }
else
prop->write(data);
}
Modified: branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReader.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReader.cpp 2011-08-22 18:56:13 UTC (rev 39628)
+++ branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReader.cpp 2011-08-22 18:59:56 UTC (rev 39629)
@@ -100,7 +100,7 @@
// then check if afterwards the length is enough for the maximum rate
if(len + size < num_samples * AUD_RATE_MAX)
- len = size - num_samples * AUD_RATE_MAX;
+ len = num_samples * AUD_RATE_MAX - size;
if(m_n > len)
{
@@ -130,58 +130,101 @@
\
for(unsigned int t = 0; t < length; t++)\
{\
- factor = (m_last_factor * (length - t) + target_factor * t) / length;\
+ factor = (m_last_factor * (length - t - 1) + target_factor * (t + 1)) / length;\
\
+ memset(sums, 0, sizeof(double) * m_channels);\
+\
if(factor >= 1)\
- f_increment = m_L;\
- else\
- f_increment = factor * m_L;\
+ {\
+ P = double_to_fp(m_P * m_L);\
\
- P_increment = double_to_fp(f_increment);\
- P = double_to_fp(m_P * f_increment);\
+ end = floor(m_len / double(m_L) - m_P) - 1;\
+ if(m_n < end)\
+ end = m_n;\
\
- end = (int_to_fp(m_len) - P) / P_increment - 1;\
- if(m_n < end)\
- end = m_n;\
+ data = buf + (m_n - end) * m_channels;\
+ l = fp_to_int(P);\
+ eta = fp_rest_to_double(P);\
+ l += m_L * end;\
\
- memset(sums, 0, sizeof(double) * m_channels);\
+ for(i = 0; i <= end; i++)\
+ {\
+ v = coeff[l] + eta * (coeff[l+1] - coeff[l]);\
+ l -= m_L;\
+ left\
+ }\
\
- P += P_increment * end;\
- data = buf + (m_n - end) * m_channels;\
- l = fp_to_int(P);\
+ P = int_to_fp(m_L) - P;\
\
- for(i = 0; i <= end; i++)\
- {\
+ end = floor((m_len - 1) / double(m_L) + m_P) - 1;\
+ if(m_cache_valid - m_n - 2 < end)\
+ end = m_cache_valid - m_n - 2;\
+\
+ data = buf + (m_n + 2 + end) * m_channels - 1;\
+ l = fp_to_int(P);\
eta = fp_rest_to_double(P);\
- v = coeff[l] + eta * (coeff[l+1] - coeff[l]);\
- P -= P_increment;\
- l = fp_to_int(P);\
- left\
+ l += m_L * end;\
+\
+ for(i = 0; i <= end; i++)\
+ {\
+ v = coeff[l] + eta * (coeff[l+1] - coeff[l]);\
+ l -= m_L;\
+ right\
+ }\
+\
+ for(channel = 0; channel < m_channels; channel++)\
+ {\
+ *buffer = sums[channel];\
+ buffer++;\
+ }\
}\
+ else\
+ {\
+ f_increment = factor * m_L;\
+ P_increment = double_to_fp(f_increment);\
+ P = double_to_fp(m_P * f_increment);\
\
- P = -P;\
+ end = (int_to_fp(m_len) - P) / P_increment - 1;\
+ if(m_n < end)\
+ end = m_n;\
\
- end = (int_to_fp(m_len) - P) / P_increment - 1;\
- if(m_cache_valid - m_n - 2 < end)\
- end = m_cache_valid - m_n - 2;\
+ P += P_increment * end;\
+ data = buf + (m_n - end) * m_channels;\
+ l = fp_to_int(P);\
\
- P += P_increment * end;\
- data = buf + (m_n + 2 + end) * m_channels - 1;\
- l = fp_to_int(P);\
+ for(i = 0; i <= end; i++)\
+ {\
+ eta = fp_rest_to_double(P);\
+ v = coeff[l] + eta * (coeff[l+1] - coeff[l]);\
+ P -= P_increment;\
+ l = fp_to_int(P);\
+ left\
+ }\
\
- for(i = 0; i <= end; i++)\
- {\
- eta = fp_rest_to_double(P);\
- v = coeff[l] + eta * (coeff[l+1] - coeff[l]);\
- P -= P_increment;\
+ P = -P;\
+\
+ end = (int_to_fp(m_len) - P) / P_increment - 1;\
+ if(m_cache_valid - m_n - 2 < end)\
+ end = m_cache_valid - m_n - 2;\
+\
+ P += P_increment * end;\
+ data = buf + (m_n + 2 + end) * m_channels - 1;\
l = fp_to_int(P);\
- right\
- }\
\
- for(channel = 0; channel < m_channels; channel++)\
- {\
- *buffer = f_increment / m_L * sums[channel];\
- buffer++;\
+ for(i = 0; i <= end; i++)\
+ {\
+ eta = fp_rest_to_double(P);\
+ v = coeff[l] + eta * (coeff[l+1] - coeff[l]);\
+ P -= P_increment;\
+ l = fp_to_int(P);\
+ right\
+ }\
+\
+ for(channel = 0; channel < m_channels; channel++)\
+ {\
+ *buffer = f_increment / m_L * sums[channel];\
+ buffer++;\
+ }\
}\
\
m_P += fmod(1.0 / factor, 1.0);\
Modified: branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReaderCoeff.cpp
===================================================================
--- branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReaderCoeff.cpp 2011-08-22 18:56:13 UTC (rev 39628)
+++ branches/soc-2011-pepper/intern/audaspace/intern/AUD_JOSResampleReaderCoeff.cpp 2011-08-22 18:59:56 UTC (rev 39629)
@@ -1,29295 +1,32517 @@
#include "AUD_JOSResampleReader.h"
-// sinc filter coefficients, Nz = 138, L = 2048, freq = 0.965, Kaiser Window B = 16
+// sinc filter coefficients, Nz = 136, L = 2304, freq = 0.963904, Kaiser Window B = 16
+const int AUD_JOSResampleReader::m_len = 325078;
+const int AUD_JOSResampleReader::m_L = 2304;
+
const float AUD_JOSResampleReader::m_coeff[] = {
- 9.650000000e-01f, 9.649996475e-01f, 9.649985899e-01f, 9.649968274e-01f, 9.649943598e-01f, 9.649911871e-01f, 9.649873095e-01f, 9.649827268e-01f, 9.649774392e-01f, 9.649714465e-01f,
- 9.649647489e-01f, 9.649573462e-01f, 9.649492386e-01f, 9.649404260e-01f, 9.649309085e-01f, 9.649206860e-01f, 9.649097586e-01f, 9.648981263e-01f, 9.648857891e-01f, 9.648727470e-01f,
- 9.648590001e-01f, 9.648445483e-01f, 9.648293917e-01f, 9.648135302e-01f, 9.647969640e-01f, 9.647796931e-01f, 9.647617174e-01f, 9.647430369e-01f, 9.647236518e-01f, 9.647035620e-01f,
- 9.646827676e-01f, 9.646612685e-01f, 9.646390649e-01f, 9.646161567e-01f, 9.645925440e-01f, 9.645682268e-01f, 9.645432051e-01f, 9.645174791e-01f, 9.644910486e-01f, 9.644639137e-01f,
- 9.644360745e-01f, 9.644075311e-01f, 9.643782833e-01f, 9.643483314e-01f, 9.643176753e-01f, 9.642863151e-01f, 9.642542508e-01f, 9.642214824e-01f, 9.641880100e-01f, 9.641538336e-01f,
- 9.641189534e-01f, 9.640833693e-01f, 9.640470813e-01f, 9.640100896e-01f, 9.639723941e-01f, 9.639339950e-01f, 9.638948922e-01f, 9.638550858e-01f, 9.638145760e-01f, 9.637733626e-01f,
- 9.637314459e-01f, 9.636888257e-01f, 9.636455023e-01f, 9.636014756e-01f, 9.635567458e-01f, 9.635113128e-01f, 9.634651767e-01f, 9.634183376e-01f, 9.633707956e-01f, 9.633225507e-01f,
- 9.632736029e-01f, 9.632239524e-01f, 9.631735992e-01f, 9.631225434e-01f, 9.630707850e-01f, 9.630183241e-01f, 9.629651608e-01f, 9.629112952e-01f, 9.628567272e-01f, 9.628014571e-01f,
- 9.627454848e-01f, 9.626888104e-01f, 9.626314341e-01f, 9.625733558e-01f, 9.625145757e-01f, 9.624550939e-01f, 9.623949103e-01f, 9.623340252e-01f, 9.622724385e-01f, 9.622101504e-01f,
- 9.621471609e-01f, 9.620834702e-01f, 9.620190782e-01f, 9.619539852e-01f, 9.618881911e-01f, 9.618216961e-01f, 9.617545002e-01f, 9.616866036e-01f, 9.616180063e-01f, 9.615487084e-01f,
- 9.614787100e-01f, 9.614080113e-01f, 9.613366122e-01f, 9.612645129e-01f, 9.611917135e-01f, 9.611182140e-01f, 9.610440147e-01f, 9.609691155e-01f, 9.608935166e-01f, 9.608172180e-01f,
- 9.607402200e-01f, 9.606625225e-01f, 9.605841256e-01f, 9.605050296e-01f, 9.604252344e-01f, 9.603447402e-01f, 9.602635472e-01f, 9.601816553e-01f, 9.600990647e-01f, 9.600157755e-01f,
- 9.599317879e-01f, 9.598471019e-01f, 9.597617176e-01f, 9.596756352e-01f, 9.595888548e-01f, 9.595013764e-01f, 9.594132003e-01f, 9.593243264e-01f, 9.592347550e-01f, 9.591444862e-01f,
- 9.590535200e-01f, 9.589618566e-01f, 9.588694961e-01f, 9.587764387e-01f, 9.586826844e-01f, 9.585882334e-01f, 9.584930858e-01f, 9.583972417e-01f, 9.583007013e-01f, 9.582034646e-01f,
- 9.581055319e-01f, 9.580069031e-01f, 9.579075786e-01f, 9.578075583e-01f, 9.577068425e-01f, 9.576054313e-01f, 9.575033247e-01f, 9.574005229e-01f, 9.572970262e-01f, 9.571928345e-01f,
- 9.570879480e-01f, 9.569823669e-01f, 9.568760914e-01f, 9.567691215e-01f, 9.566614573e-01f, 9.565530992e-01f, 9.564440471e-01f, 9.563343012e-01f, 9.562238616e-01f, 9.561127286e-01f,
- 9.560009023e-01f, 9.558883827e-01f, 9.557751701e-01f, 9.556612646e-01f, 9.555466663e-01f, 9.554313754e-01f, 9.553153921e-01f, 9.551987165e-01f, 9.550813487e-01f, 9.549632890e-01f,
- 9.548445374e-01f, 9.547250941e-01f, 9.546049594e-01f, 9.544841332e-01f, 9.543626158e-01f, 9.542404074e-01f, 9.541175082e-01f, 9.539939182e-01f, 9.538696376e-01f, 9.537446666e-01f,
- 9.536190054e-01f, 9.534926541e-01f, 9.533656130e-01f, 9.532378821e-01f, 9.531094616e-01f, 9.529803517e-01f, 9.528505526e-01f, 9.527200644e-01f, 9.525888874e-01f, 9.524570216e-01f,
- 9.523244673e-01f, 9.521912246e-01f, 9.520572938e-01f, 9.519226749e-01f, 9.517873681e-01f, 9.516513737e-01f, 9.515146919e-01f, 9.513773227e-01f, 9.512392664e-01f, 9.511005231e-01f,
- 9.509610931e-01f, 9.508209765e-01f, 9.506801736e-01f, 9.505386844e-01f, 9.503965092e-01f, 9.502536481e-01f, 9.501101014e-01f, 9.499658693e-01f, 9.498209518e-01f, 9.496753493e-01f,
- 9.495290619e-01f, 9.493820898e-01f, 9.492344333e-01f, 9.490860923e-01f, 9.489370673e-01f, 9.487873584e-01f, 9.486369657e-01f, 9.484858895e-01f, 9.483341300e-01f, 9.481816874e-01f,
- 9.480285618e-01f, 9.478747535e-01f, 9.477202627e-01f, 9.475650895e-01f, 9.474092343e-01f, 9.472526971e-01f, 9.470954782e-01f, 9.469375778e-01f, 9.467789961e-01f, 9.466197334e-01f,
- 9.464597897e-01f, 9.462991654e-01f, 9.461378606e-01f, 9.459758756e-01f, 9.458132105e-01f, 9.456498657e-01f, 9.454858412e-01f, 9.453211373e-01f, 9.451557543e-01f, 9.449896923e-01f,
- 9.448229516e-01f, 9.446555323e-01f, 9.444874348e-01f, 9.443186592e-01f, 9.441492057e-01f, 9.439790746e-01f, 9.438082660e-01f, 9.436367803e-01f, 9.434646176e-01f, 9.432917782e-01f,
- 9.431182623e-01f, 9.429440701e-01f, 9.427692018e-01f, 9.425936577e-01f, 9.424174380e-01f, 9.422405430e-01f, 9.420629728e-01f, 9.418847278e-01f, 9.417058080e-01f, 9.415262138e-01f,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list