Я ищу варианты доступа к данным DVB в OS X. Изначально я хочу поддерживать USB-устройство EyeTV DTT, но в долгосрочной перспективе я бы хотел поддержать ряд популярных устройств. У меня проблема в том, что не существует стандартного способа управления такими устройствами.
Все известные мне приложения, которые их используют, либо скрывают код драйвера внутри приложения (например, сам EyeTV, все его драйверы полностью реализованы в пространстве пользователя и недоступны для внешних приложений), либо они используют, по-видимому, defunkt * Драйвер 1003 * MMInputFamily (исходный код больше недоступен, автор ушел в обход).
Я провел некоторое исследование и обнаружил, что ряд устройств, которые я хочу поддерживать, поддерживаются в проекте Linux DVB. Дальнейшие исследования показывают, что несколько лет назад была попытка абстрагировать реализацию linux, чтобы она могла потенциально перекомпилироваться на других платформах. Идея заключается в том, что усилия по поддержке устройств должны быть объединены, и лучший способ сделать это состоит в том, чтобы заставить текущую реализацию с открытым исходным кодом работать на нескольких платформах: однако, в конце концов, это, похоже, мало что дало.
Идея компиляции драйверов linux для других платформ * nix-типа также была взята на вооружение в других местах с некоторым успехом. Подход, использованный автором, подробно описан на странице, на которую я ссылался, он также потенциально может быть жизнеспособен и в OS X.
В любом случае, кажется, что есть несколько вариантов, но нет явного победителя:
- Найдите исходный код для драйвера MMInputFamily, попробуйте заставить его работать на OS X 10.6 и добавьте поддержку для необходимых мне устройств, ссылаясь на исходный код linux для указателей. Проблема: исходный код нигде не найден, равно как и автор. Кроме того, кажется, что автор мог бы пойти другим путем, если бы он полностью оценил предыдущие усилия по переносу драйверов linux на OS X.
- Попытка портировать драйверы linux на OS X способом, аналогичным проекту FreeBSD, который я связал. Проблема: это очень низкоуровневая работа, и работа на этом уровне не рекомендуется Apple, если ее можно избежать.
- Напишите драйвер с OS X IOKit : это предпочтительный метод для реализации драйверов, но мне пришлось бы делать все с нуля, явно не маленькая работа.
Если бы я мог, я действительно хотел бы использовать исходный код Linux, но я не уверен, что такая вещь действительно жизнеспособна. У кого-нибудь есть какие-либо советы или идеи относительно лучшего способа выполнения этой задачи?