Как изменить значение RGB пикселей, чтобы считывать и сохранять изменения каждого кадра на телевизоре - PullRequest
1 голос
/ 19 августа 2011

Я хотел бы создать программу на C ++, которая изменяет значение RGB пикселей каждого кадра файла MPEG2 для трансляции, считывает и сохраняет измененное значение пикселей каждого кадра на экране телевизора одновременно с трансляция. Может ли он работать одновременно с трансляцией, если необходимо считывать и сохранять все пиксельные значения экрана или определенную строку сканирования экрана? И каков наилучший способ сделать это и требования к оборудованию? И не могли бы вы дать мне совет для моей программы?

Ответы [ 3 ]

3 голосов
/ 19 августа 2011

Айсберг, который обычно тонет в том, что «Титаник» - это огромное количество данных. Несжатый формат mpeg2 в основном профиле составляет 720 пикселей, х × 576 вер, х 3 байта на пиксель, 30 кадров = 37 мегабайт в секунду. Слишком много для жесткого диска. И вы не можете тратить более 30 миллисекунд на кадр. И вы легко потеряете больше от переключения контекста. Сосредоточьтесь на этих основных ограничениях.

0 голосов
/ 19 августа 2011

При обработке большого количества графики (обычно игровой графики) люди часто используют все функции видеокарты. Большинство графических карт имеют графический процессор (графический процессор), который может запускать программы, называемые пиксельными шейдерами и вершинными шейдерами, и очень быстро обрабатывать большое количество пикселей.

Я не уверен, как это может соответствовать тому, что вы пытаетесь сделать, но, возможно, стоит потратить на это время, чтобы посмотреть, сможете ли вы как-то использовать GPU вместо CPU.

Я думаю, что OpenGL lib может использоваться для доступа ко всем функциям графического процессора, но я не эксперт в этом.

0 голосов
/ 19 августа 2011

OpenCV сможет выполнять нужные вам функции.Будет ли задержка потокового ввода-вывода достаточно мала, зависит от ваших требований и имеющегося у вас оборудования.

Лучше всего использовать обработку на графическом сервере через CUDA / OpenCL.

...