summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Laurent <elaurent@google.com> 2009-07-28 08:44:33 -0700
committer Eric Laurent <elaurent@google.com> 2009-08-07 00:27:19 -0700
commitddb78e7753be03937ad57ce7c3c842c52bdad65e (patch)
treea1f4d8105448525973897933a3494dd4d439274c
parent4c35e2c59afa28f9ed3fab1788570ef933f29b1a (diff)
Fix issue 2001214: AudioFlinger and AudioPolicyService interfaces should not use pointers as handles to inputs and outputs.
Use integers instead of void* as input/output handles at IAudioFlinger and IAudioPolicyService interfaces. AudioFlinger maintains an always increasing count of opened inputs or outputs as unique ID.
-rw-r--r--include/media/AudioSystem.h8
-rw-r--r--include/media/IAudioFlinger.h38
-rw-r--r--include/media/IAudioFlingerClient.h2
-rw-r--r--libs/audioflinger/AudioFlinger.cpp187
-rw-r--r--libs/audioflinger/AudioFlinger.h52
-rw-r--r--libs/audioflinger/AudioPolicyManagerGeneric.cpp38
-rw-r--r--libs/audioflinger/AudioPolicyService.cpp26
-rw-r--r--libs/audioflinger/AudioPolicyService.h8
-rw-r--r--media/libmedia/AudioSystem.cpp39
-rw-r--r--media/libmedia/IAudioFlinger.cpp166
-rw-r--r--media/libmedia/IAudioFlingerClient.cpp9
-rw-r--r--media/libmedia/IAudioPolicyService.cpp42
12 files changed, 291 insertions, 324 deletions
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 1243502ab821..1f726fe5356b 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -24,7 +24,7 @@
namespace android {
typedef void (*audio_error_callback)(status_t err);
-typedef void * audio_io_handle_t;
+typedef int audio_io_handle_t;
class IAudioPolicyService;
class String8;
@@ -184,8 +184,8 @@ public:
static status_t getMasterMute(bool* mute);
// set/get stream volume on specified output
- static status_t setStreamVolume(int stream, float value, void *output);
- static status_t getStreamVolume(int stream, float* volume, void *output);
+ static status_t setStreamVolume(int stream, float value, int output);
+ static status_t getStreamVolume(int stream, float* volume, int output);
// mute/unmute stream
static status_t setStreamMute(int stream, bool mute);
@@ -383,7 +383,7 @@ private:
// indicate a change in the configuration of an output or input: keeps the cached
// values for output/input parameters upto date in client process
- virtual void ioConfigChanged(int event, void *param1, void *param2);
+ virtual void ioConfigChanged(int event, int ioHandle, void *param2);
};
class AudioPolicyServiceClient: public IBinder::DeathRecipient
diff --git a/include/media/IAudioFlinger.h b/include/media/IAudioFlinger.h
index 26e6972fa812..8018568424a6 100644
--- a/include/media/IAudioFlinger.h
+++ b/include/media/IAudioFlinger.h
@@ -50,12 +50,12 @@ public:
int frameCount,
uint32_t flags,
const sp<IMemory>& sharedBuffer,
- void *output,
+ int output,
status_t *status) = 0;
virtual sp<IAudioRecord> openRecord(
pid_t pid,
- void *input,
+ int input,
uint32_t sampleRate,
int format,
int channelCount,
@@ -66,11 +66,11 @@ public:
/* query the audio hardware state. This state never changes,
* and therefore can be cached.
*/
- virtual uint32_t sampleRate(void *output) const = 0;
- virtual int channelCount(void *output) const = 0;
- virtual int format(void *output) const = 0;
- virtual size_t frameCount(void *output) const = 0;
- virtual uint32_t latency(void *output) const = 0;
+ virtual uint32_t sampleRate(int output) const = 0;
+ virtual int channelCount(int output) const = 0;
+ virtual int format(int output) const = 0;
+ virtual size_t frameCount(int output) const = 0;
+ virtual uint32_t latency(int output) const = 0;
/* set/get the audio hardware state. This will probably be used by
* the preference panel, mostly.
@@ -84,10 +84,10 @@ public:
/* set/get stream type state. This will probably be used by
* the preference panel, mostly.
*/
- virtual status_t setStreamVolume(int stream, float value, void *output) = 0;
+ virtual status_t setStreamVolume(int stream, float value, int output) = 0;
virtual status_t setStreamMute(int stream, bool muted) = 0;
- virtual float streamVolume(int stream, void *output) const = 0;
+ virtual float streamVolume(int stream, int output) const = 0;
virtual bool streamMute(int stream) const = 0;
// set audio mode
@@ -100,8 +100,8 @@ public:
// is a music stream active?
virtual bool isMusicActive() const = 0;
- virtual status_t setParameters(void *ioHandle, const String8& keyValuePairs) = 0;
- virtual String8 getParameters(void *ioHandle, const String8& keys) = 0;
+ virtual status_t setParameters(int ioHandle, const String8& keyValuePairs) = 0;
+ virtual String8 getParameters(int ioHandle, const String8& keys) = 0;
// register a current process for audio output change notifications
virtual void registerClient(const sp<IAudioFlingerClient>& client) = 0;
@@ -109,25 +109,25 @@ public:
// retrieve the audio recording buffer size
virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount) = 0;
- virtual void *openOutput(uint32_t *pDevices,
+ virtual int openOutput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
uint32_t *pLatencyMs,
uint32_t flags) = 0;
- virtual void *openDuplicateOutput(void *output1, void *output2) = 0;
- virtual status_t closeOutput(void *output) = 0;
- virtual status_t suspendOutput(void *output) = 0;
- virtual status_t restoreOutput(void *output) = 0;
+ virtual int openDuplicateOutput(int output1, int output2) = 0;
+ virtual status_t closeOutput(int output) = 0;
+ virtual status_t suspendOutput(int output) = 0;
+ virtual status_t restoreOutput(int output) = 0;
- virtual void *openInput(uint32_t *pDevices,
+ virtual int openInput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
uint32_t acoustics) = 0;
- virtual status_t closeInput(void *input) = 0;
+ virtual status_t closeInput(int input) = 0;
- virtual status_t setStreamOutput(uint32_t stream, void *output) = 0;
+ virtual status_t setStreamOutput(uint32_t stream, int output) = 0;
};
diff --git a/include/media/IAudioFlingerClient.h b/include/media/IAudioFlingerClient.h
index 78142ce3e150..aa0cdcff1e87 100644
--- a/include/media/IAudioFlingerClient.h
+++ b/include/media/IAudioFlingerClient.h
@@ -32,7 +32,7 @@ public:
DECLARE_META_INTERFACE(AudioFlingerClient);
// Notifies a change of audio input/output configuration.
- virtual void ioConfigChanged(int event, void *param1, void *param2) = 0;
+ virtual void ioConfigChanged(int event, int ioHandle, void *param2) = 0;
};
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 232ffb05bda4..b34f214e6170 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -115,7 +115,7 @@ static bool settingsAllowed() {
AudioFlinger::AudioFlinger()
: BnAudioFlinger(),
- mAudioHardware(0), mMasterVolume(1.0f), mMasterMute(false)
+ mAudioHardware(0), mMasterVolume(1.0f), mMasterMute(false), mNextThreadId(0)
{
mHardwareStatus = AUDIO_HW_IDLE;
@@ -231,12 +231,12 @@ status_t AudioFlinger::dump(int fd, const Vector<String16>& args)
// dump playback threads
for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
- mPlaybackThreads[i]->dump(fd, args);
+ mPlaybackThreads.valueAt(i)->dump(fd, args);
}
// dump record threads
for (size_t i = 0; i < mRecordThreads.size(); i++) {
- mRecordThreads[i]->dump(fd, args);
+ mRecordThreads.valueAt(i)->dump(fd, args);
}
if (mAudioHardware) {
@@ -260,7 +260,7 @@ sp<IAudioTrack> AudioFlinger::createTrack(
int frameCount,
uint32_t flags,
const sp<IMemory>& sharedBuffer,
- void *output,
+ int output,
status_t *status)
{
sp<PlaybackThread::Track> track;
@@ -308,56 +308,56 @@ Exit:
return trackHandle;
}
-uint32_t AudioFlinger::sampleRate(void *output) const
+uint32_t AudioFlinger::sampleRate(int output) const
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
if (thread == NULL) {
- LOGW("sampleRate() unknown thread %p", output);
+ LOGW("sampleRate() unknown thread %d", output);
return 0;
}
return thread->sampleRate();
}
-int AudioFlinger::channelCount(void *output) const
+int AudioFlinger::channelCount(int output) const
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
if (thread == NULL) {
- LOGW("channelCount() unknown thread %p", output);
+ LOGW("channelCount() unknown thread %d", output);
return 0;
}
return thread->channelCount();
}
-int AudioFlinger::format(void *output) const
+int AudioFlinger::format(int output) const
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
if (thread == NULL) {
- LOGW("format() unknown thread %p", output);
+ LOGW("format() unknown thread %d", output);
return 0;
}
return thread->format();
}
-size_t AudioFlinger::frameCount(void *output) const
+size_t AudioFlinger::frameCount(int output) const
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
if (thread == NULL) {
- LOGW("frameCount() unknown thread %p", output);
+ LOGW("frameCount() unknown thread %d", output);
return 0;
}
return thread->frameCount();
}
-uint32_t AudioFlinger::latency(void *output) const
+uint32_t AudioFlinger::latency(int output) const
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
if (thread == NULL) {
- LOGW("latency() unknown thread %p", output);
+ LOGW("latency() unknown thread %d", output);
return 0;
}
return thread->latency();
@@ -380,7 +380,7 @@ status_t AudioFlinger::setMasterVolume(float value)
mMasterVolume = value;
for (uint32_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads[i]->setMasterVolume(value);
+ mPlaybackThreads.valueAt(i)->setMasterVolume(value);
return NO_ERROR;
}
@@ -435,7 +435,7 @@ status_t AudioFlinger::setMasterMute(bool muted)
mMasterMute = muted;
for (uint32_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads[i]->setMasterMute(muted);
+ mPlaybackThreads.valueAt(i)->setMasterMute(muted);
return NO_ERROR;
}
@@ -450,7 +450,7 @@ bool AudioFlinger::masterMute() const
return mMasterMute;
}
-status_t AudioFlinger::setStreamVolume(int stream, float value, void *output)
+status_t AudioFlinger::setStreamVolume(int stream, float value, int output)
{
// check calling permissions
if (!settingsAllowed()) {
@@ -495,7 +495,7 @@ status_t AudioFlinger::setStreamVolume(int stream, float value, void *output)
if (thread == NULL) {
for (uint32_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads[i]->setStreamVolume(stream, value);
+ mPlaybackThreads.valueAt(i)->setStreamVolume(stream, value);
} else {
thread->setStreamVolume(stream, value);
@@ -518,12 +518,12 @@ status_t AudioFlinger::setStreamMute(int stream, bool muted)
mStreamTypes[stream].mute = muted;
for (uint32_t i = 0; i < mPlaybackThreads.size(); i++)
- mPlaybackThreads[i]->setStreamMute(stream, muted);
+ mPlaybackThreads.valueAt(i)->setStreamMute(stream, muted);
return NO_ERROR;
}
-float AudioFlinger::streamVolume(int stream, void *output) const
+float AudioFlinger::streamVolume(int stream, int output) const
{
if (stream < 0 || uint32_t(stream) >= AudioSystem::NUM_STREAM_TYPES) {
return 0.0f;
@@ -562,18 +562,18 @@ bool AudioFlinger::isMusicActive() const
{
Mutex::Autolock _l(mLock);
for (uint32_t i = 0; i < mPlaybackThreads.size(); i++) {
- if (mPlaybackThreads[i]->isMusicActive()) {
+ if (mPlaybackThreads.valueAt(i)->isMusicActive()) {
return true;
}
}
return false;
}
-status_t AudioFlinger::setParameters(void *ioHandle, const String8& keyValuePairs)
+status_t AudioFlinger::setParameters(int ioHandle, const String8& keyValuePairs)
{
status_t result;
- LOGV("setParameters(): io %p, keyvalue %s, tid %d, calling tid %d",
+ LOGV("setParameters(): io %d, keyvalue %s, tid %d, calling tid %d",
ioHandle, keyValuePairs.string(), gettid(), IPCThreadState::self()->getCallingPid());
// check calling permissions
if (!settingsAllowed()) {
@@ -604,9 +604,9 @@ status_t AudioFlinger::setParameters(void *ioHandle, const String8& keyValuePair
return BAD_VALUE;
}
-String8 AudioFlinger::getParameters(void *ioHandle, const String8& keys)
+String8 AudioFlinger::getParameters(int ioHandle, const String8& keys)
{
-// LOGV("getParameters() io %p, keys %s, tid %d, calling tid %d",
+// LOGV("getParameters() io %d, keys %s, tid %d, calling tid %d",
// ioHandle, keys.string(), gettid(), IPCThreadState::self()->getCallingPid());
if (ioHandle == 0) {
@@ -644,11 +644,11 @@ void AudioFlinger::registerClient(const sp<IAudioFlingerClient>& client)
// the config change is always sent from playback or record threads to avoid deadlock
// with AudioSystem::gLock
for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
- mPlaybackThreads[i]->sendConfigEvent(AudioSystem::OUTPUT_OPENED);
+ mPlaybackThreads.valueAt(i)->sendConfigEvent(AudioSystem::OUTPUT_OPENED);
}
for (size_t i = 0; i < mRecordThreads.size(); i++) {
- mRecordThreads[i]->sendConfigEvent(AudioSystem::INPUT_OPENED);
+ mRecordThreads.valueAt(i)->sendConfigEvent(AudioSystem::INPUT_OPENED);
}
}
@@ -668,14 +668,33 @@ void AudioFlinger::binderDied(const wp<IBinder>& who) {
}
}
-void AudioFlinger::audioConfigChanged(int event, void *param1, void *param2) {
+void AudioFlinger::audioConfigChanged(int event, const sp<ThreadBase>& thread, void *param2) {
Mutex::Autolock _l(mLock);
- size_t size = mNotificationClients.size();
- for (size_t i = 0; i < size; i++) {
- sp<IBinder> binder = mNotificationClients.itemAt(i);
- LOGV("audioConfigChanged() Notifying change to client %p", binder.get());
- sp<IAudioFlingerClient> client = interface_cast<IAudioFlingerClient> (binder);
- client->ioConfigChanged(event, param1, param2);
+ int ioHandle = 0;
+
+ for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
+ if (mPlaybackThreads.valueAt(i) == thread) {
+ ioHandle = mPlaybackThreads.keyAt(i);
+ break;
+ }
+ }
+ if (ioHandle == 0) {
+ for (size_t i = 0; i < mRecordThreads.size(); i++) {
+ if (mRecordThreads.valueAt(i) == thread) {
+ ioHandle = mRecordThreads.keyAt(i);
+ break;
+ }
+ }
+ }
+
+ if (ioHandle != 0) {
+ size_t size = mNotificationClients.size();
+ for (size_t i = 0; i < size; i++) {
+ sp<IBinder> binder = mNotificationClients.itemAt(i);
+ LOGV("audioConfigChanged() Notifying change to client %p", binder.get());
+ sp<IAudioFlingerClient> client = interface_cast<IAudioFlingerClient> (binder);
+ client->ioConfigChanged(event, ioHandle, param2);
+ }
}
}
@@ -2711,7 +2730,7 @@ status_t AudioFlinger::TrackHandle::onTransact(
sp<IAudioRecord> AudioFlinger::openRecord(
pid_t pid,
- void *input,
+ int input,
uint32_t sampleRate,
int format,
int channelCount,
@@ -3204,7 +3223,7 @@ void AudioFlinger::RecordThread::readInputParameters()
// ----------------------------------------------------------------------------
-void *AudioFlinger::openOutput(uint32_t *pDevices,
+int AudioFlinger::openOutput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
@@ -3227,7 +3246,7 @@ void *AudioFlinger::openOutput(uint32_t *pDevices,
flags);
if (pDevices == NULL || *pDevices == 0) {
- return NULL;
+ return 0;
}
Mutex::Autolock _l(mLock);
@@ -3249,12 +3268,12 @@ void *AudioFlinger::openOutput(uint32_t *pDevices,
(format != AudioSystem::PCM_16_BIT) ||
(channels != AudioSystem::CHANNEL_OUT_STEREO)) {
thread = new DirectOutputThread(this, output);
- LOGV("openOutput() created direct output %p", thread);
+ LOGV("openOutput() created direct output: ID %d thread %p", (mNextThreadId + 1), thread);
} else {
thread = new MixerThread(this, output);
- LOGV("openOutput() created mixer output %p", thread);
+ LOGV("openOutput() created mixer output: ID %d thread %p", (mNextThreadId + 1), thread);
}
- mPlaybackThreads.add(thread);
+ mPlaybackThreads.add(++mNextThreadId, thread);
if (pSamplingRate) *pSamplingRate = samplingRate;
if (pFormat) *pFormat = format;
@@ -3262,26 +3281,28 @@ void *AudioFlinger::openOutput(uint32_t *pDevices,
if (pLatencyMs) *pLatencyMs = thread->latency();
}
- return thread;
+ return mNextThreadId;
}
-void *AudioFlinger::openDuplicateOutput(void *output1, void *output2)
+int AudioFlinger::openDuplicateOutput(int output1, int output2)
{
Mutex::Autolock _l(mLock);
+ MixerThread *thread1 = checkMixerThread_l(output1);
+ MixerThread *thread2 = checkMixerThread_l(output2);
- if (checkMixerThread_l(output1) == NULL ||
- checkMixerThread_l(output2) == NULL) {
- LOGW("openDuplicateOutput() wrong output mixer type %p or %p", output1, output2);
- return NULL;
+ if (thread1 == NULL || thread2 == NULL) {
+ LOGW("openDuplicateOutput() wrong output mixer type for output %d or %d", output1, output2);
+ return 0;
}
- DuplicatingThread *thread = new DuplicatingThread(this, (MixerThread *)output1);
- thread->addOutputTrack( (MixerThread *)output2);
- mPlaybackThreads.add(thread);
- return thread;
+
+ DuplicatingThread *thread = new DuplicatingThread(this, thread1);
+ thread->addOutputTrack(thread2);
+ mPlaybackThreads.add(++mNextThreadId, thread);
+ return mNextThreadId;
}
-status_t AudioFlinger::closeOutput(void *output)
+status_t AudioFlinger::closeOutput(int output)
{
PlaybackThread *thread;
{
@@ -3291,24 +3312,24 @@ status_t AudioFlinger::closeOutput(void *output)
return BAD_VALUE;
}
- LOGV("closeOutput() %p", thread);
+ LOGV("closeOutput() %d", output);
if (thread->type() == PlaybackThread::MIXER) {
for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
- if (mPlaybackThreads[i]->type() == PlaybackThread::DUPLICATING) {
- DuplicatingThread *dupThread = (DuplicatingThread *)mPlaybackThreads[i].get();
+ if (mPlaybackThreads.valueAt(i)->type() == PlaybackThread::DUPLICATING) {
+ DuplicatingThread *dupThread = (DuplicatingThread *)mPlaybackThreads.valueAt(i).get();
dupThread->removeOutputTrack((MixerThread *)thread);
}
}
}
- mPlaybackThreads.remove(thread);
+ mPlaybackThreads.removeItem(output);
}
thread->exit();
return NO_ERROR;
}
-status_t AudioFlinger::suspendOutput(void *output)
+status_t AudioFlinger::suspendOutput(int output)
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
@@ -3317,13 +3338,13 @@ status_t AudioFlinger::suspendOutput(void *output)
return BAD_VALUE;
}
- LOGV("suspendOutput() %p", output);
+ LOGV("suspendOutput() %d", output);
thread->suspend();
return NO_ERROR;
}
-status_t AudioFlinger::restoreOutput(void *output)
+status_t AudioFlinger::restoreOutput(int output)
{
Mutex::Autolock _l(mLock);
PlaybackThread *thread = checkPlaybackThread_l(output);
@@ -3332,14 +3353,14 @@ status_t AudioFlinger::restoreOutput(void *output)
return BAD_VALUE;
}
- LOGV("restoreOutput() %p", output);
+ LOGV("restoreOutput() %d", output);
thread->restore();
return NO_ERROR;
}
-void *AudioFlinger::openInput(uint32_t *pDevices,
+int AudioFlinger::openInput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
@@ -3355,7 +3376,7 @@ void *AudioFlinger::openInput(uint32_t *pDevices,
uint32_t reqChannels = channels;
if (pDevices == NULL || *pDevices == 0) {
- return NULL;
+ return 0;
}
Mutex::Autolock _l(mLock);
@@ -3392,8 +3413,8 @@ void *AudioFlinger::openInput(uint32_t *pDevices,
if (input != 0) {
// Start record thread
thread = new RecordThread(this, input, reqSamplingRate, reqChannels);
- mRecordThreads.add(thread);
-
+ mRecordThreads.add(++mNextThreadId, thread);
+ LOGV("openInput() created record thread: ID %d thread %p", mNextThreadId, thread);
if (pSamplingRate) *pSamplingRate = reqSamplingRate;
if (pFormat) *pFormat = format;
if (pChannels) *pChannels = reqChannels;
@@ -3401,10 +3422,10 @@ void *AudioFlinger::openInput(uint32_t *pDevices,
input->standby();
}
- return thread;
+ return mNextThreadId;
}
-status_t AudioFlinger::closeInput(void *input)
+status_t AudioFlinger::closeInput(int input)
{
RecordThread *thread;
{
@@ -3414,27 +3435,27 @@ status_t AudioFlinger::closeInput(void *input)
return BAD_VALUE;
}
- LOGV("closeInput() %p", thread);
- mRecordThreads.remove(thread);
+ LOGV("closeInput() %d", input);
+ mRecordThreads.removeItem(input);
}
thread->exit();
return NO_ERROR;
}
-status_t AudioFlinger::setStreamOutput(uint32_t stream, void *output)
+status_t AudioFlinger::setStreamOutput(uint32_t stream, int output)
{
Mutex::Autolock _l(mLock);
MixerThread *dstThread = checkMixerThread_l(output);
if (dstThread == NULL) {
- LOGW("setStreamOutput() bad output thread %p", output);
+ LOGW("setStreamOutput() bad output id %d", output);
return BAD_VALUE;
}
- LOGV("setStreamOutput() stream %d to output %p", stream, dstThread);
+ LOGV("setStreamOutput() stream %d to output %d", stream, output);
for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
- PlaybackThread *thread = mPlaybackThreads[i].get();
+ PlaybackThread *thread = mPlaybackThreads.valueAt(i).get();
if (thread != dstThread &&
thread->type() != PlaybackThread::DIRECT) {
MixerThread *srcThread = (MixerThread *)thread;
@@ -3452,22 +3473,17 @@ status_t AudioFlinger::setStreamOutput(uint32_t stream, void *output)
}
// checkPlaybackThread_l() must be called with AudioFlinger::mLock held
-AudioFlinger::PlaybackThread *AudioFlinger::checkPlaybackThread_l(void *output) const
+AudioFlinger::PlaybackThread *AudioFlinger::checkPlaybackThread_l(int output) const
{
PlaybackThread *thread = NULL;
-
- for (size_t i = 0; i < mPlaybackThreads.size(); i++) {
- if (mPlaybackThreads[i] == output) {
- thread = (PlaybackThread *)output;
- break;
- }
+ if (mPlaybackThreads.indexOfKey(output) >= 0) {
+ thread = (PlaybackThread *)mPlaybackThreads.valueFor(output).get();
}
-
return thread;
}
// checkMixerThread_l() must be called with AudioFlinger::mLock held
-AudioFlinger::MixerThread *AudioFlinger::checkMixerThread_l(void *output) const
+AudioFlinger::MixerThread *AudioFlinger::checkMixerThread_l(int output) const
{
PlaybackThread *thread = checkPlaybackThread_l(output);
if (thread != NULL) {
@@ -3479,17 +3495,12 @@ AudioFlinger::MixerThread *AudioFlinger::checkMixerThread_l(void *output) const
}
// checkRecordThread_l() must be called with AudioFlinger::mLock held
-AudioFlinger::RecordThread *AudioFlinger::checkRecordThread_l(void *input) const
+AudioFlinger::RecordThread *AudioFlinger::checkRecordThread_l(int input) const
{
RecordThread *thread = NULL;
-
- for (size_t i = 0; i < mRecordThreads.size(); i++) {
- if (mRecordThreads[i] == input) {
- thread = (RecordThread *)input;
- break;
- }
+ if (mRecordThreads.indexOfKey(input) >= 0) {
+ thread = (RecordThread *)mRecordThreads.valueFor(input).get();
}
-
return thread;
}
diff --git a/libs/audioflinger/AudioFlinger.h b/libs/audioflinger/AudioFlinger.h
index 06c5846d5e66..4a4b82343eb9 100644
--- a/libs/audioflinger/AudioFlinger.h
+++ b/libs/audioflinger/AudioFlinger.h
@@ -73,14 +73,14 @@ public:
int frameCount,
uint32_t flags,
const sp<IMemory>& sharedBuffer,
- void *output,
+ int output,
status_t *status);
- virtual uint32_t sampleRate(void *output) const;
- virtual int channelCount(void *output) const;
- virtual int format(void *output) const;
- virtual size_t frameCount(void *output) const;
- virtual uint32_t latency(void *output) const;
+ virtual uint32_t sampleRate(int output) const;
+ virtual int channelCount(int output) const;
+ virtual int format(int output) const;
+ virtual size_t frameCount(int output) const;
+ virtual uint32_t latency(int output) const;
virtual status_t setMasterVolume(float value);
virtual status_t setMasterMute(bool muted);
@@ -88,10 +88,10 @@ public:
virtual float masterVolume() const;
virtual bool masterMute() const;
- virtual status_t setStreamVolume(int stream, float value, void *output);
+ virtual status_t setStreamVolume(int stream, float value, int output);
virtual status_t setStreamMute(int stream, bool muted);
- virtual float streamVolume(int stream, void *output) const;
+ virtual float streamVolume(int stream, int output) const;
virtual bool streamMute(int stream) const;
virtual status_t setMode(int mode);
@@ -101,37 +101,37 @@ public:
virtual bool isMusicActive() const;
- virtual status_t setParameters(void *ioHandle, const String8& keyValuePairs);
- virtual String8 getParameters(void *ioHandle, const String8& keys);
+ virtual status_t setParameters(int ioHandle, const String8& keyValuePairs);
+ virtual String8 getParameters(int ioHandle, const String8& keys);
virtual void registerClient(const sp<IAudioFlingerClient>& client);
virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount);
- virtual void *openOutput(uint32_t *pDevices,
+ virtual int openOutput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
uint32_t *pLatencyMs,
uint32_t flags);
- virtual void *openDuplicateOutput(void *output1, void *output2);
+ virtual int openDuplicateOutput(int output1, int output2);
- virtual status_t closeOutput(void *output);
+ virtual status_t closeOutput(int output);
- virtual status_t suspendOutput(void *output);
+ virtual status_t suspendOutput(int output);
- virtual status_t restoreOutput(void *output);
+ virtual status_t restoreOutput(int output);
- virtual void *openInput(uint32_t *pDevices,
+ virtual int openInput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
uint32_t acoustics);
- virtual status_t closeInput(void *input);
+ virtual status_t closeInput(int input);
- virtual status_t setStreamOutput(uint32_t stream, void *output);
+ virtual status_t setStreamOutput(uint32_t stream, int output);
// IBinder::DeathRecipient
virtual void binderDied(const wp<IBinder>& who);
@@ -158,7 +158,7 @@ public:
// record interface
virtual sp<IAudioRecord> openRecord(
pid_t pid,
- void *input,
+ int input,
uint32_t sampleRate,
int format,
int channelCount,
@@ -172,8 +172,6 @@ public:
Parcel* reply,
uint32_t flags);
- void audioConfigChanged(int event, void *param1, void *param2);
-
private:
AudioFlinger();
virtual ~AudioFlinger();
@@ -615,10 +613,11 @@ private:
SortedVector < sp<OutputTrack> > mOutputTracks;
};
- PlaybackThread *checkPlaybackThread_l(void *output) const;
- MixerThread *checkMixerThread_l(void *output) const;
- RecordThread *checkRecordThread_l(void *input) const;
+ PlaybackThread *checkPlaybackThread_l(int output) const;
+ MixerThread *checkMixerThread_l(int output) const;
+ RecordThread *checkRecordThread_l(int input) const;
float streamVolumeInternal(int stream) const { return mStreamTypes[stream].volume; }
+ void audioConfigChanged(int event, const sp<ThreadBase>& thread, void *param2);
friend class AudioBuffer;
@@ -744,14 +743,15 @@ private:
mutable int mHardwareStatus;
- SortedVector< sp<PlaybackThread> > mPlaybackThreads;
+ DefaultKeyedVector< int, sp<PlaybackThread> > mPlaybackThreads;
PlaybackThread::stream_type_t mStreamTypes[AudioSystem::NUM_STREAM_TYPES];
float mMasterVolume;
bool mMasterMute;
- SortedVector< sp<RecordThread> > mRecordThreads;
+ DefaultKeyedVector< int, sp<RecordThread> > mRecordThreads;
SortedVector< sp<IBinder> > mNotificationClients;
+ int mNextThreadId;
};
// ----------------------------------------------------------------------------
diff --git a/libs/audioflinger/AudioPolicyManagerGeneric.cpp b/libs/audioflinger/AudioPolicyManagerGeneric.cpp
index 4b31815cdfbe..6b17b872f915 100644
--- a/libs/audioflinger/AudioPolicyManagerGeneric.cpp
+++ b/libs/audioflinger/AudioPolicyManagerGeneric.cpp
@@ -224,7 +224,7 @@ audio_io_handle_t AudioPolicyManagerGeneric::getOutput(AudioSystem::stream_type
if ((flags & AudioSystem::OUTPUT_FLAG_DIRECT) ||
(format != 0 && !AudioSystem::isLinearPCM(format)) ||
(channels != 0 && channels != AudioSystem::CHANNEL_OUT_MONO && channels != AudioSystem::CHANNEL_OUT_STEREO)) {
- return NULL;
+ return 0;
}
return mHardwareOutput;
@@ -232,10 +232,10 @@ audio_io_handle_t AudioPolicyManagerGeneric::getOutput(AudioSystem::stream_type
status_t AudioPolicyManagerGeneric::startOutput(audio_io_handle_t output, AudioSystem::stream_type stream)
{
- LOGV("startOutput() output %p, stream %d", output, stream);
+ LOGV("startOutput() output %d, stream %d", output, stream);
ssize_t index = mOutputs.indexOfKey(output);
if (index < 0) {
- LOGW("startOutput() unknow output %p", output);
+ LOGW("startOutput() unknow output %d", output);
return BAD_VALUE;
}
@@ -253,10 +253,10 @@ status_t AudioPolicyManagerGeneric::startOutput(audio_io_handle_t output, AudioS
status_t AudioPolicyManagerGeneric::stopOutput(audio_io_handle_t output, AudioSystem::stream_type stream)
{
- LOGV("stopOutput() output %p, stream %d", output, stream);
+ LOGV("stopOutput() output %d, stream %d", output, stream);
ssize_t index = mOutputs.indexOfKey(output);
if (index < 0) {
- LOGW("stopOutput() unknow output %p", output);
+ LOGW("stopOutput() unknow output %d", output);
return BAD_VALUE;
}
@@ -272,17 +272,17 @@ status_t AudioPolicyManagerGeneric::stopOutput(audio_io_handle_t output, AudioSy
outputDesc->changeRefCount(stream, -1);
return NO_ERROR;
} else {
- LOGW("stopOutput() refcount is already 0 for output %p", output);
+ LOGW("stopOutput() refcount is already 0 for output %d", output);
return INVALID_OPERATION;
}
}
void AudioPolicyManagerGeneric::releaseOutput(audio_io_handle_t output)
{
- LOGV("releaseOutput() %p", output);
+ LOGV("releaseOutput() %d", output);
ssize_t index = mOutputs.indexOfKey(output);
if (index < 0) {
- LOGW("releaseOutput() releasing unknown output %p", output);
+ LOGW("releaseOutput() releasing unknown output %d", output);
return;
}
@@ -332,7 +332,7 @@ audio_io_handle_t AudioPolicyManagerGeneric::getInput(int inputSource,
samplingRate, format, channels);
mpClientInterface->closeInput(input);
delete inputDesc;
- return NULL;
+ return 0;
}
mInputs.add(input, inputDesc);
return input;
@@ -340,10 +340,10 @@ audio_io_handle_t AudioPolicyManagerGeneric::getInput(int inputSource,
status_t AudioPolicyManagerGeneric::startInput(audio_io_handle_t input)
{
- LOGV("startInput() input %p", input);
+ LOGV("startInput() input %d", input);
ssize_t index = mInputs.indexOfKey(input);
if (index < 0) {
- LOGW("startInput() unknow input %p", input);
+ LOGW("startInput() unknow input %d", input);
return BAD_VALUE;
}
AudioInputDescriptor *inputDesc = mInputs.valueAt(index);
@@ -355,7 +355,7 @@ status_t AudioPolicyManagerGeneric::startInput(audio_io_handle_t input)
// refuse 2 active AudioRecord clients at the same time
for (size_t i = 0; i < mInputs.size(); i++) {
if (mInputs.valueAt(i)->mRefCount > 0) {
- LOGW("startInput() input %p, other input %p already started", input, mInputs.keyAt(i));
+ LOGW("startInput() input %d, other input %d already started", input, mInputs.keyAt(i));
return INVALID_OPERATION;
}
}
@@ -367,16 +367,16 @@ status_t AudioPolicyManagerGeneric::startInput(audio_io_handle_t input)
status_t AudioPolicyManagerGeneric::stopInput(audio_io_handle_t input)
{
- LOGV("stopInput() input %p", input);
+ LOGV("stopInput() input %d", input);
ssize_t index = mInputs.indexOfKey(input);
if (index < 0) {
- LOGW("stopInput() unknow input %p", input);
+ LOGW("stopInput() unknow input %d", input);
return BAD_VALUE;
}
AudioInputDescriptor *inputDesc = mInputs.valueAt(index);
if (inputDesc->mRefCount == 0) {
- LOGW("stopInput() input %p already stopped", input);
+ LOGW("stopInput() input %d already stopped", input);
return INVALID_OPERATION;
} else {
inputDesc->mRefCount = 0;
@@ -386,10 +386,10 @@ status_t AudioPolicyManagerGeneric::stopInput(audio_io_handle_t input)
void AudioPolicyManagerGeneric::releaseInput(audio_io_handle_t input)
{
- LOGV("releaseInput() %p", input);
+ LOGV("releaseInput() %d", input);
ssize_t index = mInputs.indexOfKey(input);
if (index < 0) {
- LOGW("releaseInput() releasing unknown input %p", input);
+ LOGW("releaseInput() releasing unknown input %d", input);
return;
}
mpClientInterface->closeInput(input);
@@ -438,7 +438,7 @@ status_t AudioPolicyManagerGeneric::setStreamVolumeIndex(AudioSystem::stream_typ
float volume = computeVolume((int)stream, index, device);
- LOGV("setStreamVolume() for output %p stream %d, volume %f", mOutputs.keyAt(i), stream, volume);
+ LOGV("setStreamVolume() for output %d stream %d, volume %f", mOutputs.keyAt(i), stream, volume);
mpClientInterface->setStreamVolume(stream, volume, mOutputs.keyAt(i));
}
return NO_ERROR;
@@ -657,7 +657,7 @@ float AudioPolicyManagerGeneric::computeVolume(int stream, int index, uint32_t d
void AudioPolicyManagerGeneric::setStreamMute(int stream, bool on, audio_io_handle_t output)
{
- LOGV("setStreamMute() stream %d, mute %d, output %p", stream, on, output);
+ LOGV("setStreamMute() stream %d, mute %d, output %d", stream, on, output);
StreamDescriptor &streamDesc = mStreams[stream];
diff --git a/libs/audioflinger/AudioPolicyService.cpp b/libs/audioflinger/AudioPolicyService.cpp
index 7f6c4ed4eef8..ae17d7682c2d 100644
--- a/libs/audioflinger/AudioPolicyService.cpp
+++ b/libs/audioflinger/AudioPolicyService.cpp
@@ -201,7 +201,7 @@ audio_io_handle_t AudioPolicyService::getOutput(AudioSystem::stream_type stream,
AudioSystem::output_flags flags)
{
if (mpPolicyManager == NULL) {
- return NULL;
+ return 0;
}
LOGV("getOutput() tid %d", gettid());
Mutex::Autolock _l(mLock);
@@ -245,7 +245,7 @@ audio_io_handle_t AudioPolicyService::getInput(int inputSource,
AudioSystem::audio_in_acoustics acoustics)
{
if (mpPolicyManager == NULL) {
- return NULL;
+ return 0;
}
Mutex::Autolock _l(mLock);
return mpPolicyManager->getInput(inputSource, samplingRate, format, channels, acoustics);
@@ -381,7 +381,7 @@ audio_io_handle_t AudioPolicyService::openOutput(uint32_t *pDevices,
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
if (af == 0) {
LOGW("openOutput() could not get AudioFlinger");
- return NULL;
+ return 0;
}
return af->openOutput(pDevices, pSamplingRate, (uint32_t *)pFormat, pChannels, pLatencyMs, flags);
@@ -392,7 +392,7 @@ audio_io_handle_t AudioPolicyService::openDuplicateOutput(audio_io_handle_t outp
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
if (af == 0) {
LOGW("openDuplicateOutput() could not get AudioFlinger");
- return NULL;
+ return 0;
}
return af->openDuplicateOutput(output1, output2);
}
@@ -437,7 +437,7 @@ audio_io_handle_t AudioPolicyService::openInput(uint32_t *pDevices,
sp<IAudioFlinger> af = AudioSystem::get_audio_flinger();
if (af == 0) {
LOGW("openInput() could not get AudioFlinger");
- return NULL;
+ return 0;
}
return af->openInput(pDevices, pSamplingRate, (uint32_t *)pFormat, pChannels, acoustics);
@@ -453,7 +453,7 @@ status_t AudioPolicyService::closeInput(audio_io_handle_t input)
status_t AudioPolicyService::setStreamVolume(AudioSystem::stream_type stream, float volume, audio_io_handle_t output)
{
- return mAudioCommandThread->volumeCommand((int)stream, volume, (void *)output);
+ return mAudioCommandThread->volumeCommand((int)stream, volume, (int)output);
}
status_t AudioPolicyService::setStreamOutput(AudioSystem::stream_type stream, audio_io_handle_t output)
@@ -467,7 +467,7 @@ status_t AudioPolicyService::setStreamOutput(AudioSystem::stream_type stream, au
void AudioPolicyService::setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs)
{
- mAudioCommandThread->parametersCommand((void *)ioHandle, keyValuePairs);
+ mAudioCommandThread->parametersCommand((int)ioHandle, keyValuePairs);
}
String8 AudioPolicyService::getParameters(audio_io_handle_t ioHandle, const String8& keys)
@@ -547,7 +547,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
}break;
case SET_VOLUME: {
VolumeData *data = (VolumeData *)command->mParam;
- LOGV("AudioCommandThread() processing set volume stream %d, volume %f, output %p", data->mStream, data->mVolume, data->mIO);
+ LOGV("AudioCommandThread() processing set volume stream %d, volume %f, output %d", data->mStream, data->mVolume, data->mIO);
mCommandStatus = AudioSystem::setStreamVolume(data->mStream, data->mVolume, data->mIO);
mCommandCond.signal();
mWaitWorkCV.wait(mLock);
@@ -555,7 +555,7 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
}break;
case SET_PARAMETERS: {
ParametersData *data = (ParametersData *)command->mParam;
- LOGV("AudioCommandThread() processing set parameters string %s, io %p", data->mKeyValuePairs.string(), data->mIO);
+ LOGV("AudioCommandThread() processing set parameters string %s, io %d", data->mKeyValuePairs.string(), data->mIO);
mCommandStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
mCommandCond.signal();
mWaitWorkCV.wait(mLock);
@@ -599,7 +599,7 @@ void AudioPolicyService::AudioCommandThread::stopToneCommand()
mWaitWorkCV.signal();
}
-status_t AudioPolicyService::AudioCommandThread::volumeCommand(int stream, float volume, void *output)
+status_t AudioPolicyService::AudioCommandThread::volumeCommand(int stream, float volume, int output)
{
Mutex::Autolock _l(mLock);
AudioCommand *command = new AudioCommand();
@@ -610,7 +610,7 @@ status_t AudioPolicyService::AudioCommandThread::volumeCommand(int stream, float
data->mIO = output;
command->mParam = data;
mAudioCommands.add(command);
- LOGV("AudioCommandThread() adding set volume stream %d, volume %f, output %p", stream, volume, output);
+ LOGV("AudioCommandThread() adding set volume stream %d, volume %f, output %d", stream, volume, output);
mWaitWorkCV.signal();
mCommandCond.wait(mLock);
status_t status = mCommandStatus;
@@ -618,7 +618,7 @@ status_t AudioPolicyService::AudioCommandThread::volumeCommand(int stream, float
return status;
}
-status_t AudioPolicyService::AudioCommandThread::parametersCommand(void *ioHandle, const String8& keyValuePairs)
+status_t AudioPolicyService::AudioCommandThread::parametersCommand(int ioHandle, const String8& keyValuePairs)
{
Mutex::Autolock _l(mLock);
AudioCommand *command = new AudioCommand();
@@ -628,7 +628,7 @@ status_t AudioPolicyService::AudioCommandThread::parametersCommand(void *ioHandl
data->mKeyValuePairs = keyValuePairs;
command->mParam = data;
mAudioCommands.add(command);
- LOGV("AudioCommandThread() adding set parameter string %s, io %p", keyValuePairs.string(), ioHandle);
+ LOGV("AudioCommandThread() adding set parameter string %s, io %d", keyValuePairs.string(), ioHandle);
mWaitWorkCV.signal();
mCommandCond.wait(mLock);
status_t status = mCommandStatus;
diff --git a/libs/audioflinger/AudioPolicyService.h b/libs/audioflinger/AudioPolicyService.h
index 1c469751ea44..3909fa48512e 100644
--- a/libs/audioflinger/AudioPolicyService.h
+++ b/libs/audioflinger/AudioPolicyService.h
@@ -136,8 +136,8 @@ private:
void exit();
void startToneCommand(int type = 0, int stream = 0);
void stopToneCommand();
- status_t volumeCommand(int stream, float volume, void *output);
- status_t parametersCommand(void *ioHandle, const String8& keyValuePairs);
+ status_t volumeCommand(int stream, float volume, int output);
+ status_t parametersCommand(int ioHandle, const String8& keyValuePairs);
private:
// descriptor for requested tone playback event
@@ -157,11 +157,11 @@ private:
public:
int mStream;
float mVolume;
- void *mIO;
+ int mIO;
};
class ParametersData {
public:
- void *mIO;
+ int mIO;
String8 mKeyValuePairs;
};
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
index 1fc1024e5d24..98b55e9d0d4e 100644
--- a/media/libmedia/AudioSystem.cpp
+++ b/media/libmedia/AudioSystem.cpp
@@ -125,7 +125,7 @@ status_t AudioSystem::getMasterMute(bool* mute)
return NO_ERROR;
}
-status_t AudioSystem::setStreamVolume(int stream, float value, void *output)
+status_t AudioSystem::setStreamVolume(int stream, float value, int output)
{
if (uint32_t(stream) >= NUM_STREAM_TYPES) return BAD_VALUE;
const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
@@ -143,7 +143,7 @@ status_t AudioSystem::setStreamMute(int stream, bool mute)
return NO_ERROR;
}
-status_t AudioSystem::getStreamVolume(int stream, float* volume, void *output)
+status_t AudioSystem::getStreamVolume(int stream, float* volume, int output)
{
if (uint32_t(stream) >= NUM_STREAM_TYPES) return BAD_VALUE;
const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
@@ -234,7 +234,7 @@ status_t AudioSystem::getOutputSamplingRate(int* samplingRate, int streamType)
gLock.lock();
outputDesc = AudioSystem::gOutputs.valueFor(output);
if (outputDesc == 0) {
- LOGV("getOutputSamplingRate() no output descriptor for output %p in gOutputs", output);
+ LOGV("getOutputSamplingRate() no output descriptor for output %d in gOutputs", output);
gLock.unlock();
const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger();
if (af == 0) return PERMISSION_DENIED;
@@ -245,7 +245,7 @@ status_t AudioSystem::getOutputSamplingRate(int* samplingRate, int streamType)
gLock.unlock();
}
- LOGV("getOutputSamplingRate() streamType %d, output %p, sampling rate %d", streamType, output, *samplingRate);
+ LOGV("getOutputSamplingRate() streamType %d, output %d, sampling rate %d", streamType, output, *samplingRate);
return NO_ERROR;
}
@@ -276,7 +276,7 @@ status_t AudioSystem::getOutputFrameCount(int* frameCount, int streamType)
gLock.unlock();
}
- LOGV("getOutputFrameCount() streamType %d, output %p, frameCount %d", streamType, output, *frameCount);
+ LOGV("getOutputFrameCount() streamType %d, output %d, frameCount %d", streamType, output, *frameCount);
return NO_ERROR;
}
@@ -307,7 +307,7 @@ status_t AudioSystem::getOutputLatency(uint32_t* latency, int streamType)
gLock.unlock();
}
- LOGV("getOutputLatency() streamType %d, output %p, latency %d", streamType, output, *latency);
+ LOGV("getOutputLatency() streamType %d, output %d, latency %d", streamType, output, *latency);
return NO_ERROR;
}
@@ -348,13 +348,12 @@ void AudioSystem::AudioFlingerClient::binderDied(const wp<IBinder>& who) {
LOGW("AudioFlinger server died!");
}
-void AudioSystem::AudioFlingerClient::ioConfigChanged(int event, void *param1, void *param2) {
+void AudioSystem::AudioFlingerClient::ioConfigChanged(int event, int ioHandle, void *param2) {
LOGV("ioConfigChanged() event %d", event);
- audio_io_handle_t ioHandle = (audio_io_handle_t)param1;
OutputDescriptor *desc;
uint32_t stream;
- if (param1 == 0) return;
+ if (ioHandle == 0) return;
Mutex::Autolock _l(AudioSystem::gLock);
@@ -362,14 +361,14 @@ void AudioSystem::AudioFlingerClient::ioConfigChanged(int event, void *param1, v
case STREAM_CONFIG_CHANGED:
if (param2 == 0) break;
stream = *(uint32_t *)param2;
- LOGV("ioConfigChanged() STREAM_CONFIG_CHANGED stream %d, output %p", stream, ioHandle);
+ LOGV("ioConfigChanged() STREAM_CONFIG_CHANGED stream %d, output %d", stream, ioHandle);
if (gStreamOutputMap.indexOfKey(stream) >= 0) {
gStreamOutputMap.replaceValueFor(stream, ioHandle);
}
break;
case OUTPUT_OPENED: {
if (gOutputs.indexOfKey(ioHandle) >= 0) {
- LOGV("ioConfigChanged() opening already existing output! %p", ioHandle);
+ LOGV("ioConfigChanged() opening already existing output! %d", ioHandle);
break;
}
if (param2 == 0) break;
@@ -382,10 +381,10 @@ void AudioSystem::AudioFlingerClient::ioConfigChanged(int event, void *param1, v
} break;
case OUTPUT_CLOSED: {
if (gOutputs.indexOfKey(ioHandle) < 0) {
- LOGW("ioConfigChanged() closing unknow output! %p", ioHandle);
+ LOGW("ioConfigChanged() closing unknow output! %d", ioHandle);
break;
}
- LOGV("ioConfigChanged() output %p closed", ioHandle);
+ LOGV("ioConfigChanged() output %d closed", ioHandle);
gOutputs.removeItem(ioHandle);
for (int i = gStreamOutputMap.size() - 1; i >= 0 ; i--) {
@@ -398,13 +397,13 @@ void AudioSystem::AudioFlingerClient::ioConfigChanged(int event, void *param1, v
case OUTPUT_CONFIG_CHANGED: {
int index = gOutputs.indexOfKey(ioHandle);
if (index < 0) {
- LOGW("ioConfigChanged() modifying unknow output! %p", ioHandle);
+ LOGW("ioConfigChanged() modifying unknow output! %d", ioHandle);
break;
}
if (param2 == 0) break;
desc = (OutputDescriptor *)param2;
- LOGV("ioConfigChanged() new config for output %p samplingRate %d, format %d channels %d frameCount %d latency %d",
+ LOGV("ioConfigChanged() new config for output %d samplingRate %d, format %d channels %d frameCount %d latency %d",
ioHandle, desc->samplingRate, desc->format,
desc->channels, desc->frameCount, desc->latency);
OutputDescriptor *outputDesc = gOutputs.valueAt(index);
@@ -524,15 +523,15 @@ audio_io_handle_t AudioSystem::getOutput(stream_type stream,
uint32_t channels,
output_flags flags)
{
- audio_io_handle_t output = NULL;
+ audio_io_handle_t output = 0;
if ((flags & AudioSystem::OUTPUT_FLAG_DIRECT) == 0) {
Mutex::Autolock _l(gLock);
output = AudioSystem::gStreamOutputMap.valueFor(stream);
- LOGV_IF((output != NULL), "getOutput() read %p from cache for stream %d", output, stream);
+ LOGV_IF((output != 0), "getOutput() read %d from cache for stream %d", output, stream);
}
- if (output == NULL) {
+ if (output == 0) {
const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) return NULL;
+ if (aps == 0) return 0;
output = aps->getOutput(stream, samplingRate, format, channels, flags);
if ((flags & AudioSystem::OUTPUT_FLAG_DIRECT) == 0) {
Mutex::Autolock _l(gLock);
@@ -570,7 +569,7 @@ audio_io_handle_t AudioSystem::getInput(int inputSource,
audio_in_acoustics acoustics)
{
const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
- if (aps == 0) return NULL;
+ if (aps == 0) return 0;
return aps->getInput(inputSource, samplingRate, format, channels, acoustics);
}
diff --git a/media/libmedia/IAudioFlinger.cpp b/media/libmedia/IAudioFlinger.cpp
index 938536740814..fc39a46edcb5 100644
--- a/media/libmedia/IAudioFlinger.cpp
+++ b/media/libmedia/IAudioFlinger.cpp
@@ -79,7 +79,7 @@ public:
int frameCount,
uint32_t flags,
const sp<IMemory>& sharedBuffer,
- void *output,
+ int output,
status_t *status)
{
Parcel data, reply;
@@ -92,7 +92,7 @@ public:
data.writeInt32(frameCount);
data.writeInt32(flags);
data.writeStrongBinder(sharedBuffer->asBinder());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
status_t lStatus = remote()->transact(CREATE_TRACK, data, &reply);
if (lStatus != NO_ERROR) {
LOGE("createTrack error: %s", strerror(-lStatus));
@@ -106,7 +106,7 @@ public:
virtual sp<IAudioRecord> openRecord(
pid_t pid,
- void *input,
+ int input,
uint32_t sampleRate,
int format,
int channelCount,
@@ -117,7 +117,7 @@ public:
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
data.writeInt32(pid);
- data.write(&input, sizeof(void *));
+ data.writeInt32(input);
data.writeInt32(sampleRate);
data.writeInt32(format);
data.writeInt32(channelCount);
@@ -131,47 +131,47 @@ public:
return interface_cast<IAudioRecord>(reply.readStrongBinder());
}
- virtual uint32_t sampleRate(void *output) const
+ virtual uint32_t sampleRate(int output) const
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(SAMPLE_RATE, data, &reply);
return reply.readInt32();
}
- virtual int channelCount(void *output) const
+ virtual int channelCount(int output) const
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(CHANNEL_COUNT, data, &reply);
return reply.readInt32();
}
- virtual int format(void *output) const
+ virtual int format(int output) const
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(FORMAT, data, &reply);
return reply.readInt32();
}
- virtual size_t frameCount(void *output) const
+ virtual size_t frameCount(int output) const
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(FRAME_COUNT, data, &reply);
return reply.readInt32();
}
- virtual uint32_t latency(void *output) const
+ virtual uint32_t latency(int output) const
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(LATENCY, data, &reply);
return reply.readInt32();
}
@@ -210,13 +210,13 @@ public:
return reply.readInt32();
}
- virtual status_t setStreamVolume(int stream, float value, void *output)
+ virtual status_t setStreamVolume(int stream, float value, int output)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
data.writeInt32(stream);
data.writeFloat(value);
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(SET_STREAM_VOLUME, data, &reply);
return reply.readInt32();
}
@@ -231,12 +231,12 @@ public:
return reply.readInt32();
}
- virtual float streamVolume(int stream, void *output) const
+ virtual float streamVolume(int stream, int output) const
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
data.writeInt32(stream);
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(STREAM_VOLUME, data, &reply);
return reply.readFloat();
}
@@ -284,21 +284,21 @@ public:
return reply.readInt32();
}
- virtual status_t setParameters(void *ioHandle, const String8& keyValuePairs)
+ virtual status_t setParameters(int ioHandle, const String8& keyValuePairs)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&ioHandle, sizeof(void *));
+ data.writeInt32(ioHandle);
data.writeString8(keyValuePairs);
remote()->transact(SET_PARAMETERS, data, &reply);
return reply.readInt32();
}
- virtual String8 getParameters(void *ioHandle, const String8& keys)
+ virtual String8 getParameters(int ioHandle, const String8& keys)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&ioHandle, sizeof(void *));
+ data.writeInt32(ioHandle);
data.writeString8(keys);
remote()->transact(GET_PARAMETERS, data, &reply);
return reply.readString8();
@@ -323,7 +323,7 @@ public:
return reply.readInt32();
}
- virtual void *openOutput(uint32_t *pDevices,
+ virtual int openOutput(uint32_t *pDevices,
uint32_t *pSamplingRate,
uint32_t *pFormat,
uint32_t *pChannels,
@@ -345,8 +345,7 @@ public:
data.writeInt32(latency);
data.writeInt32(flags);
remote()->transact(OPEN_OUTPUT, data, &reply);
- void *output;
- reply.read(&output, sizeof(void *));
+ int output = reply.readInt32();
LOGV("openOutput() returned output, %p", output);
devices = reply.readInt32();
if (pDevices) *pDevices = devices;
@@ -361,50 +360,48 @@ public:
return output;
}
- virtual void *openDuplicateOutput(void *output1, void *output2)
+ virtual int openDuplicateOutput(int output1, int output2)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output1, sizeof(void *));
- data.write(&output2, sizeof(void *));
+ data.writeInt32(output1);
+ data.writeInt32(output2);
remote()->transact(OPEN_DUPLICATE_OUTPUT, data, &reply);
- void *output;
- reply.read(&output, sizeof(void *));
- return output;
+ return reply.readInt32();
}
- virtual status_t closeOutput(void *output)
+ virtual status_t closeOutput(int output)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(CLOSE_OUTPUT, data, &reply);
return reply.readInt32();
}
- virtual status_t suspendOutput(void *output)
+ virtual status_t suspendOutput(int output)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(SUSPEND_OUTPUT, data, &reply);
return reply.readInt32();
}
- virtual status_t restoreOutput(void *output)
+ virtual status_t restoreOutput(int output)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(RESTORE_OUTPUT, data, &reply);
return reply.readInt32();
}
- virtual void *openInput(uint32_t *pDevices,
- uint32_t *pSamplingRate,
- uint32_t *pFormat,
- uint32_t *pChannels,
- uint32_t acoustics)
+ virtual int openInput(uint32_t *pDevices,
+ uint32_t *pSamplingRate,
+ uint32_t *pFormat,
+ uint32_t *pChannels,
+ uint32_t acoustics)
{
Parcel data, reply;
uint32_t devices = pDevices ? *pDevices : 0;
@@ -419,8 +416,7 @@ public:
data.writeInt32(channels);
data.writeInt32(acoustics);
remote()->transact(OPEN_INPUT, data, &reply);
- void *input;
- reply.read(&input, sizeof(void *));
+ int input = reply.readInt32();
devices = reply.readInt32();
if (pDevices) *pDevices = devices;
samplingRate = reply.readInt32();
@@ -432,21 +428,21 @@ public:
return input;
}
- virtual status_t closeInput(void *input)
+ virtual status_t closeInput(int input)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
- data.write(&input, sizeof(void *));
+ data.writeInt32(input);
remote()->transact(CLOSE_INPUT, data, &reply);
return reply.readInt32();
}
- virtual status_t setStreamOutput(uint32_t stream, void *output)
+ virtual status_t setStreamOutput(uint32_t stream, int output)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
data.writeInt32(stream);
- data.write(&output, sizeof(void *));
+ data.writeInt32(output);
remote()->transact(SET_STREAM_OUTPUT, data, &reply);
return reply.readInt32();
}
@@ -470,8 +466,7 @@ status_t BnAudioFlinger::onTransact(
size_t bufferCount = data.readInt32();
uint32_t flags = data.readInt32();
sp<IMemory> buffer = interface_cast<IMemory>(data.readStrongBinder());
- void *output;
- data.read(&output, sizeof(void *));
+ int output = data.readInt32();
status_t status;
sp<IAudioTrack> track = createTrack(pid,
streamType, sampleRate, format,
@@ -483,8 +478,7 @@ status_t BnAudioFlinger::onTransact(
case OPEN_RECORD: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
pid_t pid = data.readInt32();
- void *input;
- data.read(&input, sizeof(void *));
+ int input = data.readInt32();
uint32_t sampleRate = data.readInt32();
int format = data.readInt32();
int channelCount = data.readInt32();
@@ -499,37 +493,27 @@ status_t BnAudioFlinger::onTransact(
} break;
case SAMPLE_RATE: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32( sampleRate(output) );
+ reply->writeInt32( sampleRate(data.readInt32()) );
return NO_ERROR;
} break;
case CHANNEL_COUNT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32( channelCount(output) );
+ reply->writeInt32( channelCount(data.readInt32()) );
return NO_ERROR;
} break;
case FORMAT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32( format(output) );
+ reply->writeInt32( format(data.readInt32()) );
return NO_ERROR;
} break;
case FRAME_COUNT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32( frameCount(output) );
+ reply->writeInt32( frameCount(data.readInt32()) );
return NO_ERROR;
} break;
case LATENCY: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32( latency(output) );
+ reply->writeInt32( latency(data.readInt32()) );
return NO_ERROR;
} break;
case SET_MASTER_VOLUME: {
@@ -556,8 +540,7 @@ status_t BnAudioFlinger::onTransact(
CHECK_INTERFACE(IAudioFlinger, data, reply);
int stream = data.readInt32();
float volume = data.readFloat();
- void *output;
- data.read(&output, sizeof(void *));
+ int output = data.readInt32();
reply->writeInt32( setStreamVolume(stream, volume, output) );
return NO_ERROR;
} break;
@@ -570,8 +553,7 @@ status_t BnAudioFlinger::onTransact(
case STREAM_VOLUME: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
int stream = data.readInt32();
- void *output;
- data.read(&output, sizeof(void *));
+ int output = data.readInt32();
reply->writeFloat( streamVolume(stream, output) );
return NO_ERROR;
} break;
@@ -605,16 +587,14 @@ status_t BnAudioFlinger::onTransact(
} break;
case SET_PARAMETERS: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *ioHandle;
- data.read(&ioHandle, sizeof(void *));
+ int ioHandle = data.readInt32();
String8 keyValuePairs(data.readString8());
reply->writeInt32(setParameters(ioHandle, keyValuePairs));
return NO_ERROR;
} break;
case GET_PARAMETERS: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *ioHandle;
- data.read(&ioHandle, sizeof(void *));
+ int ioHandle = data.readInt32();
String8 keys(data.readString8());
reply->writeString8(getParameters(ioHandle, keys));
return NO_ERROR;
@@ -642,14 +622,14 @@ status_t BnAudioFlinger::onTransact(
uint32_t channels = data.readInt32();
uint32_t latency = data.readInt32();
uint32_t flags = data.readInt32();
- void *output = openOutput(&devices,
+ int output = openOutput(&devices,
&samplingRate,
&format,
&channels,
&latency,
flags);
LOGV("OPEN_OUTPUT output, %p", output);
- reply->write(&output, sizeof(void *));
+ reply->writeInt32(output);
reply->writeInt32(devices);
reply->writeInt32(samplingRate);
reply->writeInt32(format);
@@ -659,33 +639,24 @@ status_t BnAudioFlinger::onTransact(
} break;
case OPEN_DUPLICATE_OUTPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output1;
- void *output2;
- data.read(&output1, sizeof(void *));
- data.read(&output2, sizeof(void *));
- void *output = openDuplicateOutput(output1, output2);
- reply->write(&output, sizeof(void *));
+ int output1 = data.readInt32();
+ int output2 = data.readInt32();
+ reply->writeInt32(openDuplicateOutput(output1, output2));
return NO_ERROR;
} break;
case CLOSE_OUTPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32(closeOutput(output));
+ reply->writeInt32(closeOutput(data.readInt32()));
return NO_ERROR;
} break;
case SUSPEND_OUTPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32(suspendOutput(output));
+ reply->writeInt32(suspendOutput(data.readInt32()));
return NO_ERROR;
} break;
case RESTORE_OUTPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
- data.read(&output, sizeof(void *));
- reply->writeInt32(restoreOutput(output));
+ reply->writeInt32(restoreOutput(data.readInt32()));
return NO_ERROR;
} break;
case OPEN_INPUT: {
@@ -696,12 +667,12 @@ status_t BnAudioFlinger::onTransact(
uint32_t channels = data.readInt32();
uint32_t acoutics = data.readInt32();
- void *input = openInput(&devices,
+ int input = openInput(&devices,
&samplingRate,
&format,
&channels,
acoutics);
- reply->write(&input, sizeof(void *));
+ reply->writeInt32(input);
reply->writeInt32(devices);
reply->writeInt32(samplingRate);
reply->writeInt32(format);
@@ -710,16 +681,13 @@ status_t BnAudioFlinger::onTransact(
} break;
case CLOSE_INPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *input;
- data.read(&input, sizeof(void *));
- reply->writeInt32(closeInput(input));
+ reply->writeInt32(closeInput(data.readInt32()));
return NO_ERROR;
} break;
case SET_STREAM_OUTPUT: {
CHECK_INTERFACE(IAudioFlinger, data, reply);
- void *output;
uint32_t stream = data.readInt32();
- data.read(&output, sizeof(void *));
+ int output = data.readInt32();
reply->writeInt32(setStreamOutput(stream, output));
return NO_ERROR;
} break;
diff --git a/media/libmedia/IAudioFlingerClient.cpp b/media/libmedia/IAudioFlingerClient.cpp
index eaae97721de0..3900de4572d0 100644
--- a/media/libmedia/IAudioFlingerClient.cpp
+++ b/media/libmedia/IAudioFlingerClient.cpp
@@ -39,12 +39,12 @@ public:
{
}
- void ioConfigChanged(int event, void *param1, void *param2)
+ void ioConfigChanged(int event, int ioHandle, void *param2)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioFlingerClient::getInterfaceDescriptor());
data.writeInt32(event);
- data.write(&param1, sizeof(void *));
+ data.writeInt32(ioHandle);
if (event == AudioSystem::STREAM_CONFIG_CHANGED) {
uint32_t stream = *(uint32_t *)param2;
LOGV("ioConfigChanged stream %d", stream);
@@ -72,11 +72,10 @@ status_t BnAudioFlingerClient::onTransact(
case IO_CONFIG_CHANGED: {
CHECK_INTERFACE(IAudioFlingerClient, data, reply);
int event = data.readInt32();
- void *param1;
+ int ioHandle = data.readInt32();
void *param2 = 0;
AudioSystem::OutputDescriptor desc;
uint32_t stream;
- data.read(&param1, sizeof(void *));
if (event == AudioSystem::STREAM_CONFIG_CHANGED) {
stream = data.readInt32();
param2 = &stream;
@@ -89,7 +88,7 @@ status_t BnAudioFlingerClient::onTransact(
desc.latency = data.readInt32();
param2 = &desc;
}
- ioConfigChanged(event, param1, param2);
+ ioConfigChanged(event, ioHandle, param2);
return NO_ERROR;
} break;
default:
diff --git a/media/libmedia/IAudioPolicyService.cpp b/media/libmedia/IAudioPolicyService.cpp
index 0d8a32970a22..18dd173bfc64 100644
--- a/media/libmedia/IAudioPolicyService.cpp
+++ b/media/libmedia/IAudioPolicyService.cpp
@@ -134,16 +134,14 @@ public:
data.writeInt32(channels);
data.writeInt32(static_cast <uint32_t>(flags));
remote()->transact(GET_OUTPUT, data, &reply);
- audio_io_handle_t output;
- reply.read(&output, sizeof(audio_io_handle_t));
- return output;
+ return static_cast <audio_io_handle_t> (reply.readInt32());
}
virtual status_t startOutput(audio_io_handle_t output, AudioSystem::stream_type stream)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.write(&output, sizeof(audio_io_handle_t));
+ data.writeInt32(output);
data.writeInt32(stream);
remote()->transact(START_OUTPUT, data, &reply);
return static_cast <status_t> (reply.readInt32());
@@ -153,7 +151,7 @@ public:
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.write(&output, sizeof(audio_io_handle_t));
+ data.writeInt32(output);
data.writeInt32(stream);
remote()->transact(STOP_OUTPUT, data, &reply);
return static_cast <status_t> (reply.readInt32());
@@ -163,7 +161,7 @@ public:
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.write(&output, sizeof(audio_io_handle_t));
+ data.writeInt32(output);
remote()->transact(RELEASE_OUTPUT, data, &reply);
}
@@ -182,16 +180,14 @@ public:
data.writeInt32(channels);
data.writeInt32(static_cast <uint32_t>(acoustics));
remote()->transact(GET_INPUT, data, &reply);
- audio_io_handle_t input;
- reply.read(&input, sizeof(audio_io_handle_t));
- return input;
+ return static_cast <audio_io_handle_t> (reply.readInt32());
}
virtual status_t startInput(audio_io_handle_t input)
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.write(&input, sizeof(audio_io_handle_t));
+ data.writeInt32(input);
remote()->transact(START_INPUT, data, &reply);
return static_cast <status_t> (reply.readInt32());
}
@@ -200,7 +196,7 @@ public:
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.write(&input, sizeof(audio_io_handle_t));
+ data.writeInt32(input);
remote()->transact(STOP_INPUT, data, &reply);
return static_cast <status_t> (reply.readInt32());
}
@@ -209,7 +205,7 @@ public:
{
Parcel data, reply;
data.writeInterfaceToken(IAudioPolicyService::getInterfaceDescriptor());
- data.write(&input, sizeof(audio_io_handle_t));
+ data.writeInt32(input);
remote()->transact(RELEASE_INPUT, data, &reply);
}
@@ -316,14 +312,13 @@ status_t BnAudioPolicyService::onTransact(
format,
channels,
flags);
- reply->write(&output, sizeof(audio_io_handle_t));
+ reply->writeInt32(static_cast <int>(output));
return NO_ERROR;
} break;
case START_OUTPUT: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_io_handle_t output;
- data.read(&output, sizeof(audio_io_handle_t));
+ audio_io_handle_t output = static_cast <audio_io_handle_t>(data.readInt32());
uint32_t stream = data.readInt32();
reply->writeInt32(static_cast <uint32_t>(startOutput(output, (AudioSystem::stream_type)stream)));
return NO_ERROR;
@@ -331,8 +326,7 @@ status_t BnAudioPolicyService::onTransact(
case STOP_OUTPUT: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_io_handle_t output;
- data.read(&output, sizeof(audio_io_handle_t));
+ audio_io_handle_t output = static_cast <audio_io_handle_t>(data.readInt32());
uint32_t stream = data.readInt32();
reply->writeInt32(static_cast <uint32_t>(stopOutput(output, (AudioSystem::stream_type)stream)));
return NO_ERROR;
@@ -340,8 +334,7 @@ status_t BnAudioPolicyService::onTransact(
case RELEASE_OUTPUT: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_io_handle_t output;
- data.read(&output, sizeof(audio_io_handle_t));
+ audio_io_handle_t output = static_cast <audio_io_handle_t>(data.readInt32());
releaseOutput(output);
return NO_ERROR;
} break;
@@ -358,30 +351,27 @@ status_t BnAudioPolicyService::onTransact(
format,
channels,
acoustics);
- reply->write(&input, sizeof(audio_io_handle_t));
+ reply->writeInt32(static_cast <int>(input));
return NO_ERROR;
} break;
case START_INPUT: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_io_handle_t input;
- data.read(&input, sizeof(audio_io_handle_t));
+ audio_io_handle_t input = static_cast <audio_io_handle_t>(data.readInt32());
reply->writeInt32(static_cast <uint32_t>(startInput(input)));
return NO_ERROR;
} break;
case STOP_INPUT: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_io_handle_t input;
- data.read(&input, sizeof(audio_io_handle_t));
+ audio_io_handle_t input = static_cast <audio_io_handle_t>(data.readInt32());
reply->writeInt32(static_cast <uint32_t>(stopInput(input)));
return NO_ERROR;
} break;
case RELEASE_INPUT: {
CHECK_INTERFACE(IAudioPolicyService, data, reply);
- audio_io_handle_t input;
- data.read(&input, sizeof(audio_io_handle_t));
+ audio_io_handle_t input = static_cast <audio_io_handle_t>(data.readInt32());
releaseInput(input);
return NO_ERROR;
} break;