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

Commit 777d0484 authored by Vadim Caen's avatar Vadim Caen Committed by Android (Google) Code Review
Browse files

Merge "Virtual Camera: VDM side implementation" into main

parents 18aadd4f 21416c97
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.companion.virtual.audio.IAudioRoutingCallback;
import android.companion.virtual.sensor.VirtualSensor;
import android.companion.virtual.sensor.VirtualSensorConfig;
import android.companion.virtual.sensor.VirtualSensorEvent;
import android.companion.virtual.camera.IVirtualCamera;
import android.companion.virtual.camera.VirtualCameraHalConfig;
import android.content.ComponentName;
import android.content.IntentFilter;
import android.graphics.Point;
@@ -232,4 +234,10 @@ interface IVirtualDevice {
     */
    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
    void unregisterIntentInterceptor(in IVirtualDeviceIntentInterceptor intentInterceptor);

    /**
     * Creates a new VirtualCamera and registers it with the VirtualCameraProvider.
     */
    @EnforcePermission("CREATE_VIRTUAL_DEVICE")
    void registerVirtualCamera(in IVirtualCamera camera);
}
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.PendingIntent;
import android.companion.virtual.audio.VirtualAudioDevice;
import android.companion.virtual.camera.VirtualCamera;
import android.companion.virtual.camera.VirtualCameraConfig;
import android.companion.virtual.sensor.VirtualSensor;
import android.content.ComponentName;
import android.content.Context;
@@ -338,6 +340,11 @@ public class VirtualDeviceInternal {
        return mVirtualAudioDevice;
    }

    @NonNull
    VirtualCamera createVirtualCamera(@NonNull VirtualCameraConfig config) {
        return new VirtualCamera(mVirtualDevice, config);
    }

    @NonNull
    void setShowPointerIcon(boolean showPointerIcon) {
        try {
+20 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import android.app.PendingIntent;
import android.companion.AssociationInfo;
import android.companion.virtual.audio.VirtualAudioDevice;
import android.companion.virtual.audio.VirtualAudioDevice.AudioConfigurationChangeCallback;
import android.companion.virtual.camera.VirtualCamera;
import android.companion.virtual.camera.VirtualCameraConfig;
import android.companion.virtual.flags.Flags;
import android.companion.virtual.sensor.VirtualSensor;
import android.content.ComponentName;
@@ -850,6 +852,24 @@ public final class VirtualDeviceManager {
            return mVirtualDeviceInternal.createVirtualAudioDevice(display, executor, callback);
        }

        /**
         * Creates a new virtual camera. If a virtual camera was already created, it will be closed.
         *
         * @param config camera config.
         * @return newly created camera;
         * @hide
         */
        @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
        @NonNull
        @FlaggedApi(Flags.FLAG_VIRTUAL_CAMERA)
        public VirtualCamera createVirtualCamera(@NonNull VirtualCameraConfig config) {
            if (!Flags.virtualCamera()) {
                throw new UnsupportedOperationException(
                        "Flag is not enabled: %s".formatted(Flags.FLAG_VIRTUAL_CAMERA));
            }
            return mVirtualDeviceInternal.createVirtualCamera(Objects.requireNonNull(config));
        }

        /**
         * Sets the visibility of the pointer icon for this VirtualDevice's associated displays.
         *
+17 −0
Original line number Diff line number Diff line
package android.companion.virtual.camera;

import android.companion.virtual.camera.IVirtualCameraSession;
import android.companion.virtual.camera.VirtualCameraHalConfig;

/**
 * Counterpart of ICameraDevice for virtual camera.
 *
 * @hide
 */
interface IVirtualCamera {

    IVirtualCameraSession open();

    VirtualCameraHalConfig getHalConfig();

}
 No newline at end of file
+28 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.companion.virtual.camera;

/**
 * Counterpart of ICameraDeviceSession for virtual camera.
 *
 * @hide
 */
interface IVirtualCameraSession {

    void configureStream(int width, int height, int format);

    void close();
}
Loading