Project

General

Profile

DeprecatedBuildAndroid » History » Revision 9

Revision 8 (Denis 'GNUtoo' Carikli, 08/26/2009 10:41 AM) → Revision 9/34 (Denis 'GNUtoo' Carikli, 08/26/2009 10:42 AM)

== Build system == 
  * root your phone 
  * Backup your current system!!! 
  * 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 
 Android use a custom Makefile based buildsystem 
  * Add the patches that can be find here [http://groups.fsf.org/wiki/Freest_hardware_comparisons/replicant] 
  * Add this patch for sound: 
 {{{ 
 diff --git a/include/hardware_legacy/AudioHardwareInterface.h b/include/hardware_legacy/AudioHardwareInterface.h 
 index 0aa3a95..371ee48 100644 
 --- a/include/hardware_legacy/AudioHardwareInterface.h 
 +++ b/include/hardware_legacy/AudioHardwareInterface.h 
  -211,8 +211,7 @@ public: 
                                  int format, 
                                  int channelCount, 
                                  uint32_t sampleRate, 
 -                                  status_t *status, 
 -                                  AudioSystem::audio_in_acoustics acoustics) = 0; 
 +                                  status_t *status) = 0; 
 
      /**This method dumps the state of the audio hardware */ 
      virtual status_t dumpState(int fd, const Vector<String16>& args) = 0; 
 diff --git a/libs/audioflinger/A2dpAudioInterface.cpp b/libs/audioflinger/A2dpAudioInterface.cpp 
 index b6d5078..15ce1dd 100644 
 --- a/libs/audioflinger/A2dpAudioInterface.cpp 
 +++ b/libs/audioflinger/A2dpAudioInterface.cpp 
  -71,8 +71,7 @@ AudioStreamOut* A2dpAudioInterface::openOutputStream( 
  } 
 
  AudioStreamIn* A2dpAudioInterface::openInputStream( 
 -          int format, int channelCount, uint32_t sampleRate, status_t *status, 
 -          AudioSystem::audio_in_acoustics acoustics) 
 +          int format, int channelCount, uint32_t sampleRate, status_t *status) 
  { 
      if (status) 
          *status = -1; 
 diff --git a/libs/audioflinger/A2dpAudioInterface.h b/libs/audioflinger/A2dpAudioInterface.h 
 index 7901a8c..e67f05f 100644 
 --- a/libs/audioflinger/A2dpAudioInterface.h 
 +++ b/libs/audioflinger/A2dpAudioInterface.h 
  -58,8 +58,7 @@ public: 
                                  int format, 
                                  int channelCount, 
                                  uint32_t sampleRate, 
 -                                  status_t *status, 
 -                                  AudioSystem::audio_in_acoustics acoustics); 
 +                                  status_t *status); 
 
  protected: 
      virtual status_t      doRouting(); 
 diff --git a/libs/audioflinger/AudioDumpInterface.h b/libs/audioflinger/AudioDumpInterface.h 
 index 9a94102..42204d6 100644 
 --- a/libs/audioflinger/AudioDumpInterface.h 
 +++ b/libs/audioflinger/AudioDumpInterface.h 
  -78,9 +78,8 @@ public: 
      virtual status_t      setParameter(const char* key, const char* value) 
                              {return mFinalInterface->setParameter(key, value);} 
 
 -      virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status, 
 -                                              AudioSystem::audio_in_acoustics acoustics) 
 -                              {return mFinalInterface->openInputStream( format, channelCount, sampleRate, status, acoustics);} 
 +      virtual AudioStreamIn* openInputStream( int format, int channelCount, uint32_t sampleRate, status_t *status) 
 +                              {return mFinalInterface->openInputStream( format, channelCount, sampleRate, status);} 
 
      virtual status_t      dump(int fd, const Vector<String16>& args) { return mFinalInterface->dumpState(fd, args); } 
 
 diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp 
 index 43df7dd..f376b67 100644 
 --- a/libs/audioflinger/AudioFlinger.cpp 
 +++ b/libs/audioflinger/AudioFlinger.cpp 
  -2435,8 +2435,7 @@ bool AudioFlinger::AudioRecordThread::threadLoop() 
                      input = mAudioHardware->openInputStream(mRecordTrack->format(),  
                                      mRecordTrack->channelCount(),  
                                      mRecordTrack->sampleRate(),  
 -                                      &mStartStatus, 
 -                                      (AudioSystem::audio_in_acoustics)(mRecordTrack->mFlags >> 16)); 
 +                                      &mStartStatus); 
                      if (input != 0) { 
                          inBufferSize = input->bufferSize(); 
                          inFrameCount = inBufferSize/input->frameSize();                         
 diff --git a/libs/audioflinger/AudioHardwareGeneric.cpp b/libs/audioflinger/AudioHardwareGeneric.cpp 
 index 62beada..e455186 100644 
 --- a/libs/audioflinger/AudioHardwareGeneric.cpp 
 +++ b/libs/audioflinger/AudioHardwareGeneric.cpp 
  -93,8 +93,7 @@ void AudioHardwareGeneric::closeOutputStream(AudioStreamOutGeneric* out) { 
  } 
 
  AudioStreamIn* AudioHardwareGeneric::openInputStream( 
 -          int format, int channelCount, uint32_t sampleRate, status_t *status, 
 -          AudioSystem::audio_in_acoustics acoustics) 
 +          int format, int channelCount, uint32_t sampleRate, status_t *status) 
  { 
      AutoMutex lock(mLock); 
 
  -108,7 +107,7 @@ AudioStreamIn* AudioHardwareGeneric::openInputStream( 
 
      // create new output stream 
      AudioStreamInGeneric* in = new AudioStreamInGeneric(); 
 -      status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate, acoustics); 
 +      status_t lStatus = in->set(this, mFd, format, channelCount, sampleRate); 
      if (status) { 
          *status = lStatus; 
      } 
  -247,8 +246,7 @@ status_t AudioStreamInGeneric::set( 
          int fd, 
          int format, 
          int channels, 
 -          uint32_t rate, 
 -          AudioSystem::audio_in_acoustics acoustics) 
 +          uint32_t rate) 
  { 
      // FIXME: remove logging 
      LOGD("AudioStreamInGeneric::set(%p, %d, %d, %d, %u)", hw, fd, format, channels, rate); 
 diff --git a/libs/audioflinger/AudioHardwareGeneric.h b/libs/audioflinger/AudioHardwareGeneric.h 
 index c949aa1..64e0396 100644 
 --- a/libs/audioflinger/AudioHardwareGeneric.h 
 +++ b/libs/audioflinger/AudioHardwareGeneric.h 
  -69,8 +69,7 @@ public: 
              int mFd, 
              int format, 
              int channelCount, 
 -              uint32_t sampleRate, 
 -              AudioSystem::audio_in_acoustics acoustics); 
 +              uint32_t sampleRate); 
 
      uint32_t      sampleRate() const { return 8000; } 
      virtual size_t        bufferSize() const { return 320; } 
  -115,8 +114,7 @@ public: 
              int format, 
              int channelCount, 
              uint32_t sampleRate, 
 -              status_t *status, 
 -              AudioSystem::audio_in_acoustics acoustics); 
 +              status_t *status); 
 
              void              closeOutputStream(AudioStreamOutGeneric* out); 
              void              closeInputStream(AudioStreamInGeneric* in); 
 diff --git a/libs/audioflinger/AudioHardwareStub.cpp b/libs/audioflinger/AudioHardwareStub.cpp 
 index b13cb1c..683af04 100644 
 --- a/libs/audioflinger/AudioHardwareStub.cpp 
 +++ b/libs/audioflinger/AudioHardwareStub.cpp 
  -57,10 +57,10 @@ AudioStreamOut* AudioHardwareStub::openOutputStream( 
 
  AudioStreamIn* AudioHardwareStub::openInputStream( 
          int format, int channelCount, uint32_t sampleRate, 
 -          status_t *status, AudioSystem::audio_in_acoustics acoustics) 
 +          status_t *status) 
  { 
      AudioStreamInStub* in = new AudioStreamInStub(); 
 -      status_t lStatus = in->set(format, channelCount, sampleRate, acoustics); 
 +      status_t lStatus = in->set(format, channelCount, sampleRate); 
      if (status) { 
          *status = lStatus; 
      } 
  -143,8 +143,7 @@ status_t AudioStreamOutStub::dump(int fd, const Vector<String16>& args) 
 
  // ---------------------------------------------------------------------------- 
 
 -status_t AudioStreamInStub::set(int format, int channels, uint32_t rate, 
 - 				 AudioSystem::audio_in_acoustics acoustics) 
 +status_t AudioStreamInStub::set(int format, int channels, uint32_t rate) 
  { 
      if ((format == AudioSystem::PCM_16_BIT) && 
              (channels == channelCount()) && 
 diff --git a/libs/audioflinger/AudioHardwareStub.h b/libs/audioflinger/AudioHardwareStub.h 
 index d406424..24736ed 100644 
 --- a/libs/audioflinger/AudioHardwareStub.h 
 +++ b/libs/audioflinger/AudioHardwareStub.h 
  -43,7 +43,7 @@ public: 
 
  class AudioStreamInStub : public AudioStreamIn { 
  public: 
 -      virtual status_t      set(int format, int channelCount, uint32_t sampleRate, AudioSystem::audio_in_acoustics acoustics); 
 +      virtual status_t      set(int format, int channelCount, uint32_t sampleRate); 
      virtual uint32_t      sampleRate() const { return 8000; } 
      virtual size_t        bufferSize() const { return 320; } 
      virtual int           channelCount() const { return 1; } 
  -81,8 +81,7 @@ public: 
                                  int format, 
                                  int channelCount, 
                                  uint32_t sampleRate, 
 -                                  status_t *status, 
 - 				 AudioSystem::audio_in_acoustics acoustics); 
 +                                  status_t *status); 
 
  protected: 
      virtual status_t      doRouting() { return NO_ERROR; } 
 diff --git a/libaudio/AudioHardware.cpp b/libaudio/AudioHardware.cpp 
 index 0ece3f7..88dd46f 100644 
 --- a/libaudio/AudioHardware.cpp 
 +++ b/libaudio/AudioHardware.cpp 
  -36,12 +36,51 @@ 
  #define LOG_SND_RPC 0    // Set to 1 to log sound RPC's 
 
  namespace android { 
 -static int audpre_index, tx_iir_index; 
 -static void * acoustic; 
  const uint32_t AudioHardware::inputSamplingRates[] = { 
          8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 
  }; 
 + 
 + 
 + 
  // ---------------------------------------------------------------------------- 
 +static int snd_get_endpoint( int cnt,msm_snd_endpoint * ept) 
 +{ 
 +    int fd; 
 +    int status; 
 +    fd = open("/dev/msm_snd",O_RDWR); 
 +    if (fd < 0) 
 +      { 
 +        perror("Cannot open msm_snd device"); 
 +        close(fd); 
 +        return -1; 
 +      } 
 +    status = ioctl(fd,SND_GET_ENDPOINT, ept); 
 +    close(fd);       
 +    return status; 
 +} 
 + 
 +static int snd_get_num() 
 +{ 
 +    int fd; 
 +    int status; 
 +    int mNumSndEndpoints; 
 +    fd = open("/dev/msm_snd",O_RDWR); 
 +    if (fd < 0) 
 +    { 
 +      perror("Cannot open msm_snd device"); 
 +      return -1; 
 +    } 
 + 
 +    if(ioctl(fd,SND_GET_NUM_ENDPOINTS,&mNumSndEndpoints)<0 ) 
 +    { 
 +      perror("get number of endpoints error"); 
 +      close(fd); 
 +      return -1; 
 +    } 
 +    close(fd); 
 +    return mNumSndEndpoints; 
 + 
 +} 
 
  AudioHardware::AudioHardware() : 
      mInit(false), mMicMute(true), mBluetoothNrec(true), mBluetoothId(0), 
  -54,44 +93,22 @@ AudioHardware::AudioHardware() : 
      SND_DEVICE_HEADSET(-1), 
      SND_DEVICE_HEADSET_AND_SPEAKER(-1) 
  { 
 - 
 -      int (*snd_get_num)(); 
 -      int (*snd_get_endpoint)(int, msm_snd_endpoint *); 
 -      int (*set_acoustic_parameters)(); 
 +      LOGE("inside AudioHardware::AudioHardware()"); 
 +      //int snd_get_num(); 
 +      //int snd_get_endpoint(int cnt,msm_snd_endpoint *ept); 
 +      //int (*snd_get_num)(); 
 +      //int (*snd_get_endpoint)(int, msm_snd_endpoint *); 
 
      struct msm_snd_endpoint *ept; 
 - 
 -      acoustic = ::dlopen("/system/lib/libhtc_acoustic.so", RTLD_NOW); 
 -      if (acoustic == NULL ) { 
 -          LOGE("Could not open libhtc_acoustic.so"); 
 -          return; 
 -      } 
 - 
 -      set_acoustic_parameters = (int (*)(void))::dlsym(acoustic, "set_acoustic_parameters"); 
 -      if ((*set_acoustic_parameters) == 0 ) { 
 -          LOGE("Could not open set_acoustic_parameters()"); 
 -          return; 
 -      } 
 - 
 -      int rc = set_acoustic_parameters(); 
 -      if (rc < 0) { 
 -          LOGE("Could not set acoustic parameters to share memory: %d", rc); 
 -//          return; 
 -      } 
 - 
 -      snd_get_num = (int (*)(void))::dlsym(acoustic, "snd_get_num_endpoints"); 
 -      if ((*snd_get_num) == 0 ) { 
 -          LOGE("Could not open snd_get_num()"); 
 -//          return; 
 -      } 
 - 
 +      LOGE("before"); 
      mNumSndEndpoints = snd_get_num(); 
 +      LOGE("after"); 
      LOGD("mNumSndEndpoints = %d", mNumSndEndpoints); 
      mSndEndpoints = new msm_snd_endpoint[mNumSndEndpoints]; 
      mInit = true; 
      LOGV("constructed %d SND endpoints)", mNumSndEndpoints); 
 -      ept = mSndEndpoints; 
 -      snd_get_endpoint = (int (*)(int, msm_snd_endpoint *))::dlsym(acoustic, "snd_get_endpoint"); 
 +      ept = mSndEndpoints; //LOOK AT mSndEndpoints type... 
 +     
      if ((*snd_get_endpoint) == 0 ) { 
          LOGE("Could not open snd_get_endpoint()"); 
          return; 
  -121,7 +138,6 @@ AudioHardware::~AudioHardware() 
      delete mInput; 
      delete mOutput; 
      delete [] mSndEndpoints; 
 -      ::dlclose(acoustic); 
      mInit = false; 
  } 
 
  -168,8 +184,7 @@ void AudioHardware::closeOutputStream(AudioStreamOutMSM72xx* out) { 
  } 
 
  AudioStreamIn* AudioHardware::openInputStream( 
 -          int format, int channelCount, uint32_t sampleRate, status_t *status, 
 -          AudioSystem::audio_in_acoustics acoustic_flags) 
 +          int format, int channelCount, uint32_t sampleRate, status_t *status) 
  { 
      mLock.lock(); 
      // input stream already open? 
  -182,7 +197,7 @@ AudioStreamIn* AudioHardware::openInputStream( 
      } 
 
      AudioStreamInMSM72xx* in = new AudioStreamInMSM72xx(); 
 -      status_t lStatus = in->set(this, format, channelCount, sampleRate, acoustic_flags); 
 +      status_t lStatus = in->set(this, format, channelCount, sampleRate); 
      if (status) { 
          *status = lStatus; 
      } 
  -449,6 +464,42 @@ static int count_bits(uint32_t vector) 
      return bits; 
  } 
 
 +static int msm72xx_enable_audpp (uint16_t enable_mask) 
 +{ 
 +    int fd; 
 + 
 +//    if (!audpp_filter_inited) 
 +//      return -1; 
 + 
 +    fd = open ("/dev/msm_pcm_ctl", O_RDWR); 
 +    if (fd < 0) 
 +      { 
 +        perror ("Cannot open audio device"); 
 +        return -1; 
 +      } 
 + 
 +    if (enable_mask & ADRC_ENABLE) 
 +      enable_mask &= ~ADRC_ENABLE; 
 +    if (enable_mask & EQ_ENABLE) 
 +      enable_mask &= ~EQ_ENABLE; 
 +    if (enable_mask & RX_IIR_ENABLE) 
 +      enable_mask &= ~RX_IIR_ENABLE; 
 + 
 +    printf ("msm72xx_enable_audpp: 0x%04x", enable_mask); 
 +    if (ioctl (fd, AUDIO_ENABLE_AUDPP, &enable_mask) < 0) 
 +      { 
 +        perror ("enable audpp error"); 
 +        close (fd); 
 +        return -1; 
 +      } 
 + 
 +    close (fd); 
 +    return 0; 
 +} 
 + 
 + 
 + 
 + 
  status_t AudioHardware::doRouting() 
  { 
      Mutex::Autolock lock(mLock); 
  -460,8 +511,7 @@ status_t AudioHardware::doRouting() 
                   " picking closest possible route...", routes); 
          } 
      } 
 -      int (*msm72xx_enable_audpp)(int); 
 -      msm72xx_enable_audpp = (int (*)(int))::dlsym(acoustic, "msm72xx_enable_audpp"); 
 + 
      status_t ret = NO_ERROR; 
      if (routes & AudioSystem::ROUTE_BLUETOOTH_SCO) { 
          LOGI("Routing audio to Bluetooth PCM\n"); 
  -700,14 +750,12 @@ bool AudioHardware::AudioStreamOutMSM72xx::checkStandby() 
  AudioHardware::AudioStreamInMSM72xx::AudioStreamInMSM72xx() : 
      mHardware(0), mFd(-1), mState(AUDIO_INPUT_CLOSED), mRetryCount(0), 
      mFormat(AUDIO_HW_IN_FORMAT), mChannelCount(AUDIO_HW_IN_CHANNELS),  
 -      mSampleRate(AUDIO_HW_IN_SAMPLERATE), mBufferSize(AUDIO_HW_IN_BUFFERSIZE), 
 -      mAcoustics((AudioSystem::audio_in_acoustics)0) 
 +      mSampleRate(AUDIO_HW_IN_SAMPLERATE), mBufferSize(AUDIO_HW_IN_BUFFERSIZE) 
  { 
  } 
 
  status_t AudioHardware::AudioStreamInMSM72xx::set( 
 -          AudioHardware* hw, int format, int channelCount, uint32_t sampleRate, 
 -          AudioSystem::audio_in_acoustics acoustic_flags) 
 +          AudioHardware* hw, int format, int channelCount, uint32_t sampleRate) 
  { 
      LOGV("AudioStreamInMSM72xx::set(%d, %d, %u)", format, channelCount, sampleRate); 
      if (mFd >= 0) { 
  -763,26 +811,7 @@ status_t AudioHardware::AudioStreamInMSM72xx::set( 
      mHardware = hw; 
      mHardware->setMicMute_nosync(false); 
      mState = AUDIO_INPUT_OPENED; 
 -      audpre_index = calculate_audpre_table_index(sampleRate); 
 -      tx_iir_index = (audpre_index * 2) + (hw->checkOutputStandby() ? 0 : 1); 
 -      LOGD("audpre_index = %d, tx_iir_index = %d\n", audpre_index, tx_iir_index); 
 - 
 -      /** 
 -       * If audio-preprocessing failed, we should not block record. 
 -       */ 
 -      int (*msm72xx_set_audpre_params)(int, int); 
 -      msm72xx_set_audpre_params = (int (*)(int, int))::dlsym(acoustic, "msm72xx_set_audpre_params"); 
 -      status = msm72xx_set_audpre_params(audpre_index, tx_iir_index); 
 -      if (status < 0) 
 -          LOGE("Cannot set audpre parameters"); 
 - 
 -      int (*msm72xx_enable_audpre)(int, int, int); 
 -      msm72xx_enable_audpre = (int (*)(int, int, int))::dlsym(acoustic, "msm72xx_enable_audpre"); 
 -      mAcoustics = acoustic_flags; 
 -      status = msm72xx_enable_audpre((int)acoustic_flags, audpre_index, tx_iir_index); 
 -      if (status < 0) 
 -          LOGE("Cannot enable audpre"); 
 - 
 +     
      return NO_ERROR; 
 
  Error: 
  -811,7 +840,7 @@ ssize_t AudioHardware::AudioStreamInMSM72xx::read( void* buffer, ssize_t bytes) 
      uint8_t* p = static_cast<uint8_t*>(buffer); 
 
      if (mState < AUDIO_INPUT_OPENED) { 
 -          if (set(mHardware, mFormat, mChannelCount, mSampleRate, mAcoustics) != NO_ERROR) { 
 +          if (set(mHardware, mFormat, mChannelCount, mSampleRate) != NO_ERROR) { 
              return -1; 
          } 
      } 
 diff --git a/libaudio/AudioHardware.h b/libaudio/AudioHardware.h 
 index 047bad3..2111e16 100644 
 --- a/libaudio/AudioHardware.h 
 +++ b/libaudio/AudioHardware.h 
  -128,8 +128,8 @@ public: 
                                  int format, 
                                  int channelCount, 
                                  uint32_t sampleRate, 
 -                                  status_t *status, 
 -                                  AudioSystem::audio_in_acoustics acoustics); 
 +                                  status_t *status 
 + 					    ); 
 
                 void          closeOutputStream(AudioStreamOutMSM72xx* out); 
                 void          closeInputStream(AudioStreamInMSM72xx* in); 
  -190,8 +190,8 @@ private: 
                  status_t      set(AudioHardware* mHardware, 
                                  int format, 
                                  int channelCount, 
 -                                  uint32_t sampleRate, 
 -                                  AudioSystem::audio_in_acoustics acoustics); 
 +                                  uint32_t sampleRate 
 + 				 ); 
          virtual size_t        bufferSize() const { return mBufferSize; } 
          virtual int           channelCount() const { return mChannelCount; } 
          virtual int           format() const { return mFormat; } 
  -210,7 +210,7 @@ private: 
                  int           mChannelCount; 
                  uint32_t      mSampleRate; 
                  size_t        mBufferSize; 
 -                  AudioSystem::audio_in_acoustics mAcoustics; 
 + 
      }; 
 
              static const uint32_t inputSamplingRates[]; 
 }}} 
 Build process: 
 Let's say that our build directory is ~/replicant 
  * Add that file: 
 {{{ 
 TARGET_PRODUCT := htc_dream 
 }}} 
  To ~/replicant/buildspec.mk  
  * Then type 
 {{{ 
  cd ~/replicant 
  export ANDROID_JAVA_HOME=$JAVA_HOME 
  make 
 }}} 
  The files to flash are in ~/replicant/out/target/product/dream 




 == Status == 
  * web browser crashes 
  * ril seem to work(I made some calls and received sms) 
  *    no sound on the application cpu(the baseband cpu has sound too) now works sound) (that means the you can make calls but you can't play mp3 or ringtones)