blob: c4a89f32693a3a55816e1c7903dce342ed1ae718 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file was automatically generated with:
// ../../ui/gfx/x/gen_xproto.py \
// ../../third_party/xcbproto/src \
// gen/ui/gfx/x \
// bigreq \
// composite \
// damage \
// dpms \
// dri2 \
// dri3 \
// ge \
// glx \
// present \
// randr \
// record \
// render \
// res \
// screensaver \
// shape \
// shm \
// sync \
// xc_misc \
// xevie \
// xf86dri \
// xf86vidmode \
// xfixes \
// xinerama \
// xinput \
// xkb \
// xprint \
// xproto \
// xselinux \
// xtest \
// xv \
// xvmc
#ifndef UI_GFX_X_GENERATED_PROTOS_XV_H_
#define UI_GFX_X_GENERATED_PROTOS_XV_H_
#include <array>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <vector>
#include "base/component_export.h"
#include "base/files/scoped_file.h"
#include "base/memory/ref_counted_memory.h"
#include "base/memory/scoped_refptr.h"
#include "shm.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/x/error.h"
#include "ui/gfx/x/ref_counted_fd.h"
#include "xproto.h"
namespace x11 {
class Connection;
template <typename Reply>
struct Response;
template <typename Reply>
class Future;
class COMPONENT_EXPORT(X11) Xv {
public:
static constexpr unsigned major_version = 2;
static constexpr unsigned minor_version = 2;
Xv(Connection* connection, const x11::QueryExtensionReply& info);
uint8_t present() const { return info_.present; }
uint8_t major_opcode() const { return info_.major_opcode; }
uint8_t first_event() const { return info_.first_event; }
uint8_t first_error() const { return info_.first_error; }
Connection* connection() const { return connection_; }
enum class Port : uint32_t {};
enum class Encoding : uint32_t {};
enum class Type : int {
InputMask = 1 << 0,
OutputMask = 1 << 1,
VideoMask = 1 << 2,
StillMask = 1 << 3,
ImageMask = 1 << 4,
};
enum class ImageFormatInfoType : int {
RGB = 0,
YUV = 1,
};
enum class ImageFormatInfoFormat : int {
Packed = 0,
Planar = 1,
};
enum class AttributeFlag : int {
Gettable = 1 << 0,
Settable = 1 << 1,
};
enum class VideoNotifyReason : int {
Started = 0,
Stopped = 1,
Busy = 2,
Preempted = 3,
HardError = 4,
};
enum class ScanlineOrder : int {
TopToBottom = 0,
BottomToTop = 1,
};
enum class GrabPortStatus : int {
Success = 0,
BadExtension = 1,
AlreadyGrabbed = 2,
InvalidTime = 3,
BadReply = 4,
BadAlloc = 5,
};
struct Rational {
int32_t numerator{};
int32_t denominator{};
};
struct Format {
VisualId visual{};
uint8_t depth{};
};
struct AdaptorInfo {
Port base_id{};
uint16_t num_ports{};
Type type{};
std::string name{};
std::vector<Format> formats{};
};
struct EncodingInfo {
Encoding encoding{};
uint16_t width{};
uint16_t height{};
Rational rate{};
std::string name{};
};
struct Image {
uint32_t id{};
uint16_t width{};
uint16_t height{};
std::vector<uint32_t> pitches{};
std::vector<uint32_t> offsets{};
std::vector<uint8_t> data{};
};
struct AttributeInfo {
AttributeFlag flags{};
int32_t min{};
int32_t max{};
std::string name{};
};
struct ImageFormatInfo {
uint32_t id{};
ImageFormatInfoType type{};
ImageOrder byte_order{};
std::array<uint8_t, 16> guid{};
uint8_t bpp{};
uint8_t num_planes{};
uint8_t depth{};
uint32_t red_mask{};
uint32_t green_mask{};
uint32_t blue_mask{};
ImageFormatInfoFormat format{};
uint32_t y_sample_bits{};
uint32_t u_sample_bits{};
uint32_t v_sample_bits{};
uint32_t vhorz_y_period{};
uint32_t vhorz_u_period{};
uint32_t vhorz_v_period{};
uint32_t vvert_y_period{};
uint32_t vvert_u_period{};
uint32_t vvert_v_period{};
std::array<uint8_t, 32> vcomp_order{};
ScanlineOrder vscanline_order{};
};
struct BadPortError : public x11::Error {
uint16_t sequence{};
std::string ToString() const override;
};
struct BadEncodingError : public x11::Error {
uint16_t sequence{};
std::string ToString() const override;
};
struct BadControlError : public x11::Error {
uint16_t sequence{};
std::string ToString() const override;
};
struct VideoNotifyEvent {
static constexpr int type_id = 81;
static constexpr uint8_t opcode = 0;
bool send_event{};
VideoNotifyReason reason{};
uint16_t sequence{};
Time time{};
Drawable drawable{};
Port port{};
x11::Window* GetWindow() {
return reinterpret_cast<x11::Window*>(&drawable);
}
};
struct PortNotifyEvent {
static constexpr int type_id = 82;
static constexpr uint8_t opcode = 1;
bool send_event{};
uint16_t sequence{};
Time time{};
Port port{};
Atom attribute{};
int32_t value{};
x11::Window* GetWindow() { return nullptr; }
};
struct QueryExtensionRequest {};
struct QueryExtensionReply {
uint16_t sequence{};
uint16_t major{};
uint16_t minor{};
};
using QueryExtensionResponse = Response<QueryExtensionReply>;
Future<QueryExtensionReply> QueryExtension(
const QueryExtensionRequest& request);
Future<QueryExtensionReply> QueryExtension();
struct QueryAdaptorsRequest {
Window window{};
};
struct QueryAdaptorsReply {
uint16_t sequence{};
std::vector<AdaptorInfo> info{};
};
using QueryAdaptorsResponse = Response<QueryAdaptorsReply>;
Future<QueryAdaptorsReply> QueryAdaptors(const QueryAdaptorsRequest& request);
Future<QueryAdaptorsReply> QueryAdaptors(const Window& window = {});
struct QueryEncodingsRequest {
Port port{};
};
struct QueryEncodingsReply {
uint16_t sequence{};
std::vector<EncodingInfo> info{};
};
using QueryEncodingsResponse = Response<QueryEncodingsReply>;
Future<QueryEncodingsReply> QueryEncodings(
const QueryEncodingsRequest& request);
Future<QueryEncodingsReply> QueryEncodings(const Port& port = {});
struct GrabPortRequest {
Port port{};
Time time{};
};
struct GrabPortReply {
GrabPortStatus result{};
uint16_t sequence{};
};
using GrabPortResponse = Response<GrabPortReply>;
Future<GrabPortReply> GrabPort(const GrabPortRequest& request);
Future<GrabPortReply> GrabPort(const Port& port = {}, const Time& time = {});
struct UngrabPortRequest {
Port port{};
Time time{};
};
using UngrabPortResponse = Response<void>;
Future<void> UngrabPort(const UngrabPortRequest& request);
Future<void> UngrabPort(const Port& port = {}, const Time& time = {});
struct PutVideoRequest {
Port port{};
Drawable drawable{};
GraphicsContext gc{};
int16_t vid_x{};
int16_t vid_y{};
uint16_t vid_w{};
uint16_t vid_h{};
int16_t drw_x{};
int16_t drw_y{};
uint16_t drw_w{};
uint16_t drw_h{};
};
using PutVideoResponse = Response<void>;
Future<void> PutVideo(const PutVideoRequest& request);
Future<void> PutVideo(const Port& port = {},
const Drawable& drawable = {},
const GraphicsContext& gc = {},
const int16_t& vid_x = {},
const int16_t& vid_y = {},
const uint16_t& vid_w = {},
const uint16_t& vid_h = {},
const int16_t& drw_x = {},
const int16_t& drw_y = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {});
struct PutStillRequest {
Port port{};
Drawable drawable{};
GraphicsContext gc{};
int16_t vid_x{};
int16_t vid_y{};
uint16_t vid_w{};
uint16_t vid_h{};
int16_t drw_x{};
int16_t drw_y{};
uint16_t drw_w{};
uint16_t drw_h{};
};
using PutStillResponse = Response<void>;
Future<void> PutStill(const PutStillRequest& request);
Future<void> PutStill(const Port& port = {},
const Drawable& drawable = {},
const GraphicsContext& gc = {},
const int16_t& vid_x = {},
const int16_t& vid_y = {},
const uint16_t& vid_w = {},
const uint16_t& vid_h = {},
const int16_t& drw_x = {},
const int16_t& drw_y = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {});
struct GetVideoRequest {
Port port{};
Drawable drawable{};
GraphicsContext gc{};
int16_t vid_x{};
int16_t vid_y{};
uint16_t vid_w{};
uint16_t vid_h{};
int16_t drw_x{};
int16_t drw_y{};
uint16_t drw_w{};
uint16_t drw_h{};
};
using GetVideoResponse = Response<void>;
Future<void> GetVideo(const GetVideoRequest& request);
Future<void> GetVideo(const Port& port = {},
const Drawable& drawable = {},
const GraphicsContext& gc = {},
const int16_t& vid_x = {},
const int16_t& vid_y = {},
const uint16_t& vid_w = {},
const uint16_t& vid_h = {},
const int16_t& drw_x = {},
const int16_t& drw_y = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {});
struct GetStillRequest {
Port port{};
Drawable drawable{};
GraphicsContext gc{};
int16_t vid_x{};
int16_t vid_y{};
uint16_t vid_w{};
uint16_t vid_h{};
int16_t drw_x{};
int16_t drw_y{};
uint16_t drw_w{};
uint16_t drw_h{};
};
using GetStillResponse = Response<void>;
Future<void> GetStill(const GetStillRequest& request);
Future<void> GetStill(const Port& port = {},
const Drawable& drawable = {},
const GraphicsContext& gc = {},
const int16_t& vid_x = {},
const int16_t& vid_y = {},
const uint16_t& vid_w = {},
const uint16_t& vid_h = {},
const int16_t& drw_x = {},
const int16_t& drw_y = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {});
struct StopVideoRequest {
Port port{};
Drawable drawable{};
};
using StopVideoResponse = Response<void>;
Future<void> StopVideo(const StopVideoRequest& request);
Future<void> StopVideo(const Port& port = {}, const Drawable& drawable = {});
struct SelectVideoNotifyRequest {
Drawable drawable{};
uint8_t onoff{};
};
using SelectVideoNotifyResponse = Response<void>;
Future<void> SelectVideoNotify(const SelectVideoNotifyRequest& request);
Future<void> SelectVideoNotify(const Drawable& drawable = {},
const uint8_t& onoff = {});
struct SelectPortNotifyRequest {
Port port{};
uint8_t onoff{};
};
using SelectPortNotifyResponse = Response<void>;
Future<void> SelectPortNotify(const SelectPortNotifyRequest& request);
Future<void> SelectPortNotify(const Port& port = {},
const uint8_t& onoff = {});
struct QueryBestSizeRequest {
Port port{};
uint16_t vid_w{};
uint16_t vid_h{};
uint16_t drw_w{};
uint16_t drw_h{};
uint8_t motion{};
};
struct QueryBestSizeReply {
uint16_t sequence{};
uint16_t actual_width{};
uint16_t actual_height{};
};
using QueryBestSizeResponse = Response<QueryBestSizeReply>;
Future<QueryBestSizeReply> QueryBestSize(const QueryBestSizeRequest& request);
Future<QueryBestSizeReply> QueryBestSize(const Port& port = {},
const uint16_t& vid_w = {},
const uint16_t& vid_h = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {},
const uint8_t& motion = {});
struct SetPortAttributeRequest {
Port port{};
Atom attribute{};
int32_t value{};
};
using SetPortAttributeResponse = Response<void>;
Future<void> SetPortAttribute(const SetPortAttributeRequest& request);
Future<void> SetPortAttribute(const Port& port = {},
const Atom& attribute = {},
const int32_t& value = {});
struct GetPortAttributeRequest {
Port port{};
Atom attribute{};
};
struct GetPortAttributeReply {
uint16_t sequence{};
int32_t value{};
};
using GetPortAttributeResponse = Response<GetPortAttributeReply>;
Future<GetPortAttributeReply> GetPortAttribute(
const GetPortAttributeRequest& request);
Future<GetPortAttributeReply> GetPortAttribute(const Port& port = {},
const Atom& attribute = {});
struct QueryPortAttributesRequest {
Port port{};
};
struct QueryPortAttributesReply {
uint16_t sequence{};
uint32_t text_size{};
std::vector<AttributeInfo> attributes{};
};
using QueryPortAttributesResponse = Response<QueryPortAttributesReply>;
Future<QueryPortAttributesReply> QueryPortAttributes(
const QueryPortAttributesRequest& request);
Future<QueryPortAttributesReply> QueryPortAttributes(const Port& port = {});
struct ListImageFormatsRequest {
Port port{};
};
struct ListImageFormatsReply {
uint16_t sequence{};
std::vector<ImageFormatInfo> format{};
};
using ListImageFormatsResponse = Response<ListImageFormatsReply>;
Future<ListImageFormatsReply> ListImageFormats(
const ListImageFormatsRequest& request);
Future<ListImageFormatsReply> ListImageFormats(const Port& port = {});
struct QueryImageAttributesRequest {
Port port{};
uint32_t id{};
uint16_t width{};
uint16_t height{};
};
struct QueryImageAttributesReply {
uint16_t sequence{};
uint32_t data_size{};
uint16_t width{};
uint16_t height{};
std::vector<uint32_t> pitches{};
std::vector<uint32_t> offsets{};
};
using QueryImageAttributesResponse = Response<QueryImageAttributesReply>;
Future<QueryImageAttributesReply> QueryImageAttributes(
const QueryImageAttributesRequest& request);
Future<QueryImageAttributesReply> QueryImageAttributes(
const Port& port = {},
const uint32_t& id = {},
const uint16_t& width = {},
const uint16_t& height = {});
struct PutImageRequest {
Port port{};
Drawable drawable{};
GraphicsContext gc{};
uint32_t id{};
int16_t src_x{};
int16_t src_y{};
uint16_t src_w{};
uint16_t src_h{};
int16_t drw_x{};
int16_t drw_y{};
uint16_t drw_w{};
uint16_t drw_h{};
uint16_t width{};
uint16_t height{};
std::vector<uint8_t> data{};
};
using PutImageResponse = Response<void>;
Future<void> PutImage(const PutImageRequest& request);
Future<void> PutImage(const Port& port = {},
const Drawable& drawable = {},
const GraphicsContext& gc = {},
const uint32_t& id = {},
const int16_t& src_x = {},
const int16_t& src_y = {},
const uint16_t& src_w = {},
const uint16_t& src_h = {},
const int16_t& drw_x = {},
const int16_t& drw_y = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {},
const uint16_t& width = {},
const uint16_t& height = {},
const std::vector<uint8_t>& data = {});
struct ShmPutImageRequest {
Port port{};
Drawable drawable{};
GraphicsContext gc{};
Shm::Seg shmseg{};
uint32_t id{};
uint32_t offset{};
int16_t src_x{};
int16_t src_y{};
uint16_t src_w{};
uint16_t src_h{};
int16_t drw_x{};
int16_t drw_y{};
uint16_t drw_w{};
uint16_t drw_h{};
uint16_t width{};
uint16_t height{};
uint8_t send_event{};
};
using ShmPutImageResponse = Response<void>;
Future<void> ShmPutImage(const ShmPutImageRequest& request);
Future<void> ShmPutImage(const Port& port = {},
const Drawable& drawable = {},
const GraphicsContext& gc = {},
const Shm::Seg& shmseg = {},
const uint32_t& id = {},
const uint32_t& offset = {},
const int16_t& src_x = {},
const int16_t& src_y = {},
const uint16_t& src_w = {},
const uint16_t& src_h = {},
const int16_t& drw_x = {},
const int16_t& drw_y = {},
const uint16_t& drw_w = {},
const uint16_t& drw_h = {},
const uint16_t& width = {},
const uint16_t& height = {},
const uint8_t& send_event = {});
private:
Connection* const connection_;
x11::QueryExtensionReply info_{};
};
} // namespace x11
inline constexpr x11::Xv::Type operator|(x11::Xv::Type l, x11::Xv::Type r) {
using T = std::underlying_type_t<x11::Xv::Type>;
return static_cast<x11::Xv::Type>(static_cast<T>(l) | static_cast<T>(r));
}
inline constexpr x11::Xv::Type operator&(x11::Xv::Type l, x11::Xv::Type r) {
using T = std::underlying_type_t<x11::Xv::Type>;
return static_cast<x11::Xv::Type>(static_cast<T>(l) & static_cast<T>(r));
}
inline constexpr x11::Xv::ImageFormatInfoType operator|(
x11::Xv::ImageFormatInfoType l,
x11::Xv::ImageFormatInfoType r) {
using T = std::underlying_type_t<x11::Xv::ImageFormatInfoType>;
return static_cast<x11::Xv::ImageFormatInfoType>(static_cast<T>(l) |
static_cast<T>(r));
}
inline constexpr x11::Xv::ImageFormatInfoType operator&(
x11::Xv::ImageFormatInfoType l,
x11::Xv::ImageFormatInfoType r) {
using T = std::underlying_type_t<x11::Xv::ImageFormatInfoType>;
return static_cast<x11::Xv::ImageFormatInfoType>(static_cast<T>(l) &
static_cast<T>(r));
}
inline constexpr x11::Xv::ImageFormatInfoFormat operator|(
x11::Xv::ImageFormatInfoFormat l,
x11::Xv::ImageFormatInfoFormat r) {
using T = std::underlying_type_t<x11::Xv::ImageFormatInfoFormat>;
return static_cast<x11::Xv::ImageFormatInfoFormat>(static_cast<T>(l) |
static_cast<T>(r));
}
inline constexpr x11::Xv::ImageFormatInfoFormat operator&(
x11::Xv::ImageFormatInfoFormat l,
x11::Xv::ImageFormatInfoFormat r) {
using T = std::underlying_type_t<x11::Xv::ImageFormatInfoFormat>;
return static_cast<x11::Xv::ImageFormatInfoFormat>(static_cast<T>(l) &
static_cast<T>(r));
}
inline constexpr x11::Xv::AttributeFlag operator|(x11::Xv::AttributeFlag l,
x11::Xv::AttributeFlag r) {
using T = std::underlying_type_t<x11::Xv::AttributeFlag>;
return static_cast<x11::Xv::AttributeFlag>(static_cast<T>(l) |
static_cast<T>(r));
}
inline constexpr x11::Xv::AttributeFlag operator&(x11::Xv::AttributeFlag l,
x11::Xv::AttributeFlag r) {
using T = std::underlying_type_t<x11::Xv::AttributeFlag>;
return static_cast<x11::Xv::AttributeFlag>(static_cast<T>(l) &
static_cast<T>(r));
}
inline constexpr x11::Xv::VideoNotifyReason operator|(
x11::Xv::VideoNotifyReason l,
x11::Xv::VideoNotifyReason r) {
using T = std::underlying_type_t<x11::Xv::VideoNotifyReason>;
return static_cast<x11::Xv::VideoNotifyReason>(static_cast<T>(l) |
static_cast<T>(r));
}
inline constexpr x11::Xv::VideoNotifyReason operator&(
x11::Xv::VideoNotifyReason l,
x11::Xv::VideoNotifyReason r) {
using T = std::underlying_type_t<x11::Xv::VideoNotifyReason>;
return static_cast<x11::Xv::VideoNotifyReason>(static_cast<T>(l) &
static_cast<T>(r));
}
inline constexpr x11::Xv::ScanlineOrder operator|(x11::Xv::ScanlineOrder l,
x11::Xv::ScanlineOrder r) {
using T = std::underlying_type_t<x11::Xv::ScanlineOrder>;
return static_cast<x11::Xv::ScanlineOrder>(static_cast<T>(l) |
static_cast<T>(r));
}
inline constexpr x11::Xv::ScanlineOrder operator&(x11::Xv::ScanlineOrder l,
x11::Xv::ScanlineOrder r) {
using T = std::underlying_type_t<x11::Xv::ScanlineOrder>;
return static_cast<x11::Xv::ScanlineOrder>(static_cast<T>(l) &
static_cast<T>(r));
}
inline constexpr x11::Xv::GrabPortStatus operator|(x11::Xv::GrabPortStatus l,
x11::Xv::GrabPortStatus r) {
using T = std::underlying_type_t<x11::Xv::GrabPortStatus>;
return static_cast<x11::Xv::GrabPortStatus>(static_cast<T>(l) |
static_cast<T>(r));
}
inline constexpr x11::Xv::GrabPortStatus operator&(x11::Xv::GrabPortStatus l,
x11::Xv::GrabPortStatus r) {
using T = std::underlying_type_t<x11::Xv::GrabPortStatus>;
return static_cast<x11::Xv::GrabPortStatus>(static_cast<T>(l) &
static_cast<T>(r));
}
#endif // UI_GFX_X_GENERATED_PROTOS_XV_H_