Android-cuttlefish cvd tool
composition_manager.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2024 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17
23
24namespace cuttlefish {
25class DisplayHandler;
26
28 public:
32 };
33
36
38 void OnFrame(std::uint32_t display_number, std::uint32_t frame_width,
39 std::uint32_t frame_height, std::uint32_t frame_fourcc_format,
40 std::uint32_t frame_stride_bytes, std::uint8_t* frame_pixels);
41
42 void ComposeFrame(int display_index,
43 std::shared_ptr<VideoFrameBuffer> buffer);
44
45 private:
46 explicit CompositionManager(
47 int cluster_index, std::string& group_uuid,
48 std::map<int, std::vector<DisplayOverlay>>& overlays);
49
51 public:
53 LastFrameInfo(std::uint32_t display_number, std::uint32_t frame_width,
54 std::uint32_t frame_height, std::uint32_t frame_fourcc_format,
55 std::uint32_t frame_stride_bytes,
56 std::uint8_t* frame_pixels) {
57 display_number_ = display_number;
58 frame_width_ = frame_width;
59 frame_height_ = frame_height;
60 frame_fourcc_format_ = frame_fourcc_format;
61 frame_stride_bytes_ = frame_stride_bytes;
62 frame_pixels_ = frame_pixels;
63 }
64 std::uint32_t display_number_;
65 std::uint32_t frame_width_;
66 std::uint32_t frame_height_;
67 std::uint32_t frame_fourcc_format_;
68 std::uint32_t frame_stride_bytes_;
69 std::uint8_t* frame_pixels_;
70 };
71 static std::map<int, std::vector<CompositionManager::DisplayOverlay>>
72 ParseOverlays(std::vector<std::string> overlay_items);
73 std::uint8_t* AlphaBlendLayers(std::uint8_t* frame_pixels, int display,
74 int frame_width, int frame_height);
75 void ComposeFrame(int display, int width, int height,
76 std::uint32_t frame_fourcc_format,
77 std::uint32_t frame_stride_bytes,
78 std::shared_ptr<VideoFrameBuffer> buffer);
81 std::string group_uuid_;
82 std::map<int, std::vector<DisplayOverlay>> cfg_overlays_;
83 std::map<int, LastFrameInfo> last_frame_info_map_;
84};
85
86} // namespace cuttlefish
Definition: expected.h:86
Definition: composition_manager.h:50
std::uint32_t frame_fourcc_format_
Definition: composition_manager.h:67
std::uint32_t frame_stride_bytes_
Definition: composition_manager.h:68
std::uint32_t display_number_
Definition: composition_manager.h:64
LastFrameInfo(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_pixels)
Definition: composition_manager.h:53
std::uint32_t frame_width_
Definition: composition_manager.h:65
LastFrameInfo()
Definition: composition_manager.h:52
std::uint8_t * frame_pixels_
Definition: composition_manager.h:69
std::uint32_t frame_height_
Definition: composition_manager.h:66
Definition: composition_manager.h:27
std::map< int, std::vector< DisplayOverlay > > cfg_overlays_
Definition: composition_manager.h:82
CompositionManager(int cluster_index, std::string &group_uuid, std::map< int, std::vector< DisplayOverlay > > &overlays)
Definition: composition_manager.cpp:107
std::string group_uuid_
Definition: composition_manager.h:81
int cluster_index_
Definition: composition_manager.h:80
void OnFrame(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_pixels)
Definition: composition_manager.cpp:182
std::uint8_t * AlphaBlendLayers(std::uint8_t *frame_pixels, int display, int frame_width, int frame_height)
Definition: composition_manager.cpp:223
static Result< std::unique_ptr< CompositionManager > > Create()
Definition: composition_manager.cpp:117
static std::map< int, std::vector< CompositionManager::DisplayOverlay > > ParseOverlays(std::vector< std::string > overlay_items)
Definition: composition_manager.cpp:64
std::map< int, LastFrameInfo > last_frame_info_map_
Definition: composition_manager.h:83
DisplayRingBufferManager display_ring_buffer_manager_
Definition: composition_manager.h:79
void ComposeFrame(int display_index, std::shared_ptr< VideoFrameBuffer > buffer)
Definition: composition_manager.cpp:210
void OnDisplayCreated(const DisplayCreatedEvent &event)
Definition: composition_manager.cpp:172
~CompositionManager()
Definition: composition_manager.cpp:115
Definition: ring_buffer_manager.h:65
Event event
Definition: kernel_log_server.cc:56
Definition: alloc_utils.cpp:23
Definition: wayland_server_callbacks.h:23
Definition: composition_manager.h:29
int src_display_index
Definition: composition_manager.h:31
int src_vm_index
Definition: composition_manager.h:30