aja-presets.cpp 47 KB

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