Есть ли способ получить необработанные данные с порта DVI?
Я не видел, чтобы кто-то еще пытался это сделать. Вполне возможно, что я ошибаюсь в этом. В основном у меня есть компьютер с входом DVI. Если к входу DVI ничего не подключено, программа на компьютере загружает некоторые изображения на экран. Если источник вывода подключен к порту DVI, то моя программа должна прекратить запись изображений и использовать вместо этого видеопоток DVI.
Какие существуют механизмы для определения наличия входа DVI и наличия действующего видеосигнала? Как я могу прочитать видео поток?
Или я иду по этому совершенно неправильному пути?
1 ответ
На аппаратном уровне большинство подсистем видеовходов, аналоговых или цифровых, способны обнаруживать присутствие входного сигнала или, по крайней мере, что-то, что имеет множество характеристик одного.
Для цифрового стандарта у вас есть фактические данные синхронизации либо по собственному проводу, либо зашифрованные в потоке последовательных данных. Если кажется, что есть часы, и если их частота является регулярной и разумной, это будет первым тестом (хотя для некоторых стандартов разумные могут охватывать огромный диапазон частот).
Далее, видео (не только цифровое, даже аналоговое) имеет повторяющуюся структуру строк и полей, поэтому должно быть две идентифицируемые субмножки тактовой частоты пикселей, одна из которых соответствует началу или концу каждой строки, а другая - началу или конец каждого поля (экрана). Опять же, они могут иметь свои собственные провода, могут иметь уникальные средства кодирования (специальные напряжения в аналоговом случае) или могут представлять временные промежутки в данных пикселей. Даже если бы не было ни синхронизации, ни времени восстановления, статистический анализ данных пикселей, вероятно, дал бы подсказки для измерений X и Y, так как многие функции на рисунке повторялись бы.
Реальные подсистемы видеовхода (например, монитор с плоской панелью) могут иметь еще более сложные схемы обнаружения и автоадаптации - они могут, например, повторно дискретизировать входной сигнал во времени, чтобы изменить разрешение точек на линию, или они даже могут поместить его в буфер кадров и масштабировать его в X и Y.
Какие детали внутренней работы схемы видеозахвата представляются потребителю, или даже программное обеспечение уровня драйвера будет во многом зависеть от специфики используемого чипсета - возможно, имеется лист данных. Вполне вероятно, что где-то есть читаемый бит регистра, который указывает, захватывает ли вход то, что схема "считает" видеосигналом. Возможно, вы даже сможете считывать такие параметры, как разрешение по осям X и Y, скорость сканирования или тактовую частоту пикселей.
Точно так же возможность извлечения данных из порта будет зависеть от набора микросхем, но если порт будет полезен для чего-либо, вероятно, для него существует драйвер операционной системы, который предоставляет своего рода полезный API для приложений, потребляющих видео.