#ifndef vtdevice_h #define vtdevice_h #include "sunshine/platform/common.h" namespace platf { class nv12_zero_device : public hwdevice_t { // display holds a pointer to an av_video object. Since the namespaces of AVFoundation // and FFMPEG collide, we need this opaque pointer and cannot use the definition void *display; public: // this function is used to set the resolution on an av_video object that we cannot // call directly because of namespace collisions between AVFoundation and FFMPEG using resolution_fn_t = std::function; resolution_fn_t resolution_fn; using pixel_format_fn_t = std::function; int init(void *display, resolution_fn_t resolution_fn, pixel_format_fn_t pixel_format_fn); int convert(img_t &img); int set_frame(AVFrame *frame); void set_colorspace(std::uint32_t colorspace, std::uint32_t color_range); }; } // namespace platf #endif /* vtdevice_h */