Loading services/camera/libcameraservice/api2/CameraDeviceClient.cpp +33 −1 Original line number Diff line number Diff line Loading @@ -449,7 +449,8 @@ status_t CameraDeviceClient::createStream(const OutputConfiguration &outputConfi } // 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)) { ALOGE("%s: No stream configurations with the format %#x defined, failed to create stream.", __FUNCTION__, format); Loading Loading @@ -546,6 +547,37 @@ status_t CameraDeviceClient::getInputBufferProducer( return mDevice->getInputBufferProducer(producer); } 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, int32_t format, android_dataspace dataSpace, const CameraMetadata& info, /*out*/int32_t* outWidth, /*out*/int32_t* outHeight) { Loading services/camera/libcameraservice/api2/CameraDeviceClient.h +3 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,9 @@ private: android_dataspace dataSpace, const CameraMetadata& info, /*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 KeyedVector<sp<IBinder>, int> mStreamMap; Loading Loading
services/camera/libcameraservice/api2/CameraDeviceClient.cpp +33 −1 Original line number Diff line number Diff line Loading @@ -449,7 +449,8 @@ status_t CameraDeviceClient::createStream(const OutputConfiguration &outputConfi } // 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)) { ALOGE("%s: No stream configurations with the format %#x defined, failed to create stream.", __FUNCTION__, format); Loading Loading @@ -546,6 +547,37 @@ status_t CameraDeviceClient::getInputBufferProducer( return mDevice->getInputBufferProducer(producer); } 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, int32_t format, android_dataspace dataSpace, const CameraMetadata& info, /*out*/int32_t* outWidth, /*out*/int32_t* outHeight) { Loading
services/camera/libcameraservice/api2/CameraDeviceClient.h +3 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,9 @@ private: android_dataspace dataSpace, const CameraMetadata& info, /*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 KeyedVector<sp<IBinder>, int> mStreamMap; Loading