Use timestamp instead of frame number when generating test pattern.

Frame number is reset upon reconfiguration and causes test pattern
to be generated from point 0 as well.

Bug: 301023410
Test: manually with OpenCamera
Change-Id: Ib037293117b8ce4f143af2d36fa6aa94845c5efb
diff --git a/services/camera/virtualcamera/VirtualCameraTestInstance.cc b/services/camera/virtualcamera/VirtualCameraTestInstance.cc
index bae871d..1eac4fe 100644
--- a/services/camera/virtualcamera/VirtualCameraTestInstance.cc
+++ b/services/camera/virtualcamera/VirtualCameraTestInstance.cc
@@ -107,7 +107,7 @@
     }
 
     // Render the test pattern and update timestamp.
-    testPatternProgram.draw(frameNumber++);
+    testPatternProgram.draw(ts);
     eglDisplayContext.swapBuffers();
     lastFrameTs = getCurrentTimestamp();
   }
diff --git a/services/camera/virtualcamera/util/EglProgram.cc b/services/camera/virtualcamera/util/EglProgram.cc
index 7498fbc..9c97118 100644
--- a/services/camera/virtualcamera/util/EglProgram.cc
+++ b/services/camera/virtualcamera/util/EglProgram.cc
@@ -229,13 +229,12 @@
                         kTextureCoords.size(), kTextureCoords.data());
 }
 
-bool EglTestPatternProgram::draw(int frameNumber) {
+bool EglTestPatternProgram::draw(const std::chrono::nanoseconds timestamp) {
   // Load compiled shader.
   glUseProgram(mProgram);
   checkEglError("glUseProgram");
 
-  // Compute point in complex plane corresponding to fractal for this frame number.
-  float time = float(frameNumber) / 120.0f;
+  float time = float(timestamp.count() / 1e9) / 10;
   const std::complex<float> c(std::sin(time) * 0.78f, std::cos(time) * 0.78f);
 
   // Pass "C" constant value determining the Julia set to the shader.
diff --git a/services/camera/virtualcamera/util/EglProgram.h b/services/camera/virtualcamera/util/EglProgram.h
index d09f11e..a88308d 100644
--- a/services/camera/virtualcamera/util/EglProgram.h
+++ b/services/camera/virtualcamera/util/EglProgram.h
@@ -18,6 +18,7 @@
 #define ANDROID_COMPANION_VIRTUALCAMERA_EGLPROGRAM_H
 
 #include <array>
+#include <chrono>
 
 #include "GLES/gl.h"
 
@@ -46,7 +47,7 @@
  public:
   EglTestPatternProgram();
 
-  bool draw(int frameNumber);
+  bool draw(std::chrono::nanoseconds timestamp);
 
  private:
   int mPositionHandle = -1;