Тюнеры Behold TV - нативная поддержка пульта
Posted: Thu Mar 14, 2024 9:31 am
Сейчас ProgDVB работает с пультами Behold TV только через BeholdRC.dll
Но это решение даёт проблемы:
1. DLL есть только 32-битная, из 64-битного ProgDVB она не работает.
2. аналоговое ТВ уже не актуально, и от бехолдера нужен только драйвер (для DVB). Но ради BeholdRC.dll получается надо и BeholdTV ставить.
Я исследовал внутренности BeholdRC.dll и там есть не понятные места:
- там поиск видеооустройства (CLSID_VideoInputDeviceCategory), потом для некоторых моделей тюнеров из DevicePath формируется новое DevicePath (некоторые USB тюнеры - составные устройства, и пульт висит не в видео, а в HID).
- DeviceNode зачем-то собирается, но у моих тюнеров там пусто.
- Есть 8 разных IOCTL запросов к тюнеру.
- Причём все IOCTL запросы ещё имеют как минимум 1 входной аргумент, а некоторые даже 4 входных аргумента (кладутся в буфер IOCTL до запроса). Однако все положенные аргументы, на моём тюнере, возвращаются в ответе. Не понятно ни целесообразность каких-то дополнительный аргументов для такой простой задачи, ни тот факт что они возвращаются в буфере ответа.
- 4 запроса IOCTL - примерно понятны:
1 - просто проверка наличия совместимого тюнера, ничего не выдаёт,
2 - идентификация модели (выдаёт коды ven, dev, mi, subsys),
3 - какие-то константы выдаёт, но не понятно как это использовать,
4 - сканкод принимаемой кнопки.
- ещё 4 запроса - отвергаются драйвером (то ли там надо входной буфер заполнять как-то осмысленно, то ли это для других моделей тюнера).
Я написал программу работающую с пультом без участия BeholdRC.dll
Нужны испытатели с различными моделями BeholdTV (у меня только T8), особенно USB
Потом можно будет создать встроенный плагин для ProgDVB (будет не нужна BeholdRC.dll и будет всё работать в 64 битной версии тоже)...
Но это решение даёт проблемы:
1. DLL есть только 32-битная, из 64-битного ProgDVB она не работает.
2. аналоговое ТВ уже не актуально, и от бехолдера нужен только драйвер (для DVB). Но ради BeholdRC.dll получается надо и BeholdTV ставить.
Я исследовал внутренности BeholdRC.dll и там есть не понятные места:
- там поиск видеооустройства (CLSID_VideoInputDeviceCategory), потом для некоторых моделей тюнеров из DevicePath формируется новое DevicePath (некоторые USB тюнеры - составные устройства, и пульт висит не в видео, а в HID).
- DeviceNode зачем-то собирается, но у моих тюнеров там пусто.
- Есть 8 разных IOCTL запросов к тюнеру.
- Причём все IOCTL запросы ещё имеют как минимум 1 входной аргумент, а некоторые даже 4 входных аргумента (кладутся в буфер IOCTL до запроса). Однако все положенные аргументы, на моём тюнере, возвращаются в ответе. Не понятно ни целесообразность каких-то дополнительный аргументов для такой простой задачи, ни тот факт что они возвращаются в буфере ответа.
- 4 запроса IOCTL - примерно понятны:
1 - просто проверка наличия совместимого тюнера, ничего не выдаёт,
2 - идентификация модели (выдаёт коды ven, dev, mi, subsys),
3 - какие-то константы выдаёт, но не понятно как это использовать,
4 - сканкод принимаемой кнопки.
- ещё 4 запроса - отвергаются драйвером (то ли там надо входной буфер заполнять как-то осмысленно, то ли это для других моделей тюнера).
Я написал программу работающую с пультом без участия BeholdRC.dll
Нужны испытатели с различными моделями BeholdTV (у меня только T8), особенно USB
Потом можно будет создать встроенный плагин для ProgDVB (будет не нужна BeholdRC.dll и будет всё работать в 64 битной версии тоже)...