diff --git a/audio/stream_in.cpp b/audio/stream_in.cpp
index 7148e52..50c89e8 100644
--- a/audio/stream_in.cpp
+++ b/audio/stream_in.cpp
@@ -294,7 +294,7 @@
                                      const hidl_vec<hidl_string>& keys,
                                      getParameters_cb _hidl_cb) {
     (void)context;
-    _hidl_cb((keys.size() > 0) ? FAILURE(Result::NOT_SUPPORTED) : Result::OK, {});
+    _hidl_cb((keys.size() > 0) ? Result::NOT_SUPPORTED : Result::OK, {});
     return Void();
 }
 
diff --git a/audio/stream_out.cpp b/audio/stream_out.cpp
index 1eabed3..ecf5f2e 100644
--- a/audio/stream_out.cpp
+++ b/audio/stream_out.cpp
@@ -310,7 +310,7 @@
                                       const hidl_vec<hidl_string>& keys,
                                       getParameters_cb _hidl_cb) {
     (void)context;
-    _hidl_cb((keys.size() > 0) ? FAILURE(Result::NOT_SUPPORTED) : Result::OK, {});
+    _hidl_cb((keys.size() > 0) ? Result::NOT_SUPPORTED : Result::OK, {});
     return Void();
 }
 
@@ -386,7 +386,7 @@
 
 Return<Result> StreamOut::updateSourceMetadata(const SourceMetadata& sourceMetadata) {
     (void)sourceMetadata;
-    return FAILURE(Result::NOT_SUPPORTED);
+    return Result::NOT_SUPPORTED;
 }
 
 Return<void> StreamOut::prepareForWriting(uint32_t frameSize,
@@ -440,7 +440,7 @@
 
 Return<Result> StreamOut::setEventCallback(const sp<IStreamOutEventCallback>& callback) {
     (void)callback;
-    return FAILURE(Result::NOT_SUPPORTED);
+    return Result::NOT_SUPPORTED;
 }
 
 Return<void> StreamOut::supportsPauseAndResume(supportsPauseAndResume_cb _hidl_cb) {
