Decoding.cpp 848 B

12345678910111213141516171819202122232425262728
  1. /*
  2. * Copyright (c) 2023, kleines Filmröllchen <filmroellchen@serenityos.org>
  3. * Copyright (c) 2023, Nicolas Ramz <nicolas.ramz@gmail.com>
  4. * Copyright (c) 2023, Nico Weber <thakis@chromium.org>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #include <AK/Stream.h>
  9. #include <LibRIFF/ChunkID.h>
  10. #include <LibRIFF/RIFF.h>
  11. ErrorOr<RIFF::ChunkID> RIFF::ChunkID::read_from_stream(Stream& stream)
  12. {
  13. Array<u8, chunk_id_size> id;
  14. TRY(stream.read_until_filled(id.span()));
  15. return ChunkID { id };
  16. }
  17. ErrorOr<RIFF::OwnedList> RIFF::OwnedList::read_from_stream(Stream& stream)
  18. {
  19. auto type = TRY(stream.read_value<ChunkID>());
  20. Vector<RIFF::OwnedChunk> chunks;
  21. while (!stream.is_eof())
  22. TRY(chunks.try_append(TRY(stream.read_value<RIFF::OwnedChunk>())));
  23. return RIFF::OwnedList { .type = type, .chunks = move(chunks) };
  24. }