Захват экрана в формате YUV с помощью BitBlt

В настоящее время я использую функцию BitBlt для захвата экрана, а затем кодирую его. Поскольку мой кодировщик использует формат YUV420 для ввода, мне нужно преобразовать данные из RGB в YUV перед кодированием. Мне было интересно, есть ли способ сделать снимок экрана в формате YUV вместо RGB?

Спасибо, Джей


person Dundar    schedule 31.01.2013    source источник


Ответы (1)


Я постараюсь ответить на этот вопрос, хотя я не совсем понимаю, как работает BitBlt, так как сам не заставлял его работать.

Но вот идет.

Насколько я понимаю, BiBlt захватывает с графической карты, то есть он будет работать быстро, так как нет кругового движения. Это должно означать, что если вы отображаете в RGB (что обычно делает ПК), вы получите тот же формат.

Итак, если вы хотите YV12, вам придется сделать субдискретизацию перед использованием изображения.

что-то вроде этого, я думаю.

CaptureBitBlt в IMG. Конвертировать IMG в YV12. Кодировать ИМГ.

Ну, это просто выглядит уродливо, но надеюсь, вы поняли, что я имею в виду. Вам нужно будет сделать преобразование, прежде чем работать с изображением.

Отнеситесь к этому с долей скептицизма, я могу быть в лесу, но я думаю, что это то, как это должно быть сделано.

person Zerowalker    schedule 09.08.2013