Добрый день,
Давно пользуюсь сервисом Parsec для стриминга desktop'а с домашней машины до ноута на даче:
Win (2080 RTX + parsecd) -> PLC -> Wireguard -> ISP -> Internet
Internet -> Beeline (4GLTEb3) -> E3372h (18dbi) -> WG -> PLC -> WiFi -> Ubuntu (i915 + parsec)
Так как в любой момент, он перестанет работать, то задумался над собственной реализацией для замены. А именно:
DXGI w/ Desktop Duplication API + Nvidia Encode API -> h264 -> I,P-frames -> RUDP -> I,P-frames -> VAAPI + OpenGL (fragment shader : YUV420p -> RGB)
Для начала, я собираюсь реализовать три компоненты отдельно друг от друга:
Вопросы:
- Во всех примерах fragment shader'а YUV420-> RGB я видел использование нескольких текстур. Не подразумевает ли это что полученный из Decoder'а uint8[] надо "делить", те копировать?! можно ли весь фрейм YUV420P из декодера без каких-то "манипуляций" использовать в шейдере... те когда ОДНА текстура содержит YYYYYYYYUUVV ?
- RUDP - подскажите библиотеку high performance low latency UDP (optional reliable) на Си... и желательно кросс платформенную, чтобы можно было использовать на сервере и клиенте.
- Правильно ли я понял, что потеря одного - двух I-frame'ов не критична.... те я могу использовать следующие за ними P-frame'ы... да, будут артефакты, но они "очистятся" I-frame'ом?
- Как реализовать dynamic resolution change на стороне декодера? передаётся ли инфа о смене wh через I-frame?