spout-rs 0.1.3

Rust bindings for Spout2 — GPU texture sharing on Windows
Documentation
#pragma once
#include "rust/cxx.h"
#include "SpoutSender.h"
#include "SpoutReceiver.h"
#include <memory>

class SpoutSenderBridge {
public:
    void set_sender_name(rust::Str name);
    bool send_texture(uint32_t tex_id, uint32_t target,
                      uint32_t width, uint32_t height,
                      bool invert, uint32_t host_fbo);
    bool send_image(rust::Slice<const uint8_t> pixels,
                    uint32_t width, uint32_t height,
                    uint32_t gl_format, bool invert, uint32_t host_fbo);
    void release_sender();
    bool is_initialized();
    rust::String get_name();
    uint32_t get_width();
    uint32_t get_height();
    void hold_fps(int32_t fps);

private:
    SpoutSender inner;
};

class SpoutReceiverBridge {
public:
    void set_receiver_name(rust::Str name);
    bool receive_texture(uint32_t tex_id, uint32_t target,
                         bool invert, uint32_t host_fbo);
    bool receive_texture_connect();
    void release_receiver();
    bool is_updated();
    bool is_connected();
    bool is_frame_new();
    rust::String get_sender_name();
    uint32_t get_sender_width();
    uint32_t get_sender_height();
    double get_sender_fps();
    long get_sender_frame();

private:
    SpoutReceiver inner;
};

std::unique_ptr<SpoutSenderBridge>   new_spout_sender();
std::unique_ptr<SpoutReceiverBridge> new_spout_receiver();

// Directory — free functions for listing active senders
int32_t         spout_sender_count();
rust::String    spout_get_sender(int32_t index);