Я сейчас как раз занимаюсь разработкой такого эмулятора, но по ходу возник довольно существенный вопрос.
Разработка осуществляется на базе универсального модульного API эмуляции, разрабатываемого параллельно. Для передачи потоковых данных в этом API используются потоки. С байтовым потоком, который используется для подключения эмулятора терминала к эмулятору последовательного порта, всё просто - в канале данных потока передаются байты.
Но если использовать тот же принцип для передачи видеокадров через "поток видео", то передавать уже нужно что-то вроде указателя на объект "видео кадр".
Т.е. модуль эмуляции КСМ будет создавать объекты "видео кадр", заполнять их своими данными и затем передавать через поток дальше ( на вход модуля эмуляции КГД или модуля эмуляции видео-монитора ).
Отсюда вопрос - какие данные должен содержать объект "видео кадр", чтобы любая программа, понимающая формат "поток видео" могла воспроизводить на экране хост-машины абсолютно точный аналог изображения, формирующегося в оригинале на экране эмулируемого видео-монитора.
Похоже, что основной блок данных видео кадра - это массив цветовых значений RGB точек растра, с заголовком, содержащем сведения о числе строк и столбцов. Частота кадров скорее всего передаваться не должна. С какой скоростью "фабрика кадров" будет их создавать - такая частота кадров и будет.
Яркость, контрастность, линейность, заметность обратного хода луча - полностью определяются настройками эмулятора видео-монитора, поэтому передаваться в кадре не должны.
Получается, что формат данных потока видео (т.е. "кадров видео") - это массив 32-битовых значений цвета точек растра с указанием размерности массива.
Этого достаточно?
Нужно ли для максмально точного воспроизведения видео-потока передавать в объектах "видео кадр" что-то ещё ?





Ответить с цитированием