Loading services/audioflinger/AudioFlinger.cpp +24 −54 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ ** limitations under the License. */ #define LOG_TAG "AudioFlinger" //#define LOG_NDEBUG 0 Loading @@ -23,73 +22,44 @@ #define AUDIO_ARRAYS_STATIC_CHECK 1 #include "Configuration.h" #include <dirent.h> #include <math.h> #include <signal.h> #include <string> #include <sys/time.h> #include <sys/resource.h> #include <thread> #include "AudioFlinger.h" #include "EffectConfiguration.h" //#define BUFLOG_NDEBUG 0 #include <afutils/BufLog.h> #include <afutils/DumpTryLock.h> #include <afutils/Permission.h> #include <afutils/PropertyUtils.h> #include <afutils/TypedLogger.h> #include <android-base/stringprintf.h> #include <android/media/IAudioPolicyService.h> #include <android/os/IExternalVibratorService.h> #include <audiomanager/IAudioManager.h> #include <binder/IPCThreadState.h> #include <binder/IServiceManager.h> #include <utils/Log.h> #include <utils/Trace.h> #include <binder/Parcel.h> #include <media/audiohal/AudioHalVersionInfo.h> #include <media/audiohal/DeviceHalInterface.h> #include <media/audiohal/DevicesFactoryHalInterface.h> #include <media/audiohal/EffectsFactoryHalInterface.h> #include <media/AudioParameter.h> #include <media/MediaMetricsItem.h> #include <media/TypeConverter.h> #include <mediautils/TimeCheck.h> #include <memunreachable/memunreachable.h> #include <utils/String16.h> #include <utils/threads.h> #include <cutils/atomic.h> #include <cutils/properties.h> #include <system/audio.h> #include <audiomanager/IAudioManager.h> #include "AudioFlinger.h" #include "EffectConfiguration.h" #include <afutils/PropertyUtils.h> #include <media/AudioResamplerPublic.h> #include <system/audio_effects/effect_visualizer.h> #include <system/audio_effects/effect_ns.h> #include <system/audio_effects/effect_aec.h> #include <system/audio_effects/effect_hapticgenerator.h> #include <system/audio_effects/effect_spatializer.h> #include <audio_utils/primitives.h> #include <powermanager/PowerManager.h> #include <media/IMediaLogService.h> #include <media/AidlConversion.h> #include <media/AudioParameter.h> #include <media/AudioValidator.h> #include <media/nbaio/Pipe.h> #include <media/nbaio/PipeReader.h> #include <media/IMediaLogService.h> #include <media/MediaMetricsItem.h> #include <media/TypeConverter.h> #include <mediautils/BatteryNotifier.h> #include <mediautils/MemoryLeakTrackUtil.h> #include <mediautils/MethodStatistics.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/TimeCheck.h> #include <private/android_filesystem_config.h> #include <memunreachable/memunreachable.h> // required for effect matching #include <system/audio_effects/effect_aec.h> #include <system/audio_effects/effect_ns.h> #include <system/audio_effects/effect_spatializer.h> #include <system/audio_effects/effect_visualizer.h> #include <utils/Log.h> //#define BUFLOG_NDEBUG 0 #include <afutils/DumpTryLock.h> #include <afutils/BufLog.h> #include <afutils/Permission.h> #include <afutils/TypedLogger.h> // not needed with the includes above, added to prevent transitive include dependency. #include <chrono> #include <thread> // ---------------------------------------------------------------------------- Loading Loading @@ -515,7 +485,7 @@ status_t MmapStreamInterface::openMmapStream(MmapStreamInterface::stream_directi sp<MmapStreamInterface>& interface, audio_port_handle_t *handle) { // TODO: Use ServiceManager to get IAudioFlinger instead of by atomic pointer. // TODO(b/292281786): Use ServiceManager to get IAudioFlinger instead of by atomic pointer. // This allows moving oboeservice (AAudio) to a separate process in the future. sp<AudioFlinger> af = AudioFlinger::gAudioFlinger.load(); // either nullptr or singleton AF. status_t ret = NO_INIT; Loading services/audioflinger/AudioFlinger.h +26 −134 Original line number Diff line number Diff line Loading @@ -15,141 +15,37 @@ ** limitations under the License. */ #ifndef ANDROID_AUDIO_FLINGER_H #define ANDROID_AUDIO_FLINGER_H #include "Configuration.h" #include <atomic> #include <mutex> #include <chrono> #include <deque> #include <map> #include <numeric> #include <optional> #include <set> #include <string> #include <vector> #include <stdint.h> #include <sys/types.h> #include <limits.h> #include <android/media/BnAudioTrack.h> #include <android/media/IAudioFlingerClient.h> #include <android/media/IAudioTrackCallback.h> #include <android/os/BnExternalVibrationController.h> #include <android/content/AttributionSourceState.h> #include <android-base/macros.h> #include <cutils/atomic.h> #include <cutils/compiler.h> #include <cutils/properties.h> #include <media/IAudioFlinger.h> #include <media/AudioSystem.h> #include <media/AudioTrack.h> #include <media/MmapStreamInterface.h> #include <media/MmapStreamCallback.h> #include <utils/Errors.h> #include <utils/threads.h> #include <utils/SortedVector.h> #include <utils/TypeHelpers.h> #include <utils/Vector.h> #include <binder/AppOpsManager.h> #include <binder/BinderService.h> #include <binder/IAppOpsCallback.h> #include <binder/MemoryDealer.h> #include <system/audio.h> #include <system/audio_policy.h> #include <media/audiohal/EffectBufferHalInterface.h> #include <media/audiohal/StreamHalInterface.h> #include <media/AudioBufferProvider.h> #include <media/AudioContainers.h> #include <media/AudioDeviceTypeAddr.h> #include <media/AudioMixer.h> #include <media/DeviceDescriptorBase.h> #include <media/ExtendedAudioBufferProvider.h> #include <media/VolumeShaper.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/SharedMemoryAllocator.h> #include <mediautils/Synchronization.h> #include <mediautils/ThreadSnapshot.h> #include <afutils/AllocatorFactory.h> #include <afutils/AudioWatchdog.h> #include <afutils/NBAIO_Tee.h> #include <audio_utils/clock.h> #include <audio_utils/FdToString.h> #include <audio_utils/LinearMap.h> #include <audio_utils/MelAggregator.h> #include <audio_utils/MelProcessor.h> #include <audio_utils/SimpleLog.h> #include <audio_utils/TimestampVerifier.h> #include <sounddose/SoundDoseManager.h> #include <timing/MonotonicFrameCounter.h> #include <timing/SyncEvent.h> #include <timing/SynchronizedRecordState.h> #include <datapath/AudioHwDevice.h> #include <datapath/AudioStreamIn.h> #include <datapath/AudioStreamOut.h> #include <datapath/SpdifStreamOut.h> #include <datapath/ThreadMetrics.h> #include <datapath/TrackMetrics.h> #include <datapath/VolumeInterface.h> #include <fastpath/FastCapture.h> #include <fastpath/FastMixer.h> #include <media/nbaio/NBAIO.h> #include <android/os/IPowerManager.h> #include <media/nblog/NBLog.h> #include <private/media/AudioEffectShared.h> #include <private/media/AudioTrackShared.h> #include <vibrator/ExternalVibration.h> #include <vibrator/ExternalVibrationUtils.h> #include "android/media/BnAudioRecord.h" #include "android/media/BnEffect.h" #pragma once // Classes and interfaces directly used. #include "Client.h" #include "ResamplerBufferProvider.h" // include AudioFlinger component interfaces #include "IAfPatchPanel.h" // this should be listed before other IAf* interfaces. #include "DeviceEffectManager.h" #include "IAfEffect.h" #include "IAfPatchPanel.h" #include "IAfThread.h" #include "IAfTrack.h" // Classes that depend on IAf* interfaces but are not cross-dependent. #include "PatchCommandThread.h" #include "DeviceEffectManager.h" #include "MelReporter.h" #include "PatchCommandThread.h" namespace android { class AudioMixer; class AudioBuffer; class AudioResampler; class DeviceHalInterface; class DevicesFactoryHalCallback; class DevicesFactoryHalInterface; class EffectsFactoryHalInterface; class FastMixer; class IAudioManager; class PassthruBufferProvider; class ServerProxy; // External classes #include <audio_utils/FdToString.h> #include <audio_utils/SimpleLog.h> #include <media/IAudioFlinger.h> #include <media/MediaMetricsItem.h> #include <media/audiohal/DevicesFactoryHalInterface.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/Synchronization.h> // ---------------------------------------------------------------------------- // not needed with the includes above, added to prevent transitive include dependency. #include <utils/KeyedVector.h> #include <utils/String16.h> #include <atomic> #include <functional> #include <map> #include <optional> #include <set> using android::content::AttributionSourceState; namespace android { class AudioFlinger : public AudioFlingerServerAdapter::Delegate // IAudioFlinger client interface Loading Loading @@ -464,6 +360,10 @@ private: sp<EffectsFactoryHalInterface> getEffectsFactory(); public: // TODO(b/292281786): Remove this when Oboeservice can get access to // openMmapStream through an IAudioFlinger handle directly. static inline std::atomic<AudioFlinger*> gAudioFlinger = nullptr; status_t openMmapStream(MmapStreamInterface::stream_direction_t direction, const audio_attributes_t *attr, audio_config_base_t *config, Loading Loading @@ -495,12 +395,6 @@ private: AudioHwDevice* findSuitableHwDev_l(audio_module_handle_t module, audio_devices_t deviceType); public: // Remove this when Oboeservice is updated to obtain handle directly. static inline std::atomic<AudioFlinger*> gAudioFlinger = nullptr; private: // incremented by 2 when screen state changes, bit 0 == 1 means "off" // AudioFlinger::setParameters() updates with mLock. std::atomic_uint32_t mScreenState{}; Loading Loading @@ -811,5 +705,3 @@ private: // ---------------------------------------------------------------------------- } // namespace android #endif // ANDROID_AUDIO_FLINGER_H Loading
services/audioflinger/AudioFlinger.cpp +24 −54 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ ** limitations under the License. */ #define LOG_TAG "AudioFlinger" //#define LOG_NDEBUG 0 Loading @@ -23,73 +22,44 @@ #define AUDIO_ARRAYS_STATIC_CHECK 1 #include "Configuration.h" #include <dirent.h> #include <math.h> #include <signal.h> #include <string> #include <sys/time.h> #include <sys/resource.h> #include <thread> #include "AudioFlinger.h" #include "EffectConfiguration.h" //#define BUFLOG_NDEBUG 0 #include <afutils/BufLog.h> #include <afutils/DumpTryLock.h> #include <afutils/Permission.h> #include <afutils/PropertyUtils.h> #include <afutils/TypedLogger.h> #include <android-base/stringprintf.h> #include <android/media/IAudioPolicyService.h> #include <android/os/IExternalVibratorService.h> #include <audiomanager/IAudioManager.h> #include <binder/IPCThreadState.h> #include <binder/IServiceManager.h> #include <utils/Log.h> #include <utils/Trace.h> #include <binder/Parcel.h> #include <media/audiohal/AudioHalVersionInfo.h> #include <media/audiohal/DeviceHalInterface.h> #include <media/audiohal/DevicesFactoryHalInterface.h> #include <media/audiohal/EffectsFactoryHalInterface.h> #include <media/AudioParameter.h> #include <media/MediaMetricsItem.h> #include <media/TypeConverter.h> #include <mediautils/TimeCheck.h> #include <memunreachable/memunreachable.h> #include <utils/String16.h> #include <utils/threads.h> #include <cutils/atomic.h> #include <cutils/properties.h> #include <system/audio.h> #include <audiomanager/IAudioManager.h> #include "AudioFlinger.h" #include "EffectConfiguration.h" #include <afutils/PropertyUtils.h> #include <media/AudioResamplerPublic.h> #include <system/audio_effects/effect_visualizer.h> #include <system/audio_effects/effect_ns.h> #include <system/audio_effects/effect_aec.h> #include <system/audio_effects/effect_hapticgenerator.h> #include <system/audio_effects/effect_spatializer.h> #include <audio_utils/primitives.h> #include <powermanager/PowerManager.h> #include <media/IMediaLogService.h> #include <media/AidlConversion.h> #include <media/AudioParameter.h> #include <media/AudioValidator.h> #include <media/nbaio/Pipe.h> #include <media/nbaio/PipeReader.h> #include <media/IMediaLogService.h> #include <media/MediaMetricsItem.h> #include <media/TypeConverter.h> #include <mediautils/BatteryNotifier.h> #include <mediautils/MemoryLeakTrackUtil.h> #include <mediautils/MethodStatistics.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/TimeCheck.h> #include <private/android_filesystem_config.h> #include <memunreachable/memunreachable.h> // required for effect matching #include <system/audio_effects/effect_aec.h> #include <system/audio_effects/effect_ns.h> #include <system/audio_effects/effect_spatializer.h> #include <system/audio_effects/effect_visualizer.h> #include <utils/Log.h> //#define BUFLOG_NDEBUG 0 #include <afutils/DumpTryLock.h> #include <afutils/BufLog.h> #include <afutils/Permission.h> #include <afutils/TypedLogger.h> // not needed with the includes above, added to prevent transitive include dependency. #include <chrono> #include <thread> // ---------------------------------------------------------------------------- Loading Loading @@ -515,7 +485,7 @@ status_t MmapStreamInterface::openMmapStream(MmapStreamInterface::stream_directi sp<MmapStreamInterface>& interface, audio_port_handle_t *handle) { // TODO: Use ServiceManager to get IAudioFlinger instead of by atomic pointer. // TODO(b/292281786): Use ServiceManager to get IAudioFlinger instead of by atomic pointer. // This allows moving oboeservice (AAudio) to a separate process in the future. sp<AudioFlinger> af = AudioFlinger::gAudioFlinger.load(); // either nullptr or singleton AF. status_t ret = NO_INIT; Loading
services/audioflinger/AudioFlinger.h +26 −134 Original line number Diff line number Diff line Loading @@ -15,141 +15,37 @@ ** limitations under the License. */ #ifndef ANDROID_AUDIO_FLINGER_H #define ANDROID_AUDIO_FLINGER_H #include "Configuration.h" #include <atomic> #include <mutex> #include <chrono> #include <deque> #include <map> #include <numeric> #include <optional> #include <set> #include <string> #include <vector> #include <stdint.h> #include <sys/types.h> #include <limits.h> #include <android/media/BnAudioTrack.h> #include <android/media/IAudioFlingerClient.h> #include <android/media/IAudioTrackCallback.h> #include <android/os/BnExternalVibrationController.h> #include <android/content/AttributionSourceState.h> #include <android-base/macros.h> #include <cutils/atomic.h> #include <cutils/compiler.h> #include <cutils/properties.h> #include <media/IAudioFlinger.h> #include <media/AudioSystem.h> #include <media/AudioTrack.h> #include <media/MmapStreamInterface.h> #include <media/MmapStreamCallback.h> #include <utils/Errors.h> #include <utils/threads.h> #include <utils/SortedVector.h> #include <utils/TypeHelpers.h> #include <utils/Vector.h> #include <binder/AppOpsManager.h> #include <binder/BinderService.h> #include <binder/IAppOpsCallback.h> #include <binder/MemoryDealer.h> #include <system/audio.h> #include <system/audio_policy.h> #include <media/audiohal/EffectBufferHalInterface.h> #include <media/audiohal/StreamHalInterface.h> #include <media/AudioBufferProvider.h> #include <media/AudioContainers.h> #include <media/AudioDeviceTypeAddr.h> #include <media/AudioMixer.h> #include <media/DeviceDescriptorBase.h> #include <media/ExtendedAudioBufferProvider.h> #include <media/VolumeShaper.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/SharedMemoryAllocator.h> #include <mediautils/Synchronization.h> #include <mediautils/ThreadSnapshot.h> #include <afutils/AllocatorFactory.h> #include <afutils/AudioWatchdog.h> #include <afutils/NBAIO_Tee.h> #include <audio_utils/clock.h> #include <audio_utils/FdToString.h> #include <audio_utils/LinearMap.h> #include <audio_utils/MelAggregator.h> #include <audio_utils/MelProcessor.h> #include <audio_utils/SimpleLog.h> #include <audio_utils/TimestampVerifier.h> #include <sounddose/SoundDoseManager.h> #include <timing/MonotonicFrameCounter.h> #include <timing/SyncEvent.h> #include <timing/SynchronizedRecordState.h> #include <datapath/AudioHwDevice.h> #include <datapath/AudioStreamIn.h> #include <datapath/AudioStreamOut.h> #include <datapath/SpdifStreamOut.h> #include <datapath/ThreadMetrics.h> #include <datapath/TrackMetrics.h> #include <datapath/VolumeInterface.h> #include <fastpath/FastCapture.h> #include <fastpath/FastMixer.h> #include <media/nbaio/NBAIO.h> #include <android/os/IPowerManager.h> #include <media/nblog/NBLog.h> #include <private/media/AudioEffectShared.h> #include <private/media/AudioTrackShared.h> #include <vibrator/ExternalVibration.h> #include <vibrator/ExternalVibrationUtils.h> #include "android/media/BnAudioRecord.h" #include "android/media/BnEffect.h" #pragma once // Classes and interfaces directly used. #include "Client.h" #include "ResamplerBufferProvider.h" // include AudioFlinger component interfaces #include "IAfPatchPanel.h" // this should be listed before other IAf* interfaces. #include "DeviceEffectManager.h" #include "IAfEffect.h" #include "IAfPatchPanel.h" #include "IAfThread.h" #include "IAfTrack.h" // Classes that depend on IAf* interfaces but are not cross-dependent. #include "PatchCommandThread.h" #include "DeviceEffectManager.h" #include "MelReporter.h" #include "PatchCommandThread.h" namespace android { class AudioMixer; class AudioBuffer; class AudioResampler; class DeviceHalInterface; class DevicesFactoryHalCallback; class DevicesFactoryHalInterface; class EffectsFactoryHalInterface; class FastMixer; class IAudioManager; class PassthruBufferProvider; class ServerProxy; // External classes #include <audio_utils/FdToString.h> #include <audio_utils/SimpleLog.h> #include <media/IAudioFlinger.h> #include <media/MediaMetricsItem.h> #include <media/audiohal/DevicesFactoryHalInterface.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/Synchronization.h> // ---------------------------------------------------------------------------- // not needed with the includes above, added to prevent transitive include dependency. #include <utils/KeyedVector.h> #include <utils/String16.h> #include <atomic> #include <functional> #include <map> #include <optional> #include <set> using android::content::AttributionSourceState; namespace android { class AudioFlinger : public AudioFlingerServerAdapter::Delegate // IAudioFlinger client interface Loading Loading @@ -464,6 +360,10 @@ private: sp<EffectsFactoryHalInterface> getEffectsFactory(); public: // TODO(b/292281786): Remove this when Oboeservice can get access to // openMmapStream through an IAudioFlinger handle directly. static inline std::atomic<AudioFlinger*> gAudioFlinger = nullptr; status_t openMmapStream(MmapStreamInterface::stream_direction_t direction, const audio_attributes_t *attr, audio_config_base_t *config, Loading Loading @@ -495,12 +395,6 @@ private: AudioHwDevice* findSuitableHwDev_l(audio_module_handle_t module, audio_devices_t deviceType); public: // Remove this when Oboeservice is updated to obtain handle directly. static inline std::atomic<AudioFlinger*> gAudioFlinger = nullptr; private: // incremented by 2 when screen state changes, bit 0 == 1 means "off" // AudioFlinger::setParameters() updates with mLock. std::atomic_uint32_t mScreenState{}; Loading Loading @@ -811,5 +705,3 @@ private: // ---------------------------------------------------------------------------- } // namespace android #endif // ANDROID_AUDIO_FLINGER_H