On Sat, Dec 21, 2019 at 12:46 AM Dmitry Sepp <dmitry.sepp@xxxxxxxxxxxxxxx> wrote: > On Freitag, 20. Dezember 2019 16:26:50 CET Keiichi Watanabe wrote: > > On Thu, Dec 19, 2019 at 10:28 PM Dmitry Sepp > > <dmitry.sepp@xxxxxxxxxxxxxxx> wrote: > > > On Mittwoch, 18. Dezember 2019 14:02:14 CET Keiichi Watanabe wrote: [snip] > > > > +enum virtio_video_format { > > > > + VIRTIO_VIDEO_FORMAT_UNDEFINED = 0, > > > > + /* Raw formats */ > > > > + VIRTIO_VIDEO_FORMAT_NV12 = 1, > > > > + VIRTIO_VIDEO_FORMAT_YUV420, > > > > + VIRTIO_VIDEO_FORMAT_YVU420, > > > > > > Let's add some variants of RGB, like RGBA, ARGB. We need it for the > > > encoder in particular . > > > > Sounds good. > > BTW, which "ARGB8888" or "A8R8G8B8" is preferred? While the first one > > comes from DRM's FourCC, the second one comes from virtio_gpu_formats. > > I personally prefer the first one, then we can have a naming convention > > like: VIRTIO_VIDEO_FORMAT_<name from drm_fourcc.h> > > > > I'd go with ARGB8888 and BGRA8888 (might be with X variants). Just to make sure we're talking about the same formats. DRM naming convention is based on the little endian convention, which for 32-bit formats means that you interpret the whole pixel as a packed 32-bit word on a little endian system. For ARGB8888 that would mean (bit 31) ARGB (bit 0) in the 32-bit word and (byte 0) B, G, R, A (byte 3) when looking at separate bytes in memory. Does that correspond to your expected format? We also have to be specific about the A and X formats, as the A format should be supported only if the hardware (host) doesn't ignore the alpha channel. I haven't seen any hardware capable of encoding alpha channel yet, but apparently for WebM the standard is to just encode the alpha channel into another stream as Y, together with dummy U and V values. [1] That sounds like something that would be handled by two separate encoding streams and not just one that accepts RGBA on the input. [1] http://wiki.webmproject.org/alpha-channel Best regards, Tomasz