Program Listing for File DataType.h
↰ Return to documentation for file (nvcv_types/include/nvcv/DataType.h
)
/*
* 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 */