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