DeprecatedBuildAndroid » History » Revision 9
      « Previous |
    Revision 9/34
      (diff)
      | Next »
    
    Denis 'GNUtoo'  Carikli, 08/26/2009 10:42 AM 
    sound working
    
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
int format,
int channelCount,
uint32_t sampleRate,
- 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 =
diff --git a/libs/audioflinger/A2dpAudioInterface.h b/libs/audioflinger/A2dpAudioInterface.h
index 7901a8c..e67f05f 100644
--
++ b/libs/audioflinger/A2dpAudioInterface.h
int format,
int channelCount,
uint32_t sampleRate,
- 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()@ void AudioHardwareGeneric::closeOutputStream(AudioStreamOutGeneric* out) {
                     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 
 }
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(
{
     // 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'snamespace 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_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;
-    if (acoustic == NULL ) {
-        LOGE("Could not open libhtc_acoustic.so");
-        return;
-    }
-    if ((set_acoustic_parameters) == 0 ) {
-        LOGE("Could not open set_acoustic_parameters()");
-        return;
-    }
-    if (rc < 0) {
-        LOGE("Could not set acoustic parameters to share memory: %d", rc);
//        return;
    }
-    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);
-    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     mSampleRate(AUDIO_HW_IN_SAMPLERATE), mBufferSize(AUDIO_HW_IN_BUFFERSIZE),@ status_t AudioHardware::doRouting()@ bool AudioHardware::AudioStreamOutMSM72xx::checkStandby()
                  " 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 
 AudioHardware::AudioStreamInMSM72xx::AudioStreamInMSM72xx() :
     mHardware(0), mFd(-1), mState(AUDIO_INPUT_CLOSED), mRetryCount(0),
     mFormat(AUDIO_HW_IN_FORMAT), mChannelCount(AUDIO_HW_IN_CHANNELS), 
-    mAcoustics((AudioSystem::audio_in_acoustics)0)
    mSampleRate(AUDIO_HW_IN_SAMPLERATE), mBufferSize(AUDIO_HW_IN_BUFFERSIZE)
 {
 }
{{{
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_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");
-    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;-811,7 +840,7 @@ ssize_t AudioHardware::AudioStreamInMSM72xx::read( void* buffer, ssize_t bytes)
uint8_t* p = static_cast<uint8_t*>(buffer);
- Add that file:
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 ~/replicantUpdated by Denis 'GNUtoo' Carikli about 16 years ago · 9 revisions