/* * Copyright (c) 2022, Gregory Bertilson * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include "Reader.h" namespace Video::Matroska { class MatroskaDemuxer final : public Demuxer { public: // FIXME: We should instead accept some abstract data streaming type so that the demuxer // can work with non-contiguous data. static DecoderErrorOr> from_file(StringView filename); static DecoderErrorOr> from_data(ReadonlyBytes data); MatroskaDemuxer(Reader&& reader) : m_reader(move(reader)) { } DecoderErrorOr> get_tracks_for_type(TrackType type) override; DecoderErrorOr> seek_to_most_recent_keyframe(Track track, Time timestamp, Optional