Endilll/vapoursynth-preview

10-bit output

Closed this issue · 5 comments

In Linux with X11 there's native support for 10-bit color. Since 10-bit RGB formats are available in Qt and are packed as 32-bit as well, is it possible to preview in 10-bit, after changing to v4 API of VS?

Short answer: yes
Long answer:

  1. I don't have a display to test if it's working properly
  2. Qt is likely to support 10-bit format
  3. 10-bit formats are not a target Qt optimizes rendering for, which means playback will be somewhat slower
  4. it's not tied to APIv4 in any way

Thanks for the quick reply.

it's not tied to APIv4 in any way

Yep, I mentioned APIv4 because we may not resize to COMPATBGR32 for 10-bit output.

I made some primary attempts with numpy and managed to pack RGB30 (and RGB24, too, see YomikoR@46551b2). It seems 10-bit inputs are accepted but maybe rendered as 8-bit on the screen with only the frame image creation modified. I would like to call it a day.

I think I found where the conversion to 8-bit was taken. In

self._graphics_item.setPixmap(Qt.QPixmap.fromImage(self._image))

change it to
self._graphics_item.setPixmap(Qt.QPixmap.fromImage(self._image, Qt.Qt.NoFormatConversion))

Thanks for digging this up.