Fix VolumeShaper unducking for OpenSLES playback

Native PlayerBase::applyVolumeShaper was never called (silent failure)
due to an undeclared nullable InterpolatorConfig parcelable
which was sent as null.

Test: see bug for repro details
Bug: 185372526
Change-Id: Id18664978605602f287e15de0c920ffc83a9aada
diff --git a/aidl/android/media/VolumeShaperConfiguration.aidl b/aidl/android/media/VolumeShaperConfiguration.aidl
index 6361851..824c169 100644
--- a/aidl/android/media/VolumeShaperConfiguration.aidl
+++ b/aidl/android/media/VolumeShaperConfiguration.aidl
@@ -29,5 +29,5 @@
     /** Bitmask, indexed by VolumeShaperConfigurationOptionFlag. */
     int optionFlags;
     double durationMs;
-    InterpolatorConfig interpolatorConfig;
+    @nullable InterpolatorConfig interpolatorConfig; // null if type == ID
 }
diff --git a/include/media/VolumeShaper.h b/include/media/VolumeShaper.h
index f8ead2f..5271e10 100644
--- a/include/media/VolumeShaper.h
+++ b/include/media/VolumeShaper.h
@@ -302,7 +302,8 @@
             if (mType != TYPE_ID) {
                 parcelable->optionFlags = getOptionFlagsAsAidl();
                 parcelable->durationMs = getDurationMs();
-                Interpolator<S, T>::writeToConfig(&parcelable->interpolatorConfig);
+                parcelable->interpolatorConfig.emplace(); // create value in std::optional
+                Interpolator<S, T>::writeToConfig(&*parcelable->interpolatorConfig);
             }
         }
 
@@ -319,8 +320,10 @@
                       ? NO_ERROR
                       : setOptionFlagsFromAidl(parcelable.optionFlags)
                         ?: setDurationMs(parcelable.durationMs)
-                           ?: Interpolator<S, T>::readFromConfig(parcelable.interpolatorConfig)
-                              ?: checkCurve();
+                           ?: !parcelable.interpolatorConfig  // check std::optional for value
+                               ? BAD_VALUE // must be nonnull.
+                               : Interpolator<S, T>::readFromConfig(*parcelable.interpolatorConfig)
+                                   ?: checkCurve();
         }
 
         // Returns a string for debug printing.