This is the v4 RFC of virtio video device specification. PDF versions are available at [1, 2]. Note that this patch depends on a recent patchset "Cross-device resource sharing" [3]. Here is a list of major changes from v3: * Redesingned struct definitions for each command and request based on discussions at [4]. * Renamed commands/structs/enums to more descriptive names. * Had different structs and fields for image formats and bitstream formats. * Added more detailed specification for supported video codecs. * Made stream_id be allocated by the device. * Had a single parameter struct per-stream instead of per-queue parameters and controls. * Allowed the driver to specify the number of buffers to use via "cur_{image,bitstream}_buffers". * Renamed RESOURCE_CREATE command to RESOURCE_ATTACH command and allow the driver to use this command when replacing backing memories as well. [5] is the diff of the header file from v3. Note that it only contains changes in the header. We haven't updated the driver nor device implementation to focus on protocol design discussion first. While it may appear that many parts have been changed since the previous revision, these changes are to address the issues raised in previous discussions or/and to make the protocol simpler and easier to prevent misuse. I'd appreciate any types of feedback. Best regards, Keiichi [1] (full): https://drive.google.com/file/d/1DiOJZfUJ5wvFtnNFQicxt0zkp4Ob1o9C/view?usp=sharing [2] (only video section): https://drive.google.com/file/d/188uAkIWE0BsXETECez98y5fJKw8rslj3/view?usp=sharing [3] https://lists.oasis-open.org/archives/virtio-comment/202003/msg00035.html [4] https://markmail.org/thread/c6h3e3zn647qli3w [5] https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2164411 Keiichi Watanabe (1): virtio-video: Add virtio video device specification .gitignore | 1 + content.tex | 1 + images/video-buffer-lifecycle.dot | 18 + make-setup-generated.sh | 8 + virtio-video.tex | 1163 +++++++++++++++++++++++++++++ 5 files changed, 1191 insertions(+) create mode 100644 .gitignore create mode 100644 images/video-buffer-lifecycle.dot create mode 100644 virtio-video.tex -- 2.27.0.111.gc72c7da667-goog