aja-presets.cpp 46 KB

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