mirror of
https://github.com/LizardByte/Sunshine.git
synced 2024-11-18 11:10:04 +00:00
30 lines
989 B
C
30 lines
989 B
C
|
#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<void(void *display, int width, int height)>;
|
||
|
resolution_fn_t resolution_fn;
|
||
|
using pixel_format_fn_t = std::function<void(void *display, int pixelFormat)>;
|
||
|
|
||
|
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 */
|