/* * Copyright (c) 2025, Gregory Bertilson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Media { class TimedImage final { public: TimedImage(AK::Duration timestamp, NonnullRefPtr&& image) : m_timestamp(timestamp) , m_image(move(image)) { } TimedImage() = default; bool is_valid() const { return m_image != nullptr; } AK::Duration const& timestamp() const { VERIFY(is_valid()); return m_timestamp; } NonnullRefPtr image() const { VERIFY(is_valid()); return *m_image; } NonnullRefPtr release_image() { VERIFY(is_valid()); m_timestamp = AK::Duration::zero(); return m_image.release_nonnull(); } private: AK::Duration m_timestamp { AK::Duration::zero() }; RefPtr m_image { nullptr }; }; }