aja-presets.cpp 47 KB

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