Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a8c220f authored by Ján Sebechlebský's avatar Ján Sebechlebský Committed by Android (Google) Code Review
Browse files

Merge "Make input fps of test camera configurable." into main

parents fe4922d6 34469e43
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ namespace {
constexpr int kVgaWidth = 640;
constexpr int kVgaHeight = 480;
constexpr int kMaxFps = 60;
constexpr int kTestCameraInputFps = 30;
constexpr int kTestCameraDefaultInputFps = 30;
constexpr char kEnableTestCameraCmd[] = "enable_test_camera";
constexpr char kDisableTestCameraCmd[] = "disable_test_camera";
constexpr char kHelp[] = "help";
@@ -78,6 +78,7 @@ Available commands:
     Options:
       --camera_id=(ID) - override numerical ID for test camera instance
       --lens_facing=(front|back|external) - specifies lens facing for test camera instance
       --input_fps=(fps) - specify input fps for test camera, valid values are from 1 to 1000
 * disable_test_camera
)";
constexpr char kCreateVirtualDevicePermission[] =
@@ -421,6 +422,18 @@ binder_status_t VirtualCameraService::enableTestCameraCmd(
    }
  }

  std::optional<int> inputFps;
  it = options.find("input_fps");
  if (it != options.end()) {
    inputFps = parseInt(it->second);
    if (!inputFps.has_value() || inputFps.value() < 1 ||
        inputFps.value() > 1000) {
      dprintf(err, "Invalid input fps: %s\n, must be integer in <1,1000> range.",
              it->second.c_str());
      return STATUS_BAD_VALUE;
    }
  }

  sp<BBinder> token = sp<BBinder>::make();
  mTestCameraToken.set(AIBinder_fromPlatformBinder(token));

@@ -432,7 +445,8 @@ binder_status_t VirtualCameraService::enableTestCameraCmd(
                                                  .maxFps = kMaxFps});
  configuration.lensFacing = lensFacing.value_or(LensFacing::EXTERNAL);
  configuration.virtualCameraCallback =
      ndk::SharedRefBase::make<VirtualCameraTestInstance>(kTestCameraInputFps);
      ndk::SharedRefBase::make<VirtualCameraTestInstance>(
          inputFps.value_or(kTestCameraDefaultInputFps));
  registerCamera(mTestCameraToken, configuration, cameraId.value_or(sNextId++),
                 kDefaultDeviceId, &ret);
  if (ret) {
+17 −0
Original line number Diff line number Diff line
@@ -488,6 +488,23 @@ TEST_F(VirtualCameraServiceTest, TestCameraShellCmdWithInvalidLensFacing) {
              Eq(STATUS_BAD_VALUE));
}

TEST_F(VirtualCameraServiceTest, TestCameraShellCmdWithInputFps) {
  EXPECT_THAT(execute_shell_command("enable_test_camera --input_fps=15"),
              Eq(NO_ERROR));

  std::vector<std::string> cameraIds = getCameraIds();
  ASSERT_THAT(cameraIds, SizeIs(1));
}

TEST_F(VirtualCameraServiceTest, TestCameraShellCmdWithInvalidInputFps) {
  EXPECT_THAT(execute_shell_command("enable_test_camera --input_fps=1001"),
              Eq(STATUS_BAD_VALUE));
  EXPECT_THAT(execute_shell_command("enable_test_camera --input_fps=0"),
              Eq(STATUS_BAD_VALUE));
  EXPECT_THAT(execute_shell_command("enable_test_camera --input_fps=foo"),
              Eq(STATUS_BAD_VALUE));
}

}  // namespace
}  // namespace virtualcamera
}  // namespace companion