aja-presets.cpp 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818
  1. #include "aja-common.hpp"
  2. #include "aja-presets.hpp"
  3. #include <ajantv2/includes/ntv2devicefeatures.h>
  4. #include <ajantv2/includes/ntv2utils.h>
  5. namespace aja {
  6. RoutingConfigurator::RoutingConfigurator()
  7. {
  8. build_preset_table();
  9. }
  10. void RoutingConfigurator::AddPreset(const std::string &name,
  11. const RoutingPreset &preset)
  12. {
  13. if (m_presets.find(name) != m_presets.end())
  14. return;
  15. m_presets.insert(RoutingPresetPair{name, preset});
  16. }
  17. bool RoutingConfigurator::PresetByName(const std::string &name,
  18. RoutingPreset &preset) const
  19. {
  20. if (m_presets.find(name) != m_presets.end()) {
  21. preset = m_presets.at(name);
  22. return true;
  23. }
  24. return false;
  25. }
  26. void RoutingConfigurator::build_preset_table()
  27. {
  28. static const RoutingPresetMap kRoutingPresets = {
  29. /*
  30. * HDMI RGB Capture
  31. */
  32. {"HDMI_HD_RGB_LFR_RGB_Capture",
  33. {"HDMI_HD_RGB_LFR_RGB_Capture",
  34. ConnectionKind::HDMI,
  35. NTV2_MODE_CAPTURE,
  36. RasterDefinition::HD,
  37. HDMIWireFormat::SD_HD_RGB,
  38. VPIDStandard_Unknown,
  39. 1,
  40. 1,
  41. 0,
  42. "hdmi[{ch1}][0]->fb[{ch1}][0];",
  43. {},
  44. true,
  45. false}},
  46. {"HDMI_HD_RGB_HFR_RGB_Capture",
  47. {"HDMI_HD_RGB_HFR_RGB_Capture",
  48. ConnectionKind::HDMI,
  49. NTV2_MODE_CAPTURE,
  50. RasterDefinition::HD,
  51. HDMIWireFormat::SD_HD_RGB,
  52. VPIDStandard_Unknown,
  53. 1,
  54. 1,
  55. 0,
  56. "hdmi[{ch1}][0]->fb[{ch1}][0];",
  57. {},
  58. true,
  59. false}},
  60. {"HDMI_UHD_4K_RGB_Capture (io4K+)",
  61. {"HDMI_UHD_4K_RGB_Capture (io4K+)",
  62. ConnectionKind::HDMI,
  63. NTV2_MODE_CAPTURE,
  64. RasterDefinition::UHD_4K,
  65. HDMIWireFormat::UHD_4K_RGB,
  66. VPIDStandard_Unknown,
  67. 1,
  68. 2,
  69. kEnable4KTSI,
  70. "hdmi[{ch1}][4]->tsi[{ch1}][0];"
  71. "hdmi[{ch1}][5]->tsi[{ch1}][1];"
  72. "hdmi[{ch1}][6]->tsi[{ch2}][0];"
  73. "hdmi[{ch1}][7]->tsi[{ch2}][1];"
  74. "tsi[{ch1}][2]->fb[{ch1}][0];"
  75. "tsi[{ch1}][3]->fb[{ch1}][1];"
  76. "tsi[{ch2}][2]->fb[{ch2}][0];"
  77. "tsi[{ch2}][3]->fb[{ch2}][1];",
  78. {DEVICE_ID_IO4KPLUS},
  79. true,
  80. false}},
  81. /*
  82. * HDMI RGB Display
  83. */
  84. {"HDMI_HD_RGB_LFR_RGB_Display",
  85. {"HDMI_HD_RGB_LFR_RGB_Display",
  86. ConnectionKind::HDMI,
  87. NTV2_MODE_DISPLAY,
  88. RasterDefinition::HD,
  89. HDMIWireFormat::SD_HD_RGB,
  90. VPIDStandard_Unknown,
  91. 1,
  92. 1,
  93. 0,
  94. "fb[{ch1}][0]->hdmi[0][0];",
  95. {},
  96. true,
  97. false}},
  98. {"HDMI_HD_RGB_HFR_RGB_Display",
  99. {"HDMI_HD_RGB_HFR_RGB_Display",
  100. ConnectionKind::HDMI,
  101. NTV2_MODE_DISPLAY,
  102. RasterDefinition::HD,
  103. HDMIWireFormat::SD_HD_RGB,
  104. VPIDStandard_Unknown,
  105. 1,
  106. 1,
  107. 0,
  108. "fb[{ch1}][0]->hdmi[0][0];",
  109. {},
  110. true,
  111. false}},
  112. {"HDMI_RGB_LFR_RGB_Display (TTap Pro)",
  113. {"HDMI_RGB_LFR_RGB_Display (TTap Pro)",
  114. ConnectionKind::HDMI,
  115. NTV2_MODE_DISPLAY,
  116. RasterDefinition::HD,
  117. HDMIWireFormat::SD_HD_RGB,
  118. VPIDStandard_Unknown,
  119. 1,
  120. 1,
  121. kEnable3GOut,
  122. "fb[{ch1}][2]->dlo[{ch1}][0];"
  123. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  124. "dlo[{ch1}][1]->sdi[{ch1}][1];"
  125. "fb[{ch1}][2]->hdmi[{ch1}][0];",
  126. {DEVICE_ID_TTAP_PRO},
  127. true,
  128. false}},
  129. {"HDMI_RGB_HFR_RGB_Display (TTap Pro)",
  130. {"HDMI_RGB_HFR_RGB_Display (TTap Pro)",
  131. ConnectionKind::HDMI,
  132. NTV2_MODE_DISPLAY,
  133. RasterDefinition::HD,
  134. HDMIWireFormat::SD_HD_RGB,
  135. VPIDStandard_Unknown,
  136. 1,
  137. 1,
  138. kConvert3GaRGBOut,
  139. "fb[{ch1}][2]->dlo[{ch1}][0];"
  140. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  141. "dlo[{ch1}][1]->sdi[{ch1}][1];"
  142. "fb[{ch1}][2]->hdmi[{ch1}][0];",
  143. {DEVICE_ID_TTAP_PRO},
  144. true,
  145. false}},
  146. /*
  147. * HDMI YCbCr Capture
  148. */
  149. {"HDMI_HD_LFR_YCbCr_Capture",
  150. {"HDMI_HD_LFR_YCbCr_Capture",
  151. ConnectionKind::HDMI,
  152. NTV2_MODE_CAPTURE,
  153. RasterDefinition::HD,
  154. HDMIWireFormat::SD_HD_YCBCR,
  155. VPIDStandard_Unknown,
  156. 1,
  157. 1,
  158. 0,
  159. "hdmi[{ch1}][0]->fb[{ch1}][0];",
  160. {},
  161. false,
  162. false}},
  163. {"HDMI_UHD_4K_YCbCr_Capture (io4K+)",
  164. {"HDMI_UHD_4K_YCbCr_Capture (io4K+)",
  165. ConnectionKind::HDMI,
  166. NTV2_MODE_CAPTURE,
  167. RasterDefinition::UHD_4K,
  168. HDMIWireFormat::UHD_4K_YCBCR,
  169. VPIDStandard_Unknown,
  170. 1,
  171. 2,
  172. kEnable4KTSI,
  173. "hdmi[{ch1}][0]->tsi[{ch1}][0];"
  174. "hdmi[{ch1}][1]->tsi[{ch1}][1];"
  175. "hdmi[{ch1}][2]->tsi[{ch2}][0];"
  176. "hdmi[{ch1}][3]->tsi[{ch2}][1];"
  177. "tsi[{ch1}][0]->fb[{ch1}][0];"
  178. "tsi[{ch1}][1]->fb[{ch1}][1];"
  179. "tsi[{ch2}][0]->fb[{ch2}][0];"
  180. "tsi[{ch2}][1]->fb[{ch2}][1];",
  181. {DEVICE_ID_IO4KPLUS},
  182. false,
  183. false}},
  184. /*
  185. * HDMI YCbCr Display
  186. */
  187. {"HDMI_HD_LFR_YCbCr_Display",
  188. {"HDMI_HD_LFR_YCbCr_Display",
  189. ConnectionKind::HDMI,
  190. NTV2_MODE_DISPLAY,
  191. RasterDefinition::HD,
  192. HDMIWireFormat::SD_HD_YCBCR,
  193. VPIDStandard_Unknown,
  194. 1,
  195. 1,
  196. 0,
  197. "fb[{ch1}][0]->hdmi[0][0];",
  198. {},
  199. false,
  200. false}},
  201. {"HDMI_UHD_4K_LFR_YCbCr_Display",
  202. {"HDMI_UHD_4K_LFR_YCbCr_Display",
  203. ConnectionKind::HDMI,
  204. NTV2_MODE_DISPLAY,
  205. RasterDefinition::UHD_4K,
  206. HDMIWireFormat::UHD_4K_YCBCR,
  207. VPIDStandard_Unknown,
  208. 1,
  209. 2,
  210. kEnable4KTSI,
  211. "fb[{ch1}][0]->tsi[{ch1}][0];"
  212. "fb[{ch1}][1]->tsi[{ch1}][1];"
  213. "fb[{ch2}][0]->tsi[{ch2}][0];"
  214. "fb[{ch2}][1]->tsi[{ch2}][1];"
  215. "tsi[{ch1}][0]->hdmi[{ch1}][0];"
  216. "tsi[{ch1}][1]->hdmi[{ch1}][1];"
  217. "tsi[{ch2}][0]->hdmi[{ch1}][2];"
  218. "tsi[{ch2}][1]->hdmi[{ch1}][3];",
  219. {},
  220. false,
  221. false}},
  222. {"HDMI_UHD_4K_LFR_YCbCr_Display_Kona5_8K",
  223. {"HDMI_UHD_4K_LFR_YCbCr_Display_Kona5_8K",
  224. ConnectionKind::HDMI,
  225. NTV2_MODE_DISPLAY,
  226. RasterDefinition::UHD_4K,
  227. HDMIWireFormat::UHD_4K_YCBCR,
  228. VPIDStandard_Unknown,
  229. 1,
  230. 1,
  231. kEnable4KTSI,
  232. "fb[{ch1}][0]->hdmi[{ch1}][0];",
  233. {DEVICE_ID_KONA5_8K},
  234. false,
  235. false}},
  236. {"HDMI_HD_LFR_YCbCr_Display (TTap Pro)",
  237. {"HDMI_HD_LFR_YCbCr_Display (TTap Pro)",
  238. ConnectionKind::HDMI,
  239. NTV2_MODE_DISPLAY,
  240. RasterDefinition::HD,
  241. HDMIWireFormat::SD_HD_YCBCR,
  242. VPIDStandard_Unknown,
  243. 1,
  244. 1,
  245. 0,
  246. "fb[{ch1}][0]->sdi[{ch1}][0];"
  247. "fb[{ch1}][0]->hdmi[{ch1}][0];",
  248. {DEVICE_ID_TTAP_PRO},
  249. false,
  250. false}},
  251. {"HDMI_HD_HFR_YCbCr_Display (TTap Pro)",
  252. {"HDMI_HD_HFR_YCbCr_Display (TTap Pro)",
  253. ConnectionKind::HDMI,
  254. NTV2_MODE_DISPLAY,
  255. RasterDefinition::HD,
  256. HDMIWireFormat::SD_HD_YCBCR,
  257. VPIDStandard_Unknown,
  258. 1,
  259. 1,
  260. kEnable3GOut,
  261. "fb[{ch1}][0]->sdi[{ch1}][0];"
  262. "fb[{ch1}][0]->hdmi[{ch1}][0];",
  263. {DEVICE_ID_TTAP_PRO},
  264. false,
  265. false}},
  266. {"HDMI_UHD_4K_LFR_YCbCr_Display (TTap Pro)",
  267. {"HDMI_UHD_4K_LFR_YCbCr_Display (TTap Pro)",
  268. ConnectionKind::HDMI,
  269. NTV2_MODE_DISPLAY,
  270. RasterDefinition::UHD_4K,
  271. HDMIWireFormat::UHD_4K_YCBCR,
  272. VPIDStandard_Unknown,
  273. 1,
  274. 1,
  275. kEnable4KTSI | kEnable6GOut,
  276. "fb[{ch1}][0]->sdi[{ch1}][0];"
  277. "fb[{ch1}][0]->hdmi[{ch1}][0];",
  278. {DEVICE_ID_TTAP_PRO},
  279. false,
  280. false}},
  281. {"HDMI_UHD_4K_HFR_YCbCr_Display (TTap Pro)",
  282. {"HDMI_UHD_4K_HFR_YCbCr_Display (TTap Pro)",
  283. ConnectionKind::HDMI,
  284. NTV2_MODE_DISPLAY,
  285. RasterDefinition::UHD_4K,
  286. HDMIWireFormat::UHD_4K_YCBCR,
  287. VPIDStandard_Unknown,
  288. 1,
  289. 1,
  290. kEnable4KTSI | kEnable12GOut,
  291. "fb[{ch1}][0]->sdi[{ch1}][0];"
  292. "fb[{ch1}][0]->hdmi[{ch1}][0];",
  293. {DEVICE_ID_TTAP_PRO},
  294. false,
  295. false}},
  296. /*
  297. * SDI RGB Capture
  298. */
  299. {"HD_720p_ST292_RGB_Capture",
  300. {"HD_720p_ST292_RGB_Capture",
  301. ConnectionKind::SDI,
  302. NTV2_MODE_CAPTURE,
  303. RasterDefinition::HD,
  304. HDMIWireFormat::Unknown,
  305. VPIDStandard_720,
  306. 1,
  307. 1,
  308. 0,
  309. "sdi[{ch1}][0]->dli[{ch1}][0];"
  310. "sdi[{ch1}][1]->dli[{ch1}][1];"
  311. "dli[{ch1}][0]->fb[{ch1}][0];",
  312. {},
  313. true,
  314. false}},
  315. {"HD_1080_ST292_RGB_Capture",
  316. {"HD_1080_ST292_RGB_Capture",
  317. ConnectionKind::SDI,
  318. NTV2_MODE_CAPTURE,
  319. RasterDefinition::HD,
  320. HDMIWireFormat::Unknown,
  321. VPIDStandard_1080,
  322. 1,
  323. 1,
  324. 0,
  325. "sdi[{ch1}][0]->dli[{ch1}][0];"
  326. "sdi[{ch1}][1]->dli[{ch1}][1];"
  327. "dli[{ch1}][0]->fb[{ch1}][0];",
  328. {},
  329. true,
  330. false}},
  331. {"HD_1080_ST372_Dual_RGB_Capture",
  332. {"HD_1080_ST372_Dual_RGB_Capture",
  333. ConnectionKind::SDI,
  334. NTV2_MODE_CAPTURE,
  335. RasterDefinition::HD,
  336. HDMIWireFormat::Unknown,
  337. VPIDStandard_1080_DualLink,
  338. 2,
  339. 1,
  340. 0,
  341. "sdi[{ch1}][0]->dli[{ch1}][0];"
  342. "sdi[{ch2}][0]->dli[{ch1}][1];"
  343. "dli[{ch1}][0]->fb[{ch1}][0];",
  344. {},
  345. true,
  346. false}},
  347. {"HD_720p_ST425_3Ga_RGB_Capture",
  348. {"HD_720p_ST425_3Ga_RGB_Capture",
  349. ConnectionKind::SDI,
  350. NTV2_MODE_CAPTURE,
  351. RasterDefinition::HD,
  352. HDMIWireFormat::Unknown,
  353. VPIDStandard_720_3Ga,
  354. 1,
  355. 1,
  356. 0,
  357. "sdi[{ch1}][0]->dli[{ch1}][0];"
  358. "sdi[{ch1}][1]->dli[{ch1}][1];"
  359. "dli[{ch1}][0]->fb[{ch1}][0];",
  360. {},
  361. true,
  362. false}},
  363. {"HD_1080p_ST425_3Ga_RGB_Capture",
  364. {"HD_1080p_ST425_3Ga_RGB_Capture",
  365. ConnectionKind::SDI,
  366. NTV2_MODE_CAPTURE,
  367. RasterDefinition::HD,
  368. HDMIWireFormat::Unknown,
  369. VPIDStandard_1080_3Ga,
  370. 1,
  371. 1,
  372. 0,
  373. "sdi[{ch1}][0]->dli[{ch1}][0];"
  374. "sdi[{ch1}][1]->dli[{ch1}][1];"
  375. "dli[{ch1}][0]->fb[{ch1}][0];",
  376. {},
  377. true,
  378. false}},
  379. {"HD_1080p_ST425_3Gb_DL_RGB_Capture",
  380. {"HD_1080p_ST425_3Gb_DL_RGB_Capture",
  381. ConnectionKind::SDI,
  382. NTV2_MODE_CAPTURE,
  383. RasterDefinition::HD,
  384. HDMIWireFormat::Unknown,
  385. VPIDStandard_1080_DualLink_3Gb,
  386. 1,
  387. 1,
  388. 0,
  389. "sdi[{ch1}][0]->dli[{ch1}][0];"
  390. "sdi[{ch1}][1]->dli[{ch1}][1];"
  391. "dli[{ch1}][0]->fb[{ch1}][0];",
  392. {},
  393. true,
  394. false}},
  395. {"HD_720p_ST425_3Gb_RGB_Capture",
  396. {"HD_720p_ST425_3Gb_RGB_Capture",
  397. ConnectionKind::SDI,
  398. NTV2_MODE_CAPTURE,
  399. RasterDefinition::HD,
  400. HDMIWireFormat::Unknown,
  401. VPIDStandard_720_3Gb,
  402. 1,
  403. 2,
  404. 0,
  405. "sdi[{ch1}][0]->dli[{ch1}][0];"
  406. "sdi[{ch1}][1]->dli[{ch1}][1];"
  407. "dli[{ch1}][0]->fb[{ch1}][0];",
  408. {},
  409. true,
  410. false}},
  411. {"HD_1080p_ST425_3Gb_RGB_Capture",
  412. {"HD_1080p_ST425_3Gb_RGB_Capture",
  413. ConnectionKind::SDI,
  414. NTV2_MODE_CAPTURE,
  415. RasterDefinition::HD,
  416. HDMIWireFormat::Unknown,
  417. VPIDStandard_1080_3Gb,
  418. 1,
  419. 2,
  420. 0,
  421. "sdi[{ch1}][0]->dli[{ch1}][0];"
  422. "sdi[{ch1}][1]->dli[{ch1}][1];"
  423. "dli[{ch1}][0]->fb[{ch1}][0];",
  424. {},
  425. true,
  426. false}},
  427. {"HD_1080p_ST425_Dual_3Ga_RGB_Capture",
  428. {"HD_1080p_ST425_Dual_3Ga_RGB_Capture",
  429. ConnectionKind::SDI,
  430. NTV2_MODE_CAPTURE,
  431. RasterDefinition::HD,
  432. HDMIWireFormat::Unknown,
  433. VPIDStandard_1080_Dual_3Ga,
  434. 2,
  435. 2,
  436. 0,
  437. "sdi[{ch1}][0]->dli[{ch1}][0];"
  438. "sdi[{ch1}][1]->dli[{ch1}][1];"
  439. "sdi[{ch2}][0]->dli[{ch2}][0];"
  440. "sdi[{ch2}][1]->dli[{ch2}][1];"
  441. "dli[{ch1}][0]->fb[{ch1}][0];"
  442. "dli[{ch2}][0]->fb[{ch2}][0];",
  443. {},
  444. true,
  445. false}},
  446. {"HD_1080p_ST425_Dual_3Gb_RGB_Capture",
  447. {"HD_1080p_ST425_Dual_3Gb_RGB_Capture",
  448. ConnectionKind::SDI,
  449. NTV2_MODE_CAPTURE,
  450. RasterDefinition::HD,
  451. HDMIWireFormat::Unknown,
  452. VPIDStandard_1080_Dual_3Gb,
  453. 2,
  454. 2,
  455. kConvert3GIn,
  456. "sdi[{ch1}][0]->dli[{ch1}][0];"
  457. "sdi[{ch1}][1]->dli[{ch1}][1];"
  458. "sdi[{ch2}][0]->dli[{ch2}][0];"
  459. "sdi[{ch2}][1]->dli[{ch2}][1];"
  460. "dli[{ch1}][0]->fb[{ch1}][0];"
  461. "dli[{ch2}][0]->fb[{ch2}][0];",
  462. {},
  463. true,
  464. false}},
  465. {"UHD4K_ST425_Quad_3Ga_Squares_RGB_Capture",
  466. {"UHD4K_ST425_Quad_3Ga_Squares_RGB_Capture",
  467. ConnectionKind::SDI,
  468. NTV2_MODE_CAPTURE,
  469. RasterDefinition::UHD_4K,
  470. HDMIWireFormat::Unknown,
  471. VPIDStandard_1080_3Ga,
  472. 4,
  473. 4,
  474. kEnable4KSquares,
  475. // SDIs -> Dual-Links
  476. "sdi[{ch1}][0]->dli[{ch1}][0];"
  477. "sdi[{ch1}][1]->dli[{ch1}][1];"
  478. "sdi[{ch2}][0]->dli[{ch2}][0];"
  479. "sdi[{ch2}][1]->dli[{ch2}][1];"
  480. "sdi[{ch3}][0]->dli[{ch3}][0];"
  481. "sdi[{ch3}][1]->dli[{ch3}][1];"
  482. "sdi[{ch4}][0]->dli[{ch4}][0];"
  483. "sdi[{ch4}][1]->dli[{ch4}][1];" // Dual-Links -> Framestores
  484. "dli[{ch1}][0]->fb[{ch1}][0];"
  485. "dli[{ch2}][0]->fb[{ch2}][0];"
  486. "dli[{ch3}][0]->fb[{ch3}][0];"
  487. "dli[{ch4}][0]->fb[{ch4}][0];",
  488. {},
  489. true,
  490. false}},
  491. {"UHD4K_ST425_Quad_3Gb_Squares_RGB_Capture",
  492. {"UHD4K_ST425_Quad_3Gb_Squares_RGB_Capture",
  493. ConnectionKind::SDI,
  494. NTV2_MODE_CAPTURE,
  495. RasterDefinition::UHD_4K,
  496. HDMIWireFormat::Unknown,
  497. VPIDStandard_1080_DualLink_3Gb,
  498. 4,
  499. 4,
  500. kEnable4KSquares,
  501. // SDIs -> Dual-Links
  502. "sdi[{ch1}][0]->dli[{ch1}][0];"
  503. "sdi[{ch1}][1]->dli[{ch1}][1];"
  504. "sdi[{ch2}][0]->dli[{ch2}][0];"
  505. "sdi[{ch2}][1]->dli[{ch2}][1];"
  506. "sdi[{ch3}][0]->dli[{ch3}][0];"
  507. "sdi[{ch3}][1]->dli[{ch3}][1];"
  508. "sdi[{ch4}][0]->dli[{ch4}][0];"
  509. "sdi[{ch4}][1]->dli[{ch4}][1];" // Dual-Links -> Framestores
  510. "dli[{ch1}][0]->fb[{ch1}][0];"
  511. "dli[{ch2}][0]->fb[{ch2}][0];"
  512. "dli[{ch3}][0]->fb[{ch3}][0];"
  513. "dli[{ch4}][0]->fb[{ch4}][0];",
  514. {},
  515. true,
  516. false}},
  517. {"UHD4K_ST425_Quad_3Ga_2SI_RGB_Capture",
  518. {"UHD4K_ST425_Quad_3Ga_2SI_RGB_Capture",
  519. ConnectionKind::SDI,
  520. NTV2_MODE_CAPTURE,
  521. RasterDefinition::UHD_4K,
  522. HDMIWireFormat::Unknown,
  523. VPIDStandard_2160_QuadLink_3Ga,
  524. 4,
  525. 4,
  526. kEnable4KTSI,
  527. // SDIs -> Dual-Links
  528. "sdi[{ch1}][0]->dli[{ch1}][0];"
  529. "sdi[{ch1}][1]->dli[{ch1}][1];"
  530. "sdi[{ch2}][0]->dli[{ch2}][0];"
  531. "sdi[{ch2}][1]->dli[{ch2}][1];"
  532. "sdi[{ch3}][0]->dli[{ch3}][0];"
  533. "sdi[{ch3}][1]->dli[{ch3}][1];"
  534. "sdi[{ch4}][0]->dli[{ch4}][0];"
  535. "sdi[{ch4}][1]->dli[{ch4}][1];" // Dual-Links -> TSI Mux
  536. "dli[{ch1}][0]->tsi[{ch1}][0];"
  537. "dli[{ch2}][0]->tsi[{ch1}][1];"
  538. "dli[{ch3}][0]->tsi[{ch2}][0];"
  539. "dli[{ch4}][0]->tsi[{ch2}][1];" // TSI Mux -> Framestores
  540. "tsi[{ch1}][0]->fb[{ch1}][0];"
  541. "tsi[{ch1}][1]->fb[{ch1}][1];"
  542. "tsi[{ch2}][0]->fb[{ch2}][0];"
  543. "tsi[{ch2}][1]->fb[{ch2}][1];",
  544. {},
  545. true,
  546. false}},
  547. {"UHD4K_ST425_Quad_3Gb_2SI_RGB_Capture",
  548. {"UHD4K_ST425_Quad_3Gb_2SI_RGB_Capture",
  549. ConnectionKind::SDI,
  550. NTV2_MODE_CAPTURE,
  551. RasterDefinition::UHD_4K,
  552. HDMIWireFormat::Unknown,
  553. VPIDStandard_2160_QuadDualLink_3Gb,
  554. 4,
  555. 4,
  556. (kEnable3GOut | kEnable3GbOut | kEnable4KTSI),
  557. // SDIs -> Dual-Links
  558. "sdi[{ch1}][0]->dli[{ch1}][0];"
  559. "sdi[{ch1}][1]->dli[{ch1}][1];"
  560. "sdi[{ch2}][0]->dli[{ch2}][0];"
  561. "sdi[{ch2}][1]->dli[{ch2}][1];"
  562. "sdi[{ch3}][0]->dli[{ch3}][0];"
  563. "sdi[{ch3}][1]->dli[{ch3}][1];"
  564. "sdi[{ch4}][0]->dli[{ch4}][0];"
  565. "sdi[{ch4}][1]->dli[{ch4}][1];" // Dual-Links -> TSI Mux
  566. "dli[{ch1}][0]->tsi[{ch1}][0];"
  567. "dli[{ch2}][0]->tsi[{ch1}][1];"
  568. "dli[{ch3}][0]->tsi[{ch2}][0];"
  569. "dli[{ch4}][0]->tsi[{ch2}][1];" // TSI Mux -> Framestores
  570. "tsi[{ch1}][0]->fb[{ch1}][0];"
  571. "tsi[{ch1}][1]->fb[{ch1}][1];"
  572. "tsi[{ch2}][0]->fb[{ch2}][0];"
  573. "tsi[{ch2}][1]->fb[{ch2}][1];",
  574. {},
  575. true,
  576. false}},
  577. /////////////////////////////////
  578. {"UHD4K_ST2018_6G_Squares_2SI_RGB_Capture",
  579. {"UHD4K_ST2018_6G_Squares_2SI_RGB_Capture",
  580. ConnectionKind::SDI,
  581. NTV2_MODE_CAPTURE,
  582. RasterDefinition::UHD_4K,
  583. HDMIWireFormat::Unknown,
  584. VPIDStandard_2160_Single_6Gb,
  585. 1,
  586. 1,
  587. kEnable4KTSI,
  588. "sdi[{ch1}][0]->dli[{ch1}][0];"
  589. "sdi[{ch1}][1]->dli[{ch1}][1];"
  590. "dli[{ch1}][0]->fb[{ch1}][0];",
  591. {},
  592. true,
  593. false}},
  594. {"UHD4K_ST2018_6G_Squares_2SI_RGB_Capture (Kona5/io4K+)",
  595. {"UHD4K_ST2018_6G_Squares_2SI_RGB_Capture (Kona5/io4K+)",
  596. ConnectionKind::SDI,
  597. NTV2_MODE_CAPTURE,
  598. RasterDefinition::UHD_4K,
  599. HDMIWireFormat::Unknown,
  600. VPIDStandard_2160_Single_6Gb,
  601. 4,
  602. 4,
  603. kEnable4KTSI,
  604. "sdi[{ch1}][0]->dli[{ch1}][0];"
  605. "sdi[{ch1}][1]->dli[{ch1}][1];"
  606. "sdi[{ch2}][0]->dli[{ch2}][0];"
  607. "sdi[{ch2}][1]->dli[{ch2}][1];"
  608. "sdi[{ch3}][0]->dli[{ch3}][0];"
  609. "sdi[{ch3}][1]->dli[{ch3}][1];"
  610. "sdi[{ch4}][0]->dli[{ch4}][0];"
  611. "sdi[{ch4}][1]->dli[{ch4}][1];"
  612. "dli[{ch1}][0]->tsi[{ch1}][0];"
  613. "dli[{ch2}][0]->tsi[{ch1}][1];"
  614. "dli[{ch3}][0]->tsi[{ch2}][0];"
  615. "dli[{ch4}][0]->tsi[{ch2}][1];"
  616. "tsi[{ch1}][2]->fb[{ch1}][0];"
  617. "tsi[{ch1}][3]->fb[{ch1}][1];"
  618. "tsi[{ch2}][2]->fb[{ch2}][0];"
  619. "tsi[{ch2}][3]->fb[{ch2}][1];",
  620. {DEVICE_ID_KONA5, DEVICE_ID_IO4KPLUS},
  621. true,
  622. true}},
  623. {"UHD4K_ST2018_12G_Squares_2SI_RGB_Capture",
  624. {"UHD4K_ST2018_12G_Squares_2SI_RGB_Capture",
  625. ConnectionKind::SDI,
  626. NTV2_MODE_CAPTURE,
  627. RasterDefinition::UHD_4K,
  628. HDMIWireFormat::Unknown,
  629. VPIDStandard_2160_Single_12Gb,
  630. 1,
  631. 1,
  632. kEnable4KTSI,
  633. "sdi[{ch1}][0]->dli[{ch1}][0];"
  634. "sdi[{ch1}][1]->dli[{ch1}][1];"
  635. "dli[{ch1}][0]->fb[{ch1}][0];",
  636. {},
  637. true,
  638. false}},
  639. {"UHD4K_ST2018_12G_Squares_2SI_RGB_Capture (Kona5/io4K+)",
  640. {"UHD4K_ST2018_12G_Squares_2SI_RGB_Capture (Kona5/io4K+)",
  641. ConnectionKind::SDI,
  642. NTV2_MODE_CAPTURE,
  643. RasterDefinition::UHD_4K,
  644. HDMIWireFormat::Unknown,
  645. VPIDStandard_2160_Single_12Gb,
  646. 4,
  647. 4,
  648. kEnable4KTSI,
  649. "sdi[{ch1}][0]->dli[{ch1}][0];"
  650. "sdi[{ch1}][1]->dli[{ch1}][1];"
  651. "sdi[{ch2}][0]->dli[{ch2}][0];"
  652. "sdi[{ch2}][1]->dli[{ch2}][1];"
  653. "sdi[{ch3}][0]->dli[{ch3}][0];"
  654. "sdi[{ch3}][1]->dli[{ch3}][1];"
  655. "sdi[{ch4}][0]->dli[{ch4}][0];"
  656. "sdi[{ch4}][1]->dli[{ch4}][1];"
  657. "dli[{ch1}][0]->tsi[{ch1}][0];"
  658. "dli[{ch2}][0]->tsi[{ch1}][1];"
  659. "dli[{ch3}][0]->tsi[{ch2}][0];"
  660. "dli[{ch4}][0]->tsi[{ch2}][1];"
  661. "tsi[{ch1}][2]->fb[{ch1}][0];"
  662. "tsi[{ch1}][3]->fb[{ch1}][1];"
  663. "tsi[{ch2}][2]->fb[{ch2}][0];"
  664. "tsi[{ch2}][3]->fb[{ch2}][1];",
  665. {DEVICE_ID_KONA5, DEVICE_ID_IO4KPLUS},
  666. true,
  667. true}},
  668. /////////////////////////////////
  669. /*
  670. * SDI RGB Display
  671. */
  672. {"HD_720p_ST292_RGB_Display",
  673. {"HD_720p_ST292_RGB_Display",
  674. ConnectionKind::SDI,
  675. NTV2_MODE_DISPLAY,
  676. RasterDefinition::HD,
  677. HDMIWireFormat::Unknown,
  678. VPIDStandard_720,
  679. 1,
  680. 1,
  681. 0,
  682. "fb[{ch1}][2]->dlo[{ch1}][0];"
  683. "dlo[{ch1}][0]->sdi[{ch1}[0];"
  684. "dlo[{ch1}][1]->sdi[{ch2}][0];",
  685. {},
  686. true,
  687. false}},
  688. {"HD_1080_ST292_RGB_Display",
  689. {"HD_1080_ST292_RGB_Display",
  690. ConnectionKind::SDI,
  691. NTV2_MODE_DISPLAY,
  692. RasterDefinition::HD,
  693. HDMIWireFormat::Unknown,
  694. VPIDStandard_1080,
  695. 1,
  696. 1,
  697. 0,
  698. "fb[{ch1}][2]->dlo[{ch1}][0];"
  699. "dlo[{ch1}][0]->sdi[{ch1}[0];"
  700. "dlo[{ch1}][1]->sdi[{ch2}][0];",
  701. {},
  702. true,
  703. false}},
  704. {"HD_1080_ST372_Dual_RGB_Display",
  705. {"HD_1080_ST372_Dual_RGB_Display",
  706. ConnectionKind::SDI,
  707. NTV2_MODE_DISPLAY,
  708. RasterDefinition::HD,
  709. HDMIWireFormat::Unknown,
  710. VPIDStandard_1080_DualLink,
  711. 2,
  712. 1,
  713. 0,
  714. "fb[{ch1}][2]->dlo[{ch1}][0];"
  715. "dlo[{ch1}][0]->sdi[{ch1}[0];"
  716. "dlo[{ch1}][1]->sdi[{ch2}][0];",
  717. {},
  718. true,
  719. false}},
  720. {"HD_720p_ST425_3Ga_RGB_Display",
  721. {"HD_720p_ST425_3Ga_RGB_Display",
  722. ConnectionKind::SDI,
  723. NTV2_MODE_DISPLAY,
  724. RasterDefinition::HD,
  725. HDMIWireFormat::Unknown,
  726. VPIDStandard_720_3Ga,
  727. 1,
  728. 1,
  729. (kEnable3GOut | kConvert3GaRGBOut),
  730. "fb[{ch1}][2]->dlo[{ch1}][0];"
  731. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  732. "dlo[{ch1}][1]->sdi[{ch1}][1];",
  733. {},
  734. true,
  735. false}},
  736. {"HD_1080p_ST425_3Ga_RGB_Display",
  737. {"HD_1080p_ST425_3Ga_RGB_Display",
  738. ConnectionKind::SDI,
  739. NTV2_MODE_DISPLAY,
  740. RasterDefinition::HD,
  741. HDMIWireFormat::Unknown,
  742. VPIDStandard_1080_3Ga,
  743. 1,
  744. 1,
  745. (kEnable3GOut | kConvert3GaRGBOut),
  746. "fb[{ch1}][2]->dlo[{ch1}][0];"
  747. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  748. "dlo[{ch1}][1]->sdi[{ch1}][1];",
  749. {},
  750. true,
  751. false}},
  752. {"HD_1080p_ST425_3Gb_DL_RGB_Display",
  753. {"HD_1080p_ST425_3Gb_DL_RGB_Display",
  754. ConnectionKind::SDI,
  755. NTV2_MODE_DISPLAY,
  756. RasterDefinition::HD,
  757. HDMIWireFormat::Unknown,
  758. VPIDStandard_1080_DualLink_3Gb,
  759. 1,
  760. 1,
  761. (kEnable3GOut | kEnable3GbOut),
  762. "fb[{ch1}][2]->dlo[{ch1}][0];"
  763. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  764. "dlo[{ch1}][1]->sdi[{ch1}][1];",
  765. {},
  766. true,
  767. false}},
  768. {"HD_720p_ST425_3Gb_RGB_Display",
  769. {"HD_720p_ST425_3Gb_RGB_Display",
  770. ConnectionKind::SDI,
  771. NTV2_MODE_DISPLAY,
  772. RasterDefinition::HD,
  773. HDMIWireFormat::Unknown,
  774. VPIDStandard_720_3Gb,
  775. 1,
  776. 2,
  777. (kEnable3GOut | kEnable3GbOut),
  778. "fb[{ch1}][2]->dlo[{ch1}][0];"
  779. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  780. "dlo[{ch1}][1]->sdi[{ch1}][1];",
  781. {},
  782. true,
  783. false}},
  784. {"HD_1080p_ST425_3Gb_RGB_Display",
  785. {"HD_1080p_ST425_3Gb_RGB_Display",
  786. ConnectionKind::SDI,
  787. NTV2_MODE_DISPLAY,
  788. RasterDefinition::HD,
  789. HDMIWireFormat::Unknown,
  790. VPIDStandard_1080_3Gb,
  791. 1,
  792. 2,
  793. (kEnable3GOut | kEnable3GbOut),
  794. "fb[{ch1}][2]->dlo[{ch1}][0];"
  795. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  796. "dlo[{ch1}][1]->sdi[{ch1}][1];",
  797. {},
  798. true,
  799. false}},
  800. // { "HD_1080p_ST425_Dual_3Ga_RGB_Display", {
  801. // "HD_1080p_ST425_Dual_3Ga_RGB_Display",
  802. // ConnectionKind::SDI,
  803. // NTV2_MODE_DISPLAY,
  804. // 2, 2,
  805. // kEnable3GOut,
  806. // "",
  807. // {},
  808. // RasterDefinition::HD,
  809. // HDMIWireFormat::Unknown,
  810. // VPIDStandard_1080_Dual_3Ga, true, false}},
  811. // { "HD_1080p_ST425_Dual_3Gb_RGB_Display", {
  812. // "HD_1080p_ST425_Dual_3Gb_RGB_Display",
  813. // ConnectionKind::SDI,
  814. // NTV2_MODE_DISPLAY,
  815. // 2, 2,
  816. // (kEnable3GOut | kEnable3GbOut),
  817. // "",
  818. // {},
  819. // RasterDefinition::HD,
  820. // HDMIWireFormat::Unknown,
  821. // VPIDStandard_1080_Dual_3Gb, true, false}},
  822. // { "UHD4K_ST292_Quad_1_5_Squares_RGB_Display", {
  823. // "UHD4K_ST292_Quad_1_5_Squares_RGB_Display",
  824. // ConnectionKind::SDI,
  825. // NTV2_MODE_DISPLAY,
  826. // 4, 4,
  827. // kEnable4KSquares,
  828. // "",
  829. // {},
  830. // RasterDefinition::UHD_4K,
  831. // HDMIWireFormat::Unknown,
  832. // VPIDStandard_1080, true, false}},
  833. // { "UHD4K_ST425_Quad_3Ga_Squares_RGB_Display", {
  834. // "UHD4K_ST425_Quad_3Ga_Squares_RGB_Display",
  835. // ConnectionKind::SDI,
  836. // NTV2_MODE_DISPLAY,
  837. // 4, 4,
  838. // (kEnable3GOut | kEnable4KSquares),
  839. // "",
  840. // {},
  841. // RasterDefinition::UHD_4K,
  842. // HDMIWireFormat::Unknown,
  843. // VPIDStandard_1080_3Ga, true, false}},
  844. {"UHD4K_ST425_Quad_3Gb_Squares_RGB_Display",
  845. {"UHD4K_ST425_Quad_3Gb_Squares_RGB_Display",
  846. ConnectionKind::SDI,
  847. NTV2_MODE_DISPLAY,
  848. RasterDefinition::UHD_4K,
  849. HDMIWireFormat::Unknown,
  850. VPIDStandard_1080_DualLink_3Gb,
  851. 4,
  852. 4,
  853. (kEnable3GOut | kEnable3GbOut | kEnable4KSquares),
  854. // Framestores -> Dual-Links
  855. "fb[{ch1}][2]->dlo[{ch1}][0];"
  856. "fb[{ch2}][2]->dlo[{ch2}][0];"
  857. "fb[{ch3}][2]->dlo[{ch3}][0];"
  858. "fb[{ch4}][2]->dlo[{ch4}][0];" // Dual-Links -> SDIs
  859. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  860. "dlo[{ch1}][1]->sdi[{ch1}][1];"
  861. "dlo[{ch2}][0]->sdi[{ch2}][0];"
  862. "dlo[{ch2}][1]->sdi[{ch2}][1];"
  863. "dlo[{ch3}][0]->sdi[{ch3}][0];"
  864. "dlo[{ch3}][1]->sdi[{ch3}][1];"
  865. "dlo[{ch4}][0]->sdi[{ch4}][0];"
  866. "dlo[{ch4}][1]->sdi[{ch4}][1];",
  867. {},
  868. true,
  869. false}},
  870. // { "UHD4K_ST425_Dual_3Gb_2SI_RGB_Display", {
  871. // "UHD4K_ST425_Dual_3Gb_2SI_RGB_Display",
  872. // ConnectionKind::SDI,
  873. // NTV2_MODE_DISPLAY,
  874. // 2, 4,
  875. // (kEnable3GOut | kEnable3GbOut | kEnable4KSquares),
  876. // "",
  877. // {},
  878. // RasterDefinition::UHD_4K,
  879. // HDMIWireFormat::Unknown,
  880. // VPIDStandard_2160_DualLink, true, false}},
  881. {"UHD4K_ST425_Quad_3Ga_2SI_RGB_Display",
  882. {"UHD4K_ST425_Quad_3Ga_2SI_RGB_Display",
  883. ConnectionKind::SDI,
  884. NTV2_MODE_DISPLAY,
  885. RasterDefinition::UHD_4K,
  886. HDMIWireFormat::Unknown,
  887. VPIDStandard_2160_QuadLink_3Ga,
  888. 4,
  889. 4,
  890. (kEnable3GOut | kEnable4KTSI),
  891. "fb[{ch1}][2]->tsi[{ch1}][0];"
  892. "fb[{ch1}][3]->tsi[{ch1}][1];"
  893. "fb[{ch2}][2]->tsi[{ch2}][0];"
  894. "fb[{ch2}][3]->tsi[{ch2}][1];"
  895. "tsi[{ch1}][2]->dlo[{ch1}][0];"
  896. "tsi[{ch1}][3]->dlo[{ch2}][0];"
  897. "tsi[{ch2}][2]->dlo[{ch3}][0];"
  898. "tsi[{ch2}][3]->dlo[{ch4}][0];"
  899. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  900. "dlo[{ch1}][1]->sdi[{ch1}][1];"
  901. "dlo[{ch2}][0]->sdi[{ch2}][0];"
  902. "dlo[{ch2}][1]->sdi[{ch2}][1];"
  903. "dlo[{ch3}][0]->sdi[{ch3}][0];"
  904. "dlo[{ch3}][1]->sdi[{ch3}][1];"
  905. "dlo[{ch4}][0]->sdi[{ch4}][0];"
  906. "dlo[{ch4}][1]->sdi[{ch4}][1];",
  907. {},
  908. true,
  909. false}},
  910. {"UHD4K_ST425_Quad_3Gb_2SI_RGB_Display",
  911. {"UHD4K_ST425_Quad_3Gb_2SI_RGB_Display",
  912. ConnectionKind::SDI,
  913. NTV2_MODE_DISPLAY,
  914. RasterDefinition::UHD_4K,
  915. HDMIWireFormat::Unknown,
  916. VPIDStandard_2160_QuadDualLink_3Gb,
  917. 4,
  918. 4,
  919. (kEnable3GOut | kEnable4KTSI),
  920. "fb[{ch1}][2]->tsi[{ch1}][0];"
  921. "fb[{ch1}][3]->tsi[{ch1}][1];"
  922. "fb[{ch2}][2]->tsi[{ch2}][0];"
  923. "fb[{ch2}][3]->tsi[{ch2}][1];"
  924. "tsi[{ch1}][2]->dlo[{ch1}][0];"
  925. "tsi[{ch1}][3]->dlo[{ch2}][0];"
  926. "tsi[{ch2}][2]->dlo[{ch3}][0];"
  927. "tsi[{ch2}][3]->dlo[{ch4}][0];"
  928. "dlo[{ch1}][0]->sdi[{ch1}][0];"
  929. "dlo[{ch1}][1]->sdi[{ch1}][1];"
  930. "dlo[{ch2}][0]->sdi[{ch2}][0];"
  931. "dlo[{ch2}][1]->sdi[{ch2}][1];"
  932. "dlo[{ch3}][0]->sdi[{ch3}][0];"
  933. "dlo[{ch3}][1]->sdi[{ch3}][1];"
  934. "dlo[{ch4}][0]->sdi[{ch4}][0];"
  935. "dlo[{ch4}][1]->sdi[{ch4}][1];",
  936. {},
  937. true,
  938. false}},
  939. // TODO(paulh): Find out proper settings for this route
  940. // { "UHD4K_ST2018_6G_Squares_2SI_RGB_Display", {
  941. // "UHD4K_ST2018_6G_Squares_2SI_RGB_Display",
  942. // ConnectionKind::SDI,
  943. // NTV2_MODE_DISPLAY,
  944. // 2, 4,
  945. // (kEnable6GOut | kEnable4KTSI),
  946. // "",
  947. // {},
  948. // RasterDefinition::UHD_4K,
  949. // HDMIWireFormat::Unknown,
  950. // VPIDStandard_2160_Single_6Gb, true, false}},
  951. // TODO(paulh): Find out proper settings for this route
  952. // { "UHD4K_ST2018_12G_Squares_2SI_RGB_Display", {
  953. // "UHD4K_ST2018_12G_Squares_2SI_RGB_Display",
  954. // ConnectionKind::SDI,
  955. // NTV2_MODE_DISPLAY,
  956. // 2, 4,
  957. // (kEnable12GOut | kEnable4KTSI),
  958. // "",
  959. // {},
  960. // RasterDefinition::UHD_4K,
  961. // HDMIWireFormat::Unknown,
  962. // VPIDStandard_2160_Single_12Gb, true, false}},
  963. // { "UHD28K_ST2082_Dual_12G_RGB_Display", {
  964. // "UHD28K_ST2082_Dual_12G_RGB_Display",
  965. // ConnectionKind::SDI,
  966. // NTV2_MODE_DISPLAY,
  967. // 2, 4,
  968. // (kEnable12GOut | kEnable4KTSI),
  969. // "",
  970. // {},
  971. // RasterDefinition::UHD_4K,
  972. // HDMIWireFormat::Unknown,
  973. // VPIDStandard_4320_DualLink_12Gb, true, false}},
  974. // { "UHD28K_ST2082_RGB_Dual_12G_RGB_Display", {
  975. // "UHD28K_ST2082_RGB_Dual_12G_RGB_Display",
  976. // ConnectionKind::SDI,
  977. // NTV2_MODE_DISPLAY,
  978. // 2, 4,
  979. // (kEnable12GOut | kEnable4KTSI),
  980. // "",
  981. // {},
  982. // RasterDefinition::UHD_4K,
  983. // HDMIWireFormat::Unknown,
  984. // VPIDStandard_2160_DualLink_12Gb, true, false}},
  985. // { "UHD28K_ST2082_Quad_12G_RGB_Display", {
  986. // "UHD28K_ST2082_Quad_12G_RGB_Display",
  987. // ConnectionKind::SDI,
  988. // NTV2_MODE_DISPLAY,
  989. // 2, 4,
  990. // (kEnable12GOut | kEnable4KTSI),
  991. // "",
  992. // {},
  993. // RasterDefinition::UHD_4K,
  994. // HDMIWireFormat::Unknown,
  995. // VPIDStandard_4320_QuadLink_12Gb, true, false}},
  996. /*
  997. * SDI YCbCr Capture
  998. */
  999. {"SD_ST352_YCbCr_Capture",
  1000. {"SD_ST352_YCbCr_Capture",
  1001. ConnectionKind::SDI,
  1002. NTV2_MODE_CAPTURE,
  1003. RasterDefinition::SD,
  1004. HDMIWireFormat::Unknown,
  1005. VPIDStandard_483_576,
  1006. 1,
  1007. 1,
  1008. 0,
  1009. "sdi[{ch1}][0]->fb[{ch1}][0]",
  1010. {},
  1011. false,
  1012. false}},
  1013. {"HD_720p_ST292_YCbCr_Capture",
  1014. {"HD_720p_ST292_YCbCr_Capture",
  1015. ConnectionKind::SDI,
  1016. NTV2_MODE_CAPTURE,
  1017. RasterDefinition::HD,
  1018. HDMIWireFormat::Unknown,
  1019. VPIDStandard_720,
  1020. 1,
  1021. 1,
  1022. 0,
  1023. "sdi[{ch1}][0]->fb[{ch1}][0]",
  1024. {},
  1025. false,
  1026. false}},
  1027. {"HD_1080_ST292_YCbCr_Capture",
  1028. {"HD_1080_ST292_YCbCr_Capture",
  1029. ConnectionKind::SDI,
  1030. NTV2_MODE_CAPTURE,
  1031. RasterDefinition::HD,
  1032. HDMIWireFormat::Unknown,
  1033. VPIDStandard_1080,
  1034. 1,
  1035. 1,
  1036. 0,
  1037. "sdi[{ch1}][0]->fb[{ch1}][0]",
  1038. {},
  1039. false,
  1040. false}},
  1041. {"HD_1080_ST372_Dual_YCbCr_Capture",
  1042. {"HD_1080_ST372_Dual_YCbCr_Capture",
  1043. ConnectionKind::SDI,
  1044. NTV2_MODE_CAPTURE,
  1045. RasterDefinition::HD,
  1046. HDMIWireFormat::Unknown,
  1047. VPIDStandard_1080_DualLink,
  1048. 2,
  1049. 2,
  1050. 0,
  1051. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1052. "sdi[{ch2}][0]->fb[{ch2}][0]",
  1053. {},
  1054. false,
  1055. false}},
  1056. {"HD_720p_ST425_3Ga_YCbCr_Capture",
  1057. {"HD_720p_ST425_3Ga_YCbCr_Capture",
  1058. ConnectionKind::SDI,
  1059. NTV2_MODE_CAPTURE,
  1060. RasterDefinition::HD,
  1061. HDMIWireFormat::Unknown,
  1062. VPIDStandard_720_3Ga,
  1063. 1,
  1064. 1,
  1065. kEnable3GOut,
  1066. "sdi[{ch1}][0]->fb[{ch1}][0]",
  1067. {},
  1068. false,
  1069. false}},
  1070. {"HD_1080p_ST425_3Ga_YCbCr_Capture",
  1071. {"HD_1080p_ST425_3Ga_YCbCr_Capture",
  1072. ConnectionKind::SDI,
  1073. NTV2_MODE_CAPTURE,
  1074. RasterDefinition::HD,
  1075. HDMIWireFormat::Unknown,
  1076. VPIDStandard_1080_3Ga,
  1077. 1,
  1078. 1,
  1079. kEnable3GOut,
  1080. "sdi[{ch1}][0]->fb[{ch1}][0]",
  1081. {},
  1082. false,
  1083. false}},
  1084. {"HD_1080p_ST425_3Gb_DL_YCbCr_Capture",
  1085. {"HD_1080p_ST425_3Gb_DL_YCbCr_Capture",
  1086. ConnectionKind::SDI,
  1087. NTV2_MODE_CAPTURE,
  1088. RasterDefinition::HD,
  1089. HDMIWireFormat::Unknown,
  1090. VPIDStandard_1080_DualLink_3Gb,
  1091. 1,
  1092. 1,
  1093. (kEnable3GOut | kConvert3GIn | kConvert3GOut),
  1094. "sdi[{ch1}][0]->fb[{ch1}][0]",
  1095. {},
  1096. false,
  1097. false}},
  1098. {"HD_720p_ST425_3Gb_YCbCr_Capture",
  1099. {"HD_720p_ST425_3Gb_YCbCr_Capture",
  1100. ConnectionKind::SDI,
  1101. NTV2_MODE_CAPTURE,
  1102. RasterDefinition::HD,
  1103. HDMIWireFormat::Unknown,
  1104. VPIDStandard_720_3Gb,
  1105. 1,
  1106. 2,
  1107. kEnable3GOut,
  1108. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1109. "sdi[{ch1}][1]->fb[{ch2}][0];",
  1110. {},
  1111. false,
  1112. false}},
  1113. {"HD_1080p_ST425_3Gb_YCbCr_Capture",
  1114. {"HD_1080p_ST425_3Gb_YCbCr_Capture",
  1115. ConnectionKind::SDI,
  1116. NTV2_MODE_CAPTURE,
  1117. RasterDefinition::HD,
  1118. HDMIWireFormat::Unknown,
  1119. VPIDStandard_1080_3Gb,
  1120. 1,
  1121. 2,
  1122. kEnable3GOut,
  1123. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1124. "sdi[{ch1}][1]->fb[{ch2}][0];",
  1125. {},
  1126. false,
  1127. false}},
  1128. {"HD_1080p_ST425_Dual_3Ga_YCbCr_Capture",
  1129. {"HD_1080p_ST425_Dual_3Ga_YCbCr_Capture",
  1130. ConnectionKind::SDI,
  1131. NTV2_MODE_CAPTURE,
  1132. RasterDefinition::HD,
  1133. HDMIWireFormat::Unknown,
  1134. VPIDStandard_1080_Dual_3Ga,
  1135. 2,
  1136. 2,
  1137. 0,
  1138. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1139. "sdi[{ch2}][0]->fb[{ch2}][0];",
  1140. {},
  1141. false,
  1142. false}},
  1143. {"HD_1080p_ST425_Dual_3Gb_YCbCr_Capture",
  1144. {"HD_1080p_ST425_Dual_3Gb_YCbCr_Capture",
  1145. ConnectionKind::SDI,
  1146. NTV2_MODE_CAPTURE,
  1147. RasterDefinition::HD,
  1148. HDMIWireFormat::Unknown,
  1149. VPIDStandard_1080_Dual_3Gb,
  1150. 2,
  1151. 2,
  1152. 0,
  1153. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1154. "sdi[{ch2}][0]->fb[{ch2}][0];",
  1155. {},
  1156. false,
  1157. false}},
  1158. {"UHD4K_ST292_Quad_1_5_Squares_YCbCr_Capture",
  1159. {"UHD4K_ST292_Quad_1_5_Squares_YCbCr_Capture",
  1160. ConnectionKind::SDI,
  1161. NTV2_MODE_CAPTURE,
  1162. RasterDefinition::UHD_4K,
  1163. HDMIWireFormat::Unknown,
  1164. VPIDStandard_1080,
  1165. 4,
  1166. 4,
  1167. kEnable4KSquares,
  1168. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1169. "sdi[{ch2}][0]->fb[{ch2}][0];"
  1170. "sdi[{ch3}][0]->fb[{ch3}][0];"
  1171. "sdi[{ch4}][0]->fb[{ch4}][0];",
  1172. {},
  1173. false,
  1174. false}},
  1175. {"UHD4K_ST425_Quad_3Ga_Squares_YCbCr_Capture",
  1176. {"UHD4K_ST425_Quad_3Ga_Squares_YCbCr_Capture",
  1177. ConnectionKind::SDI,
  1178. NTV2_MODE_CAPTURE,
  1179. RasterDefinition::UHD_4K,
  1180. HDMIWireFormat::Unknown,
  1181. VPIDStandard_1080_3Ga,
  1182. 4,
  1183. 4,
  1184. kEnable4KSquares,
  1185. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1186. "sdi[{ch2}][0]->fb[{ch2}][0];"
  1187. "sdi[{ch3}][0]->fb[{ch3}][0];"
  1188. "sdi[{ch4}][0]->fb[{ch4}][0];",
  1189. {},
  1190. false,
  1191. false}},
  1192. {"UHD4K_ST425_Quad_3Gb_Squares_YCbCr_Capture",
  1193. {"UHD4K_ST425_Quad_3Gb_Squares_YCbCr_Capture",
  1194. ConnectionKind::SDI,
  1195. NTV2_MODE_CAPTURE,
  1196. RasterDefinition::UHD_4K,
  1197. HDMIWireFormat::Unknown,
  1198. VPIDStandard_1080_DualLink_3Gb,
  1199. 4,
  1200. 4,
  1201. kEnable4KSquares | kConvert3GIn,
  1202. "sdi[{ch1}][0]->fb[{ch1}][0];"
  1203. "sdi[{ch2}][0]->fb[{ch2}][0];"
  1204. "sdi[{ch3}][0]->fb[{ch3}][0];"
  1205. "sdi[{ch4}][0]->fb[{ch4}][0];",
  1206. {},
  1207. false,
  1208. false}},
  1209. {"UHD4K_ST425_Dual_3Gb_2SI_YCbCr_Capture",
  1210. {"UHD4K_ST425_Dual_3Gb_2SI_YCbCr_Capture",
  1211. ConnectionKind::SDI,
  1212. NTV2_MODE_CAPTURE,
  1213. RasterDefinition::UHD_4K,
  1214. HDMIWireFormat::Unknown,
  1215. VPIDStandard_2160_DualLink,
  1216. 2,
  1217. 2,
  1218. kEnable4KTSI,
  1219. "sdi[{ch1}][0]->tsi[{ch1}][0];"
  1220. "sdi[{ch1}][1]->tsi[{ch1}][1];"
  1221. "sdi[{ch2}][0]->tsi[{ch2}][0];"
  1222. "sdi[{ch2}][1]->tsi[{ch2}][1];"
  1223. "tsi[{ch1}][0]->fb[{ch1}][0];"
  1224. "tsi[{ch1}][1]->fb[{ch1}][1];"
  1225. "tsi[{ch2}][0]->fb[{ch2}][0];"
  1226. "tsi[{ch2}][1]->fb[{ch2}][1];",
  1227. {},
  1228. false,
  1229. false}},
  1230. {"UHD4K_ST425_Quad_3Ga_2SI_YCbCr_Capture",
  1231. {"UHD4K_ST425_Quad_3Ga_2SI_YCbCr_Capture",
  1232. ConnectionKind::SDI,
  1233. NTV2_MODE_CAPTURE,
  1234. RasterDefinition::UHD_4K,
  1235. HDMIWireFormat::Unknown,
  1236. VPIDStandard_2160_QuadLink_3Ga,
  1237. 4,
  1238. 4,
  1239. kEnable4KTSI,
  1240. "sdi[{ch1}][0]->tsi[{ch1}][0];"
  1241. "sdi[{ch2}][0]->tsi[{ch1}][1];"
  1242. "sdi[{ch3}][0]->tsi[{ch2}][0];"
  1243. "sdi[{ch4}][0]->tsi[{ch2}][1];"
  1244. "tsi[{ch1}][0]->fb[{ch1}][0];"
  1245. "tsi[{ch1}][1]->fb[{ch1}][1];"
  1246. "tsi[{ch2}][0]->fb[{ch2}][0];"
  1247. "tsi[{ch2}][1]->fb[{ch2}][1];",
  1248. {},
  1249. false,
  1250. false}},
  1251. {"UHD4K_ST425_Quad_3Gb_2SI_YCbCr_Capture",
  1252. {"UHD4K_ST425_Quad_3Gb_2SI_YCbCr_Capture",
  1253. ConnectionKind::SDI,
  1254. NTV2_MODE_CAPTURE,
  1255. RasterDefinition::UHD_4K,
  1256. HDMIWireFormat::Unknown,
  1257. VPIDStandard_2160_QuadDualLink_3Gb,
  1258. 4,
  1259. 4,
  1260. (kConvert3GIn | kEnable4KTSI),
  1261. "sdi[{ch1}][0]->tsi[{ch1}][0];"
  1262. "sdi[{ch2}][0]->tsi[{ch1}][1];"
  1263. "sdi[{ch3}][0]->tsi[{ch2}][0];"
  1264. "sdi[{ch4}][0]->tsi[{ch2}][1];"
  1265. "tsi[{ch1}][0]->fb[{ch1}][0];"
  1266. "tsi[{ch1}][1]->fb[{ch1}][1];"
  1267. "tsi[{ch2}][0]->fb[{ch2}][0];"
  1268. "tsi[{ch2}][1]->fb[{ch2}][1];",
  1269. {},
  1270. false,
  1271. false}},
  1272. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Capture",
  1273. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Capture",
  1274. ConnectionKind::SDI,
  1275. NTV2_MODE_CAPTURE,
  1276. RasterDefinition::UHD_4K,
  1277. HDMIWireFormat::Unknown,
  1278. VPIDStandard_2160_Single_6Gb,
  1279. 1,
  1280. 1,
  1281. (kEnable6GOut | kEnable4KTSI),
  1282. "sdi[{ch1}][0]->fb[{ch1}][0];",
  1283. {},
  1284. false,
  1285. false}},
  1286. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Capture (Kona5/io4K+)",
  1287. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Capture (Kona5/io4K+)",
  1288. ConnectionKind::SDI,
  1289. NTV2_MODE_CAPTURE,
  1290. RasterDefinition::UHD_4K,
  1291. HDMIWireFormat::Unknown,
  1292. VPIDStandard_2160_Single_6Gb,
  1293. 4,
  1294. 4,
  1295. (kEnable6GOut | kEnable4KTSI),
  1296. "sdi[{ch1}][0]->tsi[{ch1}][0];"
  1297. "sdi[{ch2}][0]->tsi[{ch1}][1];"
  1298. "sdi[{ch3}][0]->tsi[{ch2}][0];"
  1299. "sdi[{ch4}][0]->tsi[{ch2}][1];"
  1300. "tsi[{ch1}][0]->fb[{ch1}][0];"
  1301. "tsi[{ch1}][1]->fb[{ch1}][1];"
  1302. "tsi[{ch2}][0]->fb[{ch2}][0];"
  1303. "tsi[{ch2}][1]->fb[{ch2}][1];",
  1304. {DEVICE_ID_KONA5, DEVICE_ID_IO4KPLUS},
  1305. false,
  1306. false}},
  1307. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Capture",
  1308. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Capture",
  1309. ConnectionKind::SDI,
  1310. NTV2_MODE_CAPTURE,
  1311. RasterDefinition::UHD_4K,
  1312. HDMIWireFormat::Unknown,
  1313. VPIDStandard_2160_Single_12Gb,
  1314. 1,
  1315. 1,
  1316. (kEnable12GOut | kConvert3GaRGBOut | kEnable4KTSI),
  1317. "sdi[{ch1}][0]->fb[{ch1}][0];",
  1318. {},
  1319. false,
  1320. false}},
  1321. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Capture (Kona5/io4K+)",
  1322. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Capture (Kona5/io4K+)",
  1323. ConnectionKind::SDI,
  1324. NTV2_MODE_CAPTURE,
  1325. RasterDefinition::UHD_4K,
  1326. HDMIWireFormat::Unknown,
  1327. VPIDStandard_2160_Single_12Gb,
  1328. 4,
  1329. 4,
  1330. (kEnable6GOut | kEnable4KTSI),
  1331. "sdi[{ch1}][0]->tsi[{ch1}][0];"
  1332. "sdi[{ch2}][0]->tsi[{ch1}][1];"
  1333. "sdi[{ch3}][0]->tsi[{ch2}][0];"
  1334. "sdi[{ch4}][0]->tsi[{ch2}][1];"
  1335. "tsi[{ch1}][0]->fb[{ch1}][0];"
  1336. "tsi[{ch1}][1]->fb[{ch1}][1];"
  1337. "tsi[{ch2}][0]->fb[{ch2}][0];"
  1338. "tsi[{ch2}][1]->fb[{ch2}][1];",
  1339. {DEVICE_ID_KONA5, DEVICE_ID_IO4KPLUS},
  1340. false,
  1341. false}},
  1342. // TODO
  1343. {"UHD28K_ST2082_Dual_12G_YCbCr_Capture",
  1344. {"UHD28K_ST2082_Dual_12G_YCbCr_Capture",
  1345. ConnectionKind::SDI,
  1346. NTV2_MODE_CAPTURE,
  1347. RasterDefinition::UHD_4K,
  1348. HDMIWireFormat::Unknown,
  1349. VPIDStandard_4320_DualLink_12Gb,
  1350. 2,
  1351. 2,
  1352. (kEnable12GOut | kConvert3GaRGBOut | kEnable4KTSI),
  1353. "sdi[{ch1}][0]->fb[{ch1}][0];",
  1354. {},
  1355. false,
  1356. false}},
  1357. // TODO
  1358. {"UHD28K_ST2082_Quad_12G_YCbCr_Capture",
  1359. {"UHD28K_ST2082_Quad_12G_YCbCr_Capture",
  1360. ConnectionKind::SDI,
  1361. NTV2_MODE_CAPTURE,
  1362. RasterDefinition::UHD_4K,
  1363. HDMIWireFormat::Unknown,
  1364. VPIDStandard_4320_QuadLink_12Gb,
  1365. 4,
  1366. 4,
  1367. (kEnable12GOut | kConvert3GaRGBOut | kEnable4KTSI),
  1368. "sdi[{ch1}][0]->fb[{ch1}][0];",
  1369. {},
  1370. false,
  1371. false}},
  1372. /*
  1373. * SDI YCbCr Display
  1374. */
  1375. {"SD_ST352_YCbCr_Display",
  1376. {"SD_ST352_YCbCr_Display",
  1377. ConnectionKind::SDI,
  1378. NTV2_MODE_DISPLAY,
  1379. RasterDefinition::SD,
  1380. HDMIWireFormat::Unknown,
  1381. VPIDStandard_483_576,
  1382. 1,
  1383. 1,
  1384. 0,
  1385. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1386. {},
  1387. false,
  1388. false}},
  1389. {"HD_720p_ST292_YCbCr_Display",
  1390. {"HD_720p_ST292_YCbCr_Display",
  1391. ConnectionKind::SDI,
  1392. NTV2_MODE_DISPLAY,
  1393. RasterDefinition::HD,
  1394. HDMIWireFormat::Unknown,
  1395. VPIDStandard_720,
  1396. 1,
  1397. 1,
  1398. 0,
  1399. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1400. {},
  1401. false,
  1402. false}},
  1403. {"HD_1080_ST292_YCbCr_Display",
  1404. {"HD_1080_ST292_YCbCr_Display",
  1405. ConnectionKind::SDI,
  1406. NTV2_MODE_DISPLAY,
  1407. RasterDefinition::HD,
  1408. HDMIWireFormat::Unknown,
  1409. VPIDStandard_1080,
  1410. 1,
  1411. 1,
  1412. 0,
  1413. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1414. {},
  1415. false,
  1416. false}},
  1417. {"HD_1080_ST372_Dual_YCbCr_Display",
  1418. {"HD_1080_ST372_Dual_YCbCr_Display",
  1419. ConnectionKind::SDI,
  1420. NTV2_MODE_DISPLAY,
  1421. RasterDefinition::HD,
  1422. HDMIWireFormat::Unknown,
  1423. VPIDStandard_1080_DualLink,
  1424. 2,
  1425. 2,
  1426. 0,
  1427. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1428. "fb[{ch2}][0]->sdi[{ch2}][0]",
  1429. {},
  1430. false,
  1431. false}},
  1432. {"HD_720p_ST425_3Ga_YCbCr_Display",
  1433. {"HD_720p_ST425_3Ga_YCbCr_Display",
  1434. ConnectionKind::SDI,
  1435. NTV2_MODE_DISPLAY,
  1436. RasterDefinition::HD,
  1437. HDMIWireFormat::Unknown,
  1438. VPIDStandard_720_3Ga,
  1439. 1,
  1440. 1,
  1441. kEnable3GOut,
  1442. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1443. {},
  1444. false,
  1445. false}},
  1446. {"HD_1080p_ST425_3Ga_YCbCr_Display",
  1447. {"HD_1080p_ST425_3Ga_YCbCr_Display",
  1448. ConnectionKind::SDI,
  1449. NTV2_MODE_DISPLAY,
  1450. RasterDefinition::HD,
  1451. HDMIWireFormat::Unknown,
  1452. VPIDStandard_1080_3Ga,
  1453. 1,
  1454. 1,
  1455. kEnable3GOut,
  1456. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1457. {},
  1458. false,
  1459. false}},
  1460. {"HD_1080p_ST425_3Gb_DL_YCbCr_Display",
  1461. {"HD_1080p_ST425_3Gb_DL_YCbCr_Display",
  1462. ConnectionKind::SDI,
  1463. NTV2_MODE_DISPLAY,
  1464. RasterDefinition::HD,
  1465. HDMIWireFormat::Unknown,
  1466. VPIDStandard_1080_DualLink_3Gb,
  1467. 1,
  1468. 1,
  1469. (kEnable3GOut | kConvert3GIn | kConvert3GOut),
  1470. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1471. {},
  1472. false,
  1473. false}},
  1474. {"HD_720p_ST425_3Gb_YCbCr_Display",
  1475. {"HD_720p_ST425_3Gb_YCbCr_Display",
  1476. ConnectionKind::SDI,
  1477. NTV2_MODE_DISPLAY,
  1478. RasterDefinition::HD,
  1479. HDMIWireFormat::Unknown,
  1480. VPIDStandard_720_3Gb,
  1481. 1,
  1482. 2,
  1483. kEnable3GOut,
  1484. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1485. "fb[{ch2}][0]->sdi[{ch1}][1];",
  1486. {},
  1487. false,
  1488. false}},
  1489. {"HD_1080p_ST425_3Gb_YCbCr_Display",
  1490. {"HD_1080p_ST425_3Gb_YCbCr_Display",
  1491. ConnectionKind::SDI,
  1492. NTV2_MODE_DISPLAY,
  1493. RasterDefinition::HD,
  1494. HDMIWireFormat::Unknown,
  1495. VPIDStandard_1080_3Gb,
  1496. 1,
  1497. 2,
  1498. kEnable3GOut,
  1499. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1500. "fb[{ch2}][0]->sdi[{ch1}][1];",
  1501. {},
  1502. false,
  1503. false}},
  1504. {"HD_1080p_ST425_Dual_3Ga_YCbCr_Display",
  1505. {"HD_1080p_ST425_Dual_3Ga_YCbCr_Display",
  1506. ConnectionKind::SDI,
  1507. NTV2_MODE_DISPLAY,
  1508. RasterDefinition::HD,
  1509. HDMIWireFormat::Unknown,
  1510. VPIDStandard_1080_Dual_3Ga,
  1511. 2,
  1512. 2,
  1513. kEnable3GOut,
  1514. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1515. "fb[{ch2}][0]->sdi[{ch1}][1];",
  1516. {},
  1517. false,
  1518. false}},
  1519. {"HD_1080p_ST425_Dual_3Gb_YCbCr_Display",
  1520. {"HD_1080p_ST425_Dual_3Gb_YCbCr_Display",
  1521. ConnectionKind::SDI,
  1522. NTV2_MODE_DISPLAY,
  1523. RasterDefinition::HD,
  1524. HDMIWireFormat::Unknown,
  1525. VPIDStandard_1080_Dual_3Gb,
  1526. 2,
  1527. 2,
  1528. kEnable3GOut,
  1529. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1530. "fb[{ch2}][0]->sdi[{ch1}][1];",
  1531. {},
  1532. false,
  1533. false}},
  1534. {"UHD4K_ST292_Quad_1_5_Squares_YCbCr_Display",
  1535. {"UHD4K_ST292_Quad_1_5_Squares_YCbCr_Display",
  1536. ConnectionKind::SDI,
  1537. NTV2_MODE_DISPLAY,
  1538. RasterDefinition::UHD_4K,
  1539. HDMIWireFormat::Unknown,
  1540. VPIDStandard_1080,
  1541. 4,
  1542. 4,
  1543. (kEnable3GbOut | kEnable4KSquares),
  1544. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1545. "fb[{ch2}][0]->sdi[{ch2}][0];"
  1546. "fb[{ch3}][0]->sdi[{ch3}][0];"
  1547. "fb[{ch4}][0]->sdi[{ch4}][0];",
  1548. {},
  1549. false,
  1550. false}},
  1551. {"UHD4K_ST425_Quad_3Ga_Squares_YCbCr_Display",
  1552. {"UHD4K_ST425_Quad_3Ga_Squares_YCbCr_Display",
  1553. ConnectionKind::SDI,
  1554. NTV2_MODE_DISPLAY,
  1555. RasterDefinition::UHD_4K,
  1556. HDMIWireFormat::Unknown,
  1557. VPIDStandard_1080_3Ga,
  1558. 4,
  1559. 4,
  1560. (kEnable3GOut | kEnable3GbOut),
  1561. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1562. "fb[{ch2}][0]->sdi[{ch2}][0];"
  1563. "fb[{ch3}][0]->sdi[{ch3}][0];"
  1564. "fb[{ch4}][0]->sdi[{ch4}][0];",
  1565. {},
  1566. false,
  1567. false}},
  1568. {"UHD4K_ST425_Quad_3Gb_Squares_YCbCr_Display",
  1569. {"UHD4K_ST425_Quad_3Gb_Squares_YCbCr_Display",
  1570. ConnectionKind::SDI,
  1571. NTV2_MODE_DISPLAY,
  1572. RasterDefinition::UHD_4K,
  1573. HDMIWireFormat::Unknown,
  1574. VPIDStandard_1080_DualLink_3Gb,
  1575. 4,
  1576. 4,
  1577. (kEnable3GOut | kEnable3GbOut | kEnable4KSquares),
  1578. "fb[{ch1}][0]->sdi[{ch1}][0];"
  1579. "fb[{ch2}][0]->sdi[{ch2}][0];"
  1580. "fb[{ch3}][0]->sdi[{ch3}][0];"
  1581. "fb[{ch4}][0]->sdi[{ch4}][0];",
  1582. {},
  1583. false,
  1584. false}},
  1585. {"UHD4K_ST425_Dual_3Gb_2SI_YCbCr_Display",
  1586. {"UHD4K_ST425_Dual_3Gb_2SI_YCbCr_Display",
  1587. ConnectionKind::SDI,
  1588. NTV2_MODE_DISPLAY,
  1589. RasterDefinition::UHD_4K,
  1590. HDMIWireFormat::Unknown,
  1591. VPIDStandard_2160_DualLink,
  1592. 2,
  1593. 2,
  1594. (kEnable3GOut | kEnable4KTSI),
  1595. "fb[{ch1}][0]->tsi[{ch1}][0];"
  1596. "fb[{ch1}][1]->tsi[{ch1}][1];"
  1597. "fb[{ch2}][0]->tsi[{ch2}][0];"
  1598. "fb[{ch2}][1]->tsi[{ch2}][1];"
  1599. "tsi[{ch1}][0]->sdi[{ch1}][0];"
  1600. "tsi[{ch1}][1]->sdi[{ch1}][1];"
  1601. "tsi[{ch2}][0]->sdi[{ch2}][0];"
  1602. "tsi[{ch2}][1]->sdi[{ch2}][1];",
  1603. {},
  1604. false,
  1605. false}},
  1606. {"UHD4K_ST425_Quad_3Ga_2SI_YCbCr_Display",
  1607. {"UHD4K_ST425_Quad_3Ga_2SI_YCbCr_Display",
  1608. ConnectionKind::SDI,
  1609. NTV2_MODE_DISPLAY,
  1610. RasterDefinition::UHD_4K,
  1611. HDMIWireFormat::Unknown,
  1612. VPIDStandard_2160_QuadLink_3Ga,
  1613. 4,
  1614. 4,
  1615. (kEnable3GOut | kEnable4KTSI),
  1616. "fb[{ch1}][0]->tsi[{ch1}][0];"
  1617. "fb[{ch1}][1]->tsi[{ch1}][1];"
  1618. "fb[{ch2}][0]->tsi[{ch2}][0];"
  1619. "fb[{ch2}][1]->tsi[{ch2}][1];"
  1620. "tsi[{ch1}][0]->sdi[{ch1}][0];"
  1621. "tsi[{ch1}][1]->sdi[{ch2}][0];"
  1622. "tsi[{ch2}][0]->sdi[{ch3}][0];"
  1623. "tsi[{ch2}][1]->sdi[{ch4}][0];",
  1624. {},
  1625. false,
  1626. false}},
  1627. {"UHD4K_ST425_Quad_3Gb_2SI_YCbCr_Display",
  1628. {"UHD4K_ST425_Quad_3Gb_2SI_YCbCr_Display",
  1629. ConnectionKind::SDI,
  1630. NTV2_MODE_DISPLAY,
  1631. RasterDefinition::UHD_4K,
  1632. HDMIWireFormat::Unknown,
  1633. VPIDStandard_2160_QuadDualLink_3Gb,
  1634. 4,
  1635. 4,
  1636. (kEnable3GOut | kConvert3GaRGBOut | kEnable4KTSI),
  1637. "fb[{ch1}][0]->tsi[{ch1}][0];"
  1638. "fb[{ch1}][1]->tsi[{ch1}][1];"
  1639. "fb[{ch2}][0]->tsi[{ch2}][0];"
  1640. "fb[{ch2}][1]->tsi[{ch2}][1];"
  1641. "tsi[{ch1}][0]->sdi[{ch1}][0];"
  1642. "tsi[{ch1}][1]->sdi[{ch2}][0];"
  1643. "tsi[{ch2}][0]->sdi[{ch3}][0];"
  1644. "tsi[{ch2}][1]->sdi[{ch4}][0];",
  1645. {},
  1646. false,
  1647. false}},
  1648. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Display",
  1649. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Display",
  1650. ConnectionKind::SDI,
  1651. NTV2_MODE_DISPLAY,
  1652. RasterDefinition::UHD_4K,
  1653. HDMIWireFormat::Unknown,
  1654. VPIDStandard_2160_Single_6Gb,
  1655. 1,
  1656. 1,
  1657. (kEnable6GOut | kEnable4KTSI),
  1658. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1659. {},
  1660. false,
  1661. false}},
  1662. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Display (Kona5/io4K+)",
  1663. {"UHD4K_ST2018_6G_Squares_2SI_YCbCr_Display (Kona5/io4K+)",
  1664. ConnectionKind::SDI,
  1665. NTV2_MODE_DISPLAY,
  1666. RasterDefinition::UHD_4K,
  1667. HDMIWireFormat::Unknown,
  1668. VPIDStandard_2160_Single_6Gb,
  1669. 4,
  1670. 4,
  1671. (kEnable6GOut | kEnable4KTSI),
  1672. "fb[{ch3}][0]->tsi[{ch3}][0];"
  1673. "fb[{ch3}][1]->tsi[{ch3}][1];"
  1674. "fb[{ch4}][0]->tsi[{ch4}][0];"
  1675. "fb[{ch4}][1]->tsi[{ch4}][1];"
  1676. "tsi[{ch3}][0]->sdi[{ch1}][0];"
  1677. "tsi[{ch3}][1]->sdi[{ch2}][0];"
  1678. "tsi[{ch4}][0]->sdi[{ch3}][0];"
  1679. "tsi[{ch4}][1]->sdi[{ch4}][0];",
  1680. {DEVICE_ID_KONA5, DEVICE_ID_IO4KPLUS},
  1681. false,
  1682. true}},
  1683. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Display",
  1684. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Display",
  1685. ConnectionKind::SDI,
  1686. NTV2_MODE_DISPLAY,
  1687. RasterDefinition::UHD_4K,
  1688. HDMIWireFormat::Unknown,
  1689. VPIDStandard_2160_Single_12Gb,
  1690. 1,
  1691. 1,
  1692. (kEnable12GOut | kEnable4KTSI),
  1693. "fb[{ch1}][0]->sdi[{ch1}][0];",
  1694. {},
  1695. false,
  1696. false}},
  1697. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Display (Kona5/io4K+)",
  1698. {"UHD4K_ST2018_12G_Squares_2SI_YCbCr_Display (Kona5/io4K+)",
  1699. ConnectionKind::SDI,
  1700. NTV2_MODE_DISPLAY,
  1701. RasterDefinition::UHD_4K,
  1702. HDMIWireFormat::Unknown,
  1703. VPIDStandard_2160_Single_12Gb,
  1704. 4,
  1705. 4,
  1706. (kEnable12GOut | kConvert3GOut | kEnable4KTSI),
  1707. "fb[{ch3}][0]->tsi[{ch3}][0];"
  1708. "fb[{ch3}][1]->tsi[{ch3}][1];"
  1709. "fb[{ch4}][0]->tsi[{ch4}][0];"
  1710. "fb[{ch4}][1]->tsi[{ch4}][1];"
  1711. "tsi[{ch3}][0]->sdi[{ch1}][0];"
  1712. "tsi[{ch3}][1]->sdi[{ch2}][0];"
  1713. "tsi[{ch4}][0]->sdi[{ch3}][0];"
  1714. "tsi[{ch4}][1]->sdi[{ch4}][0];",
  1715. {DEVICE_ID_KONA5, DEVICE_ID_IO4KPLUS},
  1716. false,
  1717. true}},
  1718. // TODO
  1719. {"UHD28K_ST2082_Dual_12G_YCbCr_Display",
  1720. {"UHD28K_ST2082_Dual_12G_YCbCr_Display",
  1721. ConnectionKind::SDI,
  1722. NTV2_MODE_DISPLAY,
  1723. RasterDefinition::UHD_4K,
  1724. HDMIWireFormat::Unknown,
  1725. VPIDStandard_4320_DualLink_12Gb,
  1726. 2,
  1727. 2,
  1728. (kEnable12GOut | kConvert3GOut | kEnable4KTSI),
  1729. "",
  1730. {},
  1731. false,
  1732. false}},
  1733. // TODO
  1734. {"UHD28K_ST2082_Quad_12G_YCbCr_Display",
  1735. {"UHD28K_ST2082_Quad_12G_YCbCr_Display",
  1736. ConnectionKind::SDI,
  1737. NTV2_MODE_DISPLAY,
  1738. RasterDefinition::UHD_4K,
  1739. HDMIWireFormat::Unknown,
  1740. VPIDStandard_4320_QuadLink_12Gb,
  1741. 4,
  1742. 4,
  1743. (kEnable12GOut | kConvert3GOut | kEnable4KTSI),
  1744. "",
  1745. {},
  1746. false,
  1747. false}},
  1748. };
  1749. for (auto &&rp : kRoutingPresets)
  1750. AddPreset(std::move(rp.first), std::move(rp.second));
  1751. }
  1752. RoutingPresetMap RoutingConfigurator::GetPresetTable() const
  1753. {
  1754. return m_presets;
  1755. }
  1756. bool RoutingConfigurator::FindFirstPreset(ConnectionKind kind, NTV2DeviceID id,
  1757. NTV2Mode mode, NTV2VideoFormat vf,
  1758. NTV2PixelFormat pf,
  1759. VPIDStandard standard,
  1760. HDMIWireFormat hwf,
  1761. RoutingPreset &preset)
  1762. {
  1763. if (NTV2DeviceCanDoVideoFormat(id, vf) &&
  1764. NTV2DeviceCanDoFrameBufferFormat(id, pf)) {
  1765. const auto &rd = DetermineRasterDefinition(vf);
  1766. bool is_rgb = NTV2_IS_FBF_RGB(pf);
  1767. std::vector<RoutingPresetPair> query;
  1768. for (const auto &p : m_presets) {
  1769. if (p.second.kind == kind && p.second.mode == mode &&
  1770. p.second.raster_def == rd &&
  1771. p.second.is_rgb == is_rgb &&
  1772. p.second.vpid_standard == standard &&
  1773. p.second.hdmi_wire_format == hwf) {
  1774. query.push_back(p);
  1775. }
  1776. }
  1777. RoutingPresets device_presets;
  1778. RoutingPresets non_device_presets;
  1779. for (auto &q : query) {
  1780. if (q.second.device_ids.size() == 0)
  1781. non_device_presets.push_back(q.second);
  1782. for (const auto &device_id : q.second.device_ids) {
  1783. if (device_id == id) {
  1784. device_presets.push_back(q.second);
  1785. break;
  1786. }
  1787. }
  1788. }
  1789. if (device_presets.size() > 0) {
  1790. preset = device_presets.at(0);
  1791. return true;
  1792. }
  1793. if (non_device_presets.size() > 0) {
  1794. preset = non_device_presets.at(0);
  1795. return true;
  1796. }
  1797. }
  1798. return false;
  1799. }
  1800. } // aja