.. _program_listing_file_nvcv_types_include_nvcv_DataType.h: Program Listing for File DataType.h =================================== |exhale_lsh| :ref:`Return to documentation for file ` (``nvcv_types/include/nvcv/DataType.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /* * SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * * 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. */ #ifndef NVCV_DATA_TYPE_H #define NVCV_DATA_TYPE_H #include "ColorSpec.h" #include "DataLayout.h" #include "detail/FormatUtils.h" #ifdef __cplusplus extern "C" { #endif typedef struct { uint8_t value; } NVCVByte; typedef uint64_t NVCVDataType; /* clang-format off */ #define NVCV_DATA_TYPE_NONE ((NVCVDataType)0) #define NVCV_DATA_TYPE_U8 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X8) #define NVCV_DATA_TYPE_2U8 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X8_Y8) #define NVCV_DATA_TYPE_3U8 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X8_Y8_Z8) #define NVCV_DATA_TYPE_4U8 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X8_Y8_Z8_W8) #define NVCV_DATA_TYPE_S8 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X8) #define NVCV_DATA_TYPE_2S8 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X8_Y8) #define NVCV_DATA_TYPE_3S8 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X8_Y8_Z8) #define NVCV_DATA_TYPE_4S8 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X8_Y8_Z8_W8) #define NVCV_DATA_TYPE_U16 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X16) #define NVCV_DATA_TYPE_2U16 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X16_Y16) #define NVCV_DATA_TYPE_3U16 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X16_Y16_Z16) #define NVCV_DATA_TYPE_4U16 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X16_Y16_Z16_W16) #define NVCV_DATA_TYPE_S16 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X16) #define NVCV_DATA_TYPE_2S16 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X16_Y16) #define NVCV_DATA_TYPE_3S16 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X16_Y16_Z16) #define NVCV_DATA_TYPE_4S16 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X16_Y16_Z16_W16) #define NVCV_DATA_TYPE_U32 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X32) #define NVCV_DATA_TYPE_2U32 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X32_Y32) #define NVCV_DATA_TYPE_3U32 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X32_Y32_Z32) #define NVCV_DATA_TYPE_4U32 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X32_Y32_Z32_W32) #define NVCV_DATA_TYPE_S32 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X32) #define NVCV_DATA_TYPE_2S32 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X32_Y32) #define NVCV_DATA_TYPE_3S32 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X32_Y32_Z32) #define NVCV_DATA_TYPE_4S32 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X32_Y32_Z32_W32) #define NVCV_DATA_TYPE_F16 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X16) #define NVCV_DATA_TYPE_2F16 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X16_Y16) #define NVCV_DATA_TYPE_3F16 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X16_Y16_Z16) #define NVCV_DATA_TYPE_4F16 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X16_Y16_Z16_W16) #define NVCV_DATA_TYPE_F32 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X32) #define NVCV_DATA_TYPE_2F32 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X32_Y32) #define NVCV_DATA_TYPE_3F32 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X32_Y32_Z32) #define NVCV_DATA_TYPE_4F32 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X32_Y32_Z32_W32) #define NVCV_DATA_TYPE_U64 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X64) #define NVCV_DATA_TYPE_2U64 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X64_Y64) #define NVCV_DATA_TYPE_3U64 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X64_Y64_Z64) #define NVCV_DATA_TYPE_4U64 NVCV_DETAIL_MAKE_PIX_TYPE(UNSIGNED, X64_Y64_Z64_W64) #define NVCV_DATA_TYPE_S64 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X64) #define NVCV_DATA_TYPE_2S64 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X64_Y64) #define NVCV_DATA_TYPE_3S64 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X64_Y64_Z64) #define NVCV_DATA_TYPE_4S64 NVCV_DETAIL_MAKE_PIX_TYPE(SIGNED, X64_Y64_Z64_W64) #define NVCV_DATA_TYPE_F64 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X64) #define NVCV_DATA_TYPE_2F64 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X64_Y64) #define NVCV_DATA_TYPE_3F64 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X64_Y64_Z64) #define NVCV_DATA_TYPE_4F64 NVCV_DETAIL_MAKE_PIX_TYPE(FLOAT, X64_Y64_Z64_W64) #define NVCV_DATA_TYPE_C64 NVCV_DETAIL_MAKE_PIX_TYPE(COMPLEX, X64) #define NVCV_DATA_TYPE_2C64 NVCV_DETAIL_MAKE_PIX_TYPE(COMPLEX, X64_Y64) #define NVCV_DATA_TYPE_3C64 NVCV_DETAIL_MAKE_PIX_TYPE(COMPLEX, X64_Y64_Z64) #define NVCV_DATA_TYPE_4C64 NVCV_DETAIL_MAKE_PIX_TYPE(COMPLEX, X64_Y64_Z64_W64) #define NVCV_DATA_TYPE_C128 NVCV_DETAIL_MAKE_PIX_TYPE(COMPLEX, X128) #define NVCV_DATA_TYPE_2C128 NVCV_DETAIL_MAKE_PIX_TYPE(COMPLEX, X128_Y128) /* clang-format on */ #ifdef DOXYGEN_SHOULD_SKIP_THIS # define NVCV_MAKE_DATA_TYPE(dataKind, packing) #else # define NVCV_MAKE_DATA_TYPE (NVCVDataType) NVCV_DETAIL_MAKE_DATA_TYPE #endif NVCV_PUBLIC NVCVStatus nvcvMakeDataType(NVCVDataType *outPixType, NVCVDataKind dataKind, NVCVPacking packing); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetPacking(NVCVDataType type, NVCVPacking *outPacking); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetBitsPerPixel(NVCVDataType type, int32_t *outBPP); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetBitsPerChannel(NVCVDataType type, int32_t *outBits); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetAlignment(NVCVDataType type, int32_t *outAlignment); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetDataKind(NVCVDataType type, NVCVDataKind *outDataKind); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetNumChannels(NVCVDataType type, int32_t *outNumChannels); NVCV_PUBLIC const char *nvcvDataTypeGetName(NVCVDataType type); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetChannelType(NVCVDataType type, int32_t channel, NVCVDataType *outChannelTpe); NVCV_PUBLIC NVCVStatus nvcvDataTypeGetStrideBytes(NVCVDataType type, int32_t *pixStrideBytes); #ifdef __cplusplus } #endif #endif /* NVCV_DATA_TYPE_H */