Merge "audio: add implementation for TV related API" am: 8e8fd18d8f
Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1562146
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Iba2f76be0dabc7213ed805ac14a75582bd01b792
diff --git a/audio/core/all-versions/default/StreamOut.cpp b/audio/core/all-versions/default/StreamOut.cpp
index ffd3b6b..21d439c 100644
--- a/audio/core/all-versions/default/StreamOut.cpp
+++ b/audio/core/all-versions/default/StreamOut.cpp
@@ -658,32 +658,65 @@
#if MAJOR_VERSION >= 6
Return<void> StreamOut::getDualMonoMode(getDualMonoMode_cb _hidl_cb) {
- _hidl_cb(Result::NOT_SUPPORTED, DualMonoMode::OFF);
+ audio_dual_mono_mode_t mode = AUDIO_DUAL_MONO_MODE_OFF;
+ Result retval = mStream->get_dual_mono_mode != nullptr
+ ? Stream::analyzeStatus("get_dual_mono_mode",
+ mStream->get_dual_mono_mode(mStream, &mode))
+ : Result::NOT_SUPPORTED;
+ _hidl_cb(retval, DualMonoMode(mode));
return Void();
}
-Return<Result> StreamOut::setDualMonoMode(DualMonoMode /*mode*/) {
- return Result::NOT_SUPPORTED;
+Return<Result> StreamOut::setDualMonoMode(DualMonoMode mode) {
+ return mStream->set_dual_mono_mode != nullptr
+ ? Stream::analyzeStatus(
+ "set_dual_mono_mode",
+ mStream->set_dual_mono_mode(mStream,
+ static_cast<audio_dual_mono_mode_t>(mode)))
+ : Result::NOT_SUPPORTED;
}
Return<void> StreamOut::getAudioDescriptionMixLevel(getAudioDescriptionMixLevel_cb _hidl_cb) {
- _hidl_cb(Result::NOT_SUPPORTED, -std::numeric_limits<float>::infinity());
+ float leveldB = -std::numeric_limits<float>::infinity();
+ Result retval = mStream->get_audio_description_mix_level != nullptr
+ ? Stream::analyzeStatus(
+ "get_audio_description_mix_level",
+ mStream->get_audio_description_mix_level(mStream, &leveldB))
+ : Result::NOT_SUPPORTED;
+ _hidl_cb(retval, leveldB);
return Void();
}
-Return<Result> StreamOut::setAudioDescriptionMixLevel(float /*leveldB*/) {
- return Result::NOT_SUPPORTED;
+Return<Result> StreamOut::setAudioDescriptionMixLevel(float leveldB) {
+ return mStream->set_audio_description_mix_level != nullptr
+ ? Stream::analyzeStatus(
+ "set_audio_description_mix_level",
+ mStream->set_audio_description_mix_level(mStream, leveldB))
+ : Result::NOT_SUPPORTED;
}
Return<void> StreamOut::getPlaybackRateParameters(getPlaybackRateParameters_cb _hidl_cb) {
- _hidl_cb(Result::NOT_SUPPORTED,
- // Same as AUDIO_PLAYBACK_RATE_INITIALIZER
- PlaybackRate{1.0f, 1.0f, TimestretchMode::DEFAULT, TimestretchFallbackMode::FAIL});
+ audio_playback_rate_t rate = AUDIO_PLAYBACK_RATE_INITIALIZER;
+ Result retval =
+ mStream->get_playback_rate_parameters != nullptr
+ ? Stream::analyzeStatus("get_playback_rate_parameters",
+ mStream->get_playback_rate_parameters(mStream, &rate))
+ : Result::NOT_SUPPORTED;
+ _hidl_cb(retval,
+ PlaybackRate{rate.mSpeed, rate.mPitch, static_cast<TimestretchMode>(rate.mStretchMode),
+ static_cast<TimestretchFallbackMode>(rate.mFallbackMode)});
return Void();
}
-Return<Result> StreamOut::setPlaybackRateParameters(const PlaybackRate& /*playbackRate*/) {
- return Result::NOT_SUPPORTED;
+Return<Result> StreamOut::setPlaybackRateParameters(const PlaybackRate& playbackRate) {
+ audio_playback_rate_t rate = {
+ playbackRate.speed, playbackRate.pitch,
+ static_cast<audio_timestretch_stretch_mode_t>(playbackRate.timestretchMode),
+ static_cast<audio_timestretch_fallback_mode_t>(playbackRate.fallbackMode)};
+ return mStream->set_playback_rate_parameters != nullptr
+ ? Stream::analyzeStatus("set_playback_rate_parameters",
+ mStream->set_playback_rate_parameters(mStream, &rate))
+ : Result::NOT_SUPPORTED;
}
Return<Result> StreamOut::setEventCallback(const sp<IStreamOutEventCallback>& callback) {