[media] move GainControl to fuchsia.media.audio (reland)

This is a reland of 5496ab442b84258da77d8f1bfeabd690acec029b

Original change's description:
> [media] move GainControl to fuchsia.media.audio
>
> This CL moves the FIDL definition for GainControl from fuchsia.media
> to fuchsia.media.audio. Other audio-related definitions from
> fuchsia.media will be moved later. This is happening now, because
> there are no out-of-repo references to GainControl at the moment.
>
> TEST: no behavior change
> Change-Id: Ia735f6fb2336fbc0ad94933f4b90f8879079804c

Exempt-From-Owner-Approval: previously approved by kulakowsi@

Change-Id: Iadeb46b51969282bec37bc579525af985896d953
diff --git a/garnet/bin/media/audio_core/audio_capturer_impl.cc b/garnet/bin/media/audio_core/audio_capturer_impl.cc
index 683a487..5fdc90a 100644
--- a/garnet/bin/media/audio_core/audio_capturer_impl.cc
+++ b/garnet/bin/media/audio_core/audio_capturer_impl.cc
@@ -823,7 +823,8 @@
   ::memset(mix_buf_.get(), 0u, job_bytes);
 
   // If our capturer is mute, we have nothing to do after filling with silence.
-  if (mute_ || (stream_gain_db_.load() <= fuchsia::media::MUTED_GAIN_DB)) {
+  if (mute_ ||
+      (stream_gain_db_.load() <= fuchsia::media::audio::MUTED_GAIN_DB)) {
     return true;
   }
 
@@ -1389,14 +1390,14 @@
 }
 
 void AudioCapturerImpl::BindGainControl(
-    fidl::InterfaceRequest<fuchsia::media::GainControl> request) {
+    fidl::InterfaceRequest<fuchsia::media::audio::GainControl> request) {
   gain_control_bindings_.AddBinding(this, std::move(request));
 }
 
 void AudioCapturerImpl::SetGain(float gain_db) {
   // Before setting stream_gain_db_, we should always perform this range check.
-  if ((gain_db < fuchsia::media::MUTED_GAIN_DB) ||
-      (gain_db > fuchsia::media::MAX_GAIN_DB) || isnan(gain_db)) {
+  if ((gain_db < fuchsia::media::audio::MUTED_GAIN_DB) ||
+      (gain_db > fuchsia::media::audio::MAX_GAIN_DB) || isnan(gain_db)) {
     FXL_LOG(ERROR) << "SetGain(" << gain_db << " dB) out of range.";
     Shutdown();
     return;
diff --git a/garnet/bin/media/audio_core/audio_capturer_impl.h b/garnet/bin/media/audio_core/audio_capturer_impl.h
index b17d62a..5b10574 100644
--- a/garnet/bin/media/audio_core/audio_capturer_impl.h
+++ b/garnet/bin/media/audio_core/audio_capturer_impl.h
@@ -30,7 +30,7 @@
 class AudioCapturerImpl
     : public AudioObject,
       public fuchsia::media::AudioCapturer,
-      public fuchsia::media::GainControl,
+      public fuchsia::media::audio::GainControl,
       public fbl::DoublyLinkedListable<fbl::RefPtr<AudioCapturerImpl>> {
  public:
   static fbl::RefPtr<AudioCapturerImpl> Create(
@@ -153,12 +153,12 @@
   void StopAsyncCapture(StopAsyncCaptureCallback cbk) final;
   void StopAsyncCaptureNoReply() final;
   void BindGainControl(
-      fidl::InterfaceRequest<fuchsia::media::GainControl> request) final;
+      fidl::InterfaceRequest<fuchsia::media::audio::GainControl> request) final;
 
   // GainControl interface.
   void SetGain(float gain_db) final;
   void SetGainWithRamp(float gain_db, zx_duration_t duration_ns,
-                       fuchsia::media::AudioRamp rampType) final {
+                       fuchsia::media::audio::AudioRamp rampType) final {
     FXL_NOTIMPLEMENTED();
   }
   void SetMute(bool mute) final;
@@ -197,7 +197,7 @@
   zx_status_t ChooseMixer(const std::shared_ptr<AudioLink>& link);
 
   fidl::Binding<fuchsia::media::AudioCapturer> binding_;
-  fidl::BindingSet<fuchsia::media::GainControl> gain_control_bindings_;
+  fidl::BindingSet<fuchsia::media::audio::GainControl> gain_control_bindings_;
   AudioCoreImpl* owner_ = nullptr;
   std::atomic<State> state_;
   const bool loopback_;
diff --git a/garnet/bin/media/audio_core/audio_core_impl.cc b/garnet/bin/media/audio_core/audio_core_impl.cc
index b8b7851..bc1d20a 100644
--- a/garnet/bin/media/audio_core/audio_core_impl.cc
+++ b/garnet/bin/media/audio_core/audio_core_impl.cc
@@ -66,16 +66,15 @@
 void AudioCoreImpl::PublishServices() {
   ctx_->outgoing().AddPublicService<fuchsia::media::AudioCore>(
       [this](fidl::InterfaceRequest<fuchsia::media::AudioCore> request) {
-        bindings_.AddBinding(
-            this,
-            std::move(request));
+        bindings_.AddBinding(this, std::move(request));
         bindings_.bindings().back()->events().SystemGainMuteChanged(
             system_gain_db_, system_muted_);
       });
   // TODO(dalesat): Load the gain/mute values.
 
   ctx_->outgoing().AddPublicService<fuchsia::media::AudioDeviceEnumerator>(
-      [this](fidl::InterfaceRequest<fuchsia::media::AudioDeviceEnumerator> request) {
+      [this](fidl::InterfaceRequest<fuchsia::media::AudioDeviceEnumerator>
+                 request) {
         device_manager_.AddDeviceEnumeratorClient(std::move(request));
       });
 }
@@ -108,7 +107,7 @@
     return;
   }
   gain_db = std::max(std::min(gain_db, kMaxSystemAudioGainDb),
-                     fuchsia::media::MUTED_GAIN_DB);
+                     fuchsia::media::audio::MUTED_GAIN_DB);
 
   if (system_gain_db_ == gain_db) {
     // This system gain is the same as the last one we broadcast.
diff --git a/garnet/bin/media/audio_core/audio_renderer_impl.cc b/garnet/bin/media/audio_core/audio_renderer_impl.cc
index 7271065..1ad25d9 100644
--- a/garnet/bin/media/audio_core/audio_renderer_impl.cc
+++ b/garnet/bin/media/audio_core/audio_renderer_impl.cc
@@ -644,8 +644,8 @@
 // "source" gain; the Output device (or master) gain is "dest" gain.
 void AudioRendererImpl::SetGain(float gain_db) {
   // Anywhere we set stream_gain_db_, we should perform this range check.
-  if (gain_db > fuchsia::media::MAX_GAIN_DB ||
-      gain_db < fuchsia::media::MUTED_GAIN_DB || isnan(gain_db)) {
+  if (gain_db > fuchsia::media::audio::MAX_GAIN_DB ||
+      gain_db < fuchsia::media::audio::MUTED_GAIN_DB || isnan(gain_db)) {
     FXL_LOG(ERROR) << "SetGain(" << gain_db << " dB) out of range.";
     Shutdown();  // Use fit::defer() pattern if more than 1 error return case.
     return;
@@ -670,11 +670,11 @@
 
 // Set a stream gain ramp, in each Renderer -> Output audio path. Renderer gain
 // is pre-mix and hence is the Source component in the Gain object.
-void AudioRendererImpl::SetGainWithRamp(float gain_db,
-                                        zx_duration_t duration_ns,
-                                        fuchsia::media::AudioRamp rampType) {
-  if (gain_db > fuchsia::media::MAX_GAIN_DB ||
-      gain_db < fuchsia::media::MUTED_GAIN_DB || isnan(gain_db)) {
+void AudioRendererImpl::SetGainWithRamp(
+    float gain_db, zx_duration_t duration_ns,
+    fuchsia::media::audio::AudioRamp rampType) {
+  if (gain_db > fuchsia::media::audio::MAX_GAIN_DB ||
+      gain_db < fuchsia::media::audio::MUTED_GAIN_DB || isnan(gain_db)) {
     FXL_LOG(ERROR) << "SetGainWithRamp(" << gain_db << " dB) out of range.";
     Shutdown();  // Use fit::defer() pattern if more than 1 error return case.
     return;
@@ -714,7 +714,7 @@
 }
 
 void AudioRendererImpl::BindGainControl(
-    fidl::InterfaceRequest<fuchsia::media::GainControl> request) {
+    fidl::InterfaceRequest<fuchsia::media::audio::GainControl> request) {
   gain_control_bindings_.AddBinding(GainControlBinding::Create(this),
                                     std::move(request));
 }
@@ -750,7 +750,7 @@
 
 void AudioRendererImpl::GainControlBinding::SetGainWithRamp(
     float gain_db, zx_duration_t duration_ns,
-    fuchsia::media::AudioRamp rampType) {
+    fuchsia::media::audio::AudioRamp rampType) {
   owner_->SetGainWithRamp(gain_db, duration_ns, rampType);
 }
 
diff --git a/garnet/bin/media/audio_core/audio_renderer_impl.h b/garnet/bin/media/audio_core/audio_renderer_impl.h
index c7891b6..ea88833 100644
--- a/garnet/bin/media/audio_core/audio_renderer_impl.h
+++ b/garnet/bin/media/audio_core/audio_renderer_impl.h
@@ -25,7 +25,7 @@
     : public AudioObject,
       public fbl::DoublyLinkedListable<fbl::RefPtr<AudioRendererImpl>>,
       public fuchsia::media::AudioRenderer,
-      public fuchsia::media::GainControl {
+      public fuchsia::media::audio::GainControl {
  public:
   static fbl::RefPtr<AudioRendererImpl> Create(
       fidl::InterfaceRequest<fuchsia::media::AudioRenderer>
@@ -77,14 +77,14 @@
   void Pause(PauseCallback callback) final;
   void PauseNoReply() final;
   void BindGainControl(
-      fidl::InterfaceRequest<fuchsia::media::GainControl> request) final;
+      fidl::InterfaceRequest<fuchsia::media::audio::GainControl> request) final;
   void EnableMinLeadTimeEvents(bool enabled) final;
   void GetMinLeadTime(GetMinLeadTimeCallback callback) final;
 
   // GainControl interface.
   void SetGain(float gain_db) final;
   void SetGainWithRamp(float gain_db, zx_duration_t duration_ns,
-                       fuchsia::media::AudioRamp rampType) final;
+                       fuchsia::media::audio::AudioRamp rampType) final;
   void SetMute(bool muted) final;
   void NotifyGainMuteChanged();
   // TODO(mpuryear): Notify on SetGainWithRamp.
@@ -103,7 +103,7 @@
   int64_t min_clock_lead_nsec_ = 0;
 
  private:
-  class GainControlBinding : public fuchsia::media::GainControl {
+  class GainControlBinding : public fuchsia::media::audio::GainControl {
    public:
     static fbl::unique_ptr<GainControlBinding> Create(
         AudioRendererImpl* owner) {
@@ -113,7 +113,7 @@
     // GainControl interface.
     void SetGain(float gain_db) final;
     void SetGainWithRamp(float gain_db, zx_duration_t duration_ns,
-                         fuchsia::media::AudioRamp rampType) final;
+                         fuchsia::media::audio::AudioRamp rampType) final;
     void SetMute(bool muted) final;
 
    private:
@@ -141,7 +141,7 @@
 
   AudioCoreImpl* owner_ = nullptr;
   fidl::Binding<fuchsia::media::AudioRenderer> audio_renderer_binding_;
-  fidl::BindingSet<fuchsia::media::GainControl,
+  fidl::BindingSet<fuchsia::media::audio::GainControl,
                    fbl::unique_ptr<GainControlBinding>>
       gain_control_bindings_;
   bool is_shutdown_ = false;
diff --git a/garnet/bin/media/audio_core/mixer/gain.cc b/garnet/bin/media/audio_core/mixer/gain.cc
index 4eb460b..4d8d5bc 100644
--- a/garnet/bin/media/audio_core/mixer/gain.cc
+++ b/garnet/bin/media/audio_core/mixer/gain.cc
@@ -20,9 +20,9 @@
 
 // TODO(mpuryear): When we add ramping of another gain stage (dest, or a new
 // stage), refactor to accept a stage index or a pointer to a ramp-struct.
-void Gain::SetSourceGainWithRamp(float source_gain_db,
-                                 zx_duration_t duration_ns,
-                                 __UNUSED fuchsia::media::AudioRamp rampType) {
+void Gain::SetSourceGainWithRamp(
+    float source_gain_db, zx_duration_t duration_ns,
+    __UNUSED fuchsia::media::audio::AudioRamp rampType) {
   FXL_DCHECK(source_gain_db <= kMaxGainDb);
   FXL_DCHECK(duration_ns >= 0) << "Ramp duration cannot be negative";
 
diff --git a/garnet/bin/media/audio_core/mixer/gain.h b/garnet/bin/media/audio_core/mixer/gain.h
index 6f5e0cd..f9a0773 100644
--- a/garnet/bin/media/audio_core/mixer/gain.h
+++ b/garnet/bin/media/audio_core/mixer/gain.h
@@ -30,9 +30,9 @@
   //
   // Playback example: source (renderer) gain + dest (device) gain = total gain.
   // Capture example: source (device) gain + dest (capturer) gain = total gain.
-  static constexpr float kMaxGainDb = fuchsia::media::MAX_GAIN_DB;
+  static constexpr float kMaxGainDb = fuchsia::media::audio::MAX_GAIN_DB;
   static constexpr float kUnityGainDb = 0.0f;
-  static constexpr float kMinGainDb = fuchsia::media::MUTED_GAIN_DB;
+  static constexpr float kMinGainDb = fuchsia::media::audio::MUTED_GAIN_DB;
 
   // constructor
   Gain()
@@ -105,9 +105,10 @@
   }
 
   // Smoothly change the source gain over the specified period of playback time.
-  void SetSourceGainWithRamp(float gain_db, zx_duration_t duration_ns,
-                             fuchsia::media::AudioRamp rampType =
-                                 fuchsia::media::AudioRamp::SCALE_LINEAR);
+  void SetSourceGainWithRamp(
+      float gain_db, zx_duration_t duration_ns,
+      fuchsia::media::audio::AudioRamp rampType =
+          fuchsia::media::audio::AudioRamp::SCALE_LINEAR);
 
   void ClearSourceRamp() { source_ramp_duration_ns_ = 0; }
 
diff --git a/garnet/bin/media/audio_core/test/audio_capturer_test.cc b/garnet/bin/media/audio_core/test/audio_capturer_test.cc
index 4cd5b1c5..31f6ddd 100644
--- a/garnet/bin/media/audio_core/test/audio_capturer_test.cc
+++ b/garnet/bin/media/audio_core/test/audio_capturer_test.cc
@@ -27,7 +27,7 @@
   std::shared_ptr<component::Services> environment_services_;
   fuchsia::media::AudioPtr audio_;
   fuchsia::media::AudioCapturerPtr audio_capturer_;
-  fuchsia::media::GainControlPtr gain_control_;
+  fuchsia::media::audio::GainControlPtr gain_control_;
 
   bool error_occurred_ = false;
   bool expect_error_ = false;
@@ -234,7 +234,7 @@
   };
   audio_capturer_2.set_error_handler(ac2_err_handler);
 
-  fuchsia::media::GainControlPtr gain_control_2;
+  fuchsia::media::audio::GainControlPtr gain_control_2;
   audio_capturer_2->BindGainControl(gain_control_2.NewRequest());
   bool gc2_error_occurred = false;
   auto gc2_err_handler = [&gc2_error_occurred](zx_status_t error) {
@@ -279,7 +279,7 @@
   audio_->CreateAudioCapturer(audio_capturer_2.NewRequest(), false);
   audio_capturer_2.set_error_handler(err_handler);
 
-  fidl::InterfaceRequest<fuchsia::media::GainControl> bad_request;
+  fidl::InterfaceRequest<fuchsia::media::audio::GainControl> bad_request;
   auto bad_request_void_ptr = static_cast<void*>(&bad_request);
   auto bad_request_dword_ptr = static_cast<uint32_t*>(bad_request_void_ptr);
   *bad_request_dword_ptr = 0x0BADCAFE;
diff --git a/garnet/bin/media/audio_core/test/audio_renderer_test.cc b/garnet/bin/media/audio_core/test/audio_renderer_test.cc
index 34101c4..fa56cca9 100644
--- a/garnet/bin/media/audio_core/test/audio_renderer_test.cc
+++ b/garnet/bin/media/audio_core/test/audio_renderer_test.cc
@@ -25,7 +25,7 @@
   std::shared_ptr<component::Services> environment_services_;
   fuchsia::media::AudioPtr audio_;
   fuchsia::media::AudioRendererPtr audio_renderer_;
-  fuchsia::media::GainControlPtr gain_control_;
+  fuchsia::media::audio::GainControlPtr gain_control_;
 
   bool error_occurred_ = false;
   bool expect_error_ = false;
@@ -267,7 +267,7 @@
   };
   audio_renderer_2.set_error_handler(ar2_err_handler);
 
-  fuchsia::media::GainControlPtr gain_control_2;
+  fuchsia::media::audio::GainControlPtr gain_control_2;
   audio_renderer_2->BindGainControl(gain_control_2.NewRequest());
   bool gc2_error_occurred = false;
   auto gc2_err_handler = [&gc2_error_occurred](zx_status_t error) {
diff --git a/garnet/bin/media/audio_core/test/audio_test.cc b/garnet/bin/media/audio_core/test/audio_test.cc
index e25bb83..7dade9b 100644
--- a/garnet/bin/media/audio_core/test/audio_test.cc
+++ b/garnet/bin/media/audio_core/test/audio_test.cc
@@ -453,17 +453,17 @@
 // Test independence of systemwide Gain/Mute. System Gain should not affect
 // systemwide Mute (Mute should not become true when Gain is MUTED_GAIN_DB).
 TEST_F(SystemGainMuteTest, SystemGainDoesntAffectSystemMute) {
-  SetSystemGain(fuchsia::media::MUTED_GAIN_DB);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, false));
+  SetSystemGain(fuchsia::media::audio::MUTED_GAIN_DB);
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, false));
 
   SetSystemMute(true);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, true));
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, true));
 
   SetSystemMute(false);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, false));
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, false));
 
   SetSystemMute(true);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, true));
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, true));
 
   constexpr float expected_gain_db = -42.0f;
   SetSystemGain(expected_gain_db);
@@ -482,11 +482,11 @@
   SetSystemMute(true);
   EXPECT_TRUE(ReceiveNoGainCallback());
 
-  SetSystemGain(fuchsia::media::MUTED_GAIN_DB);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, true));
+  SetSystemGain(fuchsia::media::audio::MUTED_GAIN_DB);
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, true));
 
   SetSystemMute(false);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, false));
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, false));
 
   SetSystemMute(false);
   EXPECT_TRUE(ReceiveNoGainCallback());
@@ -504,21 +504,21 @@
   SetSystemGain(kUnityGainDb);
   EXPECT_TRUE(ReceiveNoGainCallback());
 
-  SetSystemGain(fuchsia::media::MUTED_GAIN_DB);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, true));
+  SetSystemGain(fuchsia::media::audio::MUTED_GAIN_DB);
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, true));
 
   SetSystemMute(false);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, false));
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, false));
 
-  SetSystemGain(fuchsia::media::MUTED_GAIN_DB);
+  SetSystemGain(fuchsia::media::audio::MUTED_GAIN_DB);
   EXPECT_TRUE(ReceiveNoGainCallback());
 }
 
 // Set System Gain above allowed range, after setting to low value.
 // Initial state of system gain is unity, which is the maximum value.
 TEST_F(SystemGainMuteTest, SystemGainTooHighIsClampedToMaximum) {
-  SetSystemGain(fuchsia::media::MUTED_GAIN_DB);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, false));
+  SetSystemGain(fuchsia::media::audio::MUTED_GAIN_DB);
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, false));
 
   SetSystemGain(kTooHighGainDb);
   EXPECT_TRUE(ReceiveGainCallback(kUnityGainDb, false));
@@ -527,7 +527,7 @@
 // Set System Gain below allowed range. Should clamp "up" to the minimum val.
 TEST_F(SystemGainMuteTest, SystemGainTooLowIsClampedToMinimum) {
   SetSystemGain(kTooLowGainDb);
-  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::MUTED_GAIN_DB, false));
+  EXPECT_TRUE(ReceiveGainCallback(fuchsia::media::audio::MUTED_GAIN_DB, false));
 }
 
 // Set System Gain to malformed float. Should cause no change, nor disconnect.
diff --git a/garnet/bin/media/audio_core/test/audio_tests_shared.h b/garnet/bin/media/audio_core/test/audio_tests_shared.h
index 484474d..cb4fbf7 100644
--- a/garnet/bin/media/audio_core/test/audio_tests_shared.h
+++ b/garnet/bin/media/audio_core/test/audio_tests_shared.h
@@ -36,8 +36,8 @@
 constexpr char kNoTimeoutErr[] = "Unexpected callback received!\n";
 
 constexpr float kUnityGainDb = 0.0f;
-constexpr float kTooLowGainDb = fuchsia::media::MUTED_GAIN_DB - 0.1f;
-constexpr float kTooHighGainDb = fuchsia::media::MAX_GAIN_DB + 0.1f;
+constexpr float kTooLowGainDb = fuchsia::media::audio::MUTED_GAIN_DB - 0.1f;
+constexpr float kTooHighGainDb = fuchsia::media::audio::MAX_GAIN_DB + 0.1f;
 
 }  // namespace media::audio::test
 
diff --git a/garnet/bin/media/audio_core/test/gain_control_test.h b/garnet/bin/media/audio_core/test/gain_control_test.h
index 09f7465..1e560c2 100644
--- a/garnet/bin/media/audio_core/test/gain_control_test.h
+++ b/garnet/bin/media/audio_core/test/gain_control_test.h
@@ -65,7 +65,7 @@
 
   fuchsia::media::AudioRendererPtr audio_renderer_;
   fuchsia::media::AudioCapturerPtr audio_capturer_;
-  fuchsia::media::GainControlPtr gain_control_;
+  fuchsia::media::audio::GainControlPtr gain_control_;
 
   bool error_occurred_ = false;
   bool received_gain_callback_ = false;
@@ -75,7 +75,7 @@
   // Member variables for tests that use multiple interface bindings
   fuchsia::media::AudioRendererPtr audio_renderer_2_;
   fuchsia::media::AudioCapturerPtr audio_capturer_2_;
-  fuchsia::media::GainControlPtr gain_control_2_;
+  fuchsia::media::audio::GainControlPtr gain_control_2_;
 
   bool error_occurred_2_ = false;
   bool received_gain_callback_2_ = false;
diff --git a/garnet/bin/media/signal_generator/main.cc b/garnet/bin/media/signal_generator/main.cc
index 1445094..3aef957 100644
--- a/garnet/bin/media/signal_generator/main.cc
+++ b/garnet/bin/media/signal_generator/main.cc
@@ -112,8 +112,9 @@
   printf(
       "\t--%s[=<GAIN_DB>]\tSet stream gain (dB in [%.1f, %.1f]; %s if only "
       "'--%s' is provided)\n",
-      kStreamGainSwitch, fuchsia::media::MUTED_GAIN_DB,
-      fuchsia::media::MAX_GAIN_DB, kStreamGainDefaultDb, kStreamGainSwitch);
+      kStreamGainSwitch, fuchsia::media::audio::MUTED_GAIN_DB,
+      fuchsia::media::audio::MAX_GAIN_DB, kStreamGainDefaultDb,
+      kStreamGainSwitch);
   printf(
       "\t--%s[=<0|1>]\t\tSet stream mute (0=Unmute or 1=Mute; Mute if only "
       "'--%s' is provided)\n",
@@ -137,8 +138,8 @@
   printf(
       "\t--%s[=<GAIN_DB>]\tSet System Gain (dB in [%.1f, 0.0]; %s if only "
       "'--%s' is provided)\n",
-      kSystemGainSwitch, fuchsia::media::MUTED_GAIN_DB, kSystemGainDefaultDb,
-      kSystemGainSwitch);
+      kSystemGainSwitch, fuchsia::media::audio::MUTED_GAIN_DB,
+      kSystemGainDefaultDb, kSystemGainSwitch);
   printf(
       "\t--%s[=<0|1>]\t\tSet System Mute (0=Unmute or 1=Mute; Mute if only "
       "'--%s' is provided)\n",
diff --git a/garnet/bin/media/signal_generator/signal_generator.cc b/garnet/bin/media/signal_generator/signal_generator.cc
index 0f42ed2..4e2bfad 100644
--- a/garnet/bin/media/signal_generator/signal_generator.cc
+++ b/garnet/bin/media/signal_generator/signal_generator.cc
@@ -121,11 +121,11 @@
   }
 
   stream_gain_db_ =
-      fbl::clamp<float>(stream_gain_db_, fuchsia::media::MUTED_GAIN_DB,
-                        fuchsia::media::MAX_GAIN_DB);
+      fbl::clamp<float>(stream_gain_db_, fuchsia::media::audio::MUTED_GAIN_DB,
+                        fuchsia::media::audio::MAX_GAIN_DB);
 
-  system_gain_db_ =
-      fbl::clamp<float>(system_gain_db_, fuchsia::media::MUTED_GAIN_DB, 0.0f);
+  system_gain_db_ = fbl::clamp<float>(
+      system_gain_db_, fuchsia::media::audio::MUTED_GAIN_DB, 0.0f);
 
   return ret_val;
 }
@@ -276,8 +276,9 @@
     gain_control_->SetGain(stream_gain_db_);
   }
   if (ramp_stream_gain_) {
-    gain_control_->SetGainWithRamp(ramp_target_gain_db_, ramp_duration_nsec_,
-                                   fuchsia::media::AudioRamp::SCALE_LINEAR);
+    gain_control_->SetGainWithRamp(
+        ramp_target_gain_db_, ramp_duration_nsec_,
+        fuchsia::media::audio::AudioRamp::SCALE_LINEAR);
   }
 }
 
@@ -413,8 +414,7 @@
   }
 
   ++num_packets_sent_;
-  audio_renderer_->SendPacket(packet,
-                              [this]() { OnSendPacketComplete(); });
+  audio_renderer_->SendPacket(packet, [this]() { OnSendPacketComplete(); });
 }
 
 void MediaApp::OnSendPacketComplete() {
diff --git a/garnet/bin/media/signal_generator/signal_generator.h b/garnet/bin/media/signal_generator/signal_generator.h
index 63e3b6b..d240059 100644
--- a/garnet/bin/media/signal_generator/signal_generator.h
+++ b/garnet/bin/media/signal_generator/signal_generator.h
@@ -109,7 +109,7 @@
   fit::closure quit_callback_;
 
   fuchsia::media::AudioRendererPtr audio_renderer_;
-  fuchsia::media::GainControlPtr gain_control_;
+  fuchsia::media::audio::GainControlPtr gain_control_;
 
   fzl::VmoMapper payload_buffer_;
 
diff --git a/garnet/bin/media/wav_recorder/wav_recorder.cc b/garnet/bin/media/wav_recorder/wav_recorder.cc
index 2ceb960..0c7e4ad 100644
--- a/garnet/bin/media/wav_recorder/wav_recorder.cc
+++ b/garnet/bin/media/wav_recorder/wav_recorder.cc
@@ -122,8 +122,8 @@
   printf(
       " --%s[=<GAIN_DB>]\tSet stream gain (dB in [%.1f, +%.1f]; 0.0 if only "
       "'--%s' is provided)\n",
-      kGainOption.c_str(), fuchsia::media::MUTED_GAIN_DB,
-      fuchsia::media::MAX_GAIN_DB, kGainOption.c_str());
+      kGainOption.c_str(), fuchsia::media::audio::MUTED_GAIN_DB,
+      fuchsia::media::audio::MAX_GAIN_DB, kGainOption.c_str());
   printf(
       " --%s[=<0|1>]\t\tSet stream mute (0=Unmute or 1=Mute; Mute if only "
       "'--%s' is provided)\n",
@@ -281,11 +281,11 @@
         return;
       }
 
-      if ((stream_gain_db_ < fuchsia::media::MUTED_GAIN_DB) ||
-          (stream_gain_db_ > fuchsia::media::MAX_GAIN_DB)) {
+      if ((stream_gain_db_ < fuchsia::media::audio::MUTED_GAIN_DB) ||
+          (stream_gain_db_ > fuchsia::media::audio::MAX_GAIN_DB)) {
         printf("Gain (%.3f dB) must be within range [%.1f, %.1f]\n",
-               stream_gain_db_, fuchsia::media::MUTED_GAIN_DB,
-               fuchsia::media::MAX_GAIN_DB);
+               stream_gain_db_, fuchsia::media::audio::MUTED_GAIN_DB,
+               fuchsia::media::audio::MAX_GAIN_DB);
         return;
       }
     }
@@ -388,9 +388,7 @@
     FXL_DCHECK(capture_frames_per_chunk_);
     FXL_DCHECK((payload_buf_frames_ % capture_frames_per_chunk_) == 0);
     audio_capturer_.events().OnPacketProduced =
-        [this](fuchsia::media::StreamPacket pkt) {
-          OnPacketProduced(pkt);
-        };
+        [this](fuchsia::media::StreamPacket pkt) { OnPacketProduced(pkt); };
     audio_capturer_->StartAsyncCapture(capture_frames_per_chunk_);
   }
 
diff --git a/garnet/bin/media/wav_recorder/wav_recorder.h b/garnet/bin/media/wav_recorder/wav_recorder.h
index 5305d5c..30e78d8 100644
--- a/garnet/bin/media/wav_recorder/wav_recorder.h
+++ b/garnet/bin/media/wav_recorder/wav_recorder.h
@@ -37,7 +37,7 @@
   void OnQuit();
 
   fuchsia::media::AudioCapturerPtr audio_capturer_;
-  fuchsia::media::GainControlPtr gain_control_;
+  fuchsia::media::audio::GainControlPtr gain_control_;
   fsl::FDWaiter keystroke_waiter_;
   media::audio::WavWriter<> wav_writer_;
 
diff --git a/garnet/public/lib/fostr/fidl/fuchsia.media.audio/BUILD.gn b/garnet/public/lib/fostr/fidl/fuchsia.media.audio/BUILD.gn
new file mode 100644
index 0000000..c6ca181
--- /dev/null
+++ b/garnet/public/lib/fostr/fidl/fuchsia.media.audio/BUILD.gn
@@ -0,0 +1,9 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//garnet/public/build/fostr/fostr_fidl.gni")
+
+fostr_fidl("fuchsia.media.audio") {
+  fidl_target = "//sdk/fidl/fuchsia.media.audio"
+}
diff --git a/garnet/public/lib/fostr/fidl/fuchsia.media/BUILD.gn b/garnet/public/lib/fostr/fidl/fuchsia.media/BUILD.gn
index 71887a2..f823c01 100644
--- a/garnet/public/lib/fostr/fidl/fuchsia.media/BUILD.gn
+++ b/garnet/public/lib/fostr/fidl/fuchsia.media/BUILD.gn
@@ -9,5 +9,6 @@
 
   deps = [
     "//garnet/public/lib/fostr/fidl/fuchsia.images",
+    "//garnet/public/lib/fostr/fidl/fuchsia.media.audio",
   ]
 }
diff --git a/garnet/public/lib/fostr/fidl/fuchsia.mediaplayer/BUILD.gn b/garnet/public/lib/fostr/fidl/fuchsia.mediaplayer/BUILD.gn
index 6df9ad6..fc345fe 100644
--- a/garnet/public/lib/fostr/fidl/fuchsia.mediaplayer/BUILD.gn
+++ b/garnet/public/lib/fostr/fidl/fuchsia.mediaplayer/BUILD.gn
@@ -10,6 +10,7 @@
   deps = [
     "//garnet/public/lib/fostr/fidl/fuchsia.math",
     "//garnet/public/lib/fostr/fidl/fuchsia.media",
+    "//garnet/public/lib/fostr/fidl/fuchsia.media.audio",
     "//garnet/public/lib/fostr/fidl/fuchsia.net.oldhttp",
     "//garnet/public/lib/fostr/fidl/fuchsia.ui.viewsv1",
     "//garnet/public/lib/fostr/fidl/fuchsia.ui.viewsv1token",
diff --git a/garnet/public/lib/media/audio/perceived_level.cc b/garnet/public/lib/media/audio/perceived_level.cc
index de6ff1f..982064a 100644
--- a/garnet/public/lib/media/audio/perceived_level.cc
+++ b/garnet/public/lib/media/audio/perceived_level.cc
@@ -35,7 +35,7 @@
 // static
 float PerceivedLevel::LevelToGain(float level) {
   if (level <= 0.0f) {
-    return fuchsia::media::MUTED_GAIN_DB;
+    return fuchsia::media::audio::MUTED_GAIN_DB;
   }
 
   if (level >= 1.0f) {
@@ -65,7 +65,7 @@
   FXL_DCHECK(max_level > 0);
 
   if (level <= 0) {
-    return fuchsia::media::MUTED_GAIN_DB;
+    return fuchsia::media::audio::MUTED_GAIN_DB;
   }
 
   if (level >= max_level) {
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 4d46cc9..44af242 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -143,6 +143,7 @@
     "//sdk/fidl/fuchsia.images:fuchsia.images_sdk($fidl_toolchain)",
     "//sdk/fidl/fuchsia.math:fuchsia.math_sdk($fidl_toolchain)",
     "//sdk/fidl/fuchsia.media:fuchsia.media_sdk($fidl_toolchain)",
+    "//sdk/fidl/fuchsia.media.audio:fuchsia.media.audio_sdk($fidl_toolchain)",
     "//sdk/fidl/fuchsia.mediacodec:fuchsia.mediacodec_sdk($fidl_toolchain)",
     "//sdk/fidl/fuchsia.mediaplayer:fuchsia.mediaplayer_sdk($fidl_toolchain)",
     "//sdk/fidl/fuchsia.net.http:fuchsia.net.http_sdk($fidl_toolchain)",
@@ -168,11 +169,11 @@
     "//zircon/public/fidl/fuchsia-mem:fuchsia-mem_sdk($fidl_toolchain)",
     "//zircon/public/fidl/fuchsia-process:fuchsia-process_sdk($fidl_toolchain)",
     "//zircon/public/fidl/fuchsia-sysinfo:fuchsia-sysinfo_sdk($fidl_toolchain)",
+    "//zircon/public/lib/async:async_sdk",
     "//zircon/public/lib/async-cpp:async-cpp_sdk",
     "//zircon/public/lib/async-default:async-default_sdk",
-    "//zircon/public/lib/async-loop-cpp:async-loop-cpp_sdk",
     "//zircon/public/lib/async-loop:async-loop_sdk",
-    "//zircon/public/lib/async:async_sdk",
+    "//zircon/public/lib/async-loop-cpp:async-loop-cpp_sdk",
     "//zircon/public/lib/fdio:fdio_sdk",
     "//zircon/public/lib/memfs:memfs_sdk",
     "//zircon/public/lib/sync:sync_sdk",
diff --git a/sdk/core.api b/sdk/core.api
index 08124bc..4d93b50 100644
--- a/sdk/core.api
+++ b/sdk/core.api
@@ -18,6 +18,7 @@
 sdk://fidl/fuchsia.logger
 sdk://fidl/fuchsia.math
 sdk://fidl/fuchsia.media
+sdk://fidl/fuchsia.media.audio
 sdk://fidl/fuchsia.mediacodec
 sdk://fidl/fuchsia.mediaplayer
 sdk://fidl/fuchsia.mem
diff --git a/sdk/fidl/fuchsia.media.audio/BUILD.gn b/sdk/fidl/fuchsia.media.audio/BUILD.gn
new file mode 100644
index 0000000..4924f19
--- /dev/null
+++ b/sdk/fidl/fuchsia.media.audio/BUILD.gn
@@ -0,0 +1,13 @@
+# Copyright 2019 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/fidl/fidl.gni")
+
+fidl("fuchsia.media.audio") {
+  sdk_category = "partner"
+
+  sources = [
+    "gain_control.fidl",
+  ]
+}
diff --git a/sdk/fidl/fuchsia.media.audio/OWNERS b/sdk/fidl/fuchsia.media.audio/OWNERS
new file mode 100644
index 0000000..ce49163
--- /dev/null
+++ b/sdk/fidl/fuchsia.media.audio/OWNERS
@@ -0,0 +1,3 @@
+amacbeth@google.com
+dalesat@google.com
+dustingreen@google.com
diff --git a/sdk/fidl/fuchsia.media.audio/fuchsia.media.audio.api b/sdk/fidl/fuchsia.media.audio/fuchsia.media.audio.api
new file mode 100644
index 0000000..295dca0
--- /dev/null
+++ b/sdk/fidl/fuchsia.media.audio/fuchsia.media.audio.api
@@ -0,0 +1,3 @@
+{
+  "fidl/fuchsia.media.audio/gain_control.fidl": "a6ddc572f9c422e2bfdf0d2f2f50b183"
+}
\ No newline at end of file
diff --git a/sdk/fidl/fuchsia.media/gain_control.fidl b/sdk/fidl/fuchsia.media.audio/gain_control.fidl
similarity index 98%
rename from sdk/fidl/fuchsia.media/gain_control.fidl
rename to sdk/fidl/fuchsia.media.audio/gain_control.fidl
index 367055e..3210d19 100644
--- a/sdk/fidl/fuchsia.media/gain_control.fidl
+++ b/sdk/fidl/fuchsia.media.audio/gain_control.fidl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library fuchsia.media;
+library fuchsia.media.audio;
 
 enum AudioRamp : uint16 {
     // Scale amplitude changes evenly ("straight-line") across a ramp duration.
diff --git a/sdk/fidl/fuchsia.media/BUILD.gn b/sdk/fidl/fuchsia.media/BUILD.gn
index 99ef8a8..e70f5a9 100644
--- a/sdk/fidl/fuchsia.media/BUILD.gn
+++ b/sdk/fidl/fuchsia.media/BUILD.gn
@@ -14,7 +14,6 @@
     "audio_device_enumerator.fidl",
     "audio_renderer.fidl",
     "content_decryption.fidl",
-    "gain_control.fidl",
     "metadata.fidl",
     "stream.fidl",
     "stream_common.fidl",
@@ -25,6 +24,7 @@
 
   public_deps = [
     "//sdk/fidl/fuchsia.images",
+    "//sdk/fidl/fuchsia.media.audio",
     "//zircon/public/fidl/fuchsia-io",
     "//zircon/public/fidl/fuchsia-mem",
   ]
diff --git a/sdk/fidl/fuchsia.media/audio_capturer.fidl b/sdk/fidl/fuchsia.media/audio_capturer.fidl
index f2b1774..23fd5f4 100644
--- a/sdk/fidl/fuchsia.media/audio_capturer.fidl
+++ b/sdk/fidl/fuchsia.media/audio_capturer.fidl
@@ -4,6 +4,8 @@
 
 library fuchsia.media;
 
+using fuchsia.media.audio;
+
 // AudioCapturer
 //
 // An AudioCapturer is an interface returned from an fuchsia.media.Audio's
@@ -283,7 +285,7 @@
     StopAsyncCaptureNoReply();
 
     // Binds to the gain control for this AudioCapturer.
-    BindGainControl(request<GainControl> gain_control_request);
+    BindGainControl(request<fuchsia.media.audio.GainControl> gain_control_request);
 
     //////////////////////////////////////////////////////////////////////////
     // StreamBufferSet methods
diff --git a/sdk/fidl/fuchsia.media/audio_renderer.fidl b/sdk/fidl/fuchsia.media/audio_renderer.fidl
index 95c294d..db03521 100644
--- a/sdk/fidl/fuchsia.media/audio_renderer.fidl
+++ b/sdk/fidl/fuchsia.media/audio_renderer.fidl
@@ -4,6 +4,8 @@
 
 library fuchsia.media;
 
+using fuchsia.media.audio;
+
 //
 // AudioRenderers can be in one of two states at any point in time, either
 // the configurable state or the operational state. A renderer is considered
@@ -275,7 +277,7 @@
     GetMinLeadTime() -> (int64 min_lead_time_nsec);
 
     // Binds to the gain control for this AudioRenderer.
-    BindGainControl(request<GainControl> gain_control_request);
+    BindGainControl(request<fuchsia.media.audio.GainControl> gain_control_request);
 
     ///////////////////////////////////////////////////////////////////////////
     // StreamBufferSet methods
diff --git a/sdk/fidl/fuchsia.media/fuchsia.media.api b/sdk/fidl/fuchsia.media/fuchsia.media.api
index 5acbb01..904e1d6 100644
--- a/sdk/fidl/fuchsia.media/fuchsia.media.api
+++ b/sdk/fidl/fuchsia.media/fuchsia.media.api
@@ -1,11 +1,10 @@
 {
   "fidl/fuchsia.media/audio.fidl": "6bc9c5c73834e13128f3609ad6489190",
-  "fidl/fuchsia.media/audio_capturer.fidl": "119454e670a6b34e97049edaa2af9bed",
+  "fidl/fuchsia.media/audio_capturer.fidl": "556d8d2860bcc8396640c538aeb7383d",
   "fidl/fuchsia.media/audio_core.fidl": "b3c30922993f49466aae354df94f0b41",
   "fidl/fuchsia.media/audio_device_enumerator.fidl": "2eaf18e9e2208832b2f97f4f61d2d89d",
-  "fidl/fuchsia.media/audio_renderer.fidl": "f893177f786519b549f61e5eb141463f",
+  "fidl/fuchsia.media/audio_renderer.fidl": "c36b624d329a6e80f3e9432794a038e9",
   "fidl/fuchsia.media/content_decryption.fidl": "8eb5d7d9b4e6a742a4048cb409e34249",
-  "fidl/fuchsia.media/gain_control.fidl": "771a76c6e3d99bcb66694f4b939a1f4f",
   "fidl/fuchsia.media/metadata.fidl": "49eb1f0a19e77b5503b1aaba30cf31b0",
   "fidl/fuchsia.media/stream.fidl": "92dd4376d67914a882c7ae46874e6ca1",
   "fidl/fuchsia.media/stream_common.fidl": "bdfa65aee3d20148233912c78101b4a8",
diff --git a/sdk/fidl/fuchsia.mediaplayer/BUILD.gn b/sdk/fidl/fuchsia.mediaplayer/BUILD.gn
index f8d636f..a275e29 100644
--- a/sdk/fidl/fuchsia.mediaplayer/BUILD.gn
+++ b/sdk/fidl/fuchsia.mediaplayer/BUILD.gn
@@ -18,6 +18,7 @@
   public_deps = [
     "//sdk/fidl/fuchsia.math",
     "//sdk/fidl/fuchsia.media",
+    "//sdk/fidl/fuchsia.media.audio",
     "//sdk/fidl/fuchsia.net.oldhttp",
     "//sdk/fidl/fuchsia.ui.viewsv1",
     "//sdk/fidl/fuchsia.ui.viewsv1token",
diff --git a/sdk/fidl/fuchsia.mediaplayer/fuchsia.mediaplayer.api b/sdk/fidl/fuchsia.mediaplayer/fuchsia.mediaplayer.api
index 9b5f418..c49cc1f 100644
--- a/sdk/fidl/fuchsia.mediaplayer/fuchsia.mediaplayer.api
+++ b/sdk/fidl/fuchsia.mediaplayer/fuchsia.mediaplayer.api
@@ -1,5 +1,5 @@
 {
-  "fidl/fuchsia.mediaplayer/player.fidl": "f231a2092c6301222a976b00ecc71f4d",
+  "fidl/fuchsia.mediaplayer/player.fidl": "c7141413a103207a45b467b4809e2e52",
   "fidl/fuchsia.mediaplayer/problem.fidl": "321c3ee60eaa6a74a079610a17b4b395",
   "fidl/fuchsia.mediaplayer/seeking_reader.fidl": "c77b67438f0b182584eded53737d4b81",
   "fidl/fuchsia.mediaplayer/sink_manager.fidl": "8b5244eaef2a1679093e0ee433e9878b",
diff --git a/sdk/fidl/fuchsia.mediaplayer/player.fidl b/sdk/fidl/fuchsia.mediaplayer/player.fidl
index 921c829..fcdcecb 100644
--- a/sdk/fidl/fuchsia.mediaplayer/player.fidl
+++ b/sdk/fidl/fuchsia.mediaplayer/player.fidl
@@ -6,6 +6,7 @@
 
 using fuchsia.math;
 using fuchsia.media;
+using fuchsia.media.audio;
 using fuchsia.net.oldhttp;
 using fuchsia.ui.viewsv1;
 using fuchsia.ui.viewsv1token;
@@ -51,7 +52,7 @@
 
     // Binds to the gain control for this player.
     BindGainControl(
-        request<fuchsia.media.GainControl> gain_control_request);
+        request<fuchsia.media.audio.GainControl> gain_control_request);
 
     // Adds a new binding to this player.
     AddBinding(request<Player> player_request);
diff --git a/sdk/fidl/fuchsia.mediasession/BUILD.gn b/sdk/fidl/fuchsia.mediasession/BUILD.gn
index 60e1a1b..a687c1e 100644
--- a/sdk/fidl/fuchsia.mediasession/BUILD.gn
+++ b/sdk/fidl/fuchsia.mediasession/BUILD.gn
@@ -14,6 +14,7 @@
 
   public_deps = [
     "//sdk/fidl/fuchsia.media",
+    "//sdk/fidl/fuchsia.media.audio",
     "//sdk/fidl/fuchsia.mediaplayer",
   ]
 }
diff --git a/sdk/fidl/fuchsia.mediasession/session.fidl b/sdk/fidl/fuchsia.mediasession/session.fidl
index 38dcfa0..ec6ce24 100644
--- a/sdk/fidl/fuchsia.mediasession/session.fidl
+++ b/sdk/fidl/fuchsia.mediasession/session.fidl
@@ -6,6 +6,7 @@
 
 using zx;
 using fuchsia.media;
+using fuchsia.media.audio;
 
 /// `ReadOnlySession` is a handle for media playback, allowing clients to observe
 /// a playback session.
@@ -61,7 +62,7 @@
     /// Sets shuffle mode.
     SetShuffleMode(bool shuffle_on);
     /// Binds to the session's gain control for control and notifications.
-    BindGainControl(request<fuchsia.media.GainControl> gain_control_request);
+    BindGainControl(request<fuchsia.media.audio.GainControl> gain_control_request);
 
     // Connects a channel to a custom extension. This is for clients
     // privy to the underlying implementation.
diff --git a/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.cc b/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.cc
index 205753b..73eefa9 100644
--- a/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.cc
+++ b/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.cc
@@ -327,7 +327,8 @@
 }
 
 void FidlAudioRenderer::BindGainControl(
-    fidl::InterfaceRequest<fuchsia::media::GainControl> gain_control_request) {
+    fidl::InterfaceRequest<fuchsia::media::audio::GainControl>
+        gain_control_request) {
   audio_renderer_->BindGainControl(std::move(gain_control_request));
 }
 
diff --git a/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.h b/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.h
index 7122c90..ddbbb77 100644
--- a/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.h
+++ b/src/media/playback/mediaplayer/fidl/fidl_audio_renderer.h
@@ -51,8 +51,9 @@
   void SetTimelineFunction(media::TimelineFunction timeline_function,
                            fit::closure callback) override;
 
-  void BindGainControl(fidl::InterfaceRequest<fuchsia::media::GainControl>
-                           gain_control_request) override;
+  void BindGainControl(
+      fidl::InterfaceRequest<fuchsia::media::audio::GainControl>
+          gain_control_request) override;
 
  protected:
   // Renderer overrides.
diff --git a/src/media/playback/mediaplayer/player_impl.cc b/src/media/playback/mediaplayer/player_impl.cc
index 3a9f66b..d44dfbf 100644
--- a/src/media/playback/mediaplayer/player_impl.cc
+++ b/src/media/playback/mediaplayer/player_impl.cc
@@ -516,7 +516,8 @@
 }
 
 void PlayerImpl::BindGainControl(
-    fidl::InterfaceRequest<fuchsia::media::GainControl> gain_control_request) {
+    fidl::InterfaceRequest<fuchsia::media::audio::GainControl>
+        gain_control_request) {
   if (!audio_renderer_) {
     MaybeCreateRenderer(StreamType::Medium::kAudio);
   }
diff --git a/src/media/playback/mediaplayer/player_impl.h b/src/media/playback/mediaplayer/player_impl.h
index ae60644c2..618d469 100644
--- a/src/media/playback/mediaplayer/player_impl.h
+++ b/src/media/playback/mediaplayer/player_impl.h
@@ -59,8 +59,9 @@
 
   void CreateView2(zx::eventpair view_token) override;
 
-  void BindGainControl(fidl::InterfaceRequest<fuchsia::media::GainControl>
-                           gain_control_request) override;
+  void BindGainControl(
+      fidl::InterfaceRequest<fuchsia::media::audio::GainControl>
+          gain_control_request) override;
 
   void AddBinding(
       fidl::InterfaceRequest<fuchsia::mediaplayer::Player> request) override;
diff --git a/src/media/playback/mediaplayer/render/audio_renderer.h b/src/media/playback/mediaplayer/render/audio_renderer.h
index 8f19f25..fba80f6 100644
--- a/src/media/playback/mediaplayer/render/audio_renderer.h
+++ b/src/media/playback/mediaplayer/render/audio_renderer.h
@@ -17,7 +17,7 @@
   ~AudioRenderer() override {}
 
   virtual void BindGainControl(
-      fidl::InterfaceRequest<fuchsia::media::GainControl>
+      fidl::InterfaceRequest<fuchsia::media::audio::GainControl>
           gain_control_request) = 0;
 };
 
diff --git a/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.cc b/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.cc
index 8933bb8..43e2205 100644
--- a/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.cc
+++ b/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.cc
@@ -158,7 +158,7 @@
 }
 
 void FakeAudioRenderer::BindGainControl(
-    ::fidl::InterfaceRequest<fuchsia::media::GainControl> request) {
+    ::fidl::InterfaceRequest<fuchsia::media::audio::GainControl> request) {
   FXL_NOTIMPLEMENTED();
 }
 
diff --git a/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.h b/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.h
index 3688910..547f2d0 100644
--- a/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.h
+++ b/src/media/playback/mediaplayer/test/fakes/fake_audio_renderer.h
@@ -21,7 +21,7 @@
 
 // Implements AudioRenderer for testing.
 class FakeAudioRenderer : public fuchsia::media::AudioRenderer,
-                          public fuchsia::media::GainControl {
+                          public fuchsia::media::audio::GainControl {
  public:
   FakeAudioRenderer();
 
@@ -84,7 +84,8 @@
   void PauseNoReply() override;
 
   void BindGainControl(
-      ::fidl::InterfaceRequest<fuchsia::media::GainControl> request) override;
+      ::fidl::InterfaceRequest<fuchsia::media::audio::GainControl> request)
+      override;
 
   void EnableMinLeadTimeEvents(bool enabled) override;
 
@@ -93,7 +94,7 @@
   // GainControl interface.
   void SetGain(float gain_db) override;
   void SetGainWithRamp(float gain_db, zx_duration_t duration_ns,
-                       fuchsia::media::AudioRamp rampType) final {
+                       fuchsia::media::audio::AudioRamp rampType) final {
     FXL_NOTIMPLEMENTED();
   };
   void SetMute(bool muted) override;
@@ -108,7 +109,7 @@
 
   async_dispatcher_t* dispatcher_;
   fidl::Binding<fuchsia::media::AudioRenderer> binding_;
-  fidl::BindingSet<fuchsia::media::GainControl> gain_control_bindings_;
+  fidl::BindingSet<fuchsia::media::audio::GainControl> gain_control_bindings_;
 
   fuchsia::media::AudioStreamType format_;
   fzl::VmoMapper vmo_mapper_;