DeprecatedBuildAndroid » History » Version 9
Denis 'GNUtoo' Carikli, 08/26/2009 10:42 AM
sound working
| 1 | 1 | Denis 'GNUtoo' Carikli | == Build system == |
|---|---|---|---|
| 2 | 8 | Denis 'GNUtoo' Carikli | * root your phone |
| 3 | * Backup your current system!!! |
||
| 4 | 1 | Denis 'GNUtoo' Carikli | * Check out the Dream Android repository following that howto: [http://source.android.com/documentation/building-for-dream],but be carefull...DO NOT RUN extract-files.sh...it would put proprietary files in your build,that you can't even redistribute |
| 5 | Android use a custom Makefile based buildsystem |
||
| 6 | 8 | Denis 'GNUtoo' Carikli | * Add the patches that can be find here [http://groups.fsf.org/wiki/Freest_hardware_comparisons/replicant] |
| 7 | * Add this patch for sound: |
||
| 8 | {{{ |
||
| 9 | diff --git a/include/hardware_legacy/AudioHardwareInterface.h b/include/hardware_legacy/AudioHardwareInterface.h |
||
| 10 | index 0aa3a95..371ee48 100644 |
||
| 11 | --- a/include/hardware_legacy/AudioHardwareInterface.h |
||
| 12 | +++ b/include/hardware_legacy/AudioHardwareInterface.h |
||
| 13 | -211,8 +211,7 @@ public: |
||
| 14 | int format, |
||
| 15 | int channelCount, |
||
| 16 | uint32_t sampleRate, |
||
| 17 | - status_t *status, |
||
| 18 | - AudioSystem::audio_in_acoustics acoustics) = 0; |
||
| 19 | + status_t *status) = 0; |
||
| 20 | |||
| 21 | /**This method dumps the state of the audio hardware */ |
||
| 22 | virtual status_t dumpState(int fd, const Vector<String16>& args) = 0; |
||
| 23 | diff --git a/libs/audioflinger/A2dpAudioInterface.cpp b/libs/audioflinger/A2dpAudioInterface.cpp |
||
| 24 | index b6d5078..15ce1dd 100644 |
||
| 25 | --- a/libs/audioflinger/A2dpAudioInterface.cpp |
||
| 26 | +++ b/libs/audioflinger/A2dpAudioInterface.cpp |
||
| 27 | -71,8 +71,7 @@ AudioStreamOut* A2dpAudioInterface::openOutputStream( |
||
| 28 | } |
||
| 29 | |||
| 30 | AudioStreamIn* A2dpAudioInterface::openInputStream( |
||
| 31 | - int format, int channelCount, uint32_t sampleRate, status_t *status, |
||
| 32 | - AudioSystem::audio_in_acoustics acoustics) |
||
| 33 | + int format, int channelCount, uint32_t sampleRate, status_t *status) |
||
| 34 | { |
||
| 35 | if (status) |
||
| 36 | *status = -1; |
||
| 37 | diff --git a/libs/audioflinger/A2dpAudioInterface.h b/libs/audioflinger/A2dpAudioInterface.h |
||
| 38 | index 7901a8c..e67f05f 100644 |
||
| 39 | --- a/libs/audioflinger/A2dpAudioInterface.h |
||
| 40 | +++ b/libs/audioflinger/A2dpAudioInterface.h |
||
| 41 | -58,8 +58,7 @@ public: |
||
| 42 | int format, |
||
| 43 | int channelCount, |
||
| 44 | uint32_t sampleRate, |
||
| 45 | - status_t *status, |
||
| 46 | - AudioSystem::audio_in_acoustics acoustics); |
||
| 47 | + status_t *status); |
||
| 48 | |||
| 49 | protected: |
||
| 50 | virtual status_t doRouting(); |
||
| 51 | diff --git a/libs/audioflinger/AudioDumpInterface.h b/libs/audioflinger/AudioDumpInterface.h |
||
| 52 | index 9a94102..42204d6 100644 |
||
| 53 | --- a/libs/audioflinger/AudioDumpInterface.h |
||
| 54 | +++ b/libs/audioflinger/AudioDumpInterface.h |
||
| 55 | -78,9 +78,8 @@ public: |
||
| 56 | virtual status_t setParameter(const char* key, const char* value) |
||
| 57 | {return mFinalInterface->setParameter(key, value);} |
||
| 58 | |||
| 59 | - virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status, |
||
| 60 | - AudioSystem::audio_in_acoustics acoustics) |
||
| 61 | - {return mFinalInterface->openInputStream( format, channelCount, sampleRate, status, acoustics);} |
||
| 62 | + virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status) |
||
| 63 | + {return mFinalInterface->openInputStream( format, channelCount, sampleRate, status);} |
||
| 64 | |||
| 65 | virtual status_t dump(int fd, const Vector<String16>& args) { return mFinalInterface->dumpState(fd, args); } |
||
| 66 | |||
| 67 | diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp |
||
| 68 | index 43df7dd..f376b67 100644 |
||
| 69 | --- a/libs/audioflinger/AudioFlinger.cpp |
||
| 70 | +++ b/libs/audioflinger/AudioFlinger.cpp |
||
| 71 | -2435,8 +2435,7 @@ bool AudioFlinger::AudioRecordThread::threadLoop() |
||
| 72 | input = mAudioHardware->openInputStream(mRecordTrack->format(), |
||
| 73 | mRecordTrack->channelCount(), |
||
| 74 | mRecordTrack->sampleRate(), |
||
| 75 | - &mStartStatus, |
||
| 76 | - (AudioSystem::audio_in_acoustics)(mRecordTrack->mFlags >> 16)); |
||
| 77 | + &mStartStatus); |
||
| 78 | if (input != 0) { |
||
| 79 | inBufferSize = input->bufferSize(); |
||
| 80 | inFrameCount = inBufferSize/input->frameSize(); |
||
| 81 | diff --git a/libs/audioflinger/AudioHardwareGeneric.cpp b/libs/audioflinger/AudioHardwareGeneric.cpp |
||
| 82 | index 62beada..e455186 100644 |
||
| 83 | --- a/libs/audioflinger/AudioHardwareGeneric.cpp |
||
| 84 | +++ b/libs/audioflinger/AudioHardwareGeneric.cpp |
||
| 85 | -93,8 +93,7 @@ void AudioHardwareGeneric::closeOutputStream(AudioStreamOutGeneric* out) { |
||
| 86 | } |
||
| 87 | |||
| 88 | AudioStreamIn* AudioHardwareGeneric::openInputStream( |
||
| 89 | - int format, int channelCount, uint32_t sampleRate, status_t *status, |
||
| 90 | - AudioSystem::audio_in_acoustics acoustics) |
||
| 91 | + int format, int channelCount, uint32_t sampleRate, status_t *status) |
||
| 92 | { |
||
| 93 | AutoMutex lock(mLock); |
||
| 94 | |||
| 95 | -108,7 +107,7 @@ AudioStreamIn* AudioHardwareGeneric::openInputStream( |
||
| 96 | |||
| 97 | // create new output stream |
||
| 98 | AudioStreamInGeneric* in = new AudioStreamInGeneric(); |
||
| 99 | - status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate, acoustics); |
||
| 100 | + status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate); |
||
| 101 | if (status) { |
||
| 102 | *status = lStatus; |
||
| 103 | } |
||
| 104 | -247,8 +246,7 @@ status_t AudioStreamInGeneric::set( |
||
| 105 | int fd, |
||
| 106 | int format, |
||
| 107 | int channels, |
||
| 108 | - uint32_t rate, |
||
| 109 | - AudioSystem::audio_in_acoustics acoustics) |
||
| 110 | + uint32_t rate) |
||
| 111 | { |
||
| 112 | // FIXME: remove logging |
||
| 113 | LOGD("AudioStreamInGeneric::set(%p, %d, %d, %d, %u)", hw, fd, format, channels, rate); |
||
| 114 | diff --git a/libs/audioflinger/AudioHardwareGeneric.h b/libs/audioflinger/AudioHardwareGeneric.h |
||
| 115 | index c949aa1..64e0396 100644 |
||
| 116 | --- a/libs/audioflinger/AudioHardwareGeneric.h |
||
| 117 | +++ b/libs/audioflinger/AudioHardwareGeneric.h |
||
| 118 | -69,8 +69,7 @@ public: |
||
| 119 | int mFd, |
||
| 120 | int format, |
||
| 121 | int channelCount, |
||
| 122 | - uint32_t sampleRate, |
||
| 123 | - AudioSystem::audio_in_acoustics acoustics); |
||
| 124 | + uint32_t sampleRate); |
||
| 125 | |||
| 126 | uint32_t sampleRate() const { return 8000; } |
||
| 127 | virtual size_t bufferSize() const { return 320; } |
||
| 128 | -115,8 +114,7 @@ public: |
||
| 129 | int format, |
||
| 130 | int channelCount, |
||
| 131 | uint32_t sampleRate, |
||
| 132 | - status_t *status, |
||
| 133 | - AudioSystem::audio_in_acoustics acoustics); |
||
| 134 | + status_t *status); |
||
| 135 | |||
| 136 | void closeOutputStream(AudioStreamOutGeneric* out); |
||
| 137 | void closeInputStream(AudioStreamInGeneric* in); |
||
| 138 | diff --git a/libs/audioflinger/AudioHardwareStub.cpp b/libs/audioflinger/AudioHardwareStub.cpp |
||
| 139 | index b13cb1c..683af04 100644 |
||
| 140 | --- a/libs/audioflinger/AudioHardwareStub.cpp |
||
| 141 | +++ b/libs/audioflinger/AudioHardwareStub.cpp |
||
| 142 | -57,10 +57,10 @@ AudioStreamOut* AudioHardwareStub::openOutputStream( |
||
| 143 | |||
| 144 | AudioStreamIn* AudioHardwareStub::openInputStream( |
||
| 145 | int format, int channelCount, uint32_t sampleRate, |
||
| 146 | - status_t *status, AudioSystem::audio_in_acoustics acoustics) |
||
| 147 | + status_t *status) |
||
| 148 | { |
||
| 149 | AudioStreamInStub* in = new AudioStreamInStub(); |
||
| 150 | - status_t lStatus = in->set(format, channelCount, sampleRate, acoustics); |
||
| 151 | + status_t lStatus = in->set(format, channelCount, sampleRate); |
||
| 152 | if (status) { |
||
| 153 | *status = lStatus; |
||
| 154 | } |
||
| 155 | -143,8 +143,7 @@ status_t AudioStreamOutStub::dump(int fd, const Vector<String16>& args) |
||
| 156 | |||
| 157 | // ---------------------------------------------------------------------------- |
||
| 158 | |||
| 159 | -status_t AudioStreamInStub::set(int format, int channels, uint32_t rate, |
||
| 160 | - AudioSystem::audio_in_acoustics acoustics) |
||
| 161 | +status_t AudioStreamInStub::set(int format, int channels, uint32_t rate) |
||
| 162 | { |
||
| 163 | if ((format == AudioSystem::PCM_16_BIT) && |
||
| 164 | (channels == channelCount()) && |
||
| 165 | diff --git a/libs/audioflinger/AudioHardwareStub.h b/libs/audioflinger/AudioHardwareStub.h |
||
| 166 | index d406424..24736ed 100644 |
||
| 167 | --- a/libs/audioflinger/AudioHardwareStub.h |
||
| 168 | +++ b/libs/audioflinger/AudioHardwareStub.h |
||
| 169 | -43,7 +43,7 @@ public: |
||
| 170 | |||
| 171 | class AudioStreamInStub : public AudioStreamIn { |
||
| 172 | public: |
||
| 173 | - virtual status_t set(int format, int channelCount, uint32_t sampleRate, AudioSystem::audio_in_acoustics acoustics); |
||
| 174 | + virtual status_t set(int format, int channelCount, uint32_t sampleRate); |
||
| 175 | virtual uint32_t sampleRate() const { return 8000; } |
||
| 176 | virtual size_t bufferSize() const { return 320; } |
||
| 177 | virtual int channelCount() const { return 1; } |
||
| 178 | -81,8 +81,7 @@ public: |
||
| 179 | int format, |
||
| 180 | int channelCount, |
||
| 181 | uint32_t sampleRate, |
||
| 182 | - status_t *status, |
||
| 183 | - AudioSystem::audio_in_acoustics acoustics); |
||
| 184 | + status_t *status); |
||
| 185 | |||
| 186 | protected: |
||
| 187 | virtual status_t doRouting() { return NO_ERROR; } |
||
| 188 | diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp |
||
| 189 | index 0ece3f7..88dd46f 100644 |
||
| 190 | --- a/libaudio/AudioHardware.cpp |
||
| 191 | +++ b/libaudio/AudioHardware.cpp |
||
| 192 | -36,12 +36,51 @@ |
||
| 193 | #define LOG_SND_RPC 0 // Set to 1 to log sound RPC's |
||
| 194 | |||
| 195 | namespace android { |
||
| 196 | -static int audpre_index, tx_iir_index; |
||
| 197 | -static void * acoustic; |
||
| 198 | const uint32_t AudioHardware::inputSamplingRates[] = { |
||
| 199 | 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 |
||
| 200 | }; |
||
| 201 | + |
||
| 202 | + |
||
| 203 | + |
||
| 204 | // ---------------------------------------------------------------------------- |
||
| 205 | +static int snd_get_endpoint( int cnt,msm_snd_endpoint * ept) |
||
| 206 | +{ |
||
| 207 | + int fd; |
||
| 208 | + int status; |
||
| 209 | + fd = open("/dev/msm_snd",O_RDWR); |
||
| 210 | + if (fd < 0) |
||
| 211 | + { |
||
| 212 | + perror("Cannot open msm_snd device"); |
||
| 213 | + close(fd); |
||
| 214 | + return -1; |
||
| 215 | + } |
||
| 216 | + status = ioctl(fd,SND_GET_ENDPOINT, ept); |
||
| 217 | + close(fd); |
||
| 218 | + return status; |
||
| 219 | +} |
||
| 220 | + |
||
| 221 | +static int snd_get_num() |
||
| 222 | +{ |
||
| 223 | + int fd; |
||
| 224 | + int status; |
||
| 225 | + int mNumSndEndpoints; |
||
| 226 | + fd = open("/dev/msm_snd",O_RDWR); |
||
| 227 | + if (fd < 0) |
||
| 228 | + { |
||
| 229 | + perror("Cannot open msm_snd device"); |
||
| 230 | + return -1; |
||
| 231 | + } |
||
| 232 | + |
||
| 233 | + if(ioctl(fd,SND_GET_NUM_ENDPOINTS,&mNumSndEndpoints)<0 ) |
||
| 234 | + { |
||
| 235 | + perror("get number of endpoints error"); |
||
| 236 | + close(fd); |
||
| 237 | + return -1; |
||
| 238 | + } |
||
| 239 | + close(fd); |
||
| 240 | + return mNumSndEndpoints; |
||
| 241 | + |
||
| 242 | +} |
||
| 243 | |||
| 244 | AudioHardware::AudioHardware() : |
||
| 245 | mInit(false), mMicMute(true), mBluetoothNrec(true), mBluetoothId(0), |
||
| 246 | -54,44 +93,22 @@ AudioHardware::AudioHardware() : |
||
| 247 | SND_DEVICE_HEADSET(-1), |
||
| 248 | SND_DEVICE_HEADSET_AND_SPEAKER(-1) |
||
| 249 | { |
||
| 250 | - |
||
| 251 | - int (*snd_get_num)(); |
||
| 252 | - int (*snd_get_endpoint)(int, msm_snd_endpoint *); |
||
| 253 | - int (*set_acoustic_parameters)(); |
||
| 254 | + LOGE("inside AudioHardware::AudioHardware()"); |
||
| 255 | + //int snd_get_num(); |
||
| 256 | + //int snd_get_endpoint(int cnt,msm_snd_endpoint *ept); |
||
| 257 | + //int (*snd_get_num)(); |
||
| 258 | + //int (*snd_get_endpoint)(int, msm_snd_endpoint *); |
||
| 259 | |||
| 260 | struct msm_snd_endpoint *ept; |
||
| 261 | - |
||
| 262 | - acoustic = ::dlopen("/system/lib/libhtc_acoustic.so", RTLD_NOW); |
||
| 263 | - if (acoustic == NULL ) { |
||
| 264 | - LOGE("Could not open libhtc_acoustic.so"); |
||
| 265 | - return; |
||
| 266 | - } |
||
| 267 | - |
||
| 268 | - set_acoustic_parameters = (int (*)(void))::dlsym(acoustic, "set_acoustic_parameters"); |
||
| 269 | - if ((*set_acoustic_parameters) == 0 ) { |
||
| 270 | - LOGE("Could not open set_acoustic_parameters()"); |
||
| 271 | - return; |
||
| 272 | - } |
||
| 273 | - |
||
| 274 | - int rc = set_acoustic_parameters(); |
||
| 275 | - if (rc < 0) { |
||
| 276 | - LOGE("Could not set acoustic parameters to share memory: %d", rc); |
||
| 277 | -// return; |
||
| 278 | - } |
||
| 279 | - |
||
| 280 | - snd_get_num = (int (*)(void))::dlsym(acoustic, "snd_get_num_endpoints"); |
||
| 281 | - if ((*snd_get_num) == 0 ) { |
||
| 282 | - LOGE("Could not open snd_get_num()"); |
||
| 283 | -// return; |
||
| 284 | - } |
||
| 285 | - |
||
| 286 | + LOGE("before"); |
||
| 287 | mNumSndEndpoints = snd_get_num(); |
||
| 288 | + LOGE("after"); |
||
| 289 | LOGD("mNumSndEndpoints = %d", mNumSndEndpoints); |
||
| 290 | mSndEndpoints = new msm_snd_endpoint[mNumSndEndpoints]; |
||
| 291 | mInit = true; |
||
| 292 | LOGV("constructed %d SND endpoints)", mNumSndEndpoints); |
||
| 293 | - ept = mSndEndpoints; |
||
| 294 | - snd_get_endpoint = (int (*)(int, msm_snd_endpoint *))::dlsym(acoustic, "snd_get_endpoint"); |
||
| 295 | + ept = mSndEndpoints; //LOOK AT mSndEndpoints type... |
||
| 296 | + |
||
| 297 | if ((*snd_get_endpoint) == 0 ) { |
||
| 298 | LOGE("Could not open snd_get_endpoint()"); |
||
| 299 | return; |
||
| 300 | -121,7 +138,6 @@ AudioHardware::~AudioHardware() |
||
| 301 | delete mInput; |
||
| 302 | delete mOutput; |
||
| 303 | delete [] mSndEndpoints; |
||
| 304 | - ::dlclose(acoustic); |
||
| 305 | mInit = false; |
||
| 306 | } |
||
| 307 | |||
| 308 | -168,8 +184,7 @@ void AudioHardware::closeOutputStream(AudioStreamOutMSM72xx* out) { |
||
| 309 | } |
||
| 310 | |||
| 311 | AudioStreamIn* AudioHardware::openInputStream( |
||
| 312 | - int format, int channelCount, uint32_t sampleRate, status_t *status, |
||
| 313 | - AudioSystem::audio_in_acoustics acoustic_flags) |
||
| 314 | + int format, int channelCount, uint32_t sampleRate, status_t *status) |
||
| 315 | { |
||
| 316 | mLock.lock(); |
||
| 317 | // input stream already open? |
||
| 318 | -182,7 +197,7 @@ AudioStreamIn* AudioHardware::openInputStream( |
||
| 319 | } |
||
| 320 | |||
| 321 | AudioStreamInMSM72xx* in = new AudioStreamInMSM72xx(); |
||
| 322 | - status_t lStatus = in->set(this, format, channelCount, sampleRate, acoustic_flags); |
||
| 323 | + status_t lStatus = in->set(this, format, channelCount, sampleRate); |
||
| 324 | if (status) { |
||
| 325 | *status = lStatus; |
||
| 326 | } |
||
| 327 | -449,6 +464,42 @@ static int count_bits(uint32_t vector) |
||
| 328 | return bits; |
||
| 329 | } |
||
| 330 | |||
| 331 | +static int msm72xx_enable_audpp (uint16_t enable_mask) |
||
| 332 | +{ |
||
| 333 | + int fd; |
||
| 334 | + |
||
| 335 | +// if (!audpp_filter_inited) |
||
| 336 | +// return -1; |
||
| 337 | + |
||
| 338 | + fd = open ("/dev/msm_pcm_ctl", O_RDWR); |
||
| 339 | + if (fd < 0) |
||
| 340 | + { |
||
| 341 | + perror ("Cannot open audio device"); |
||
| 342 | + return -1; |
||
| 343 | + } |
||
| 344 | + |
||
| 345 | + if (enable_mask & ADRC_ENABLE) |
||
| 346 | + enable_mask &= ~ADRC_ENABLE; |
||
| 347 | + if (enable_mask & EQ_ENABLE) |
||
| 348 | + enable_mask &= ~EQ_ENABLE; |
||
| 349 | + if (enable_mask & RX_IIR_ENABLE) |
||
| 350 | + enable_mask &= ~RX_IIR_ENABLE; |
||
| 351 | + |
||
| 352 | + printf ("msm72xx_enable_audpp: 0x%04x", enable_mask); |
||
| 353 | + if (ioctl (fd, AUDIO_ENABLE_AUDPP, &enable_mask) < 0) |
||
| 354 | + { |
||
| 355 | + perror ("enable audpp error"); |
||
| 356 | + close (fd); |
||
| 357 | + return -1; |
||
| 358 | + } |
||
| 359 | + |
||
| 360 | + close (fd); |
||
| 361 | + return 0; |
||
| 362 | +} |
||
| 363 | + |
||
| 364 | + |
||
| 365 | + |
||
| 366 | + |
||
| 367 | status_t AudioHardware::doRouting() |
||
| 368 | { |
||
| 369 | Mutex::Autolock lock(mLock); |
||
| 370 | -460,8 +511,7 @@ status_t AudioHardware::doRouting() |
||
| 371 | " picking closest possible route...", routes); |
||
| 372 | } |
||
| 373 | } |
||
| 374 | - int (*msm72xx_enable_audpp)(int); |
||
| 375 | - msm72xx_enable_audpp = (int (*)(int))::dlsym(acoustic, "msm72xx_enable_audpp"); |
||
| 376 | + |
||
| 377 | status_t ret = NO_ERROR; |
||
| 378 | if (routes & AudioSystem::ROUTE_BLUETOOTH_SCO) { |
||
| 379 | LOGI("Routing audio to Bluetooth PCM\n"); |
||
| 380 | -700,14 +750,12 @@ bool AudioHardware::AudioStreamOutMSM72xx::checkStandby() |
||
| 381 | AudioHardware::AudioStreamInMSM72xx::AudioStreamInMSM72xx() : |
||
| 382 | mHardware(0), mFd(-1), mState(AUDIO_INPUT_CLOSED), mRetryCount(0), |
||
| 383 | mFormat(AUDIO_HW_IN_FORMAT), mChannelCount(AUDIO_HW_IN_CHANNELS), |
||
| 384 | - mSampleRate(AUDIO_HW_IN_SAMPLERATE), mBufferSize(AUDIO_HW_IN_BUFFERSIZE), |
||
| 385 | - mAcoustics((AudioSystem::audio_in_acoustics)0) |
||
| 386 | + mSampleRate(AUDIO_HW_IN_SAMPLERATE), mBufferSize(AUDIO_HW_IN_BUFFERSIZE) |
||
| 387 | { |
||
| 388 | } |
||
| 389 | |||
| 390 | status_t AudioHardware::AudioStreamInMSM72xx::set( |
||
| 391 | - AudioHardware* hw, int format, int channelCount, uint32_t sampleRate, |
||
| 392 | - AudioSystem::audio_in_acoustics acoustic_flags) |
||
| 393 | + AudioHardware* hw, int format, int channelCount, uint32_t sampleRate) |
||
| 394 | { |
||
| 395 | LOGV("AudioStreamInMSM72xx::set(%d, %d, %u)", format, channelCount, sampleRate); |
||
| 396 | if (mFd >= 0) { |
||
| 397 | -763,26 +811,7 @@ status_t AudioHardware::AudioStreamInMSM72xx::set( |
||
| 398 | mHardware = hw; |
||
| 399 | mHardware->setMicMute_nosync(false); |
||
| 400 | mState = AUDIO_INPUT_OPENED; |
||
| 401 | - audpre_index = calculate_audpre_table_index(sampleRate); |
||
| 402 | - tx_iir_index = (audpre_index * 2) + (hw->checkOutputStandby() ? 0 : 1); |
||
| 403 | - LOGD("audpre_index = %d, tx_iir_index = %d\n", audpre_index, tx_iir_index); |
||
| 404 | - |
||
| 405 | - /** |
||
| 406 | - * If audio-preprocessing failed, we should not block record. |
||
| 407 | - */ |
||
| 408 | - int (*msm72xx_set_audpre_params)(int, int); |
||
| 409 | - msm72xx_set_audpre_params = (int (*)(int, int))::dlsym(acoustic, "msm72xx_set_audpre_params"); |
||
| 410 | - status = msm72xx_set_audpre_params(audpre_index, tx_iir_index); |
||
| 411 | - if (status < 0) |
||
| 412 | - LOGE("Cannot set audpre parameters"); |
||
| 413 | - |
||
| 414 | - int (*msm72xx_enable_audpre)(int, int, int); |
||
| 415 | - msm72xx_enable_audpre = (int (*)(int, int, int))::dlsym(acoustic, "msm72xx_enable_audpre"); |
||
| 416 | - mAcoustics = acoustic_flags; |
||
| 417 | - status = msm72xx_enable_audpre((int)acoustic_flags, audpre_index, tx_iir_index); |
||
| 418 | - if (status < 0) |
||
| 419 | - LOGE("Cannot enable audpre"); |
||
| 420 | - |
||
| 421 | + |
||
| 422 | return NO_ERROR; |
||
| 423 | |||
| 424 | Error: |
||
| 425 | -811,7 +840,7 @@ ssize_t AudioHardware::AudioStreamInMSM72xx::read( void* buffer, ssize_t bytes) |
||
| 426 | uint8_t* p = static_cast<uint8_t*>(buffer); |
||
| 427 | |||
| 428 | if (mState < AUDIO_INPUT_OPENED) { |
||
| 429 | - if (set(mHardware, mFormat, mChannelCount, mSampleRate, mAcoustics) != NO_ERROR) { |
||
| 430 | + if (set(mHardware, mFormat, mChannelCount, mSampleRate) != NO_ERROR) { |
||
| 431 | return -1; |
||
| 432 | } |
||
| 433 | } |
||
| 434 | diff --git a/libaudio/AudioHardware.h b/libaudio/AudioHardware.h |
||
| 435 | index 047bad3..2111e16 100644 |
||
| 436 | --- a/libaudio/AudioHardware.h |
||
| 437 | +++ b/libaudio/AudioHardware.h |
||
| 438 | -128,8 +128,8 @@ public: |
||
| 439 | int format, |
||
| 440 | int channelCount, |
||
| 441 | uint32_t sampleRate, |
||
| 442 | - status_t *status, |
||
| 443 | - AudioSystem::audio_in_acoustics acoustics); |
||
| 444 | + status_t *status |
||
| 445 | + ); |
||
| 446 | |||
| 447 | void closeOutputStream(AudioStreamOutMSM72xx* out); |
||
| 448 | void closeInputStream(AudioStreamInMSM72xx* in); |
||
| 449 | -190,8 +190,8 @@ private: |
||
| 450 | status_t set(AudioHardware* mHardware, |
||
| 451 | int format, |
||
| 452 | int channelCount, |
||
| 453 | - uint32_t sampleRate, |
||
| 454 | - AudioSystem::audio_in_acoustics acoustics); |
||
| 455 | + uint32_t sampleRate |
||
| 456 | + ); |
||
| 457 | virtual size_t bufferSize() const { return mBufferSize; } |
||
| 458 | virtual int channelCount() const { return mChannelCount; } |
||
| 459 | virtual int format() const { return mFormat; } |
||
| 460 | -210,7 +210,7 @@ private: |
||
| 461 | int mChannelCount; |
||
| 462 | uint32_t mSampleRate; |
||
| 463 | size_t mBufferSize; |
||
| 464 | - AudioSystem::audio_in_acoustics mAcoustics; |
||
| 465 | + |
||
| 466 | }; |
||
| 467 | |||
| 468 | static const uint32_t inputSamplingRates[]; |
||
| 469 | }}} |
||
| 470 | 5 | Denis 'GNUtoo' Carikli | Build process: |
| 471 | Let's say that our build directory is ~/replicant |
||
| 472 | * Add that file: |
||
| 473 | {{{ |
||
| 474 | TARGET_PRODUCT := htc_dream |
||
| 475 | }}} |
||
| 476 | To ~/replicant/buildspec.mk |
||
| 477 | * Then type |
||
| 478 | {{{ |
||
| 479 | cd ~/replicant |
||
| 480 | export ANDROID_JAVA_HOME=$JAVA_HOME |
||
| 481 | make |
||
| 482 | }}} |
||
| 483 | The files to flash are in ~/replicant/out/target/product/dream |
||
| 484 | |||
| 485 | 1 | Denis 'GNUtoo' Carikli | |
| 486 | |||
| 487 | |||
| 488 | == Status == |
||
| 489 | 4 | Denis 'GNUtoo' Carikli | * web browser crashes |
| 490 | * ril seem to work(I made some calls and received sms) |
||
| 491 | 9 | Denis 'GNUtoo' Carikli | * sound on the application cpu(the baseband cpu has sound too) now works |