Loading services/audioflinger/AudioFlinger.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -1108,7 +1108,6 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, CreateTrackOutput output; sp<PlaybackThread::Track> track; sp<TrackHandle> trackHandle; sp<Client> client; status_t lStatus; audio_stream_type_t streamType; Loading Loading @@ -1298,7 +1297,7 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, AudioSystem::moveEffectsToIo(effectIds, effectThreadId); } output.audioTrack = new TrackHandle(track); output.audioTrack = PlaybackThread::Track::createIAudioTrackAdapter(track); _output = VALUE_OR_FATAL(output.toAidl()); Exit: Loading Loading @@ -2393,7 +2392,6 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, CreateRecordOutput output; sp<RecordThread::RecordTrack> recordTrack; sp<RecordHandle> recordHandle; sp<Client> client; status_t lStatus; audio_session_t sessionId = input.sessionId; Loading Loading @@ -2551,7 +2549,7 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, output.buffers = recordTrack->getBuffers(); output.portId = portId; output.audioRecord = new RecordHandle(recordTrack); output.audioRecord = RecordThread::RecordTrack::createIAudioRecordAdapter(recordTrack); _output = VALUE_OR_FATAL(output.toAidl()); Exit: Loading services/audioflinger/AudioFlinger.h +3 −65 Original line number Diff line number Diff line Loading @@ -558,8 +558,8 @@ private: // Requests media.log to start merging log buffers void requestLogMerge(); class TrackHandle; class RecordHandle; // TODO(b/288339104) replace these forward declaration classes with interfaces. public: class RecordThread; class PlaybackThread; class MixerThread; Loading @@ -568,6 +568,7 @@ private: class DuplicatingThread; class AsyncCallbackThread; class BitPerfectThread; private: class Track; class RecordTrack; class DeviceEffectManager; Loading Loading @@ -633,69 +634,6 @@ private: return io; } // server side of the client's IAudioTrack class TrackHandle : public android::media::BnAudioTrack { public: explicit TrackHandle(const sp<PlaybackThread::Track>& track); virtual ~TrackHandle(); binder::Status getCblk(std::optional<media::SharedFileRegion>* _aidl_return) override; binder::Status start(int32_t* _aidl_return) override; binder::Status stop() override; binder::Status flush() override; binder::Status pause() override; binder::Status attachAuxEffect(int32_t effectId, int32_t* _aidl_return) override; binder::Status setParameters(const std::string& keyValuePairs, int32_t* _aidl_return) override; binder::Status selectPresentation(int32_t presentationId, int32_t programId, int32_t* _aidl_return) override; binder::Status getTimestamp(media::AudioTimestampInternal* timestamp, int32_t* _aidl_return) override; binder::Status signal() override; binder::Status applyVolumeShaper(const media::VolumeShaperConfiguration& configuration, const media::VolumeShaperOperation& operation, int32_t* _aidl_return) override; binder::Status getVolumeShaperState( int32_t id, std::optional<media::VolumeShaperState>* _aidl_return) override; binder::Status getDualMonoMode( media::audio::common::AudioDualMonoMode* _aidl_return) override; binder::Status setDualMonoMode( media::audio::common::AudioDualMonoMode mode) override; binder::Status getAudioDescriptionMixLevel(float* _aidl_return) override; binder::Status setAudioDescriptionMixLevel(float leveldB) override; binder::Status getPlaybackRateParameters( media::audio::common::AudioPlaybackRate* _aidl_return) override; binder::Status setPlaybackRateParameters( const media::audio::common::AudioPlaybackRate& playbackRate) override; private: const sp<PlaybackThread::Track> mTrack; }; // server side of the client's IAudioRecord class RecordHandle : public android::media::BnAudioRecord { public: explicit RecordHandle(const sp<RecordThread::RecordTrack>& recordTrack); virtual ~RecordHandle(); virtual binder::Status start(int /*AudioSystem::sync_event_t*/ event, int /*audio_session_t*/ triggerSession); virtual binder::Status stop(); virtual binder::Status getActiveMicrophones( std::vector<media::MicrophoneInfoFw>* activeMicrophones); virtual binder::Status setPreferredMicrophoneDirection( int /*audio_microphone_direction_t*/ direction); virtual binder::Status setPreferredMicrophoneFieldDimension(float zoom); virtual binder::Status shareAudioHistory(const std::string& sharedAudioPackageName, int64_t sharedAudioStartMs); private: const sp<RecordThread::RecordTrack> mRecordTrack; // for use from destructor void stop_nonvirtual(); }; // Mmap stream control interface implementation. Each MmapThreadHandle controls one // MmapPlaybackThread or MmapCaptureThread instance. class MmapThreadHandle : public MmapStreamInterface { Loading services/audioflinger/PlaybackTracks.h +7 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,13 @@ private: // playback track class Track : public TrackBase, public VolumeProvider { public: // createIAudioTrackAdapter() is a static constructor which creates an // IAudioTrack AIDL interface adapter from the Track object that // may be passed back to the client (if needed). // // Only one AIDL IAudioTrack interface wrapper should be created per Track. static sp<media::IAudioTrack> createIAudioTrackAdapter(const sp<Track>& track); Track( PlaybackThread *thread, const sp<Client>& client, audio_stream_type_t streamType, Loading services/audioflinger/RecordTracks.h +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,13 @@ // record track class RecordTrack : public TrackBase { public: // createIAudioRecordAdapter() is a static constructor which creates an // IAudioRecord AIDL interface wrapper from the RecordTrack object that // may be passed back to the client (if needed). // // Only one AIDL IAudioRecord interface wrapper should be created per RecordTrack. static sp<media::IAudioRecord> createIAudioRecordAdapter(const sp<RecordTrack>& recordTrack); RecordTrack(RecordThread *thread, const sp<Client>& client, const audio_attributes_t& attr, Loading services/audioflinger/Threads.h +2 −2 Original line number Diff line number Diff line Loading @@ -847,8 +847,6 @@ private: void dumpEffectChains_l(int fd, const Vector<String16>& args); }; private: class VolumeInterface { public: Loading Loading @@ -2375,3 +2373,5 @@ private: float mVolumeLeft = 0.f; float mVolumeRight = 0.f; }; private: Loading
services/audioflinger/AudioFlinger.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -1108,7 +1108,6 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, CreateTrackOutput output; sp<PlaybackThread::Track> track; sp<TrackHandle> trackHandle; sp<Client> client; status_t lStatus; audio_stream_type_t streamType; Loading Loading @@ -1298,7 +1297,7 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, AudioSystem::moveEffectsToIo(effectIds, effectThreadId); } output.audioTrack = new TrackHandle(track); output.audioTrack = PlaybackThread::Track::createIAudioTrackAdapter(track); _output = VALUE_OR_FATAL(output.toAidl()); Exit: Loading Loading @@ -2393,7 +2392,6 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, CreateRecordOutput output; sp<RecordThread::RecordTrack> recordTrack; sp<RecordHandle> recordHandle; sp<Client> client; status_t lStatus; audio_session_t sessionId = input.sessionId; Loading Loading @@ -2551,7 +2549,7 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, output.buffers = recordTrack->getBuffers(); output.portId = portId; output.audioRecord = new RecordHandle(recordTrack); output.audioRecord = RecordThread::RecordTrack::createIAudioRecordAdapter(recordTrack); _output = VALUE_OR_FATAL(output.toAidl()); Exit: Loading
services/audioflinger/AudioFlinger.h +3 −65 Original line number Diff line number Diff line Loading @@ -558,8 +558,8 @@ private: // Requests media.log to start merging log buffers void requestLogMerge(); class TrackHandle; class RecordHandle; // TODO(b/288339104) replace these forward declaration classes with interfaces. public: class RecordThread; class PlaybackThread; class MixerThread; Loading @@ -568,6 +568,7 @@ private: class DuplicatingThread; class AsyncCallbackThread; class BitPerfectThread; private: class Track; class RecordTrack; class DeviceEffectManager; Loading Loading @@ -633,69 +634,6 @@ private: return io; } // server side of the client's IAudioTrack class TrackHandle : public android::media::BnAudioTrack { public: explicit TrackHandle(const sp<PlaybackThread::Track>& track); virtual ~TrackHandle(); binder::Status getCblk(std::optional<media::SharedFileRegion>* _aidl_return) override; binder::Status start(int32_t* _aidl_return) override; binder::Status stop() override; binder::Status flush() override; binder::Status pause() override; binder::Status attachAuxEffect(int32_t effectId, int32_t* _aidl_return) override; binder::Status setParameters(const std::string& keyValuePairs, int32_t* _aidl_return) override; binder::Status selectPresentation(int32_t presentationId, int32_t programId, int32_t* _aidl_return) override; binder::Status getTimestamp(media::AudioTimestampInternal* timestamp, int32_t* _aidl_return) override; binder::Status signal() override; binder::Status applyVolumeShaper(const media::VolumeShaperConfiguration& configuration, const media::VolumeShaperOperation& operation, int32_t* _aidl_return) override; binder::Status getVolumeShaperState( int32_t id, std::optional<media::VolumeShaperState>* _aidl_return) override; binder::Status getDualMonoMode( media::audio::common::AudioDualMonoMode* _aidl_return) override; binder::Status setDualMonoMode( media::audio::common::AudioDualMonoMode mode) override; binder::Status getAudioDescriptionMixLevel(float* _aidl_return) override; binder::Status setAudioDescriptionMixLevel(float leveldB) override; binder::Status getPlaybackRateParameters( media::audio::common::AudioPlaybackRate* _aidl_return) override; binder::Status setPlaybackRateParameters( const media::audio::common::AudioPlaybackRate& playbackRate) override; private: const sp<PlaybackThread::Track> mTrack; }; // server side of the client's IAudioRecord class RecordHandle : public android::media::BnAudioRecord { public: explicit RecordHandle(const sp<RecordThread::RecordTrack>& recordTrack); virtual ~RecordHandle(); virtual binder::Status start(int /*AudioSystem::sync_event_t*/ event, int /*audio_session_t*/ triggerSession); virtual binder::Status stop(); virtual binder::Status getActiveMicrophones( std::vector<media::MicrophoneInfoFw>* activeMicrophones); virtual binder::Status setPreferredMicrophoneDirection( int /*audio_microphone_direction_t*/ direction); virtual binder::Status setPreferredMicrophoneFieldDimension(float zoom); virtual binder::Status shareAudioHistory(const std::string& sharedAudioPackageName, int64_t sharedAudioStartMs); private: const sp<RecordThread::RecordTrack> mRecordTrack; // for use from destructor void stop_nonvirtual(); }; // Mmap stream control interface implementation. Each MmapThreadHandle controls one // MmapPlaybackThread or MmapCaptureThread instance. class MmapThreadHandle : public MmapStreamInterface { Loading
services/audioflinger/PlaybackTracks.h +7 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,13 @@ private: // playback track class Track : public TrackBase, public VolumeProvider { public: // createIAudioTrackAdapter() is a static constructor which creates an // IAudioTrack AIDL interface adapter from the Track object that // may be passed back to the client (if needed). // // Only one AIDL IAudioTrack interface wrapper should be created per Track. static sp<media::IAudioTrack> createIAudioTrackAdapter(const sp<Track>& track); Track( PlaybackThread *thread, const sp<Client>& client, audio_stream_type_t streamType, Loading
services/audioflinger/RecordTracks.h +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,13 @@ // record track class RecordTrack : public TrackBase { public: // createIAudioRecordAdapter() is a static constructor which creates an // IAudioRecord AIDL interface wrapper from the RecordTrack object that // may be passed back to the client (if needed). // // Only one AIDL IAudioRecord interface wrapper should be created per RecordTrack. static sp<media::IAudioRecord> createIAudioRecordAdapter(const sp<RecordTrack>& recordTrack); RecordTrack(RecordThread *thread, const sp<Client>& client, const audio_attributes_t& attr, Loading
services/audioflinger/Threads.h +2 −2 Original line number Diff line number Diff line Loading @@ -847,8 +847,6 @@ private: void dumpEffectChains_l(int fd, const Vector<String16>& args); }; private: class VolumeInterface { public: Loading Loading @@ -2375,3 +2373,5 @@ private: float mVolumeLeft = 0.f; float mVolumeRight = 0.f; }; private: