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

Commit ce02eb08 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11892734 from 13ceb2f8 to 24Q3-release

Change-Id: I4dfd166a072a16628f40d4b202744c71e8fe735d
parents cbce8b2f 13ceb2f8
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