Это много вопросов, я постараюсь ответить хотя бы на некоторые из них.
Никакой дисплей не может обрабатывать YCbCr-данные, поэтому я думаю, что все где-то конвертируется в RGB.
Все дисплеи используют RGB. На ЖК-дисплеях каждый пиксель состоит из трех подпикселей трех основных цветов. Таким образом, вы правы, все должно быть преобразовано в RGB для отображения.
Если я сделаю преобразование YCbCr- в RGB, гарантирую ли я, что отображаемые значения пикселов совпадают?
Это зависит от того, что вы имеете в виду. Вам гарантировано, что отображаются точные результаты конвертации. Так что это зависит от результатов конверсии, которые зависят от используемой вами гаммы.
Есть ли способ иметь как можно больше контроля над "конвейером" на дисплее (т.е. мои пиксели не преобразуются в пути), я думаю, возможно, nvidia/gpu/opengl и перемещать все как можно ближе к HW, как возможный; тогда, по крайней мере, для моей графической карты я знаю, на что смотрю.
Как только изображение конвертируется в RGB, оно больше не изменяется (если вы не используете f.lux или подобное программное обеспечение). На самом деле не имеет значения, приближается ли он к аппаратному обеспечению или нет, это всего лишь куча пикселей, и ничто не изменит их после преобразования в RGB (если только вы не попросите что-либо, например, с упомянутым f.lux, программным обеспечением для коррекции цвета или редактирования видео). программы, которые могут применять цветные фильтры).
YCbCr - 8bpp, и я думаю о 32-битном RGB 4:4:4.
Я думаю, что вы смешиваете несколько вещей, или я не понимаю, что вы имеете в виду. Во-первых, 32-битный RGB не может быть 4:4:4, потому что вы не можете в равной степени разделить 32-битные на 3 цветовых канала. (10 бит для R, 11 бит для G, 11 бит для B?) 32-битный RGB фактически состоит из трех 8-битных цветовых каналов и одного 8-битного канала прозрачности. Видео не имеют прозрачности, поэтому они работают с 24-битным RGB. (8 бит для каждого канала)
Я не знаю, как YCbCr сохраняется в цифровом формате, но я уверен, что он не 8-битный, по крайней мере, если предположить, что мы говорим об общем размере пикселя. (если вы имеете в виду 8-битные цветные каналы, то это ровно столько же, сколько в RGB) 8-битные пиксели могут содержать до 256 цветов. 24-битный RGB - это более 16 миллионов цветов.
Существует ли RGB-формат, который является родным для видеокарты и не требует дальнейшего преобразования?
Итак, вы хотите сырые, несжатые пиксели RGB? Ну, есть такие форматы изображений и видео, но несжатые видео занимают много места. Давайте сделаем быстрый расчет для 24-битного видео 24pps 1080p:
3B * 1920px * 1080px * 24fps = 149299200B
Таким образом, каждая секунда необработанного несжатого видео 1080p весит более 140 МБ. Это означает, что вы можете получить до 5 с половиной минут видео на стандартном Blu-Ray диске. Не очень хорошая сделка, я думаю;)