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

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

Merge "Remove test mode from VirtualCameraRenderThread." into main

parents d2506587 288900f9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ cc_library_static {
        "util/JpegUtil.cc",
        "util/MetadataUtil.cc",
        "util/Util.cc",
        "util/TestPatternHelper.cc",
        "util/EglDisplayContext.cc",
        "util/EglFramebuffer.cc",
        "util/EglProgram.cc",
@@ -72,6 +71,7 @@ cc_library_static {
        "VirtualCameraStream.cc",
        "VirtualCameraService.cc",
        "VirtualCameraSessionContext.cc",
        "VirtualCameraTestInstance.cc",
        "VirtualCameraRenderThread.cc",
    ],
    defaults: [
+1 −13
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@
#include "util/EglFramebuffer.h"
#include "util/JpegUtil.h"
#include "util/MetadataUtil.h"
#include "util/TestPatternHelper.h"
#include "util/Util.h"
#include "utils/Errors.h"

@@ -300,11 +299,10 @@ sp<Fence> CaptureRequestBuffer::getFence() const {
VirtualCameraRenderThread::VirtualCameraRenderThread(
    VirtualCameraSessionContext& sessionContext,
    const Resolution inputSurfaceSize, const Resolution reportedSensorSize,
    std::shared_ptr<ICameraDeviceCallback> cameraDeviceCallback, bool testMode)
    std::shared_ptr<ICameraDeviceCallback> cameraDeviceCallback)
    : mCameraDeviceCallback(cameraDeviceCallback),
      mInputSurfaceSize(inputSurfaceSize),
      mReportedSensorSize(reportedSensorSize),
      mTestMode(testMode),
      mSessionContext(sessionContext) {
}

@@ -401,10 +399,6 @@ void VirtualCameraRenderThread::threadLoop() {
  mEglSurfaceTexture = std::make_unique<EglSurfaceTexture>(
      mInputSurfaceSize.width, mInputSurfaceSize.height);

  sp<Surface> inputSurface = mEglSurfaceTexture->getSurface();
  if (mTestMode) {
    inputSurface->connect(NATIVE_WINDOW_API_CPU, false, nullptr);
  }
  mInputSurfacePromise.set_value(mEglSurfaceTexture->getSurface());

  while (std::unique_ptr<ProcessCaptureRequestTask> task = dequeueTask()) {
@@ -422,12 +416,6 @@ void VirtualCameraRenderThread::threadLoop() {

void VirtualCameraRenderThread::processCaptureRequest(
    const ProcessCaptureRequestTask& request) {
  if (mTestMode) {
    // In test mode let's just render something to the Surface ourselves.
    renderTestPatternYCbCr420(mEglSurfaceTexture->getSurface(),
                              request.getFrameNumber());
  }

  std::chrono::nanoseconds timestamp =
      std::chrono::duration_cast<std::chrono::nanoseconds>(
          std::chrono::steady_clock::now().time_since_epoch());
+1 −3
Original line number Diff line number Diff line
@@ -111,8 +111,7 @@ class VirtualCameraRenderThread {
      Resolution reportedSensorSize,
      std::shared_ptr<
          ::aidl::android::hardware::camera::device::ICameraDeviceCallback>
          cameraDeviceCallback,
      bool testMode = false);
          cameraDeviceCallback);

  ~VirtualCameraRenderThread();

@@ -184,7 +183,6 @@ class VirtualCameraRenderThread {

  const Resolution mInputSurfaceSize;
  const Resolution mReportedSensorSize;
  const int mTestMode;

  VirtualCameraSessionContext& mSessionContext;

+13 −1
Original line number Diff line number Diff line
@@ -30,10 +30,12 @@

#include "VirtualCameraDevice.h"
#include "VirtualCameraProvider.h"
#include "VirtualCameraTestInstance.h"
#include "aidl/android/companion/virtualcamera/Format.h"
#include "aidl/android/companion/virtualcamera/LensFacing.h"
#include "aidl/android/companion/virtualcamera/VirtualCameraConfiguration.h"
#include "android/binder_auto_utils.h"
#include "android/binder_interface_utils.h"
#include "android/binder_libbinder.h"
#include "android/binder_status.h"
#include "binder/Status.h"
@@ -64,6 +66,7 @@ namespace {
constexpr int kVgaWidth = 640;
constexpr int kVgaHeight = 480;
constexpr int kMaxFps = 60;
constexpr int kTestCameraInputFps = 30;
constexpr char kEnableTestCameraCmd[] = "enable_test_camera";
constexpr char kDisableTestCameraCmd[] = "disable_test_camera";
constexpr char kHelp[] = "help";
@@ -94,6 +97,13 @@ ndk::ScopedAStatus validateConfiguration(
        Status::EX_ILLEGAL_ARGUMENT);
  }

  if (configuration.virtualCameraCallback == nullptr) {
    ALOGE("%s: Input configuration is missing virtual camera callback",
          __func__);
    return ndk::ScopedAStatus::fromServiceSpecificError(
        Status::EX_ILLEGAL_ARGUMENT);
  }

  for (const SupportedStreamConfiguration& config :
       configuration.supportedStreamConfigs) {
    if (!isFormatSupportedForInput(config.width, config.height,
@@ -418,9 +428,11 @@ binder_status_t VirtualCameraService::enableTestCameraCmd(
  VirtualCameraConfiguration configuration;
  configuration.supportedStreamConfigs.push_back({.width = kVgaWidth,
                                                  .height = kVgaHeight,
                                                  Format::YUV_420_888,
                                                  Format::RGBA_8888,
                                                  .maxFps = kMaxFps});
  configuration.lensFacing = lensFacing.value_or(LensFacing::EXTERNAL);
  configuration.virtualCameraCallback =
      ndk::SharedRefBase::make<VirtualCameraTestInstance>(kTestCameraInputFps);
  registerCamera(mTestCameraToken, configuration, cameraId.value_or(sNextId++),
                 kDefaultDeviceId, &ret);
  if (ret) {
+1 −5
Original line number Diff line number Diff line
@@ -66,7 +66,6 @@
#include "util/EglProgram.h"
#include "util/JpegUtil.h"
#include "util/MetadataUtil.h"
#include "util/TestPatternHelper.h"
#include "util/Util.h"

namespace android {
@@ -360,12 +359,9 @@ ndk::ScopedAStatus VirtualCameraSession::configureStreams(
      return cameraStatus(Status::ILLEGAL_ARGUMENT);
    }
    if (mRenderThread == nullptr) {
      // If there's no client callback, start camera in test mode.
      const bool testMode = mVirtualCameraClientCallback == nullptr;
      mRenderThread = std::make_unique<VirtualCameraRenderThread>(
          mSessionContext, resolutionFromInputConfig(*inputConfig),
          virtualCamera->getMaxInputResolution(), mCameraDeviceCallback,
          testMode);
          virtualCamera->getMaxInputResolution(), mCameraDeviceCallback);
      mRenderThread->start();
      inputSurface = mRenderThread->getInputSurface();
    }
Loading