Loading media/libmedia/TypeConverter.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ const InputFlagConverter::Table InputFlagConverter::mTable[] = { MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_MMAP_NOIRQ), MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_VOIP_TX), MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_HW_AV_SYNC), MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_DIRECT), TERMINATOR }; Loading services/audioflinger/AudioFlinger.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -2335,6 +2335,9 @@ sp<AudioFlinger::ThreadBase> AudioFlinger::openInput_l(audio_module_handle_t mod return 0; } // Some flags are specific to framework and must not leak to the HAL. flags = static_cast<audio_input_flags_t>(flags & ~AUDIO_INPUT_FRAMEWORK_FLAGS); // Audio Policy can request a specific handle for hardware hotword. // The goal here is not to re-open an already opened input. // It is to use a pre-assigned I/O handle. Loading services/audioflinger/MmapTracks.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ public: audio_session_t triggerSession); virtual void stop(); virtual bool isFastTrack() const { return false; } bool isDirect() const override { return true; } void appendDumpHeader(String8& result); void appendDump(String8& result, bool active); Loading services/audioflinger/PatchPanel.cpp +13 −2 Original line number Diff line number Diff line Loading @@ -423,6 +423,14 @@ status_t AudioFlinger::PatchPanel::Patch::createConnections(PatchPanel *panel) uint32_t sampleRate = mPlayback.thread()->sampleRate(); audio_format_t format = mPlayback.thread()->format(); audio_format_t inputFormat = mRecord.thread()->format(); if (!audio_is_linear_pcm(inputFormat)) { // The playbackThread format will say PCM for IEC61937 packetized stream. // Use recordThread format. format = inputFormat; } audio_input_flags_t inputFlags = mAudioPatch.sources[0].config_mask & AUDIO_PORT_CONFIG_FLAGS ? mAudioPatch.sources[0].flags.input : AUDIO_INPUT_FLAG_NONE; sp<RecordThread::PatchRecord> tempRecordTrack = new (std::nothrow) RecordThread::PatchRecord( mRecord.thread().get(), sampleRate, Loading @@ -431,12 +439,15 @@ status_t AudioFlinger::PatchPanel::Patch::createConnections(PatchPanel *panel) frameCount, NULL, (size_t)0 /* bufferSize */, AUDIO_INPUT_FLAG_NONE); inputFlags); status = mRecord.checkTrack(tempRecordTrack.get()); if (status != NO_ERROR) { return status; } audio_output_flags_t outputFlags = mAudioPatch.sinks[0].config_mask & AUDIO_PORT_CONFIG_FLAGS ? mAudioPatch.sinks[0].flags.output : AUDIO_OUTPUT_FLAG_NONE; // create a special playback track to render to playback thread. // this track is given the same buffer as the PatchRecord buffer sp<PlaybackThread::PatchTrack> tempPatchTrack = new (std::nothrow) PlaybackThread::PatchTrack( Loading @@ -448,7 +459,7 @@ status_t AudioFlinger::PatchPanel::Patch::createConnections(PatchPanel *panel) frameCount, tempRecordTrack->buffer(), tempRecordTrack->bufferSize(), AUDIO_OUTPUT_FLAG_NONE); outputFlags); status = mPlayback.checkTrack(tempPatchTrack.get()); if (status != NO_ERROR) { return status; Loading services/audioflinger/PlaybackTracks.h +2 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,8 @@ public: } bool isOffloaded() const { return (mFlags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) != 0; } bool isDirect() const { return (mFlags & AUDIO_OUTPUT_FLAG_DIRECT) != 0; } bool isDirect() const override { return (mFlags & AUDIO_OUTPUT_FLAG_DIRECT) != 0; } bool isOffloadedOrDirect() const { return (mFlags & (AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT)) != 0; } Loading Loading
media/libmedia/TypeConverter.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -132,6 +132,7 @@ const InputFlagConverter::Table InputFlagConverter::mTable[] = { MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_MMAP_NOIRQ), MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_VOIP_TX), MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_HW_AV_SYNC), MAKE_STRING_FROM_ENUM(AUDIO_INPUT_FLAG_DIRECT), TERMINATOR }; Loading
services/audioflinger/AudioFlinger.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -2335,6 +2335,9 @@ sp<AudioFlinger::ThreadBase> AudioFlinger::openInput_l(audio_module_handle_t mod return 0; } // Some flags are specific to framework and must not leak to the HAL. flags = static_cast<audio_input_flags_t>(flags & ~AUDIO_INPUT_FRAMEWORK_FLAGS); // Audio Policy can request a specific handle for hardware hotword. // The goal here is not to re-open an already opened input. // It is to use a pre-assigned I/O handle. Loading
services/audioflinger/MmapTracks.h +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ public: audio_session_t triggerSession); virtual void stop(); virtual bool isFastTrack() const { return false; } bool isDirect() const override { return true; } void appendDumpHeader(String8& result); void appendDump(String8& result, bool active); Loading
services/audioflinger/PatchPanel.cpp +13 −2 Original line number Diff line number Diff line Loading @@ -423,6 +423,14 @@ status_t AudioFlinger::PatchPanel::Patch::createConnections(PatchPanel *panel) uint32_t sampleRate = mPlayback.thread()->sampleRate(); audio_format_t format = mPlayback.thread()->format(); audio_format_t inputFormat = mRecord.thread()->format(); if (!audio_is_linear_pcm(inputFormat)) { // The playbackThread format will say PCM for IEC61937 packetized stream. // Use recordThread format. format = inputFormat; } audio_input_flags_t inputFlags = mAudioPatch.sources[0].config_mask & AUDIO_PORT_CONFIG_FLAGS ? mAudioPatch.sources[0].flags.input : AUDIO_INPUT_FLAG_NONE; sp<RecordThread::PatchRecord> tempRecordTrack = new (std::nothrow) RecordThread::PatchRecord( mRecord.thread().get(), sampleRate, Loading @@ -431,12 +439,15 @@ status_t AudioFlinger::PatchPanel::Patch::createConnections(PatchPanel *panel) frameCount, NULL, (size_t)0 /* bufferSize */, AUDIO_INPUT_FLAG_NONE); inputFlags); status = mRecord.checkTrack(tempRecordTrack.get()); if (status != NO_ERROR) { return status; } audio_output_flags_t outputFlags = mAudioPatch.sinks[0].config_mask & AUDIO_PORT_CONFIG_FLAGS ? mAudioPatch.sinks[0].flags.output : AUDIO_OUTPUT_FLAG_NONE; // create a special playback track to render to playback thread. // this track is given the same buffer as the PatchRecord buffer sp<PlaybackThread::PatchTrack> tempPatchTrack = new (std::nothrow) PlaybackThread::PatchTrack( Loading @@ -448,7 +459,7 @@ status_t AudioFlinger::PatchPanel::Patch::createConnections(PatchPanel *panel) frameCount, tempRecordTrack->buffer(), tempRecordTrack->bufferSize(), AUDIO_OUTPUT_FLAG_NONE); outputFlags); status = mPlayback.checkTrack(tempPatchTrack.get()); if (status != NO_ERROR) { return status; Loading
services/audioflinger/PlaybackTracks.h +2 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,8 @@ public: } bool isOffloaded() const { return (mFlags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) != 0; } bool isDirect() const { return (mFlags & AUDIO_OUTPUT_FLAG_DIRECT) != 0; } bool isDirect() const override { return (mFlags & AUDIO_OUTPUT_FLAG_DIRECT) != 0; } bool isOffloadedOrDirect() const { return (mFlags & (AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD | AUDIO_OUTPUT_FLAG_DIRECT)) != 0; } Loading