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

Commit d1a38eb1 authored by Eman Copty's avatar Eman Copty Committed by android-build-merger
Browse files

Merge \"Add support for streams with vendor specific formats\"

am: cfbaedf0

Change-Id: Iab6e0c2a0220d8614e1aa64845beb1a01026f423
parents 87f033a1 cfbaedf0
Loading
Loading
Loading
Loading
+33 −1
Original line number Original line Diff line number Diff line
@@ -506,7 +506,8 @@ binder::Status CameraDeviceClient::createStream(
    }
    }


    // Round dimensions to the nearest dimensions available for this format
    // Round dimensions to the nearest dimensions available for this format
    if (flexibleConsumer && !CameraDeviceClient::roundBufferDimensionNearest(width, height,
    if (flexibleConsumer && isPublicFormat(format) &&
            !CameraDeviceClient::roundBufferDimensionNearest(width, height,
            format, dataSpace, mDevice->info(), /*out*/&width, /*out*/&height)) {
            format, dataSpace, mDevice->info(), /*out*/&width, /*out*/&height)) {
        String8 msg = String8::format("Camera %d: No supported stream configurations with "
        String8 msg = String8::format("Camera %d: No supported stream configurations with "
                "format %#x defined, failed to create output stream", mCameraId, format);
                "format %#x defined, failed to create output stream", mCameraId, format);
@@ -629,6 +630,37 @@ binder::Status CameraDeviceClient::getInputSurface(/*out*/ view::Surface *inputS
    return res;
    return res;
}
}


bool CameraDeviceClient::isPublicFormat(int32_t format)
{
    switch(format) {
        case HAL_PIXEL_FORMAT_RGBA_8888:
        case HAL_PIXEL_FORMAT_RGBX_8888:
        case HAL_PIXEL_FORMAT_RGB_888:
        case HAL_PIXEL_FORMAT_RGB_565:
        case HAL_PIXEL_FORMAT_BGRA_8888:
        case HAL_PIXEL_FORMAT_YV12:
        case HAL_PIXEL_FORMAT_Y8:
        case HAL_PIXEL_FORMAT_Y16:
        case HAL_PIXEL_FORMAT_RAW16:
        case HAL_PIXEL_FORMAT_RAW10:
        case HAL_PIXEL_FORMAT_RAW12:
        case HAL_PIXEL_FORMAT_RAW_OPAQUE:
        case HAL_PIXEL_FORMAT_BLOB:
        case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED:
        case HAL_PIXEL_FORMAT_YCbCr_420_888:
        case HAL_PIXEL_FORMAT_YCbCr_422_888:
        case HAL_PIXEL_FORMAT_YCbCr_444_888:
        case HAL_PIXEL_FORMAT_FLEX_RGB_888:
        case HAL_PIXEL_FORMAT_FLEX_RGBA_8888:
        case HAL_PIXEL_FORMAT_YCbCr_422_SP:
        case HAL_PIXEL_FORMAT_YCrCb_420_SP:
        case HAL_PIXEL_FORMAT_YCbCr_422_I:
            return true;
        default:
            return false;
    }
}

bool CameraDeviceClient::roundBufferDimensionNearest(int32_t width, int32_t height,
bool CameraDeviceClient::roundBufferDimensionNearest(int32_t width, int32_t height,
        int32_t format, android_dataspace dataSpace, const CameraMetadata& info,
        int32_t format, android_dataspace dataSpace, const CameraMetadata& info,
        /*out*/int32_t* outWidth, /*out*/int32_t* outHeight) {
        /*out*/int32_t* outWidth, /*out*/int32_t* outHeight) {
+3 −0
Original line number Original line Diff line number Diff line
@@ -195,6 +195,9 @@ private:
            android_dataspace dataSpace, const CameraMetadata& info,
            android_dataspace dataSpace, const CameraMetadata& info,
            /*out*/int32_t* outWidth, /*out*/int32_t* outHeight);
            /*out*/int32_t* outWidth, /*out*/int32_t* outHeight);


    //check if format is not custom format
    static bool isPublicFormat(int32_t format);

    // IGraphicsBufferProducer binder -> Stream ID for output streams
    // IGraphicsBufferProducer binder -> Stream ID for output streams
    KeyedVector<sp<IBinder>, int> mStreamMap;
    KeyedVector<sp<IBinder>, int> mStreamMap;