/* * Copyright (c) 2026, Gregory Bertilson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include class SkYUVAPixmaps; namespace Gfx { namespace Details { struct YUVDataImpl; } // Holds planar YUV data with metadata needed for GPU conversion. // Uses FixedArray for deterministic buffer sizing. // Not ref-counted - owned directly by ImmutableBitmap via NonnullOwnPtr. class YUVData final { public: static ErrorOr> create(IntSize size, u8 bit_depth, Media::Subsampling, Media::CodingIndependentCodePoints); ~YUVData(); IntSize size() const; u8 bit_depth() const; Media::Subsampling subsampling() const; Media::CodingIndependentCodePoints const& cicp() const; // Writable access for decoder to fill buffers after creation Bytes y_data(); Bytes u_data(); Bytes v_data(); SkYUVAPixmaps const& skia_yuva_pixmaps() const; private: explicit YUVData(NonnullOwnPtr); NonnullOwnPtr m_impl; }; }