diff --git a/audio/aidl/default/XsdcConversion.cpp b/audio/aidl/default/XsdcConversion.cpp
index 2feb0c3..9e30347 100644
--- a/audio/aidl/default/XsdcConversion.cpp
+++ b/audio/aidl/default/XsdcConversion.cpp
@@ -141,11 +141,12 @@
 }
 
 ConversionResult<int> convertGainModeToAidl(const std::vector<ap_xsd::AudioGainMode>& gainModeVec) {
-    static const char gainModeSeparator = ' ';
     int gainModeMask = 0;
     for (const ap_xsd::AudioGainMode& gainMode : gainModeVec) {
-        gainModeMask |= static_cast<int>(::android::GainModeConverter::maskFromString(
-                ap_xsd::toString(gainMode), &gainModeSeparator));
+        audio_gain_mode_t legacyGainMode;
+        if (::android::GainModeConverter::fromString(ap_xsd::toString(gainMode), legacyGainMode)) {
+            gainModeMask |= static_cast<int>(legacyGainMode);
+        }
     }
     return gainModeMask;
 }
@@ -204,22 +205,25 @@
 ConversionResult<AudioIoFlags> convertIoFlagsToAidl(
         const std::vector<ap_xsd::AudioInOutFlag>& flags, const ap_xsd::Role role,
         bool flagsForMixPort) {
-    static const char flagSeparator = ' ';
     int flagMask = 0;
     if ((role == ap_xsd::Role::sink && flagsForMixPort) ||
         (role == ap_xsd::Role::source && !flagsForMixPort)) {
         for (const ap_xsd::AudioInOutFlag& flag : flags) {
-            flagMask |= static_cast<int>(::android::InputFlagConverter::maskFromString(
-                    ap_xsd::toString(flag), &flagSeparator));
+            audio_input_flags_t legacyFlag;
+            if (::android::InputFlagConverter::fromString(ap_xsd::toString(flag), legacyFlag)) {
+                flagMask |= static_cast<int>(legacyFlag);
+            }
         }
         return AudioIoFlags::make<AudioIoFlags::Tag::input>(flagMask);
     } else {
         for (const ap_xsd::AudioInOutFlag& flag : flags) {
-            flagMask |= static_cast<int>(::android::OutputFlagConverter::maskFromString(
-                    ap_xsd::toString(flag), &flagSeparator));
+            audio_output_flags_t legacyFlag;
+            if (::android::OutputFlagConverter::fromString(ap_xsd::toString(flag), legacyFlag)) {
+                flagMask |= static_cast<int>(legacyFlag);
+            }
         }
+        return AudioIoFlags::make<AudioIoFlags::Tag::output>(flagMask);
     }
-    return AudioIoFlags::make<AudioIoFlags::Tag::output>(flagMask);
 }
 
 ConversionResult<AudioPort> convertDevicePortToAidl(
