26#include <unordered_set>
28#include "absl/log/log.h"
29#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<GpuMode> valid_gpu_modes{
77 if (!
Contains(valid_gpu_modes, instance.gpu_mode())) {
95 ProcessedFrameType& msg)>;
110 [
this](uint32_t display_number, uint32_t frame_w, uint32_t frame_h,
111 uint32_t frame_fourcc_format, uint32_t frame_stride_bytes,
112 uint8_t* frame_bytes) {
113 InjectFrame(display_number, frame_w, frame_h, frame_fourcc_format,
114 frame_stride_bytes, frame_bytes);
118 void InjectFrame(uint32_t display_number, uint32_t frame_w, uint32_t frame_h,
119 uint32_t frame_fourcc_format, uint32_t frame_stride_bytes,
120 uint8_t* frame_bytes) {
122 if (is_confui_mode) {
126 ProcessedFrameType processed_frame;
131 frame_fourcc_format, frame_stride_bytes,
132 frame_bytes, processed_frame);
164 uint32_t frame_height, uint32_t frame_fourcc_format,
165 uint32_t frame_stride_bytes,
166 uint8_t* frame_bytes)
override {
171 ConfUiLog(
ERROR) <<
"callback function to process frames is not yet set";
174 ProcessedFrameType processed_frame;
180 frame_fourcc_format, frame_stride_bytes,
181 frame_bytes, processed_frame);
std::string to_string(ConnectionState state)
Definition: adb.cpp:144
static const CuttlefishConfig * Get()
Definition: cuttlefish_config.cpp:461
Definition: host_mode_ctrl.h:39
auto IsConfirmatioUiMode()
Definition: host_mode_ctrl.h:103
Definition: screen_connector.h:45
ProcessedFrameType OnNextFrame()
Definition: screen_connector.h:154
void SetCallback(GenerateProcessedFrameCallback &&frame_callback)
Definition: screen_connector.h:104
WaylandScreenConnector & sc_android_src_
Definition: screen_connector.h:191
unsigned long long int on_next_frame_cnt_
Definition: screen_connector.h:193
std::mutex streamer_callback_mutex_
Definition: screen_connector.h:204
void InjectFrame(uint32_t display_number, uint32_t frame_w, uint32_t frame_h, uint32_t frame_fourcc_format, uint32_t frame_stride_bytes, uint8_t *frame_bytes)
Definition: screen_connector.h:118
HostModeCtrl & host_mode_ctrl_
Definition: screen_connector.h:192
unsigned long long int render_confui_cnt_
Definition: screen_connector.h:194
std::function< void(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint8_t *, ProcessedFrameType &msg)> GenerateProcessedFrameCallback
Definition: screen_connector.h:95
bool RenderConfirmationUi(uint32_t display_number, uint32_t frame_width, uint32_t frame_height, uint32_t frame_fourcc_format, uint32_t frame_stride_bytes, uint8_t *frame_bytes) override
Definition: screen_connector.h:163
std::condition_variable streamer_callback_set_cv_
Definition: screen_connector.h:205
GenerateProcessedFrameCallback callback_from_streamer_
Definition: screen_connector.h:202
bool IsCallbackSet() const override
Definition: screen_connector.h:138
INJECT(ScreenConnector(WaylandScreenConnector &sc_android_src, HostModeCtrl &host_mode_ctrl))
Definition: screen_connector.h:55
void SetDisplayEventCallback(DisplayEventCallback event_callback)
Definition: screen_connector.h:145
FrameMultiplexer sc_frame_multiplexer_
Definition: screen_connector.h:201
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 ConfUiLogDebug
Definition: utils.h:61
#define ConfUiLog(LOG_LEVEL)
Definition: utils.h:60
#define FATAL(x...)
Definition: image.h:31
#define LOG(severity)
Definition: logging.h:223
@ ERROR
Definition: logging.h:92
std::string GetName(const std::thread::id tid)
Definition: host_utils.cc:63
Definition: alloc_driver.h:20
std::string GpuModeString(GpuMode mode)
Definition: gpu_mode.cc:54
constexpr bool Contains(Container &&container, U &&u)
Definition: contains.h:98
@ GfxstreamGuestAngleHostLavapipe
@ GfxstreamGuestAngleHostSwiftshader
Definition: screen_connector_common.h:51
Definition: screen_connector_common.h:27
std::function< void(const DisplayEvent &)> DisplayEventCallback
Definition: wayland_server_callbacks.h:35