Loading include/media/AudioSystem.h +2 −0 Original line number Diff line number Diff line Loading @@ -246,6 +246,8 @@ public: static uint32_t getPrimaryOutputSamplingRate(); static size_t getPrimaryOutputFrameCount(); static status_t setLowRamDevice(bool isLowRamDevice); // Check if hw offload is possible for given format, stream type, sample rate, // bit rate, duration, video and streaming or offload property is enabled static bool isOffloadSupported(const audio_offload_info_t& info); Loading include/media/IAudioFlinger.h +4 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,10 @@ public: virtual uint32_t getPrimaryOutputSamplingRate() = 0; virtual size_t getPrimaryOutputFrameCount() = 0; // Intended for AudioService to inform AudioFlinger of device's low RAM attribute, // and should be called at most once. For a definition of what "low RAM" means, see // android.app.ActivityManager.isLowRamDevice(). virtual status_t setLowRamDevice(bool isLowRamDevice) = 0; }; Loading media/libmedia/AudioSystem.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -772,6 +772,13 @@ size_t AudioSystem::getPrimaryOutputFrameCount() return af->getPrimaryOutputFrameCount(); } status_t AudioSystem::setLowRamDevice(bool isLowRamDevice) { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); if (af == 0) return PERMISSION_DENIED; return af->setLowRamDevice(isLowRamDevice); } void AudioSystem::clearAudioConfigCache() { Mutex::Autolock _l(gLock); Loading media/libmedia/IAudioFlinger.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ enum { LOAD_HW_MODULE, GET_PRIMARY_OUTPUT_SAMPLING_RATE, GET_PRIMARY_OUTPUT_FRAME_COUNT, SET_LOW_RAM_DEVICE, }; class BpAudioFlinger : public BpInterface<IAudioFlinger> Loading Loading @@ -698,6 +699,15 @@ public: return reply.readInt32(); } virtual status_t setLowRamDevice(bool isLowRamDevice) { Parcel data, reply; data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor()); data.writeInt32((int) isLowRamDevice); remote()->transact(SET_LOW_RAM_DEVICE, data, &reply); return reply.readInt32(); } }; IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger"); Loading Loading @@ -1059,6 +1069,12 @@ status_t BnAudioFlinger::onTransact( reply->writeInt32(getPrimaryOutputFrameCount()); return NO_ERROR; } break; case SET_LOW_RAM_DEVICE: { CHECK_INTERFACE(IAudioFlinger, data, reply); bool isLowRamDevice = data.readInt32() != 0; reply->writeInt32(setLowRamDevice(isLowRamDevice)); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } Loading services/audioflinger/AudioFlinger.cpp +21 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ #include <media/nbaio/Pipe.h> #include <media/nbaio/PipeReader.h> #include <media/AudioParameter.h> #include <private/android_filesystem_config.h> // ---------------------------------------------------------------------------- Loading Loading @@ -139,7 +140,9 @@ AudioFlinger::AudioFlinger() mMasterMute(false), mNextUniqueId(1), mMode(AUDIO_MODE_INVALID), mBtNrecIsOff(false) mBtNrecIsOff(false), mIsLowRamDevice(true), mIsDeviceTypeKnown(false) { getpid_cached = getpid(); char value[PROPERTY_VALUE_MAX]; Loading Loading @@ -1381,6 +1384,23 @@ size_t AudioFlinger::getPrimaryOutputFrameCount() // ---------------------------------------------------------------------------- status_t AudioFlinger::setLowRamDevice(bool isLowRamDevice) { uid_t uid = IPCThreadState::self()->getCallingUid(); if (uid != AID_SYSTEM) { return PERMISSION_DENIED; } Mutex::Autolock _l(mLock); if (mIsDeviceTypeKnown) { return INVALID_OPERATION; } mIsLowRamDevice = isLowRamDevice; mIsDeviceTypeKnown = true; return NO_ERROR; } // ---------------------------------------------------------------------------- audio_io_handle_t AudioFlinger::openOutput(audio_module_handle_t module, audio_devices_t *pDevices, uint32_t *pSamplingRate, Loading Loading
include/media/AudioSystem.h +2 −0 Original line number Diff line number Diff line Loading @@ -246,6 +246,8 @@ public: static uint32_t getPrimaryOutputSamplingRate(); static size_t getPrimaryOutputFrameCount(); static status_t setLowRamDevice(bool isLowRamDevice); // Check if hw offload is possible for given format, stream type, sample rate, // bit rate, duration, video and streaming or offload property is enabled static bool isOffloadSupported(const audio_offload_info_t& info); Loading
include/media/IAudioFlinger.h +4 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,10 @@ public: virtual uint32_t getPrimaryOutputSamplingRate() = 0; virtual size_t getPrimaryOutputFrameCount() = 0; // Intended for AudioService to inform AudioFlinger of device's low RAM attribute, // and should be called at most once. For a definition of what "low RAM" means, see // android.app.ActivityManager.isLowRamDevice(). virtual status_t setLowRamDevice(bool isLowRamDevice) = 0; }; Loading
media/libmedia/AudioSystem.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -772,6 +772,13 @@ size_t AudioSystem::getPrimaryOutputFrameCount() return af->getPrimaryOutputFrameCount(); } status_t AudioSystem::setLowRamDevice(bool isLowRamDevice) { const sp<IAudioFlinger>& af = AudioSystem::get_audio_flinger(); if (af == 0) return PERMISSION_DENIED; return af->setLowRamDevice(isLowRamDevice); } void AudioSystem::clearAudioConfigCache() { Mutex::Autolock _l(gLock); Loading
media/libmedia/IAudioFlinger.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ enum { LOAD_HW_MODULE, GET_PRIMARY_OUTPUT_SAMPLING_RATE, GET_PRIMARY_OUTPUT_FRAME_COUNT, SET_LOW_RAM_DEVICE, }; class BpAudioFlinger : public BpInterface<IAudioFlinger> Loading Loading @@ -698,6 +699,15 @@ public: return reply.readInt32(); } virtual status_t setLowRamDevice(bool isLowRamDevice) { Parcel data, reply; data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor()); data.writeInt32((int) isLowRamDevice); remote()->transact(SET_LOW_RAM_DEVICE, data, &reply); return reply.readInt32(); } }; IMPLEMENT_META_INTERFACE(AudioFlinger, "android.media.IAudioFlinger"); Loading Loading @@ -1059,6 +1069,12 @@ status_t BnAudioFlinger::onTransact( reply->writeInt32(getPrimaryOutputFrameCount()); return NO_ERROR; } break; case SET_LOW_RAM_DEVICE: { CHECK_INTERFACE(IAudioFlinger, data, reply); bool isLowRamDevice = data.readInt32() != 0; reply->writeInt32(setLowRamDevice(isLowRamDevice)); return NO_ERROR; } break; default: return BBinder::onTransact(code, data, reply, flags); } Loading
services/audioflinger/AudioFlinger.cpp +21 −1 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ #include <media/nbaio/Pipe.h> #include <media/nbaio/PipeReader.h> #include <media/AudioParameter.h> #include <private/android_filesystem_config.h> // ---------------------------------------------------------------------------- Loading Loading @@ -139,7 +140,9 @@ AudioFlinger::AudioFlinger() mMasterMute(false), mNextUniqueId(1), mMode(AUDIO_MODE_INVALID), mBtNrecIsOff(false) mBtNrecIsOff(false), mIsLowRamDevice(true), mIsDeviceTypeKnown(false) { getpid_cached = getpid(); char value[PROPERTY_VALUE_MAX]; Loading Loading @@ -1381,6 +1384,23 @@ size_t AudioFlinger::getPrimaryOutputFrameCount() // ---------------------------------------------------------------------------- status_t AudioFlinger::setLowRamDevice(bool isLowRamDevice) { uid_t uid = IPCThreadState::self()->getCallingUid(); if (uid != AID_SYSTEM) { return PERMISSION_DENIED; } Mutex::Autolock _l(mLock); if (mIsDeviceTypeKnown) { return INVALID_OPERATION; } mIsLowRamDevice = isLowRamDevice; mIsDeviceTypeKnown = true; return NO_ERROR; } // ---------------------------------------------------------------------------- audio_io_handle_t AudioFlinger::openOutput(audio_module_handle_t module, audio_devices_t *pDevices, uint32_t *pSamplingRate, Loading