25#include <unordered_set>
28#include <fruit/fruit.h>
44template <
typename ProcessedFrameType>
48 "ProcessedFrameType should be std::move-able.");
50 std::is_base_of<ScreenConnectorFrameInfo, ProcessedFrameType>::value,
51 "ProcessedFrameType should inherit ScreenConnectorFrameInfo");
64 LOG(
FATAL) <<
"CuttlefishConfig is not available.";
66 auto instance = config->ForDefaultInstance();
67 std::unordered_set<std::string_view> valid_gpu_modes{
75 if (!
Contains(valid_gpu_modes, instance.gpu_mode())) {
76 LOG(
FATAL) <<
"Invalid gpu mode: " << instance.gpu_mode();
89 std::uint32_t , std::uint32_t ,
90 std::uint32_t , std::uint32_t ,
91 std::uint32_t , std::uint8_t* ,
93 ProcessedFrameType& msg)>;
108 [
this](std::uint32_t display_number, std::uint32_t frame_w,
109 std::uint32_t frame_h, std::uint32_t frame_fourcc_format,
110 std::uint32_t frame_stride_bytes, std::uint8_t* frame_bytes) {
111 InjectFrame(display_number, frame_w, frame_h, frame_fourcc_format,
112 frame_stride_bytes, frame_bytes);
116 void InjectFrame(std::uint32_t display_number, std::uint32_t frame_w,
117 std::uint32_t frame_h, std::uint32_t frame_fourcc_format,
118 std::uint32_t frame_stride_bytes,
119 std::uint8_t* frame_bytes) {
121 if (is_confui_mode) {
125 ProcessedFrameType processed_frame;
130 frame_fourcc_format, frame_stride_bytes,
131 frame_bytes, processed_frame);
163 std::uint32_t frame_width,
164 std::uint32_t frame_height,
165 std::uint32_t frame_fourcc_format,
166 std::uint32_t frame_stride_bytes,
167 std::uint8_t* frame_bytes)
override {
172 ConfUiLog(
ERROR) <<
"callback function to process frames is not yet set";
175 ProcessedFrameType processed_frame;
181 frame_fourcc_format, frame_stride_bytes,
182 frame_bytes, processed_frame);
std::string to_string(ConnectionState state)
Definition: adb.cpp:144
static const CuttlefishConfig * Get()
Definition: cuttlefish_config.cpp:552
Definition: host_mode_ctrl.h:38
auto IsConfirmatioUiMode()
Definition: host_mode_ctrl.h:102
Definition: screen_connector.h:45
ProcessedFrameType OnNextFrame()
Definition: screen_connector.h:153
void SetCallback(GenerateProcessedFrameCallback &&frame_callback)
Definition: screen_connector.h:102
WaylandScreenConnector & sc_android_src_
Definition: screen_connector.h:192
bool RenderConfirmationUi(std::uint32_t display_number, std::uint32_t frame_width, std::uint32_t frame_height, std::uint32_t frame_fourcc_format, std::uint32_t frame_stride_bytes, std::uint8_t *frame_bytes) override
Definition: screen_connector.h:162
std::function< void(std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint32_t, std::uint8_t *, ProcessedFrameType &msg)> GenerateProcessedFrameCallback
Definition: screen_connector.h:93
unsigned long long int on_next_frame_cnt_
Definition: screen_connector.h:194
std::mutex streamer_callback_mutex_
Definition: screen_connector.h:205
HostModeCtrl & host_mode_ctrl_
Definition: screen_connector.h:193
unsigned long long int render_confui_cnt_
Definition: screen_connector.h:195
void InjectFrame(std::uint32_t display_number, std::uint32_t frame_w, std::uint32_t frame_h, std::uint32_t frame_fourcc_format, std::uint32_t frame_stride_bytes, std::uint8_t *frame_bytes)
Definition: screen_connector.h:116
std::condition_variable streamer_callback_set_cv_
Definition: screen_connector.h:206
GenerateProcessedFrameCallback callback_from_streamer_
Definition: screen_connector.h:203
bool IsCallbackSet() const override
Definition: screen_connector.h:137
INJECT(ScreenConnector(WaylandScreenConnector &sc_android_src, HostModeCtrl &host_mode_ctrl))
Definition: screen_connector.h:55
void SetDisplayEventCallback(DisplayEventCallback event_callback)
Definition: screen_connector.h:144
FrameMultiplexer sc_frame_multiplexer_
Definition: screen_connector.h:202
virtual ~ScreenConnector()=default
Definition: wayland_screen_connector.h:28
void SetDisplayEventCallback(DisplayEventCallback event_callback)
Definition: wayland_screen_connector.cpp:45
void SetFrameCallback(GenerateProcessedFrameCallbackImpl frame_callback)
Definition: wayland_screen_connector.cpp:40
#define ConfUiLog(LOG_LEVEL)
Definition: utils.h:61
#define FATAL(x...)
Definition: image.h:31
#define LOG(severity)
Definition: logging.h:223
@ DEBUG
Definition: logging.h:89
@ ERROR
Definition: logging.h:92
std::string GetName(const std::thread::id tid)
Definition: host_utils.cc:63
Definition: alloc_utils.cpp:23
constexpr char kGpuModeCustom[]
Definition: config_constants.h:70
constexpr bool Contains(Container &&container, U &&u)
Definition: contains.h:98
constexpr char kGpuModeGuestSwiftshader[]
Definition: config_constants.h:78
constexpr char kGpuModeGfxstream[]
Definition: config_constants.h:72
constexpr char kGpuModeGfxstreamGuestAngleHostSwiftShader[]
Definition: config_constants.h:74
constexpr char kGpuModeGfxstreamGuestAngleHostLavapipe[]
Definition: config_constants.h:76
constexpr char kGpuModeGfxstreamGuestAngle[]
Definition: config_constants.h:73
constexpr char kGpuModeDrmVirgl[]
Definition: config_constants.h:71
Definition: screen_connector_common.h:51
Definition: screen_connector_common.h:27
std::function< void(const DisplayEvent &)> DisplayEventCallback
Definition: wayland_server_callbacks.h:34