mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 12:35:14 +00:00
LibVideo: Add PlaybackManager::from_mapped_file
This allows us to create a PlaybackManager from a file which has already been mapped, instead of passing a file name. This means that anyone who uses `PlaybackManager` can now use LibFSAC :)
This commit is contained in:
parent
69396d4c4d
commit
465fa3460f
Notes:
sideshowbarker
2024-07-16 22:14:49 +09:00
Author: https://github.com/caoimhebyrne Commit: https://github.com/SerenityOS/serenity/commit/465fa3460f Pull-request: https://github.com/SerenityOS/serenity/pull/18767 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/LucasChollet Reviewed-by: https://github.com/awesomekling
6 changed files with 23 additions and 1 deletions
|
@ -14,6 +14,11 @@ DecoderErrorOr<NonnullOwnPtr<MatroskaDemuxer>> MatroskaDemuxer::from_file(String
|
|||
return make<MatroskaDemuxer>(TRY(Reader::from_file(filename)));
|
||||
}
|
||||
|
||||
DecoderErrorOr<NonnullOwnPtr<MatroskaDemuxer>> MatroskaDemuxer::from_mapped_file(NonnullRefPtr<Core::MappedFile> mapped_file)
|
||||
{
|
||||
return make<MatroskaDemuxer>(TRY(Reader::from_mapped_file(move(mapped_file))));
|
||||
}
|
||||
|
||||
DecoderErrorOr<NonnullOwnPtr<MatroskaDemuxer>> MatroskaDemuxer::from_data(ReadonlyBytes data)
|
||||
{
|
||||
return make<MatroskaDemuxer>(TRY(Reader::from_data(data)));
|
||||
|
|
|
@ -18,6 +18,8 @@ public:
|
|||
// FIXME: We should instead accept some abstract data streaming type so that the demuxer
|
||||
// can work with non-contiguous data.
|
||||
static DecoderErrorOr<NonnullOwnPtr<MatroskaDemuxer>> from_file(StringView filename);
|
||||
static DecoderErrorOr<NonnullOwnPtr<MatroskaDemuxer>> from_mapped_file(NonnullRefPtr<Core::MappedFile> mapped_file);
|
||||
|
||||
static DecoderErrorOr<NonnullOwnPtr<MatroskaDemuxer>> from_data(ReadonlyBytes data);
|
||||
|
||||
MatroskaDemuxer(Reader&& reader)
|
||||
|
|
|
@ -81,8 +81,13 @@ constexpr u32 CUE_REFERENCE_ID = 0xDB;
|
|||
DecoderErrorOr<Reader> Reader::from_file(StringView path)
|
||||
{
|
||||
auto mapped_file = DECODER_TRY(DecoderErrorCategory::IO, Core::MappedFile::map(path));
|
||||
return from_mapped_file(mapped_file);
|
||||
}
|
||||
|
||||
DecoderErrorOr<Reader> Reader::from_mapped_file(NonnullRefPtr<Core::MappedFile> mapped_file)
|
||||
{
|
||||
auto reader = TRY(from_data(mapped_file->bytes()));
|
||||
reader.m_mapped_file = mapped_file;
|
||||
reader.m_mapped_file = move(mapped_file);
|
||||
return reader;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ public:
|
|||
typedef Function<DecoderErrorOr<IterationDecision>(TrackEntry const&)> TrackEntryCallback;
|
||||
|
||||
static DecoderErrorOr<Reader> from_file(StringView path);
|
||||
static DecoderErrorOr<Reader> from_mapped_file(NonnullRefPtr<Core::MappedFile> mapped_file);
|
||||
|
||||
static DecoderErrorOr<Reader> from_data(ReadonlyBytes data);
|
||||
|
||||
EBMLHeader const& header() const { return m_header.value(); }
|
||||
|
|
|
@ -31,6 +31,12 @@ DecoderErrorOr<NonnullOwnPtr<PlaybackManager>> PlaybackManager::from_file(String
|
|||
return create_with_demuxer(move(demuxer));
|
||||
}
|
||||
|
||||
DecoderErrorOr<NonnullOwnPtr<PlaybackManager>> PlaybackManager::from_mapped_file(NonnullRefPtr<Core::MappedFile> mapped_file)
|
||||
{
|
||||
auto demuxer = TRY(Matroska::MatroskaDemuxer::from_mapped_file(move(mapped_file)));
|
||||
return create_with_demuxer(move(demuxer));
|
||||
}
|
||||
|
||||
DecoderErrorOr<NonnullOwnPtr<PlaybackManager>> PlaybackManager::from_data(ReadonlyBytes data)
|
||||
{
|
||||
auto demuxer = TRY(Matroska::MatroskaDemuxer::from_data(data));
|
||||
|
|
|
@ -101,6 +101,8 @@ public:
|
|||
static constexpr SeekMode DEFAULT_SEEK_MODE = SeekMode::Accurate;
|
||||
|
||||
static DecoderErrorOr<NonnullOwnPtr<PlaybackManager>> from_file(StringView file);
|
||||
static DecoderErrorOr<NonnullOwnPtr<PlaybackManager>> from_mapped_file(NonnullRefPtr<Core::MappedFile> file);
|
||||
|
||||
static DecoderErrorOr<NonnullOwnPtr<PlaybackManager>> from_data(ReadonlyBytes data);
|
||||
|
||||
PlaybackManager(NonnullOwnPtr<Demuxer>& demuxer, Track video_track, NonnullOwnPtr<VideoDecoder>&& decoder);
|
||||
|
|
Loading…
Add table
Reference in a new issue