|
@@ -6,24 +6,25 @@
|
|
|
|
|
|
#pragma once
|
|
#pragma once
|
|
|
|
|
|
|
|
+#include <AK/MaybeOwned.h>
|
|
#include <AK/Stream.h>
|
|
#include <AK/Stream.h>
|
|
|
|
|
|
namespace Gfx::ISOBMFF {
|
|
namespace Gfx::ISOBMFF {
|
|
|
|
|
|
class BoxStream final : public Stream {
|
|
class BoxStream final : public Stream {
|
|
public:
|
|
public:
|
|
- explicit BoxStream(Stream& stream, size_t size)
|
|
|
|
- : m_stream(stream)
|
|
|
|
|
|
+ explicit BoxStream(MaybeOwned<Stream> stream, size_t size)
|
|
|
|
+ : m_stream(move(stream))
|
|
, m_data_left(size)
|
|
, m_data_left(size)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
|
|
|
|
- virtual bool is_eof() const override { return m_stream.is_eof() || remaining() == 0; }
|
|
|
|
- virtual bool is_open() const override { return m_stream.is_open(); }
|
|
|
|
- virtual void close() override { m_stream.close(); }
|
|
|
|
|
|
+ virtual bool is_eof() const override { return m_stream->is_eof() || remaining() == 0; }
|
|
|
|
+ virtual bool is_open() const override { return m_stream->is_open(); }
|
|
|
|
+ virtual void close() override { m_stream->close(); }
|
|
virtual ErrorOr<Bytes> read_some(Bytes bytes) override
|
|
virtual ErrorOr<Bytes> read_some(Bytes bytes) override
|
|
{
|
|
{
|
|
- auto read_bytes = TRY(m_stream.read_some(bytes));
|
|
|
|
|
|
+ auto read_bytes = TRY(m_stream->read_some(bytes));
|
|
m_data_left -= min(read_bytes.size(), m_data_left);
|
|
m_data_left -= min(read_bytes.size(), m_data_left);
|
|
return read_bytes;
|
|
return read_bytes;
|
|
}
|
|
}
|
|
@@ -41,7 +42,7 @@ public:
|
|
}
|
|
}
|
|
|
|
|
|
private:
|
|
private:
|
|
- Stream& m_stream;
|
|
|
|
|
|
+ MaybeOwned<Stream> m_stream;
|
|
size_t m_data_left;
|
|
size_t m_data_left;
|
|
};
|
|
};
|
|
|
|
|