Revert "[audio_core] Fix audio effects timing."

This reverts commit 874da3cff7f72c23f325899945a81ed5af945414.

Reason for revert: This CL currently interacts badly with chrome audio on Astro.  Reverting for now until we can get to the bottom of things.

Original change's description:
> [audio_core] Fix audio effects timing.
> 
> Fix a sign error which was causing us to compensate for delay
> introduced by audio effects in the wrong direction, effectively
> shifting the audio out by 2x the amount introduced by the effects,
> instead of canceling it out as it should have.
> 
> Tests: Verified timing on scope using pulse-gen test app with a GPIO
>        reference.
> Change-Id: Ib63a2d410fccf818bc2703f357b8d7d0e978c08f
> Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/378087
> Commit-Queue: Martin Puryear <mpuryear@google.com>
> Reviewed-by: Dustin Green <dustingreen@google.com>
> Reviewed-by: Tim Detwiler <tjdetwiler@google.com>
> Testability-Review: Tim Detwiler <tjdetwiler@google.com>

TBR=johngro@google.com,tjdetwiler@google.com,mpuryear@google.com,dustingreen@google.com

Change-Id: I9d2bbd0a497833aa7bc3e82322ce26348ae736ad
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/378012
Reviewed-by: John Grossman <johngro@google.com>
Commit-Queue: John Grossman <johngro@google.com>
diff --git a/src/media/audio/audio_core/effects_stage.cc b/src/media/audio/audio_core/effects_stage.cc
index 60ad6ac..f927149 100644
--- a/src/media/audio/audio_core/effects_stage.cc
+++ b/src/media/audio/audio_core/effects_stage.cc
@@ -113,15 +113,11 @@
   auto snapshot = source_->ReferenceClockToFractionalFrames();
 
   // Update our timeline function to include the latency introduced by these effects.
-  //
-  // Our effects shift incoming audio into the future by "delay_frames".
-  // So input frame[N] corresponds to output frame[N + delay_frames].
   int64_t delay_frames = effects_processor_->delay_frames();
-  auto delay_frac_frames = FractionalFrames<int64_t>(delay_frames);
-
-  auto source_frac_frame_to_dest_frac_frame =
-      TimelineFunction(delay_frac_frames.raw_value(), 0, TimelineRate(1, 1));
-  snapshot.timeline_function = source_frac_frame_to_dest_frac_frame * snapshot.timeline_function;
+  auto delay_frac_frames = FractionalFrames<int64_t>(-delay_frames);
+  auto delay_function = TimelineFunction(delay_frac_frames.raw_value(), 0, TimelineRate(1, 1));
+  snapshot.timeline_function =
+      TimelineFunction::Compose(delay_function, snapshot.timeline_function);
 
   return snapshot;
 }
diff --git a/src/media/audio/audio_core/effects_stage_unittest.cc b/src/media/audio/audio_core/effects_stage_unittest.cc
index df5cf21..97819b7 100644
--- a/src/media/audio/audio_core/effects_stage_unittest.cc
+++ b/src/media/audio/audio_core/effects_stage_unittest.cc
@@ -182,20 +182,17 @@
   });
   auto effects_stage = EffectsStage::Create(effects, stream);
 
-  // Since our effect introduces 13 frames of latency, the incoming source frame at time 0 can only
-  // emerge from the effect in output frame 13.
-  // Conversely, output frame 0 was produced based on the source frame at time -13.
-  auto ref_clock_to_output_frac_frame =
-      effects_stage->ReferenceClockToFractionalFrames().timeline_function;
-  EXPECT_EQ(FractionalFrames<int64_t>::FromRaw(ref_clock_to_output_frac_frame.Apply(0)),
-            FractionalFrames<int64_t>(13));
+  // Since our effect is introducing 13 frames of latency, the frame at time 0 is now actually frame
+  // -13, and the actual frame 0 will occur once it makes its way through the effect.
+  auto timeline_function = effects_stage->ReferenceClockToFractionalFrames().timeline_function;
+  EXPECT_EQ(FractionalFrames<int64_t>::FromRaw(timeline_function.Apply(0)),
+            FractionalFrames<int64_t>(-13));
 
-  // Similarly, at the time we produce output frame 0, we had to draw upon the source frame from
-  // time -13. Use a fuzzy compare to allow for slight rounding errors.
-  int64_t frame_13_time = (zx::sec(-13).to_nsecs()) / kDefaultFormat.frames_per_second();
+  // Similarly, at the time we'd normally expect frame 13, we should instead be seeing frame 0. Use
+  // a fuzzy compare to allow for slight rounding errors.
+  int64_t frame_13_time = (zx::sec(13).to_nsecs()) / kDefaultFormat.frames_per_second();
   auto frame_13_frac_frames =
-      FractionalFrames<int64_t>::FromRaw(ref_clock_to_output_frac_frame.Apply(frame_13_time))
-          .Absolute();
+      FractionalFrames<int64_t>::FromRaw(timeline_function.Apply(frame_13_time)).Absolute();
   EXPECT_LE(frame_13_frac_frames.raw_value(), 1);
 }