text: /* SPDX-License-Identifier: MIT */
  /**
  	@file		ntv2m31enums.h
  	@brief		Enumerations for controlling NTV2 devices with m31 HEVC encoders.
  	@copyright	(C) 2015-2021 AJA Video Systems, Inc.  All rights reserved.
  **/
  
  
  #ifndef NTV2M31ENUMS_H
  #define NTV2M31ENUMS_H
  
  typedef enum
  {
  	// File presets
      M31_FILE_720X480_420_8_5994i,               // 0
      M31_FILE_720X480_420_8_5994p,               // 1
      M31_FILE_720X480_420_8_60i,                 // 2
      M31_FILE_720X480_420_8_60p,                 // 3
      M31_FILE_720X480_422_10_5994i,              // 4
      M31_FILE_720X480_422_10_5994p,              // 5
      M31_FILE_720X480_422_10_60i,                // 6
      M31_FILE_720X480_422_10_60p,                // 7
  
      M31_FILE_720X576_420_8_50i,                 // 8
      M31_FILE_720X576_420_8_50p,                 // 9
      M31_FILE_720X576_422_10_50i,                // 10
      M31_FILE_720X576_422_10_50p,                // 11
      
      M31_FILE_1280X720_420_8_2398p,              // 12
      M31_FILE_1280X720_420_8_24p,                // 13
      M31_FILE_1280X720_420_8_25p,                // 14
      M31_FILE_1280X720_420_8_2997p,              // 15
      M31_FILE_1280X720_420_8_30p,                // 16
      M31_FILE_1280X720_420_8_50p,                // 17
      M31_FILE_1280X720_420_8_5994p,              // 18
      M31_FILE_1280X720_420_8_60p,                // 19
      
      M31_FILE_1280X720_422_10_2398p,             // 20
      M31_FILE_1280X720_422_10_24p,               // 21
      M31_FILE_1280X720_422_10_25p,               // 22
      M31_FILE_1280X720_422_10_2997p,             // 23
      M31_FILE_1280X720_422_10_30p,               // 24
      M31_FILE_1280X720_422_10_50p,               // 25
      M31_FILE_1280X720_422_10_5994p,             // 26
      M31_FILE_1280X720_422_10_60p,               // 27
  
      M31_FILE_1920X1080_420_8_2398p,             // 28
      M31_FILE_1920X1080_420_8_24p,               // 29
      M31_FILE_1920X1080_420_8_25p,               // 30
      M31_FILE_1920X1080_420_8_2997p,             // 31
      M31_FILE_1920X1080_420_8_30p,               // 32
      M31_FILE_1920X1080_420_8_50i,               // 33
      M31_FILE_1920X1080_420_8_50p,               // 34
      M31_FILE_1920X1080_420_8_5994i,             // 35
      M31_FILE_1920X1080_420_8_5994p,             // 36
      M31_FILE_1920X1080_420_8_60i,               // 37
      M31_FILE_1920X1080_420_8_60p,               // 38
      
      M31_FILE_1920X1080_422_10_2398p,            // 39
      M31_FILE_1920X1080_422_10_24p,              // 40
      M31_FILE_1920X1080_422_10_25p,              // 41
      M31_FILE_1920X1080_422_10_2997p,            // 42
      M31_FILE_1920X1080_422_10_30p,              // 43
      M31_FILE_1920X1080_422_10_50i,              // 44
      M31_FILE_1920X1080_422_10_50p,              // 45
      M31_FILE_1920X1080_422_10_5994i,            // 46
      M31_FILE_1920X1080_422_10_5994p,            // 47
      M31_FILE_1920X1080_422_10_60i,              // 48
      M31_FILE_1920X1080_422_10_60p,              // 49
  
      M31_FILE_2048X1080_420_8_2398p,             // 50
      M31_FILE_2048X1080_420_8_24p,               // 51
      M31_FILE_2048X1080_420_8_25p,               // 52
      M31_FILE_2048X1080_420_8_2997p,             // 53
      M31_FILE_2048X1080_420_8_30p,               // 54
      M31_FILE_2048X1080_420_8_50p,               // 55
      M31_FILE_2048X1080_420_8_5994p,             // 56
      M31_FILE_2048X1080_420_8_60p,               // 57
  
      M31_FILE_2048X1080_422_10_2398p,            // 58
      M31_FILE_2048X1080_422_10_24p,              // 59
      M31_FILE_2048X1080_422_10_25p,              // 60
      M31_FILE_2048X1080_422_10_2997p,            // 61
      M31_FILE_2048X1080_422_10_30p,              // 62
      M31_FILE_2048X1080_422_10_50p,              // 63
      M31_FILE_2048X1080_422_10_5994p,            // 64
      M31_FILE_2048X1080_422_10_60p,              // 65
  
      M31_FILE_3840X2160_420_8_2398p,             // 66
      M31_FILE_3840X2160_420_8_24p,               // 67
      M31_FILE_3840X2160_420_8_25p,               // 68
      M31_FILE_3840X2160_420_8_2997p,             // 69
      M31_FILE_3840X2160_420_8_30p,               // 70
      M31_FILE_3840X2160_420_8_50p,               // 71
      M31_FILE_3840X2160_420_8_5994p,             // 72
      M31_FILE_3840X2160_420_8_60p,               // 73
  
      M31_FILE_3840X2160_420_10_50p,              // 74
      M31_FILE_3840X2160_420_10_5994p,            // 75
      M31_FILE_3840X2160_420_10_60p,              // 76
      
      M31_FILE_3840X2160_422_8_2398p,             // 77
      M31_FILE_3840X2160_422_8_24p,               // 78
      M31_FILE_3840X2160_422_8_25p,               // 79
      M31_FILE_3840X2160_422_8_2997p,             // 80
      M31_FILE_3840X2160_422_8_30p,               // 81
      M31_FILE_3840X2160_422_8_50p,               // 82
      M31_FILE_3840X2160_422_8_5994p,             // 83
      M31_FILE_3840X2160_422_8_60p,               // 84
      
      M31_FILE_3840X2160_422_10_2398p,            // 85
      M31_FILE_3840X2160_422_10_24p,              // 86
      M31_FILE_3840X2160_422_10_25p,              // 87
      M31_FILE_3840X2160_422_10_2997p,            // 88
      M31_FILE_3840X2160_422_10_30p,              // 89
      M31_FILE_3840X2160_422_10_50p,              // 90
      M31_FILE_3840X2160_422_10_5994p,            // 91
      M31_FILE_3840X2160_422_10_60p,              // 92
  
      M31_FILE_4096X2160_420_10_5994p,            // 93
      M31_FILE_4096X2160_420_10_60p,              // 94
      M31_FILE_4096X2160_422_10_50p,              // 95
      M31_FILE_4096X2160_422_10_5994p_IF,         // 96
      M31_FILE_4096X2160_422_10_60p_IF,           // 97
  
  	// Vif presets
      M31_VIF_720X480_420_8_5994i,                // 98
      M31_VIF_720X480_420_8_5994p,                // 99
      M31_VIF_720X480_420_8_60i,                  // 100
      M31_VIF_720X480_420_8_60p,                  // 101
      M31_VIF_720X480_422_10_5994i,               // 102
      M31_VIF_720X480_422_10_5994p,               // 103
      M31_VIF_720X480_422_10_60i,                 // 104
      M31_VIF_720X480_422_10_60p,                 // 105
  
      M31_VIF_720X576_420_8_50i,                  // 106
      M31_VIF_720X576_420_8_50p,                  // 107
      M31_VIF_720X576_422_10_50i,                 // 108
      M31_VIF_720X576_422_10_50p,                 // 109
  
      M31_VIF_1280X720_420_8_50p,                 // 110
      M31_VIF_1280X720_420_8_5994p,               // 111
      M31_VIF_1280X720_420_8_60p,                 // 112
      M31_VIF_1280X720_422_10_50p,                // 113
      M31_VIF_1280X720_422_10_5994p,              // 114
      M31_VIF_1280X720_422_10_60p,                // 115
  
      M31_VIF_1920X1080_420_8_50i,                // 116
      M31_VIF_1920X1080_420_8_50p,                // 117
      M31_VIF_1920X1080_420_8_5994i,              // 118
      M31_VIF_1920X1080_420_8_5994p,              // 119
      M31_VIF_1920X1080_420_8_60i,                // 120
      M31_VIF_1920X1080_420_8_60p,                // 121
      M31_VIF_1920X1080_420_10_50i,               // 122
      M31_VIF_1920X1080_420_10_50p,               // 123
      M31_VIF_1920X1080_420_10_5994i,             // 124
      M31_VIF_1920X1080_420_10_5994p,             // 125
      M31_VIF_1920X1080_420_10_60i,               // 126
      M31_VIF_1920X1080_420_10_60p,               // 127
      M31_VIF_1920X1080_422_10_5994i,             // 128
      M31_VIF_1920X1080_422_10_5994p,             // 129
      M31_VIF_1920X1080_422_10_60i,               // 130
      M31_VIF_1920X1080_422_10_60p,               // 131
  
      M31_VIF_3840X2160_420_8_30p,                // 132
      M31_VIF_3840X2160_420_8_50p,                // 133
      M31_VIF_3840X2160_420_8_5994p,              // 134
      M31_VIF_3840X2160_420_8_60p,                // 135
      M31_VIF_3840X2160_420_10_50p,               // 136
      M31_VIF_3840X2160_420_10_5994p,             // 137
      M31_VIF_3840X2160_420_10_60p,               // 138
  
      M31_VIF_3840X2160_422_10_30p,               // 139
      M31_VIF_3840X2160_422_10_50p,               // 140
      M31_VIF_3840X2160_422_10_5994p,             // 141
      M31_VIF_3840X2160_422_10_60p,               // 142
  
  	M31_NUMVIDEOPRESETS
  } M31VideoPreset;
  
  
  #define	IS_VALID_M31VideoPreset(__s__)	((__s__) >= M31_FILE_720X480_420_8_5994i && (__s__) < M31_NUMVIDEOPRESETS)
  
  typedef enum
  {
  	M31_VIRTUAL_CH0,
  	M31_VIRTUAL_CH1,
  	M31_VIRTUAL_CH2,
  	M31_VIRTUAL_CH3,
  	M31_VIRTUAL_CH4,
  	M31_VIRTUAL_CH5,
  	M31_VIRTUAL_CH6,
  	M31_VIRTUAL_CH7,
  	
  	M31_VIRTUAL_CH8,
  	M31_VIRTUAL_CH9,
  	M31_VIRTUAL_CH10,
  	M31_VIRTUAL_CH11,
  	M31_VIRTUAL_CH12,
  	M31_VIRTUAL_CH13,
  	M31_VIRTUAL_CH14,
  	M31_VIRTUAL_CH15,
  	
  	M31_VIRTUAL_CH16,
  	M31_VIRTUAL_CH17,
  	M31_VIRTUAL_CH18,
  	M31_VIRTUAL_CH19,
  	M31_VIRTUAL_CH20,
  	M31_VIRTUAL_CH21,
  	M31_VIRTUAL_CH22,
  	M31_VIRTUAL_CH23,
      
  	M31_VIRTUAL_CH24,
  	M31_VIRTUAL_CH25,
  	M31_VIRTUAL_CH26,
  	M31_VIRTUAL_CH27,
  	M31_VIRTUAL_CH28,
  	M31_VIRTUAL_CH29,
  	M31_VIRTUAL_CH30,
  	M31_VIRTUAL_CH31
  } M31VirtualChannel;
  
  #define	IS_VALID_M31VirtualChannel(__s__)	((__s__) >= M31_VIRTUAL_CH0 && (__s__) <= M31_VIRTUAL_CH31)
  
  typedef enum
  {
  	M31_CH0,
  	M31_CH1,
  	M31_CH2,
  	M31_CH3
  } M31Channel;
  
  #define	IS_VALID_M31Channel(__s__)	((__s__) >= M31_CH0 && (__s__) <= M31_CH3)
  
  typedef enum
  {
  	M31_1920X1080i              = 0,            // SMPTE274M
  	M31_1280X720p               = 2,            // SMPTE296M-2001
  	M31_720X480i                = 4,            // ITU-R BT.656.4
  	M31_720X576i                = 5,            // ITU-R BT.656.4
  	M31_720X480p                = 8,            // SMPTE293M
  	M31_720X576p                = 9,            // ITU-REC1358
  	M31_1920X1080p              = 30,           // SMPTE274M
  	M31_3840X2160_SMPTE435M     = 50,           // Square Division
  	M31_3840X2160_SMPTE274M     = 51,           // 2-Sample Interleave
      M31_ARBITRARY_RESOLUTION    = 255           // 2-Sample Interleave
      
  } M31VideoFormat;
  
  typedef enum
  {
  	M31_READCC,
  	M31_SETCC,
  	M31_WRITECCPLUS,
  	M31_READCCPLUS,
  	M31_PUSH
  } M31CC;
  
  typedef enum
  {
  	M31_NOTUSE,
  	M31_4K2K,
  	M31_FULLHD,
  	M31_HD,
  	M31_SD
  } M31ResoType;
  
  #define	IS_VALID_M31ResoType(__s__)	((__s__) >= M31_NOTUSE && (__s__) <= M31_SD)
  
  typedef enum
  {
  	M31_YCSeparate,
  	M31_YCMultiplex
  } M31YCMode;
  
  typedef enum
  {
      M31_RobustModeStop,
      M31_RobustModeBlue,
  	M31_RobustModeColor
  } M31RobustMode;
  
  typedef enum
  {
  	M31_Slave,
  	M31_Master
  } M31SyncMasterMode;
  
  typedef enum
  {
      M31_DefaultPort = 0,
  	M31_PortA       = 1,
  	M31_PortB       = 2,
  	M31_PortC       = 4,
  	M31_PortD       = 8
  } M31InputPort;
  
  typedef enum
  {
      M31_SourceVI,
  	M31_SourceVEI
  } M31SourceVI;
  
  typedef enum
  {
      M31_SourceVA,
  	M31_SourceVAReserved
  } M31SourceVA;
  
  typedef enum
  {
      M31_ChromaMono,
      M31_Chroma420,
  	M31_Chroma422
  } M31ChromaFormat;
  
  typedef enum
  {
      M31_BitDepth8   = 8,
  	M31_BitDepth9   = 9,
      M31_BitDepth10  = 10
  } M31BitDepth;
  
  typedef enum
  {
      M31_PTSModeAuto,
  	M31_PTSModeHost
  } M31PTSMode;
  
  typedef enum
  {
      M31_Progressive,
  	M31_Interlace
  } M31ScanMode;
  
  typedef enum
  {
      M31_EncodeModeDefault,
  	M31_EncodeModeMode1,
      M31_EncodeModeMode2
  } M31EncodeMode;
  
  typedef enum
  {
      M31_ProfileMain     = 1,
  	M31_ProfileMain10   = 2,
      M31_ProfileMainSP   = 3,
      M31_Profile422      = 4
  } M31Profile;
  
  typedef enum
  {
      M31_MainTier,
  	M31_HighTier
  } M31Tier;
  
  typedef enum
  {
      M31_FrameRateUD		= 0,
      M31_FrameRate2398	= 1,
      M31_FrameRate24		= 2,
      M31_FrameRate25		= 3,
      M31_FrameRate2997	= 4,
      M31_FrameRate30		= 5,
      M31_FrameRate50		= 6,
      M31_FrameRate5994	= 7,
      M31_FrameRate60		= 8
  } M31FrameRate;
  
  #endif //NTV2M31ENUMS_H
  
  