obs-studio/build_dependencies/aja/include/ajalibraries/ajantv2/includes/ntv2enhancedcsc.h
Ward Nakchbandi b48576284b first commit
2023-03-04 20:33:16 +03:00

140 lines
4.4 KiB
C++

/* SPDX-License-Identifier: MIT */
/**
@file ntv2enhancedcsc.h
@brief Declares the CNTV2EnhancedCSC class.
@copyright (C) 2015-2021 AJA Video Systems, Inc.
**/
#ifndef NTV2_ENHANCED_CSC_H
#define NTV2_ENHANCED_CSC_H
#include "ajaexport.h"
#include "ntv2card.h"
#include "ntv2cscmatrix.h"
typedef enum
{
NTV2_Enhanced_CSC_Pixel_Format_RGB444,
NTV2_Enhanced_CSC_Pixel_Format_YCbCr444,
NTV2_Enhanced_CSC_Pixel_Format_YCbCr422,
NTV2_Enhanced_CSC_Num_Pixel_Formats
} NTV2EnhancedCSCPixelFormat;
typedef enum
{
NTV2_Enhanced_CSC_Chroma_Filter_Select_Full,
NTV2_Enhanced_CSC_Chroma_Filter_Select_Simple,
NTV2_Enhanced_CSC_Chroma_Filter_Select_None,
NTV2_Enhanced_CSC_Num_Chroma_Filter_Selects
} NTV2EnhancedCSCChromaFilterSelect;
typedef enum
{
NTV2_Enhanced_CSC_Chroma_Edge_Control_Black,
NTV2_Enhanced_CSC_Chroma_Edge_Control_Extended,
NTV2_Enhanced_CSC_Num_Chroma_Edge_Controls
} NTV2EnhancedCSCChromaEdgeControl;
typedef enum
{
NTV2_Enhanced_CSC_Key_Source_Key_Input,
NTV2_Enhanced_CSC_Key_Spurce_A0_Input,
NTV2_Enhanced_CSC_Num_Key_Sources
} NTV2EnhancedCSCKeySource;
typedef enum
{
NTV2_Enhanced_CSC_Key_Output_Range_Full,
NTV2_Enhanced_CSC_Key_Output_Range_SMPTE,
NTV2_Enhanced_CSC_Num_Key_Output_Ranges
} NTV2EnhancedCSCKeyOutputRange;
/**
@brief This class controls the enhanced color space converter.
**/
class AJAExport CNTV2EnhancedCSC
{
// Class Methods
public:
// Construction, Copying, Assigning
#if defined (NTV2_DEPRECATE)
explicit CNTV2EnhancedCSC () { };
#else
explicit CNTV2EnhancedCSC (CNTV2Card & inCard)
: mDevice (inCard) { };
#endif
virtual inline ~CNTV2EnhancedCSC () { }
// Instance Methods
public:
inline CNTV2CSCMatrix & Matrix (void) {return mMatrix;}
inline const CNTV2CSCMatrix & Matrix (void) const {return mMatrix;}
bool SetInputPixelFormat (const NTV2EnhancedCSCPixelFormat inPixelFormat);
inline NTV2EnhancedCSCPixelFormat GetInputPixelFormat (void) const {return mInputPixelFormat;}
bool SetOutputPixelFormat (const NTV2EnhancedCSCPixelFormat inPixelFormat);
inline NTV2EnhancedCSCPixelFormat GetOutputPixelFormat (void) const {return mOutputPixelFormat;}
bool SetChromaFilterSelect (const NTV2EnhancedCSCChromaFilterSelect inChromaFilterSelect);
inline NTV2EnhancedCSCChromaFilterSelect GetChromaFilterSelect (void) const {return mChromaFilterSelect;}
bool SetChromaEdgeControl (const NTV2EnhancedCSCChromaEdgeControl inChromaEdgeControl);
inline NTV2EnhancedCSCChromaEdgeControl GetChromaEdgeControl (void) const {return mChromaEdgeControl;}
bool SetKeySource (const NTV2EnhancedCSCKeySource inKeySource);
inline NTV2EnhancedCSCKeySource GetKeySource (void) const {return mKeySource;}
bool SetKeyOutputRange (const NTV2EnhancedCSCKeyOutputRange inKeyOutputRange);
inline NTV2EnhancedCSCKeyOutputRange GetKeyOutputRange (void) const {return mKeyOutputRange;}
bool SetKeyInputOffset (const int16_t inKeyInputOffset);
inline int16_t GetKeyInputOffset (void) const {return mKeyInputOffset;}
bool SetKeyOutputOffset (const uint16_t inKeyOutputOffset);
inline uint16_t GetKeyOutputOffset (void) const {return mKeyOutputOffset;}
bool SetKeyGain (const double inKeyGain);
inline double GetKeyGain (void) const {return mKeyGain;}
bool SendToHardware (CNTV2Card & inDevice, const NTV2Channel inChannel) const;
bool GetFromHardware (CNTV2Card & inDevice, const NTV2Channel inChannel);
#if !defined (NTV2_DEPRECATE)
inline bool SendToHardware (const NTV2Channel inChannel) {return SendToHardware (mDevice, inChannel);}
inline bool GetFromHardware (const NTV2Channel inChannel) {return GetFromHardware (mDevice, inChannel);}
#endif // !defined (NTV2_DEPRECATE)
// Instance Data
private:
NTV2EnhancedCSCPixelFormat mInputPixelFormat;
NTV2EnhancedCSCPixelFormat mOutputPixelFormat;
NTV2EnhancedCSCChromaFilterSelect mChromaFilterSelect;
NTV2EnhancedCSCChromaEdgeControl mChromaEdgeControl;
NTV2EnhancedCSCKeySource mKeySource;
NTV2EnhancedCSCKeyOutputRange mKeyOutputRange;
int16_t mKeyInputOffset;
uint16_t mKeyOutputOffset;
double mKeyGain;
CNTV2CSCMatrix mMatrix;
#if !defined (NTV2_DEPRECATE)
CNTV2Card & mDevice;
#endif // !defined (NTV2_DEPRECATE)
}; // CNTV2EnhancedCSC
#endif // NTV2_ENHANCED_CSC_H