sdi_ycbcr_display.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. #pragma once
  2. #include "../aja-routing.hpp"
  3. static inline const std::map<SDIWireFormat, RoutingConfig> kSDIYCbCrDisplayConfigs = {
  4. {
  5. SDIWireFormat::SD_ST352,
  6. {
  7. NTV2_MODE_DISPLAY,
  8. 1, // num wires
  9. 1, // num framestores
  10. false, // enable 3G output?
  11. false, // enable 6G output?
  12. false, // enable 12G output?
  13. false, // convert 3Gb -> 3Ga input?
  14. false, // convert 3Ga -> 3Gb output?
  15. false, // convert RGB 3Ga output?
  16. false, // enable 3Gb output?
  17. false, // enable 4K Square Division?
  18. false, // enable 8K Square Division?
  19. false, // enable two-sample-interleave?
  20. "fb[{ch1}][0]->sdi[{ch1}][0]", // YCbCr Output Route
  21. },
  22. },
  23. {SDIWireFormat::HD_720p_ST292,
  24. {
  25. NTV2_MODE_DISPLAY,
  26. 1,
  27. 1,
  28. false,
  29. false,
  30. false,
  31. false,
  32. false,
  33. false,
  34. false,
  35. false,
  36. false,
  37. false,
  38. "fb[{ch1}][0]->sdi[{ch1}][0]",
  39. }},
  40. {SDIWireFormat::HD_1080_ST292,
  41. {
  42. NTV2_MODE_DISPLAY,
  43. 1,
  44. 1,
  45. false,
  46. false,
  47. false,
  48. false,
  49. false,
  50. false,
  51. false,
  52. false,
  53. false,
  54. false,
  55. "fb[{ch1}][0]->sdi[{ch1}][0]",
  56. }},
  57. {SDIWireFormat::HD_1080_ST372_Dual,
  58. {
  59. NTV2_MODE_DISPLAY,
  60. 2,
  61. 2,
  62. false,
  63. false,
  64. false,
  65. false,
  66. false,
  67. false,
  68. false,
  69. false,
  70. false,
  71. false,
  72. "fb[{ch1}][0]->sdi[{ch1}][0];"
  73. "fb[{ch2}][0]->sdi[{ch2}][0]",
  74. }},
  75. {SDIWireFormat::HD_720p_ST425_3Ga,
  76. {
  77. NTV2_MODE_DISPLAY,
  78. 1,
  79. 1,
  80. true,
  81. false,
  82. false,
  83. false,
  84. false,
  85. false,
  86. false,
  87. false,
  88. false,
  89. false,
  90. "fb[{ch1}][0]->sdi[{ch1}][0]",
  91. }},
  92. {SDIWireFormat::HD_1080p_ST425_3Ga,
  93. {
  94. NTV2_MODE_DISPLAY,
  95. 1,
  96. 1,
  97. true,
  98. false,
  99. false,
  100. false,
  101. false,
  102. false,
  103. false,
  104. false,
  105. false,
  106. false,
  107. "fb[{ch1}][0]->sdi[{ch1}][0]",
  108. }},
  109. {SDIWireFormat::HD_1080p_ST425_3Gb_DL,
  110. {
  111. NTV2_MODE_DISPLAY,
  112. 1,
  113. 1,
  114. true,
  115. false,
  116. false,
  117. true,
  118. true,
  119. false,
  120. true,
  121. false,
  122. false,
  123. false,
  124. "fb[{ch1}][0]->sdi[{ch1}][0]",
  125. }},
  126. {SDIWireFormat::HD_720p_ST425_3Gb,
  127. {
  128. NTV2_MODE_DISPLAY,
  129. 1,
  130. 2,
  131. true,
  132. false,
  133. false,
  134. false,
  135. false,
  136. false,
  137. false,
  138. false,
  139. false,
  140. false,
  141. "fb[{ch1}][0]->sdi[{ch1}][0]; fb[{ch2}][0]->sdi[{ch1}][1];",
  142. }},
  143. {SDIWireFormat::HD_1080p_ST425_3Gb,
  144. {
  145. NTV2_MODE_DISPLAY,
  146. 1,
  147. 2,
  148. true,
  149. false,
  150. false,
  151. false,
  152. false,
  153. false,
  154. false,
  155. false,
  156. false,
  157. false,
  158. "fb[{ch1}][0]->sdi[{ch1}][0]; fb[{ch2}][0]->sdi[{ch1}][1];",
  159. }},
  160. {SDIWireFormat::HD_1080p_ST425_Dual_3Ga,
  161. {
  162. NTV2_MODE_DISPLAY,
  163. 2,
  164. 2,
  165. true,
  166. false,
  167. false,
  168. false,
  169. false,
  170. false,
  171. false,
  172. false,
  173. false,
  174. false,
  175. "",
  176. }},
  177. {SDIWireFormat::HD_1080p_ST425_Dual_3Gb,
  178. {
  179. NTV2_MODE_DISPLAY,
  180. 2,
  181. 2,
  182. true,
  183. false,
  184. false,
  185. false,
  186. false,
  187. false,
  188. false,
  189. false,
  190. false,
  191. false,
  192. "",
  193. }},
  194. {SDIWireFormat::UHD4K_ST292_Dual_1_5_Squares,
  195. {
  196. NTV2_MODE_DISPLAY,
  197. 2,
  198. 4,
  199. false,
  200. false,
  201. false,
  202. false,
  203. false,
  204. false,
  205. false,
  206. true,
  207. false,
  208. false,
  209. "fb[{ch1}][0]->sdi[{ch1}][0];"
  210. "fb[{ch2}][0]->sdi[{ch1}][1];"
  211. "fb[{ch3}][0]->sdi[{ch2}][0];"
  212. "fb[{ch4}][0]->sdi[{ch2}][1];",
  213. }},
  214. {SDIWireFormat::UHD4K_ST292_Quad_1_5_Squares,
  215. {
  216. NTV2_MODE_DISPLAY,
  217. 4,
  218. 4,
  219. false,
  220. false,
  221. false,
  222. false,
  223. false,
  224. false,
  225. false,
  226. true,
  227. false,
  228. false,
  229. // Playout
  230. "fb[{ch1}][0]->sdi[{ch1}][0];"
  231. "fb[{ch2}][0]->sdi[{ch2}][0];"
  232. "fb[{ch3}][0]->sdi[{ch3}][0];"
  233. "fb[{ch4}][0]->sdi[{ch4}][0];",
  234. }},
  235. {SDIWireFormat::UHD4K_ST425_Quad_3Ga_Squares,
  236. {
  237. NTV2_MODE_DISPLAY,
  238. 4,
  239. 4,
  240. true,
  241. false,
  242. false,
  243. false,
  244. false,
  245. false,
  246. false,
  247. true,
  248. false,
  249. false,
  250. // Playout
  251. "fb[{ch1}][0]->sdi[{ch1}][0];"
  252. "fb[{ch2}][0]->sdi[{ch2}][0];"
  253. "fb[{ch3}][0]->sdi[{ch3}][0];"
  254. "fb[{ch4}][0]->sdi[{ch4}][0];",
  255. }},
  256. {SDIWireFormat::UHD4K_ST425_Quad_3Gb_Squares,
  257. {
  258. NTV2_MODE_DISPLAY,
  259. 4,
  260. 4,
  261. true,
  262. false,
  263. false,
  264. false,
  265. false,
  266. false,
  267. false,
  268. true,
  269. false,
  270. false,
  271. // Playout
  272. "fb[{ch1}][0]->sdi[{ch1}][0];"
  273. "fb[{ch2}][0]->sdi[{ch2}][0];"
  274. "fb[{ch3}][0]->sdi[{ch3}][0];"
  275. "fb[{ch4}][0]->sdi[{ch4}][0];",
  276. }},
  277. {SDIWireFormat::UHD4K_ST425_Dual_3Gb_2SI,
  278. {
  279. NTV2_MODE_DISPLAY,
  280. 2,
  281. 2,
  282. true,
  283. false,
  284. false,
  285. false,
  286. false,
  287. false,
  288. true,
  289. false,
  290. false,
  291. true,
  292. "fb[{ch1}][0]->tsi[{ch1}][0];"
  293. "fb[{ch1}][1]->tsi[{ch1}][1];"
  294. "fb[{ch2}][0]->tsi[{ch2}][0];"
  295. "fb[{ch2}][1]->tsi[{ch2}][1];"
  296. "tsi[{ch1}][0]->sdi[{ch1}][0];"
  297. "tsi[{ch1}][1]->sdi[{ch1}][1];"
  298. "tsi[{ch2}][0]->sdi[{ch2}][0];"
  299. "tsi[{ch2}][1]->sdi[{ch2}][1];",
  300. }},
  301. {SDIWireFormat::UHD4K_ST425_Quad_3Ga_2SI,
  302. {
  303. NTV2_MODE_DISPLAY,
  304. 4,
  305. 4,
  306. true,
  307. false,
  308. false,
  309. false,
  310. false,
  311. false,
  312. false,
  313. false,
  314. false,
  315. true,
  316. "fb[{ch1}][0]->tsi[{ch1}][0];"
  317. "fb[{ch1}][1]->tsi[{ch1}][1];"
  318. "fb[{ch2}][0]->tsi[{ch2}][0];"
  319. "fb[{ch2}][1]->tsi[{ch2}][1];"
  320. "tsi[{ch1}][0]->sdi[{ch1}][0];"
  321. "tsi[{ch1}][1]->sdi[{ch2}][0];"
  322. "tsi[{ch2}][0]->sdi[{ch3}][0];"
  323. "tsi[{ch2}][1]->sdi[{ch4}][0];",
  324. }},
  325. {SDIWireFormat::UHD4K_ST425_Quad_3Gb_2SI,
  326. {
  327. NTV2_MODE_DISPLAY,
  328. 4,
  329. 4,
  330. true,
  331. false,
  332. false,
  333. false,
  334. false,
  335. false,
  336. true,
  337. false,
  338. false,
  339. true,
  340. "fb[{ch1}][0]->tsi[{ch1}][0];"
  341. "fb[{ch1}][1]->tsi[{ch1}][1];"
  342. "fb[{ch2}][0]->tsi[{ch2}][0];"
  343. "fb[{ch2}][1]->tsi[{ch2}][1];"
  344. "tsi[{ch1}][0]->sdi[{ch1}][0];"
  345. "tsi[{ch1}][1]->sdi[{ch2}][0];"
  346. "tsi[{ch2}][0]->sdi[{ch3}][0];"
  347. "tsi[{ch2}][1]->sdi[{ch4}][0];",
  348. }},
  349. {SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI,
  350. {
  351. NTV2_MODE_DISPLAY,
  352. 1,
  353. 1,
  354. false,
  355. true,
  356. false,
  357. false,
  358. false,
  359. false,
  360. false,
  361. false,
  362. false,
  363. true,
  364. "fb[{ch1}][0]->sdi[{ch1}][0];",
  365. }},
  366. {SDIWireFormat::UHD4K_ST2018_6G_Squares_2SI_Kona5_io4KPlus,
  367. {
  368. NTV2_MODE_DISPLAY,
  369. 2,
  370. 2,
  371. false,
  372. true,
  373. false,
  374. false,
  375. false,
  376. false,
  377. false,
  378. false,
  379. false,
  380. true,
  381. // Playout
  382. "fb[{ch3}][0]->tsi[{ch3}][0];"
  383. "fb[{ch3}][1]->tsi[{ch3}][1];"
  384. "fb[{ch4}][0]->tsi[{ch4}][0];"
  385. "fb[{ch4}][1]->tsi[{ch4}][1];"
  386. "tsi[{ch3}][0]->sdi[{ch1}][0];"
  387. "tsi[{ch3}][1]->sdi[{ch2}][0];"
  388. "tsi[{ch4}][0]->sdi[{ch3}][0];"
  389. "tsi[{ch4}][1]->sdi[{ch4}][0];",
  390. }},
  391. {SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI,
  392. {
  393. NTV2_MODE_DISPLAY,
  394. 1,
  395. 1,
  396. false,
  397. false,
  398. true,
  399. false,
  400. false,
  401. true,
  402. false,
  403. false,
  404. false,
  405. true,
  406. "fb[{ch1}][0]->sdi[{ch1}][0];",
  407. }},
  408. {SDIWireFormat::UHD4K_ST2018_12G_Squares_2SI_Kona5_io4KPlus,
  409. {
  410. NTV2_MODE_DISPLAY,
  411. 1,
  412. 1,
  413. false,
  414. false,
  415. true,
  416. false,
  417. false,
  418. true,
  419. false,
  420. false,
  421. false,
  422. true,
  423. // Playout
  424. "fb[{ch3}][0]->tsi[{ch3}][0];"
  425. "fb[{ch3}][1]->tsi[{ch3}][1];"
  426. "fb[{ch4}][0]->tsi[{ch4}][0];"
  427. "fb[{ch4}][1]->tsi[{ch4}][1];"
  428. "tsi[{ch3}][0]->sdi[{ch1}][0];"
  429. "tsi[{ch3}][1]->sdi[{ch2}][0];"
  430. "tsi[{ch4}][0]->sdi[{ch3}][0];"
  431. "tsi[{ch4}][1]->sdi[{ch4}][0];",
  432. }},
  433. {SDIWireFormat::UHD28K_ST2082_Dual_12G,
  434. {
  435. NTV2_MODE_DISPLAY,
  436. 2,
  437. 2,
  438. false,
  439. false,
  440. true,
  441. false,
  442. false,
  443. false,
  444. false,
  445. false,
  446. false,
  447. true,
  448. "",
  449. }},
  450. {SDIWireFormat::UHD28K_ST2082_RGB_Dual_12G,
  451. {
  452. NTV2_MODE_DISPLAY,
  453. 2,
  454. 2,
  455. false,
  456. false,
  457. true,
  458. false,
  459. false,
  460. false,
  461. false,
  462. false,
  463. false,
  464. true,
  465. "",
  466. }},
  467. {SDIWireFormat::UHD28K_ST2082_Quad_12G,
  468. {
  469. NTV2_MODE_DISPLAY,
  470. 4,
  471. 4,
  472. false,
  473. false,
  474. true,
  475. false,
  476. false,
  477. false,
  478. false,
  479. false,
  480. false,
  481. true,
  482. "",
  483. }},
  484. };