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

Commit d82a3c78 authored by Devin Moore's avatar Devin Moore Committed by Android (Google) Code Review
Browse files

Merge changes I3ef77f56,Ia774f27a into udc-dev-plus-aosp

* changes:
  Clarify alternate API for getWindowNativeHandle
  Deprecate AImageReader_getWindowNativeHandle
parents 42614436 fca69efd
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@ cc_test {
    shared_libs: [
        "libcamera2ndk_vendor",
        "libcamera_metadata",
        "libhidlbase",
        "libmediandk",
        "libnativewindow",
        "libutils",
@@ -186,6 +187,7 @@ cc_test {
    ],
    static_libs: [
        "android.hardware.camera.common@1.0-helper",
        "android.hidl.token@1.0",
    ],
    cflags: [
        "-D__ANDROID_VNDK__",
+13 −0
Original line number Diff line number Diff line
@@ -31,10 +31,13 @@
#include <stdio.h>

#include <android/log.h>
#include <android/hidl/manager/1.2/IServiceManager.h>
#include <android/hidl/token/1.0/ITokenManager.h>
#include <camera/NdkCameraError.h>
#include <camera/NdkCameraManager.h>
#include <camera/NdkCameraDevice.h>
#include <camera/NdkCameraCaptureSession.h>
#include <hidl/ServiceManagement.h>
#include <media/NdkImage.h>
#include <media/NdkImageReader.h>
#include <cutils/native_handle.h>
@@ -50,6 +53,8 @@ static constexpr int kTestImageHeight = 480;
static constexpr int kTestImageFormat = AIMAGE_FORMAT_YUV_420_888;

using android::hardware::camera::common::V1_0::helper::VendorTagDescriptorCache;
using android::hidl::manager::V1_0::IServiceManager;
using android::hidl::token::V1_0::ITokenManager;
using ConfiguredWindows = std::set<const native_handle_t *>;

class CameraHelper {
@@ -981,11 +986,19 @@ class AImageReaderVendorTest : public ::testing::Test {


TEST_F(AImageReaderVendorTest, CreateWindowNativeHandle) {
    auto transport = android::hardware::defaultServiceManager()->getTransport(ITokenManager::descriptor, "default");
    if (transport.isOk() && transport == IServiceManager::Transport::EMPTY) {
        GTEST_SKIP() << "This device no longer supports AImageReader_getWindowNativeHandle";
    }
    testBasicTakePictures(/*prepareSurfaces*/ false);
    testBasicTakePictures(/*prepareSurfaces*/ true);
}

TEST_F(AImageReaderVendorTest, LogicalCameraPhysicalStream) {
    auto transport = android::hardware::defaultServiceManager()->getTransport(ITokenManager::descriptor, "default");
    if (transport.isOk() && transport == IServiceManager::Transport::EMPTY) {
        GTEST_SKIP() << "This device no longer supports AImageReader_getWindowNativeHandle";
    }
    for (auto & v2 : {true, false}) {
        testLogicalCameraPhysicalStream(false/*usePhysicalSettings*/, v2);
        testLogicalCameraPhysicalStream(true/*usePhysicalSettings*/, v2);
+3 −0
Original line number Diff line number Diff line
@@ -570,6 +570,9 @@ AImageReader::releaseImageLocked(AImage* image, int releaseFenceFd, bool clearCa
    }
}

// The LL-NDK API is now deprecated. New devices will no longer have the token
// manager service installed, so createHalToken will return false and this
// will return AMEDIA_ERROR_UNKNOWN on those devices.
media_status_t AImageReader::getWindowNativeHandle(native_handle **handle) {
    if (mWindowHandle != nullptr) {
        *handle = mWindowHandle;
+9 −2
Original line number Diff line number Diff line
@@ -534,15 +534,22 @@ media_status_t AImageReader_setBufferRemovedListener(
 * Get the native_handle_t corresponding to the ANativeWindow owned by the
 * AImageReader provided.
 *
 * This is deprecated in API level 35 and will return AMEDIA_ERROR_UNKNOWN.
 * The native_handle_t is no longer used with AIDL interfaces and
 * ANativeWindow is used directly instead.
 * Use AImageRead_getWindow to get the ANativeWindow and use that object.
 *
 * @param reader The image reader of interest.
 * @param handle The output native_handle_t. This native handle is owned by
 *               this image reader.
 *
 * @return AMEDIA_OK if the method call succeeds.
 *         AMEDIA_ERROR_INVALID_PARAMETER if reader or handle are NULL.
 *         AMEDIA_ERROR_UNKNOWN if some other error is encountered.
 *         AMEDIA_ERROR_UNKNOWN if some other error is encountered or
 *         the device no longer has android.hidl.token service to
 *         satisfy the request because it is deprecated.
 */
media_status_t AImageReader_getWindowNativeHandle(
[[deprecated]] media_status_t AImageReader_getWindowNativeHandle(
    AImageReader *reader, /* out */native_handle_t **handle);
#endif