Loading media/libaudioclient/AudioTrack.cpp +2 −7 Original line number Diff line number Diff line Loading @@ -2452,13 +2452,8 @@ status_t AudioTrack::setParameters(const String8& keyValuePairs) status_t AudioTrack::selectPresentation(int presentationId, int programId) { AutoMutex lock(mLock); AudioParameter param = AudioParameter(); param.addInt(String8(AudioParameter::keyPresentationId), presentationId); param.addInt(String8(AudioParameter::keyProgramId), programId); ALOGV("%s(%d): PresentationId/ProgramId[%s]", __func__, mId, param.toString().string()); return mAudioTrack->setParameters(param.toString()); ALOGV("%s(%d): PresentationId:%d ProgramId:%d", __func__, mId, presentationId, programId); return mAudioTrack->selectPresentation(presentationId, programId); } VolumeShaper::Status AudioTrack::applyVolumeShaper( Loading media/libaudioclient/IAudioTrack.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ enum { PAUSE, ATTACH_AUX_EFFECT, SET_PARAMETERS, SELECT_PRESENTATION, GET_TIMESTAMP, SIGNAL, APPLY_VOLUME_SHAPER, Loading Loading @@ -127,6 +128,19 @@ public: return status; } /* Selects the presentation (if available) */ virtual status_t selectPresentation(int presentationId, int programId) { Parcel data, reply; data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor()); data.writeInt32(presentationId); data.writeInt32(programId); status_t status = remote()->transact(SELECT_PRESENTATION, data, &reply); if (status == NO_ERROR) { status = reply.readInt32(); } return status; } virtual status_t getTimestamp(AudioTimestamp& timestamp) { Parcel data, reply; data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor()); Loading Loading @@ -239,6 +253,11 @@ status_t BnAudioTrack::onTransact( reply->writeInt32(setParameters(keyValuePairs)); return NO_ERROR; } break; case SELECT_PRESENTATION: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeInt32(selectPresentation(data.readInt32(), data.readInt32())); return NO_ERROR; } break; case GET_TIMESTAMP: { CHECK_INTERFACE(IAudioTrack, data, reply); AudioTimestamp timestamp; Loading media/libaudioclient/include/media/IAudioTrack.h +3 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,9 @@ public: /* Send parameters to the audio hardware */ virtual status_t setParameters(const String8& keyValuePairs) = 0; /* Selects the presentation (if available) */ virtual status_t selectPresentation(int presentationId, int programId) = 0; /* Return NO_ERROR if timestamp is valid. timestamp is undefined otherwise. */ virtual status_t getTimestamp(AudioTimestamp& timestamp) = 0; Loading media/libaudiohal/impl/StreamHalHidl.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <android/hardware/audio/2.0/IStreamOutCallback.h> #include <android/hardware/audio/4.0/IStreamOutCallback.h> #include <hwbinder/IPCThreadState.h> #include <media/AudioParameter.h> #include <mediautils/SchedulingPolicyService.h> #include <utils/Log.h> Loading Loading @@ -347,6 +348,24 @@ status_t StreamOutHalHidl::setVolume(float left, float right) { return processReturn("setVolume", mStream->setVolume(left, right)); } #if MAJOR_VERSION == 2 status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) { if (mStream == 0) return NO_INIT; std::vector<ParameterValue> parameters; String8 halParameters; parameters.push_back({AudioParameter::keyPresentationId, std::to_string(presentationId)}); parameters.push_back({AudioParameter::keyProgramId, std::to_string(programId)}); parametersToHal(hidl_vec<ParameterValue>(parameters), &halParameters); return setParameters(halParameters); } #elif MAJOR_VERSION == 4 status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) { if (mStream == 0) return NO_INIT; return processReturn("selectPresentation", mStream->selectPresentation(presentationId, programId)); } #endif status_t StreamOutHalHidl::write(const void *buffer, size_t bytes, size_t *written) { if (mStream == 0) return NO_INIT; *written = 0; Loading media/libaudiohal/impl/StreamHalHidl.h +3 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,9 @@ class StreamOutHalHidl : public StreamOutHalInterface, public StreamHalHidl { // Use this method in situations where audio mixing is done in the hardware. virtual status_t setVolume(float left, float right); // Selects the audio presentation (if available). virtual status_t selectPresentation(int presentationId, int programId); // Write audio buffer to driver. virtual status_t write(const void *buffer, size_t bytes, size_t *written); Loading Loading
media/libaudioclient/AudioTrack.cpp +2 −7 Original line number Diff line number Diff line Loading @@ -2452,13 +2452,8 @@ status_t AudioTrack::setParameters(const String8& keyValuePairs) status_t AudioTrack::selectPresentation(int presentationId, int programId) { AutoMutex lock(mLock); AudioParameter param = AudioParameter(); param.addInt(String8(AudioParameter::keyPresentationId), presentationId); param.addInt(String8(AudioParameter::keyProgramId), programId); ALOGV("%s(%d): PresentationId/ProgramId[%s]", __func__, mId, param.toString().string()); return mAudioTrack->setParameters(param.toString()); ALOGV("%s(%d): PresentationId:%d ProgramId:%d", __func__, mId, presentationId, programId); return mAudioTrack->selectPresentation(presentationId, programId); } VolumeShaper::Status AudioTrack::applyVolumeShaper( Loading
media/libaudioclient/IAudioTrack.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ enum { PAUSE, ATTACH_AUX_EFFECT, SET_PARAMETERS, SELECT_PRESENTATION, GET_TIMESTAMP, SIGNAL, APPLY_VOLUME_SHAPER, Loading Loading @@ -127,6 +128,19 @@ public: return status; } /* Selects the presentation (if available) */ virtual status_t selectPresentation(int presentationId, int programId) { Parcel data, reply; data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor()); data.writeInt32(presentationId); data.writeInt32(programId); status_t status = remote()->transact(SELECT_PRESENTATION, data, &reply); if (status == NO_ERROR) { status = reply.readInt32(); } return status; } virtual status_t getTimestamp(AudioTimestamp& timestamp) { Parcel data, reply; data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor()); Loading Loading @@ -239,6 +253,11 @@ status_t BnAudioTrack::onTransact( reply->writeInt32(setParameters(keyValuePairs)); return NO_ERROR; } break; case SELECT_PRESENTATION: { CHECK_INTERFACE(IAudioTrack, data, reply); reply->writeInt32(selectPresentation(data.readInt32(), data.readInt32())); return NO_ERROR; } break; case GET_TIMESTAMP: { CHECK_INTERFACE(IAudioTrack, data, reply); AudioTimestamp timestamp; Loading
media/libaudioclient/include/media/IAudioTrack.h +3 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,9 @@ public: /* Send parameters to the audio hardware */ virtual status_t setParameters(const String8& keyValuePairs) = 0; /* Selects the presentation (if available) */ virtual status_t selectPresentation(int presentationId, int programId) = 0; /* Return NO_ERROR if timestamp is valid. timestamp is undefined otherwise. */ virtual status_t getTimestamp(AudioTimestamp& timestamp) = 0; Loading
media/libaudiohal/impl/StreamHalHidl.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <android/hardware/audio/2.0/IStreamOutCallback.h> #include <android/hardware/audio/4.0/IStreamOutCallback.h> #include <hwbinder/IPCThreadState.h> #include <media/AudioParameter.h> #include <mediautils/SchedulingPolicyService.h> #include <utils/Log.h> Loading Loading @@ -347,6 +348,24 @@ status_t StreamOutHalHidl::setVolume(float left, float right) { return processReturn("setVolume", mStream->setVolume(left, right)); } #if MAJOR_VERSION == 2 status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) { if (mStream == 0) return NO_INIT; std::vector<ParameterValue> parameters; String8 halParameters; parameters.push_back({AudioParameter::keyPresentationId, std::to_string(presentationId)}); parameters.push_back({AudioParameter::keyProgramId, std::to_string(programId)}); parametersToHal(hidl_vec<ParameterValue>(parameters), &halParameters); return setParameters(halParameters); } #elif MAJOR_VERSION == 4 status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) { if (mStream == 0) return NO_INIT; return processReturn("selectPresentation", mStream->selectPresentation(presentationId, programId)); } #endif status_t StreamOutHalHidl::write(const void *buffer, size_t bytes, size_t *written) { if (mStream == 0) return NO_INIT; *written = 0; Loading
media/libaudiohal/impl/StreamHalHidl.h +3 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,9 @@ class StreamOutHalHidl : public StreamOutHalInterface, public StreamHalHidl { // Use this method in situations where audio mixing is done in the hardware. virtual status_t setVolume(float left, float right); // Selects the audio presentation (if available). virtual status_t selectPresentation(int presentationId, int programId); // Write audio buffer to driver. virtual status_t write(const void *buffer, size_t bytes, size_t *written); Loading