This commit is contained in:
2026-08-29 13:07:17 +08:00
parent 6045221174
commit 899223c7a7
257 changed files with 870 additions and 302556 deletions
-1
View File
@@ -6,7 +6,6 @@ if (Aethera_BUILD_TESTS)
list(APPEND Aethera_Kernel_dependencies
global::GTest
global::benchmark
global::libwebsockets
)
endif ()
rcl_add_dependency_action_targets(Aethera_Kernel_env ${Aethera_Kernel_dependencies})
@@ -34,13 +34,13 @@ void reset_counters(Frame_Policy::State& state,
std::uint64_t occurred_ns) noexcept {
const auto generation = state.generation + 1;
const auto render_enabled = state.render_enabled;
const auto video_enabled = state.video_enabled;
const auto pixel_delivery_enabled = state.pixel_delivery_enabled;
const auto mode = state.mode;
const auto fixed_rate_fps = state.fixed_rate_fps;
state = {};
state.generation = generation;
state.render_enabled = render_enabled;
state.video_enabled = video_enabled;
state.pixel_delivery_enabled = pixel_delivery_enabled;
state.mode = mode;
state.fixed_rate_fps = fixed_rate_fps;
state.observation_started_ns = occurred_ns;
@@ -59,8 +59,8 @@ void Frame_Policy::set_render_enabled(bool enabled) {
.enabled = enabled});
}
void Frame_Policy::set_video_enabled(bool enabled) {
submit({.type = detail::Frame_Policy_Event_Type::video_enabled,
void Frame_Policy::set_pixel_delivery_enabled(bool enabled) {
submit({.type = detail::Frame_Policy_Event_Type::pixel_delivery_enabled,
.enabled = enabled});
}
@@ -141,8 +141,8 @@ bool Frame_Policy::consume_events() {
state.render_enabled = event.enabled;
++state.generation;
break;
case detail::Frame_Policy_Event_Type::video_enabled:
state.video_enabled = event.enabled;
case detail::Frame_Policy_Event_Type::pixel_delivery_enabled:
state.pixel_delivery_enabled = event.enabled;
++state.generation;
break;
case detail::Frame_Policy_Event_Type::mode:
@@ -22,7 +22,7 @@ namespace detail {
struct Frame_Policy_Event_Stream;
enum struct Frame_Policy_Event_Type : std::uint8_t {
render_enabled,
video_enabled,
pixel_delivery_enabled,
mode,
fixed_rate,
request_received,
@@ -60,7 +60,7 @@ struct Frame_Policy final : double_buffer::Def<
struct State : Prev_State {
std::uint64_t generation{};
bool render_enabled{true};
bool video_enabled{true};
bool pixel_delivery_enabled{true};
Frame_Pacing_Mode mode{Frame_Pacing_Mode::fixed_rate};
double fixed_rate_fps{30.0};
@@ -98,7 +98,7 @@ struct Frame_Policy final : double_buffer::Def<
struct Private : Prev_Private {};
void set_render_enabled(bool enabled);
void set_video_enabled(bool enabled);
void set_pixel_delivery_enabled(bool enabled);
void set_mode(Frame_Pacing_Mode mode);
void set_fixed_rate(double fps);
void reset_statistics();
@@ -35,13 +35,13 @@ void reset_common_counters(Frame_Policy::State& state,
std::uint64_t occurred_ns) noexcept {
const auto generation = state.generation + 1;
const auto render_enabled = state.render_enabled;
const auto video_enabled = state.video_enabled;
const auto pixel_delivery_enabled = state.pixel_delivery_enabled;
const auto mode = state.mode;
const auto fixed_rate_fps = state.fixed_rate_fps;
state = {};
state.generation = generation;
state.render_enabled = render_enabled;
state.video_enabled = video_enabled;
state.pixel_delivery_enabled = pixel_delivery_enabled;
state.mode = mode;
state.fixed_rate_fps = fixed_rate_fps;
state.observation_started_ns = occurred_ns;
@@ -61,8 +61,8 @@ void Frame_Policy_3D::set_render_enabled(bool enabled) {
.enabled = enabled});
}
void Frame_Policy_3D::set_video_enabled(bool enabled) {
submit({.type = detail::Frame_Policy_Event_Type::video_enabled,
void Frame_Policy_3D::set_pixel_delivery_enabled(bool enabled) {
submit({.type = detail::Frame_Policy_Event_Type::pixel_delivery_enabled,
.enabled = enabled});
}
@@ -179,8 +179,8 @@ bool Frame_Policy_3D::consume_events() {
common.render_enabled = event.enabled;
++common.generation;
break;
case detail::Frame_Policy_Event_Type::video_enabled:
common.video_enabled = event.enabled;
case detail::Frame_Policy_Event_Type::pixel_delivery_enabled:
common.pixel_delivery_enabled = event.enabled;
++common.generation;
break;
case detail::Frame_Policy_Event_Type::mode:
@@ -27,7 +27,7 @@ struct Frame_Policy_3D final : double_buffer::Def<
static constexpr std::size_t pipeline_capacity{3};
void set_render_enabled(bool enabled);
void set_video_enabled(bool enabled);
void set_pixel_delivery_enabled(bool enabled);
void set_mode(Frame_Pacing_Mode mode);
void set_fixed_rate(double fps);
void reset_statistics();
+2 -2
View File
@@ -59,7 +59,7 @@ TEST(frame_policy, mpmc_events_publish_one_double_buffer_state) {
auto policy = std::move(*built);
policy->set_mode(aethera::Frame_Pacing_Mode::maximum_rate);
policy->set_fixed_rate(47.5);
policy->set_video_enabled(false);
policy->set_pixel_delivery_enabled(false);
policy->record_request(aethera::Frame_Request_Source::maximum_rate,
std::chrono::steady_clock::now());
policy->record_request_accepted(aethera::Frame_Request_Source::maximum_rate);
@@ -70,7 +70,7 @@ TEST(frame_policy, mpmc_events_publish_one_double_buffer_state) {
const auto& state = policy->read_state<aethera::Frame_Policy::Base_Tag>();
EXPECT_TRUE(state.render_enabled);
EXPECT_FALSE(state.video_enabled);
EXPECT_FALSE(state.pixel_delivery_enabled);
EXPECT_EQ(state.mode, aethera::Frame_Pacing_Mode::maximum_rate);
EXPECT_DOUBLE_EQ(state.fixed_rate_fps, 47.5);
EXPECT_EQ(state.request_count, 1);