From 7c10e1a08d7a109b63c9258578eb98aa9dcc1425 Mon Sep 17 00:00:00 2001 From: Zaggy1024 Date: Mon, 10 Jun 2024 15:04:03 -0500 Subject: [PATCH] LibMedia: Rename LibVideo to LibMedia This change is in preparation for implementing audio codecs into the library and using audio as timing for video playback. --- Meta/Lagom/CMakeLists.txt | 4 +-- .../Contrib/VideoPlayerSDL/CMakeLists.txt | 2 +- Meta/Lagom/Contrib/VideoPlayerSDL/main.cpp | 4 +-- Meta/Lagom/Fuzzers/FuzzMatroskaReader.cpp | 4 +-- Meta/Lagom/Fuzzers/FuzzVP9Decoder.cpp | 4 +-- Meta/Lagom/Fuzzers/fuzzers.cmake | 4 +-- README.md | 2 +- Tests/CMakeLists.txt | 2 +- Tests/{LibVideo => LibMedia}/CMakeLists.txt | 20 +++++------ Tests/{LibVideo => LibMedia}/FILE_LICENSES.md | 0 .../TestParseMatroska.cpp | 6 ++-- .../{LibVideo => LibMedia}/TestVP9Decode.cpp | 16 ++++----- .../master_elements_containing_crc32.mkv | Bin .../oss-fuzz-testcase-52630.vp9 | Bin .../oss-fuzz-testcase-53977.vp9 | Bin .../oss-fuzz-testcase-62054.vp9 | 0 .../oss-fuzz-testcase-63182.vp9 | Bin Tests/{LibVideo => LibMedia}/vp9_4k.webm | Bin .../vp9_clamp_reference_mvs.webm | Bin Tests/{LibVideo => LibMedia}/vp9_in_webm.webm | Bin .../vp9_oob_blocks.webm | Bin Userland/Libraries/CMakeLists.txt | 2 +- Userland/Libraries/LibMedia/CMakeLists.txt | 17 ++++++++++ .../{LibVideo => LibMedia}/CodecID.h | 32 +++++++++--------- .../Color/CodingIndependentCodePoints.h | 2 +- .../Color/ColorConverter.cpp | 6 ++-- .../Color/ColorConverter.h | 6 ++-- .../Color/ColorPrimaries.cpp | 2 +- .../Color/ColorPrimaries.h | 6 ++-- .../Color/TransferCharacteristics.cpp | 2 +- .../Color/TransferCharacteristics.h | 4 +-- .../Containers/Matroska/Document.h | 12 +++---- .../Containers/Matroska/MatroskaDemuxer.cpp | 7 ++-- .../Containers/Matroska/MatroskaDemuxer.h | 4 +-- .../Containers/Matroska/Reader.cpp | 2 +- .../Containers/Matroska/Reader.h | 4 +-- .../{LibVideo => LibMedia}/DecoderError.h | 4 +-- .../Containers => LibMedia}/Demuxer.h | 15 ++++---- .../{LibVideo => LibMedia}/Forward.h | 2 +- .../PlaybackManager.cpp | 8 ++--- .../{LibVideo => LibMedia}/PlaybackManager.h | 6 ++-- Userland/Libraries/LibMedia/Sample.h | 21 ++++++++++++ .../Libraries/{LibVideo => LibMedia}/Track.h | 6 ++-- .../Video}/VP9/BooleanDecoder.h | 2 +- .../Video}/VP9/Context.h | 6 ++-- .../Video}/VP9/ContextStorage.h | 4 +-- .../Video}/VP9/Decoder.cpp | 4 +-- .../Video}/VP9/Decoder.h | 10 +++--- .../{LibVideo => LibMedia/Video}/VP9/Enums.h | 2 +- .../Video}/VP9/LookupTables.h | 2 +- .../Video}/VP9/MotionVector.h | 2 +- .../Video}/VP9/Parser.cpp | 2 +- .../{LibVideo => LibMedia/Video}/VP9/Parser.h | 7 ++-- .../Video}/VP9/ProbabilityTables.cpp | 2 +- .../Video}/VP9/ProbabilityTables.h | 2 +- .../Video}/VP9/Symbols.h | 2 +- .../Video}/VP9/SyntaxElementCounter.cpp | 2 +- .../Video}/VP9/SyntaxElementCounter.h | 2 +- .../Video}/VP9/TreeParser.cpp | 2 +- .../Video}/VP9/TreeParser.h | 2 +- .../Video}/VP9/Utilities.h | 2 +- .../Sample.h => LibMedia/Video/VideoSample.h} | 14 +++----- .../{LibVideo => LibMedia}/VideoDecoder.h | 3 +- .../{LibVideo => LibMedia}/VideoFrame.cpp | 4 +-- .../{LibVideo => LibMedia}/VideoFrame.h | 7 ++-- Userland/Libraries/LibVideo/CMakeLists.txt | 17 ---------- Userland/Libraries/LibWeb/CMakeLists.txt | 2 +- .../LibWeb/HTML/HTMLMediaElement.cpp | 4 +-- Userland/Libraries/LibWeb/HTML/VideoTrack.cpp | 12 +++---- Userland/Libraries/LibWeb/HTML/VideoTrack.h | 6 ++-- Userland/Utilities/CMakeLists.txt | 2 +- Userland/Utilities/icc.cpp | 10 +++--- 72 files changed, 197 insertions(+), 179 deletions(-) rename Tests/{LibVideo => LibMedia}/CMakeLists.txt (62%) rename Tests/{LibVideo => LibMedia}/FILE_LICENSES.md (100%) rename Tests/{LibVideo => LibMedia}/TestParseMatroska.cpp (67%) rename Tests/{LibVideo => LibMedia}/TestVP9Decode.cpp (79%) rename Tests/{LibVideo => LibMedia}/master_elements_containing_crc32.mkv (100%) rename Tests/{LibVideo => LibMedia}/oss-fuzz-testcase-52630.vp9 (100%) rename Tests/{LibVideo => LibMedia}/oss-fuzz-testcase-53977.vp9 (100%) rename Tests/{LibVideo => LibMedia}/oss-fuzz-testcase-62054.vp9 (100%) rename Tests/{LibVideo => LibMedia}/oss-fuzz-testcase-63182.vp9 (100%) rename Tests/{LibVideo => LibMedia}/vp9_4k.webm (100%) rename Tests/{LibVideo => LibMedia}/vp9_clamp_reference_mvs.webm (100%) rename Tests/{LibVideo => LibMedia}/vp9_in_webm.webm (100%) rename Tests/{LibVideo => LibMedia}/vp9_oob_blocks.webm (100%) create mode 100644 Userland/Libraries/LibMedia/CMakeLists.txt rename Userland/Libraries/{LibVideo => LibMedia}/CodecID.h (66%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/CodingIndependentCodePoints.h (99%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/ColorConverter.cpp (98%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/ColorConverter.h (99%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/ColorPrimaries.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/ColorPrimaries.h (72%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/TransferCharacteristics.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia}/Color/TransferCharacteristics.h (89%) rename Userland/Libraries/{LibVideo => LibMedia}/Containers/Matroska/Document.h (95%) rename Userland/Libraries/{LibVideo => LibMedia}/Containers/Matroska/MatroskaDemuxer.cpp (97%) rename Userland/Libraries/{LibVideo => LibMedia}/Containers/Matroska/MatroskaDemuxer.h (95%) rename Userland/Libraries/{LibVideo => LibMedia}/Containers/Matroska/Reader.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia}/Containers/Matroska/Reader.h (98%) rename Userland/Libraries/{LibVideo => LibMedia}/DecoderError.h (98%) rename Userland/Libraries/{LibVideo/Containers => LibMedia}/Demuxer.h (80%) rename Userland/Libraries/{LibVideo => LibMedia}/Forward.h (93%) rename Userland/Libraries/{LibVideo => LibMedia}/PlaybackManager.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia}/PlaybackManager.h (98%) create mode 100644 Userland/Libraries/LibMedia/Sample.h rename Userland/Libraries/{LibVideo => LibMedia}/Track.h (91%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/BooleanDecoder.h (87%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Context.h (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/ContextStorage.h (98%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Decoder.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Decoder.h (97%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Enums.h (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/LookupTables.h (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/MotionVector.h (98%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Parser.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Parser.h (97%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/ProbabilityTables.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/ProbabilityTables.h (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Symbols.h (98%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/SyntaxElementCounter.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/SyntaxElementCounter.h (98%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/TreeParser.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/TreeParser.h (99%) rename Userland/Libraries/{LibVideo => LibMedia/Video}/VP9/Utilities.h (99%) rename Userland/Libraries/{LibVideo/Sample.h => LibMedia/Video/VideoSample.h} (78%) rename Userland/Libraries/{LibVideo => LibMedia}/VideoDecoder.h (92%) rename Userland/Libraries/{LibVideo => LibMedia}/VideoFrame.cpp (99%) rename Userland/Libraries/{LibVideo => LibMedia}/VideoFrame.h (95%) delete mode 100644 Userland/Libraries/LibVideo/CMakeLists.txt diff --git a/Meta/Lagom/CMakeLists.txt b/Meta/Lagom/CMakeLists.txt index 54411d2e150..07acbc804e4 100644 --- a/Meta/Lagom/CMakeLists.txt +++ b/Meta/Lagom/CMakeLists.txt @@ -409,6 +409,7 @@ set(lagom_standard_libraries JS Line Locale + Media Protocol Regex RIFF @@ -416,7 +417,6 @@ set(lagom_standard_libraries TextCodec Threading TLS - Video Wasm Web WebSocket @@ -526,13 +526,13 @@ if (BUILD_TESTING) LibCompress LibGfx LibLocale + LibMedia LibTest LibTextCodec LibTTF LibTimeZone LibUnicode LibURL - LibVideo LibWeb LibWebView LibXML diff --git a/Meta/Lagom/Contrib/VideoPlayerSDL/CMakeLists.txt b/Meta/Lagom/Contrib/VideoPlayerSDL/CMakeLists.txt index 5a864ea585f..ef42dc28466 100644 --- a/Meta/Lagom/Contrib/VideoPlayerSDL/CMakeLists.txt +++ b/Meta/Lagom/Contrib/VideoPlayerSDL/CMakeLists.txt @@ -5,4 +5,4 @@ add_executable(VideoPlayerSDL ) target_include_directories(VideoPlayerSDL PRIVATE ${SDL2_INCLUDE_DIRS}) -target_link_libraries(VideoPlayerSDL PRIVATE LibMain LibCore LibGfx LibVideo SDL2::SDL2) +target_link_libraries(VideoPlayerSDL PRIVATE LibMain LibCore LibGfx LibMedia SDL2::SDL2) diff --git a/Meta/Lagom/Contrib/VideoPlayerSDL/main.cpp b/Meta/Lagom/Contrib/VideoPlayerSDL/main.cpp index 9fff3b8a8bd..514f166a3a8 100644 --- a/Meta/Lagom/Contrib/VideoPlayerSDL/main.cpp +++ b/Meta/Lagom/Contrib/VideoPlayerSDL/main.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include ErrorOr serenity_main(Main::Arguments arguments) @@ -26,7 +26,7 @@ ErrorOr serenity_main(Main::Arguments arguments) auto file = TRY(Core::File::open(filename, Core::File::OpenMode::Read)); auto mapped_file = TRY(Core::MappedFile::map_from_file(move(file), filename)); - auto load_file_result = Video::PlaybackManager::from_mapped_file(move(mapped_file)); + auto load_file_result = Media::PlaybackManager::from_mapped_file(move(mapped_file)); if (load_file_result.is_error()) { warnln("Failed to decode file {}", filename); return 1; diff --git a/Meta/Lagom/Fuzzers/FuzzMatroskaReader.cpp b/Meta/Lagom/Fuzzers/FuzzMatroskaReader.cpp index f0caef23eb5..3d02b6ecb01 100644 --- a/Meta/Lagom/Fuzzers/FuzzMatroskaReader.cpp +++ b/Meta/Lagom/Fuzzers/FuzzMatroskaReader.cpp @@ -4,13 +4,13 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include extern "C" int LLVMFuzzerTestOneInput(u8 const* data, size_t size) { AK::set_debug_enabled(false); - auto matroska_reader_result = Video::Matroska::Reader::from_data({ data, size }); + auto matroska_reader_result = Media::Matroska::Reader::from_data({ data, size }); if (matroska_reader_result.is_error()) return 0; (void)matroska_reader_result.value().segment_information(); diff --git a/Meta/Lagom/Fuzzers/FuzzVP9Decoder.cpp b/Meta/Lagom/Fuzzers/FuzzVP9Decoder.cpp index 4bff34e8c4f..69fe35acdb1 100644 --- a/Meta/Lagom/Fuzzers/FuzzVP9Decoder.cpp +++ b/Meta/Lagom/Fuzzers/FuzzVP9Decoder.cpp @@ -4,13 +4,13 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include extern "C" int LLVMFuzzerTestOneInput(u8 const* data, size_t size) { AK::set_debug_enabled(false); - Video::VP9::Decoder vp9_decoder; + Media::Video::VP9::Decoder vp9_decoder; (void)vp9_decoder.receive_sample({ data, size }); return 0; } diff --git a/Meta/Lagom/Fuzzers/fuzzers.cmake b/Meta/Lagom/Fuzzers/fuzzers.cmake index f43de736cde..a541901a805 100644 --- a/Meta/Lagom/Fuzzers/fuzzers.cmake +++ b/Meta/Lagom/Fuzzers/fuzzers.cmake @@ -73,7 +73,7 @@ set(FUZZER_DEPENDENCIES_JPEGLoader LibGfx) set(FUZZER_DEPENDENCIES_Js LibJS) set(FUZZER_DEPENDENCIES_LzmaDecompression LibArchive LibCompress) set(FUZZER_DEPENDENCIES_LzmaRoundtrip LibCompress) -set(FUZZER_DEPENDENCIES_MatroskaReader LibVideo) +set(FUZZER_DEPENDENCIES_MatroskaReader LibMedia) set(FUZZER_DEPENDENCIES_MD5 LibCrypto) set(FUZZER_DEPENDENCIES_MP3Loader LibAudio) set(FUZZER_DEPENDENCIES_PEM LibCrypto) @@ -94,7 +94,7 @@ set(FUZZER_DEPENDENCIES_TIFFLoader LibGfx) set(FUZZER_DEPENDENCIES_TTF LibGfx) set(FUZZER_DEPENDENCIES_TinyVGLoader LibGfx) set(FUZZER_DEPENDENCIES_URL LibURL) -set(FUZZER_DEPENDENCIES_VP9Decoder LibVideo) +set(FUZZER_DEPENDENCIES_VP9Decoder LibMedia) set(FUZZER_DEPENDENCIES_WasmParser LibWasm) set(FUZZER_DEPENDENCIES_WAVLoader LibAudio) set(FUZZER_DEPENDENCIES_WebPLoader LibGfx) diff --git a/README.md b/README.md index 79d77499dd6..4ad9e9b9f45 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ At the moment, many core library support components are inherited from SerenityO - LibGfx: 2D Graphics Library, Image Decoding and Rendering - LibArchive: Archive file format support - LibUnicode, LibLocale: Unicode and locale support -- LibAudio, LibVideo: Audio and video playback +- LibAudio, LibMedia: Audio and video playback - LibCore: Event loop, OS abstraction layer - LibIPC: Inter-process communication diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 8f674b6ef01..0c43e429ea3 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -13,7 +13,7 @@ add_subdirectory(LibThreading) add_subdirectory(LibTimeZone) add_subdirectory(LibUnicode) add_subdirectory(LibURL) -add_subdirectory(LibVideo) +add_subdirectory(LibMedia) add_subdirectory(LibWasm) add_subdirectory(LibWeb) add_subdirectory(LibWebView) diff --git a/Tests/LibVideo/CMakeLists.txt b/Tests/LibMedia/CMakeLists.txt similarity index 62% rename from Tests/LibVideo/CMakeLists.txt rename to Tests/LibMedia/CMakeLists.txt index c2c4373b9e4..d1d37073d26 100644 --- a/Tests/LibVideo/CMakeLists.txt +++ b/Tests/LibMedia/CMakeLists.txt @@ -4,15 +4,15 @@ set(TEST_SOURCES ) foreach(source IN LISTS TEST_SOURCES) - serenity_test("${source}" LibVideo LIBS LibVideo) + serenity_test("${source}" LibMedia LIBS LibMedia) endforeach() -install(FILES vp9_in_webm.webm DESTINATION usr/Tests/LibVideo) -install(FILES vp9_4k.webm DESTINATION usr/Tests/LibVideo) -install(FILES vp9_clamp_reference_mvs.webm DESTINATION usr/Tests/LibVideo) -install(FILES vp9_oob_blocks.webm DESTINATION usr/Tests/LibVideo) -install(FILES master_elements_containing_crc32.mkv DESTINATION usr/Tests/LibVideo) -install(FILES oss-fuzz-testcase-52630.vp9 DESTINATION usr/Tests/LibVideo) -install(FILES oss-fuzz-testcase-53977.vp9 DESTINATION usr/Tests/LibVideo) -install(FILES oss-fuzz-testcase-62054.vp9 DESTINATION usr/Tests/LibVideo) -install(FILES oss-fuzz-testcase-63182.vp9 DESTINATION usr/Tests/LibVideo) +install(FILES vp9_in_webm.webm DESTINATION usr/Tests/LibMedia) +install(FILES vp9_4k.webm DESTINATION usr/Tests/LibMedia) +install(FILES vp9_clamp_reference_mvs.webm DESTINATION usr/Tests/LibMedia) +install(FILES vp9_oob_blocks.webm DESTINATION usr/Tests/LibMedia) +install(FILES master_elements_containing_crc32.mkv DESTINATION usr/Tests/LibMedia) +install(FILES oss-fuzz-testcase-52630.vp9 DESTINATION usr/Tests/LibMedia) +install(FILES oss-fuzz-testcase-53977.vp9 DESTINATION usr/Tests/LibMedia) +install(FILES oss-fuzz-testcase-62054.vp9 DESTINATION usr/Tests/LibMedia) +install(FILES oss-fuzz-testcase-63182.vp9 DESTINATION usr/Tests/LibMedia) diff --git a/Tests/LibVideo/FILE_LICENSES.md b/Tests/LibMedia/FILE_LICENSES.md similarity index 100% rename from Tests/LibVideo/FILE_LICENSES.md rename to Tests/LibMedia/FILE_LICENSES.md diff --git a/Tests/LibVideo/TestParseMatroska.cpp b/Tests/LibMedia/TestParseMatroska.cpp similarity index 67% rename from Tests/LibVideo/TestParseMatroska.cpp rename to Tests/LibMedia/TestParseMatroska.cpp index bce5b6760d7..c80dd8fdba1 100644 --- a/Tests/LibVideo/TestParseMatroska.cpp +++ b/Tests/LibMedia/TestParseMatroska.cpp @@ -6,13 +6,13 @@ #include -#include +#include TEST_CASE(master_elements_containing_crc32) { - auto matroska_reader = MUST(Video::Matroska::Reader::from_file("master_elements_containing_crc32.mkv"sv)); + auto matroska_reader = MUST(Media::Matroska::Reader::from_file("master_elements_containing_crc32.mkv"sv)); u64 video_track = 0; - MUST(matroska_reader.for_each_track_of_type(Video::Matroska::TrackEntry::TrackType::Video, [&](Video::Matroska::TrackEntry const& track_entry) -> Video::DecoderErrorOr { + MUST(matroska_reader.for_each_track_of_type(Media::Matroska::TrackEntry::TrackType::Video, [&](Media::Matroska::TrackEntry const& track_entry) -> Media::DecoderErrorOr { video_track = track_entry.track_number(); return IterationDecision::Break; })); diff --git a/Tests/LibVideo/TestVP9Decode.cpp b/Tests/LibMedia/TestVP9Decode.cpp similarity index 79% rename from Tests/LibVideo/TestVP9Decode.cpp rename to Tests/LibMedia/TestVP9Decode.cpp index d0fbb808c8c..87481fb3ce9 100644 --- a/Tests/LibVideo/TestVP9Decode.cpp +++ b/Tests/LibMedia/TestVP9Decode.cpp @@ -6,14 +6,14 @@ #include -#include -#include +#include +#include static void decode_video(StringView path, size_t expected_frame_count) { - auto matroska_reader = MUST(Video::Matroska::Reader::from_file(path)); + auto matroska_reader = MUST(Media::Matroska::Reader::from_file(path)); u64 video_track = 0; - MUST(matroska_reader.for_each_track_of_type(Video::Matroska::TrackEntry::TrackType::Video, [&](Video::Matroska::TrackEntry const& track_entry) -> Video::DecoderErrorOr { + MUST(matroska_reader.for_each_track_of_type(Media::Matroska::TrackEntry::TrackType::Video, [&](Media::Matroska::TrackEntry const& track_entry) -> Media::DecoderErrorOr { video_track = track_entry.track_number(); return IterationDecision::Break; })); @@ -21,11 +21,11 @@ static void decode_video(StringView path, size_t expected_frame_count) auto iterator = MUST(matroska_reader.create_sample_iterator(video_track)); size_t frame_count = 0; - Video::VP9::Decoder vp9_decoder; + Media::Video::VP9::Decoder vp9_decoder; while (frame_count <= expected_frame_count) { auto block_result = iterator.next_block(); - if (block_result.is_error() && block_result.error().category() == Video::DecoderErrorCategory::EndOfStream) { + if (block_result.is_error() && block_result.error().category() == Media::DecoderErrorCategory::EndOfStream) { VERIFY(frame_count == expected_frame_count); return; } @@ -36,7 +36,7 @@ static void decode_video(StringView path, size_t expected_frame_count) while (true) { auto frame_result = vp9_decoder.get_decoded_frame(); if (frame_result.is_error()) { - if (frame_result.error().category() == Video::DecoderErrorCategory::NeedsMoreInput) { + if (frame_result.error().category() == Media::DecoderErrorCategory::NeedsMoreInput) { break; } VERIFY_NOT_REACHED(); @@ -70,7 +70,7 @@ TEST_CASE(vp9_malformed_frame) for (auto test_input : test_inputs) { auto file = MUST(Core::MappedFile::map(test_input)); - Video::VP9::Decoder vp9_decoder; + Media::Video::VP9::Decoder vp9_decoder; auto maybe_decoder_error = vp9_decoder.receive_sample(file->bytes()); EXPECT(maybe_decoder_error.is_error()); } diff --git a/Tests/LibVideo/master_elements_containing_crc32.mkv b/Tests/LibMedia/master_elements_containing_crc32.mkv similarity index 100% rename from Tests/LibVideo/master_elements_containing_crc32.mkv rename to Tests/LibMedia/master_elements_containing_crc32.mkv diff --git a/Tests/LibVideo/oss-fuzz-testcase-52630.vp9 b/Tests/LibMedia/oss-fuzz-testcase-52630.vp9 similarity index 100% rename from Tests/LibVideo/oss-fuzz-testcase-52630.vp9 rename to Tests/LibMedia/oss-fuzz-testcase-52630.vp9 diff --git a/Tests/LibVideo/oss-fuzz-testcase-53977.vp9 b/Tests/LibMedia/oss-fuzz-testcase-53977.vp9 similarity index 100% rename from Tests/LibVideo/oss-fuzz-testcase-53977.vp9 rename to Tests/LibMedia/oss-fuzz-testcase-53977.vp9 diff --git a/Tests/LibVideo/oss-fuzz-testcase-62054.vp9 b/Tests/LibMedia/oss-fuzz-testcase-62054.vp9 similarity index 100% rename from Tests/LibVideo/oss-fuzz-testcase-62054.vp9 rename to Tests/LibMedia/oss-fuzz-testcase-62054.vp9 diff --git a/Tests/LibVideo/oss-fuzz-testcase-63182.vp9 b/Tests/LibMedia/oss-fuzz-testcase-63182.vp9 similarity index 100% rename from Tests/LibVideo/oss-fuzz-testcase-63182.vp9 rename to Tests/LibMedia/oss-fuzz-testcase-63182.vp9 diff --git a/Tests/LibVideo/vp9_4k.webm b/Tests/LibMedia/vp9_4k.webm similarity index 100% rename from Tests/LibVideo/vp9_4k.webm rename to Tests/LibMedia/vp9_4k.webm diff --git a/Tests/LibVideo/vp9_clamp_reference_mvs.webm b/Tests/LibMedia/vp9_clamp_reference_mvs.webm similarity index 100% rename from Tests/LibVideo/vp9_clamp_reference_mvs.webm rename to Tests/LibMedia/vp9_clamp_reference_mvs.webm diff --git a/Tests/LibVideo/vp9_in_webm.webm b/Tests/LibMedia/vp9_in_webm.webm similarity index 100% rename from Tests/LibVideo/vp9_in_webm.webm rename to Tests/LibMedia/vp9_in_webm.webm diff --git a/Tests/LibVideo/vp9_oob_blocks.webm b/Tests/LibMedia/vp9_oob_blocks.webm similarity index 100% rename from Tests/LibVideo/vp9_oob_blocks.webm rename to Tests/LibMedia/vp9_oob_blocks.webm diff --git a/Userland/Libraries/CMakeLists.txt b/Userland/Libraries/CMakeLists.txt index 161120f69cd..e3ef3b8e29c 100644 --- a/Userland/Libraries/CMakeLists.txt +++ b/Userland/Libraries/CMakeLists.txt @@ -33,7 +33,7 @@ add_subdirectory(LibTLS) add_subdirectory(LibUnicode) add_subdirectory(LibURL) add_subdirectory(LibUSBDB) -add_subdirectory(LibVideo) +add_subdirectory(LibMedia) add_subdirectory(LibWasm) add_subdirectory(LibWeb) add_subdirectory(LibWebSocket) diff --git a/Userland/Libraries/LibMedia/CMakeLists.txt b/Userland/Libraries/LibMedia/CMakeLists.txt new file mode 100644 index 00000000000..1110b9c7226 --- /dev/null +++ b/Userland/Libraries/LibMedia/CMakeLists.txt @@ -0,0 +1,17 @@ +set(SOURCES + Color/ColorConverter.cpp + Color/ColorPrimaries.cpp + Color/TransferCharacteristics.cpp + Containers/Matroska/MatroskaDemuxer.cpp + Containers/Matroska/Reader.cpp + PlaybackManager.cpp + VideoFrame.cpp + Video/VP9/Decoder.cpp + Video/VP9/Parser.cpp + Video/VP9/ProbabilityTables.cpp + Video/VP9/SyntaxElementCounter.cpp + Video/VP9/TreeParser.cpp +) + +serenity_lib(LibMedia media) +target_link_libraries(LibMedia PRIVATE LibCore LibIPC LibGfx LibThreading) diff --git a/Userland/Libraries/LibVideo/CodecID.h b/Userland/Libraries/LibMedia/CodecID.h similarity index 66% rename from Userland/Libraries/LibVideo/CodecID.h rename to Userland/Libraries/LibMedia/CodecID.h index 6cbbe4d35fb..432618137b8 100644 --- a/Userland/Libraries/LibVideo/CodecID.h +++ b/Userland/Libraries/LibMedia/CodecID.h @@ -8,7 +8,7 @@ #include -namespace Video { +namespace Media { enum class CodecID : u32 { Unknown, @@ -34,48 +34,48 @@ enum class CodecID : u32 { namespace AK { template<> -struct Formatter : Formatter { - ErrorOr format(FormatBuilder& builder, Video::CodecID value) +struct Formatter : Formatter { + ErrorOr format(FormatBuilder& builder, Media::CodecID value) { StringView codec; switch (value) { - case Video::CodecID::Unknown: + case Media::CodecID::Unknown: codec = "Unknown"sv; break; - case Video::CodecID::VP8: + case Media::CodecID::VP8: codec = "VP8"sv; break; - case Video::CodecID::VP9: + case Media::CodecID::VP9: codec = "VP9"sv; break; - case Video::CodecID::H261: + case Media::CodecID::H261: codec = "H.261"sv; break; - case Video::CodecID::H262: + case Media::CodecID::H262: codec = "H.262"sv; break; - case Video::CodecID::H263: + case Media::CodecID::H263: codec = "H.263"sv; break; - case Video::CodecID::H264: + case Media::CodecID::H264: codec = "H.264"sv; break; - case Video::CodecID::H265: + case Media::CodecID::H265: codec = "H.265"sv; break; - case Video::CodecID::MPEG1: + case Media::CodecID::MPEG1: codec = "MPEG1"sv; break; - case Video::CodecID::AV1: + case Media::CodecID::AV1: codec = "AV1"sv; break; - case Video::CodecID::Theora: + case Media::CodecID::Theora: codec = "Theora"sv; break; - case Video::CodecID::Vorbis: + case Media::CodecID::Vorbis: codec = "Vorbis"sv; break; - case Video::CodecID::Opus: + case Media::CodecID::Opus: codec = "Opus"sv; break; } diff --git a/Userland/Libraries/LibVideo/Color/CodingIndependentCodePoints.h b/Userland/Libraries/LibMedia/Color/CodingIndependentCodePoints.h similarity index 99% rename from Userland/Libraries/LibVideo/Color/CodingIndependentCodePoints.h rename to Userland/Libraries/LibMedia/Color/CodingIndependentCodePoints.h index 0818196bb91..abf51983c12 100644 --- a/Userland/Libraries/LibVideo/Color/CodingIndependentCodePoints.h +++ b/Userland/Libraries/LibMedia/Color/CodingIndependentCodePoints.h @@ -8,7 +8,7 @@ #include -namespace Video { +namespace Media { // CICP is defined by H.273: // https://www.itu.int/rec/T-REC-H.273/en diff --git a/Userland/Libraries/LibVideo/Color/ColorConverter.cpp b/Userland/Libraries/LibMedia/Color/ColorConverter.cpp similarity index 98% rename from Userland/Libraries/LibVideo/Color/ColorConverter.cpp rename to Userland/Libraries/LibMedia/Color/ColorConverter.cpp index 30a7e09e208..4bad8a6a66d 100644 --- a/Userland/Libraries/LibVideo/Color/ColorConverter.cpp +++ b/Userland/Libraries/LibMedia/Color/ColorConverter.cpp @@ -7,12 +7,12 @@ #include #include #include -#include -#include +#include +#include #include "ColorConverter.h" -namespace Video { +namespace Media { DecoderErrorOr ColorConverter::create(u8 bit_depth, CodingIndependentCodePoints input_cicp, CodingIndependentCodePoints output_cicp) { diff --git a/Userland/Libraries/LibVideo/Color/ColorConverter.h b/Userland/Libraries/LibMedia/Color/ColorConverter.h similarity index 99% rename from Userland/Libraries/LibVideo/Color/ColorConverter.h rename to Userland/Libraries/LibMedia/Color/ColorConverter.h index fbf5d8db1d0..79e3417eab2 100644 --- a/Userland/Libraries/LibVideo/Color/ColorConverter.h +++ b/Userland/Libraries/LibMedia/Color/ColorConverter.h @@ -10,10 +10,10 @@ #include #include #include -#include -#include +#include +#include -namespace Video { +namespace Media { template struct InterpolatedLookupTable { diff --git a/Userland/Libraries/LibVideo/Color/ColorPrimaries.cpp b/Userland/Libraries/LibMedia/Color/ColorPrimaries.cpp similarity index 99% rename from Userland/Libraries/LibVideo/Color/ColorPrimaries.cpp rename to Userland/Libraries/LibMedia/Color/ColorPrimaries.cpp index e3669ecb1bc..5fb1f5e73f2 100644 --- a/Userland/Libraries/LibVideo/Color/ColorPrimaries.cpp +++ b/Userland/Libraries/LibMedia/Color/ColorPrimaries.cpp @@ -9,7 +9,7 @@ #include "ColorPrimaries.h" -namespace Video { +namespace Media { ALWAYS_INLINE constexpr FloatVector3 primaries_to_xyz(FloatVector2 primaries) { diff --git a/Userland/Libraries/LibVideo/Color/ColorPrimaries.h b/Userland/Libraries/LibMedia/Color/ColorPrimaries.h similarity index 72% rename from Userland/Libraries/LibVideo/Color/ColorPrimaries.h rename to Userland/Libraries/LibMedia/Color/ColorPrimaries.h index 59693fbf739..2dfda34729f 100644 --- a/Userland/Libraries/LibVideo/Color/ColorPrimaries.h +++ b/Userland/Libraries/LibMedia/Color/ColorPrimaries.h @@ -7,10 +7,10 @@ #pragma once #include -#include -#include +#include +#include -namespace Video { +namespace Media { DecoderErrorOr get_conversion_matrix(ColorPrimaries input_primaries, ColorPrimaries output_primaries); diff --git a/Userland/Libraries/LibVideo/Color/TransferCharacteristics.cpp b/Userland/Libraries/LibMedia/Color/TransferCharacteristics.cpp similarity index 99% rename from Userland/Libraries/LibVideo/Color/TransferCharacteristics.cpp rename to Userland/Libraries/LibMedia/Color/TransferCharacteristics.cpp index d829b937ec9..9a321dcbe8a 100644 --- a/Userland/Libraries/LibVideo/Color/TransferCharacteristics.cpp +++ b/Userland/Libraries/LibMedia/Color/TransferCharacteristics.cpp @@ -10,7 +10,7 @@ #include "TransferCharacteristics.h" -namespace Video { +namespace Media { // SDR maximum luminance in candelas per meter squared constexpr float sdr_max_luminance = 120.0f; diff --git a/Userland/Libraries/LibVideo/Color/TransferCharacteristics.h b/Userland/Libraries/LibMedia/Color/TransferCharacteristics.h similarity index 89% rename from Userland/Libraries/LibVideo/Color/TransferCharacteristics.h rename to Userland/Libraries/LibMedia/Color/TransferCharacteristics.h index b8360d163e2..b8ef0361435 100644 --- a/Userland/Libraries/LibVideo/Color/TransferCharacteristics.h +++ b/Userland/Libraries/LibMedia/Color/TransferCharacteristics.h @@ -7,9 +7,9 @@ #pragma once #include -#include +#include -namespace Video { +namespace Media { class TransferCharacteristicsConversion { public: diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/Document.h b/Userland/Libraries/LibMedia/Containers/Matroska/Document.h similarity index 95% rename from Userland/Libraries/LibVideo/Containers/Matroska/Document.h rename to Userland/Libraries/LibMedia/Containers/Matroska/Document.h index 5c1dc652834..6f8c738780e 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/Document.h +++ b/Userland/Libraries/LibMedia/Containers/Matroska/Document.h @@ -13,9 +13,9 @@ #include #include #include -#include +#include -namespace Video::Matroska { +namespace Media::Matroska { struct EBMLHeader { ByteString doc_type; @@ -76,20 +76,20 @@ public: CodingIndependentCodePoints to_cicp() const { - Video::VideoFullRangeFlag video_full_range_flag; + VideoFullRangeFlag video_full_range_flag; switch (range) { case ColorRange::Full: - video_full_range_flag = Video::VideoFullRangeFlag::Full; + video_full_range_flag = VideoFullRangeFlag::Full; break; case ColorRange::Broadcast: - video_full_range_flag = Video::VideoFullRangeFlag::Studio; + video_full_range_flag = VideoFullRangeFlag::Studio; break; case ColorRange::Unspecified: case ColorRange::UseCICP: // FIXME: Figure out what UseCICP should do here. Matroska specification did not // seem to explain in the 'colour' section. When this is fixed, change // replace_code_points_if_specified to match. - video_full_range_flag = Video::VideoFullRangeFlag::Unspecified; + video_full_range_flag = VideoFullRangeFlag::Unspecified; break; } diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp b/Userland/Libraries/LibMedia/Containers/Matroska/MatroskaDemuxer.cpp similarity index 97% rename from Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp rename to Userland/Libraries/LibMedia/Containers/Matroska/MatroskaDemuxer.cpp index c646457b500..642485fc4fc 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.cpp +++ b/Userland/Libraries/LibMedia/Containers/Matroska/MatroskaDemuxer.cpp @@ -4,10 +4,11 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include "MatroskaDemuxer.h" #include -namespace Video::Matroska { +#include "MatroskaDemuxer.h" + +namespace Media::Matroska { DecoderErrorOr> MatroskaDemuxer::from_file(StringView filename) { @@ -136,7 +137,7 @@ DecoderErrorOr> MatroskaDemuxer::get_next_sample_for_track status.frame_index = 0; } auto cicp = TRY(m_reader.track_for_track_number(track.identifier())).video_track()->color_format.to_cicp(); - return make(status.block->frame(status.frame_index++), cicp, status.block->timestamp()); + return make(status.block->frame(status.frame_index++), cicp, status.block->timestamp()); } DecoderErrorOr MatroskaDemuxer::duration() diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.h b/Userland/Libraries/LibMedia/Containers/Matroska/MatroskaDemuxer.h similarity index 95% rename from Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.h rename to Userland/Libraries/LibMedia/Containers/Matroska/MatroskaDemuxer.h index 4caa6351600..4172934f61d 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/MatroskaDemuxer.h +++ b/Userland/Libraries/LibMedia/Containers/Matroska/MatroskaDemuxer.h @@ -7,11 +7,11 @@ #pragma once #include -#include +#include #include "Reader.h" -namespace Video::Matroska { +namespace Media::Matroska { class MatroskaDemuxer final : public Demuxer { public: diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/Reader.cpp b/Userland/Libraries/LibMedia/Containers/Matroska/Reader.cpp similarity index 99% rename from Userland/Libraries/LibVideo/Containers/Matroska/Reader.cpp rename to Userland/Libraries/LibMedia/Containers/Matroska/Reader.cpp index 4fe66a5b11e..036223b4be2 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/Reader.cpp +++ b/Userland/Libraries/LibMedia/Containers/Matroska/Reader.cpp @@ -14,7 +14,7 @@ #include "Reader.h" -namespace Video::Matroska { +namespace Media::Matroska { #define TRY_READ(expression) DECODER_TRY(DecoderErrorCategory::Corrupted, expression) diff --git a/Userland/Libraries/LibVideo/Containers/Matroska/Reader.h b/Userland/Libraries/LibMedia/Containers/Matroska/Reader.h similarity index 98% rename from Userland/Libraries/LibVideo/Containers/Matroska/Reader.h rename to Userland/Libraries/LibMedia/Containers/Matroska/Reader.h index 9b297ec4e7c..2fd2b27a9d8 100644 --- a/Userland/Libraries/LibVideo/Containers/Matroska/Reader.h +++ b/Userland/Libraries/LibMedia/Containers/Matroska/Reader.h @@ -11,11 +11,11 @@ #include #include #include -#include +#include #include "Document.h" -namespace Video::Matroska { +namespace Media::Matroska { class SampleIterator; class Streamer; diff --git a/Userland/Libraries/LibVideo/DecoderError.h b/Userland/Libraries/LibMedia/DecoderError.h similarity index 98% rename from Userland/Libraries/LibVideo/DecoderError.h rename to Userland/Libraries/LibMedia/DecoderError.h index fc97442c58c..18d11efb187 100644 --- a/Userland/Libraries/LibVideo/DecoderError.h +++ b/Userland/Libraries/LibMedia/DecoderError.h @@ -10,10 +10,10 @@ #include #include #include -#include +#include #include -namespace Video { +namespace Media { template using DecoderErrorOr = ErrorOr; diff --git a/Userland/Libraries/LibVideo/Containers/Demuxer.h b/Userland/Libraries/LibMedia/Demuxer.h similarity index 80% rename from Userland/Libraries/LibVideo/Containers/Demuxer.h rename to Userland/Libraries/LibMedia/Demuxer.h index b09252fbaac..47575277a52 100644 --- a/Userland/Libraries/LibVideo/Containers/Demuxer.h +++ b/Userland/Libraries/LibMedia/Demuxer.h @@ -8,12 +8,13 @@ #include #include -#include -#include -#include -#include +#include -namespace Video { +#include "CodecID.h" +#include "DecoderError.h" +#include "Track.h" + +namespace Media { class Demuxer { public: @@ -21,12 +22,12 @@ public: virtual DecoderErrorOr> get_tracks_for_type(TrackType type) = 0; - DecoderErrorOr> get_next_video_sample_for_track(Track track) + DecoderErrorOr> get_next_video_sample_for_track(Track track) { VERIFY(track.type() == TrackType::Video); auto sample = TRY(get_next_sample_for_track(track)); VERIFY(sample->is_video_sample()); - return sample.release_nonnull(); + return sample.release_nonnull(); } virtual DecoderErrorOr get_codec_id_for_track(Track track) = 0; diff --git a/Userland/Libraries/LibVideo/Forward.h b/Userland/Libraries/LibMedia/Forward.h similarity index 93% rename from Userland/Libraries/LibVideo/Forward.h rename to Userland/Libraries/LibMedia/Forward.h index 6eb99471f3a..cad7a9c4358 100644 --- a/Userland/Libraries/LibVideo/Forward.h +++ b/Userland/Libraries/LibMedia/Forward.h @@ -6,7 +6,7 @@ #pragma once -namespace Video { +namespace Media { class DecoderError; class FrameQueueItem; diff --git a/Userland/Libraries/LibVideo/PlaybackManager.cpp b/Userland/Libraries/LibMedia/PlaybackManager.cpp similarity index 99% rename from Userland/Libraries/LibVideo/PlaybackManager.cpp rename to Userland/Libraries/LibMedia/PlaybackManager.cpp index 031c5bdb0b4..07c123f2a4b 100644 --- a/Userland/Libraries/LibVideo/PlaybackManager.cpp +++ b/Userland/Libraries/LibMedia/PlaybackManager.cpp @@ -6,12 +6,12 @@ #include #include -#include -#include +#include +#include #include "PlaybackManager.h" -namespace Video { +namespace Media { #define TRY_OR_FATAL_ERROR(expression) \ ({ \ @@ -703,7 +703,7 @@ DecoderErrorOr> PlaybackManager::create(NonnullOw OwnPtr decoder; switch (codec_id) { case CodecID::VP9: - decoder = DECODER_TRY_ALLOC(try_make()); + decoder = DECODER_TRY_ALLOC(try_make()); break; default: diff --git a/Userland/Libraries/LibVideo/PlaybackManager.h b/Userland/Libraries/LibMedia/PlaybackManager.h similarity index 98% rename from Userland/Libraries/LibVideo/PlaybackManager.h rename to Userland/Libraries/LibMedia/PlaybackManager.h index de41b905255..1fdfa28ac2c 100644 --- a/Userland/Libraries/LibVideo/PlaybackManager.h +++ b/Userland/Libraries/LibMedia/PlaybackManager.h @@ -13,15 +13,15 @@ #include #include #include +#include +#include #include #include #include -#include -#include #include "VideoDecoder.h" -namespace Video { +namespace Media { class FrameQueueItem { public: diff --git a/Userland/Libraries/LibMedia/Sample.h b/Userland/Libraries/LibMedia/Sample.h new file mode 100644 index 00000000000..e0aae4d172d --- /dev/null +++ b/Userland/Libraries/LibMedia/Sample.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022, Gregory Bertilson + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +namespace Media { + +class Sample { +public: + virtual ~Sample() = default; + + virtual bool is_video_sample() const { return false; } +}; + +} diff --git a/Userland/Libraries/LibVideo/Track.h b/Userland/Libraries/LibMedia/Track.h similarity index 91% rename from Userland/Libraries/LibVideo/Track.h rename to Userland/Libraries/LibMedia/Track.h index 9e7b0b0ae37..1ca4efad0b6 100644 --- a/Userland/Libraries/LibVideo/Track.h +++ b/Userland/Libraries/LibMedia/Track.h @@ -12,7 +12,7 @@ #include #include -namespace Video { +namespace Media { enum class TrackType : u32 { Video, @@ -77,6 +77,6 @@ private: } template<> -struct AK::Traits : public DefaultTraits { - static unsigned hash(Video::Track const& t) { return t.hash(); } +struct AK::Traits : public DefaultTraits { + static unsigned hash(Media::Track const& t) { return t.hash(); } }; diff --git a/Userland/Libraries/LibVideo/VP9/BooleanDecoder.h b/Userland/Libraries/LibMedia/Video/VP9/BooleanDecoder.h similarity index 87% rename from Userland/Libraries/LibVideo/VP9/BooleanDecoder.h rename to Userland/Libraries/LibMedia/Video/VP9/BooleanDecoder.h index 2c53fc87019..66c985aac96 100644 --- a/Userland/Libraries/LibVideo/VP9/BooleanDecoder.h +++ b/Userland/Libraries/LibMedia/Video/VP9/BooleanDecoder.h @@ -8,7 +8,7 @@ #include -namespace Video::VP9 { +namespace Media::Video::VP9 { using BooleanDecoder = Gfx::BooleanDecoder; diff --git a/Userland/Libraries/LibVideo/VP9/Context.h b/Userland/Libraries/LibMedia/Video/VP9/Context.h similarity index 99% rename from Userland/Libraries/LibVideo/VP9/Context.h rename to Userland/Libraries/LibMedia/Video/VP9/Context.h index bc2e6b8606b..bd1a7df34cc 100644 --- a/Userland/Libraries/LibVideo/VP9/Context.h +++ b/Userland/Libraries/LibMedia/Video/VP9/Context.h @@ -13,8 +13,8 @@ #include #include #include -#include -#include +#include +#include #include "BooleanDecoder.h" #include "ContextStorage.h" @@ -24,7 +24,7 @@ #include "SyntaxElementCounter.h" #include "Utilities.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { enum class FrameShowMode { CreateAndShowNewFrame, diff --git a/Userland/Libraries/LibVideo/VP9/ContextStorage.h b/Userland/Libraries/LibMedia/Video/VP9/ContextStorage.h similarity index 98% rename from Userland/Libraries/LibVideo/VP9/ContextStorage.h rename to Userland/Libraries/LibMedia/Video/VP9/ContextStorage.h index b6539f0a727..06f04453883 100644 --- a/Userland/Libraries/LibVideo/VP9/ContextStorage.h +++ b/Userland/Libraries/LibMedia/Video/VP9/ContextStorage.h @@ -11,13 +11,13 @@ #include #include #include -#include +#include #include "Enums.h" #include "LookupTables.h" #include "MotionVector.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { template struct ReferencePair { diff --git a/Userland/Libraries/LibVideo/VP9/Decoder.cpp b/Userland/Libraries/LibMedia/Video/VP9/Decoder.cpp similarity index 99% rename from Userland/Libraries/LibVideo/VP9/Decoder.cpp rename to Userland/Libraries/LibMedia/Video/VP9/Decoder.cpp index 05140df5d3d..d41280db433 100644 --- a/Userland/Libraries/LibVideo/VP9/Decoder.cpp +++ b/Userland/Libraries/LibMedia/Video/VP9/Decoder.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include "Context.h" #include "Decoder.h" @@ -18,7 +18,7 @@ # pragma GCC optimize("O3") #endif -namespace Video::VP9 { +namespace Media::Video::VP9 { Decoder::Decoder() : m_parser(make(*this)) diff --git a/Userland/Libraries/LibVideo/VP9/Decoder.h b/Userland/Libraries/LibMedia/Video/VP9/Decoder.h similarity index 97% rename from Userland/Libraries/LibVideo/VP9/Decoder.h rename to Userland/Libraries/LibMedia/Video/VP9/Decoder.h index a043257ce23..67bb30cb67a 100644 --- a/Userland/Libraries/LibVideo/VP9/Decoder.h +++ b/Userland/Libraries/LibMedia/Video/VP9/Decoder.h @@ -12,14 +12,14 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include "Parser.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { class Decoder : public VideoDecoder { friend class Parser; diff --git a/Userland/Libraries/LibVideo/VP9/Enums.h b/Userland/Libraries/LibMedia/Video/VP9/Enums.h similarity index 99% rename from Userland/Libraries/LibVideo/VP9/Enums.h rename to Userland/Libraries/LibMedia/Video/VP9/Enums.h index 3f59112e65a..89848f29177 100644 --- a/Userland/Libraries/LibVideo/VP9/Enums.h +++ b/Userland/Libraries/LibMedia/Video/VP9/Enums.h @@ -9,7 +9,7 @@ #include "Symbols.h" #include -namespace Video::VP9 { +namespace Media::Video::VP9 { enum class FrameType { KeyFrame, diff --git a/Userland/Libraries/LibVideo/VP9/LookupTables.h b/Userland/Libraries/LibMedia/Video/VP9/LookupTables.h similarity index 99% rename from Userland/Libraries/LibVideo/VP9/LookupTables.h rename to Userland/Libraries/LibMedia/Video/VP9/LookupTables.h index 9c7f1dc244b..5168eeba3bc 100644 --- a/Userland/Libraries/LibVideo/VP9/LookupTables.h +++ b/Userland/Libraries/LibMedia/Video/VP9/LookupTables.h @@ -11,7 +11,7 @@ #include "MotionVector.h" #include "Symbols.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { static constexpr InterpolationFilter literal_to_type[4] = { EightTapSmooth, EightTap, EightTapSharp, Bilinear }; static constexpr TransformSize tx_mode_to_biggest_tx_size[TX_MODES] = { Transform_4x4, Transform_8x8, Transform_16x16, Transform_32x32, Transform_32x32 }; diff --git a/Userland/Libraries/LibVideo/VP9/MotionVector.h b/Userland/Libraries/LibMedia/Video/VP9/MotionVector.h similarity index 98% rename from Userland/Libraries/LibVideo/VP9/MotionVector.h rename to Userland/Libraries/LibMedia/Video/VP9/MotionVector.h index dac793aa4dc..0d96fa40151 100644 --- a/Userland/Libraries/LibVideo/VP9/MotionVector.h +++ b/Userland/Libraries/LibMedia/Video/VP9/MotionVector.h @@ -9,7 +9,7 @@ #include -namespace Video::VP9 { +namespace Media::Video::VP9 { struct MotionVector { public: diff --git a/Userland/Libraries/LibVideo/VP9/Parser.cpp b/Userland/Libraries/LibMedia/Video/VP9/Parser.cpp similarity index 99% rename from Userland/Libraries/LibVideo/VP9/Parser.cpp rename to Userland/Libraries/LibMedia/Video/VP9/Parser.cpp index 35ad1dbec7f..0fcc2332f0e 100644 --- a/Userland/Libraries/LibVideo/VP9/Parser.cpp +++ b/Userland/Libraries/LibMedia/Video/VP9/Parser.cpp @@ -22,7 +22,7 @@ // Beware, threading is unstable in Serenity with smp=on, and performs worse than with it off. #define VP9_TILE_THREADING -namespace Video::VP9 { +namespace Media::Video::VP9 { #define TRY_READ(expression) DECODER_TRY(DecoderErrorCategory::Corrupted, expression) diff --git a/Userland/Libraries/LibVideo/VP9/Parser.h b/Userland/Libraries/LibMedia/Video/VP9/Parser.h similarity index 97% rename from Userland/Libraries/LibVideo/VP9/Parser.h rename to Userland/Libraries/LibMedia/Video/VP9/Parser.h index c97a842b9be..8e92531b9af 100644 --- a/Userland/Libraries/LibVideo/VP9/Parser.h +++ b/Userland/Libraries/LibMedia/Video/VP9/Parser.h @@ -11,9 +11,10 @@ #include #include #include +#include +#include +#include #include -#include -#include #include "ContextStorage.h" #include "LookupTables.h" @@ -22,7 +23,7 @@ #include "SyntaxElementCounter.h" #include "TreeParser.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { class Decoder; diff --git a/Userland/Libraries/LibVideo/VP9/ProbabilityTables.cpp b/Userland/Libraries/LibMedia/Video/VP9/ProbabilityTables.cpp similarity index 99% rename from Userland/Libraries/LibVideo/VP9/ProbabilityTables.cpp rename to Userland/Libraries/LibMedia/Video/VP9/ProbabilityTables.cpp index 9c645cfa918..9d0e4bf9acf 100644 --- a/Userland/Libraries/LibVideo/VP9/ProbabilityTables.cpp +++ b/Userland/Libraries/LibMedia/Video/VP9/ProbabilityTables.cpp @@ -7,7 +7,7 @@ #include "ProbabilityTables.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { static constexpr ParetoTable constant_pareto_table = { { 3, 86, 128, 6, 86, 23, 88, 29 }, diff --git a/Userland/Libraries/LibVideo/VP9/ProbabilityTables.h b/Userland/Libraries/LibMedia/Video/VP9/ProbabilityTables.h similarity index 99% rename from Userland/Libraries/LibVideo/VP9/ProbabilityTables.h rename to Userland/Libraries/LibMedia/Video/VP9/ProbabilityTables.h index 2886f432b4b..1fc3c537eb3 100644 --- a/Userland/Libraries/LibVideo/VP9/ProbabilityTables.h +++ b/Userland/Libraries/LibMedia/Video/VP9/ProbabilityTables.h @@ -12,7 +12,7 @@ #include "Symbols.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { typedef u8 ParetoTable[128][8]; typedef u8 KfPartitionProbs[PARTITION_CONTEXTS][PARTITION_TYPES - 1]; diff --git a/Userland/Libraries/LibVideo/VP9/Symbols.h b/Userland/Libraries/LibMedia/Video/VP9/Symbols.h similarity index 98% rename from Userland/Libraries/LibVideo/VP9/Symbols.h rename to Userland/Libraries/LibMedia/Video/VP9/Symbols.h index fe767293880..171eb97c500 100644 --- a/Userland/Libraries/LibVideo/VP9/Symbols.h +++ b/Userland/Libraries/LibMedia/Video/VP9/Symbols.h @@ -7,7 +7,7 @@ #pragma once -namespace Video::VP9 { +namespace Media::Video::VP9 { // FIXME: These should be placed in logical groupings based on the // context they are used in, and perhaps split into multiple diff --git a/Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.cpp b/Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.cpp similarity index 99% rename from Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.cpp rename to Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.cpp index 69c62501955..373dc3fa175 100644 --- a/Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.cpp +++ b/Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.cpp @@ -7,7 +7,7 @@ #include "SyntaxElementCounter.h" #include -namespace Video::VP9 { +namespace Media::Video::VP9 { SyntaxElementCounter::SyntaxElementCounter() { diff --git a/Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.h b/Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.h similarity index 98% rename from Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.h rename to Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.h index 04ab57d1d12..aa2427a79c3 100644 --- a/Userland/Libraries/LibVideo/VP9/SyntaxElementCounter.h +++ b/Userland/Libraries/LibMedia/Video/VP9/SyntaxElementCounter.h @@ -9,7 +9,7 @@ #include "Symbols.h" #include -namespace Video::VP9 { +namespace Media::Video::VP9 { class SyntaxElementCounter final { public: diff --git a/Userland/Libraries/LibVideo/VP9/TreeParser.cpp b/Userland/Libraries/LibMedia/Video/VP9/TreeParser.cpp similarity index 99% rename from Userland/Libraries/LibVideo/VP9/TreeParser.cpp rename to Userland/Libraries/LibMedia/Video/VP9/TreeParser.cpp index 80a168d31d2..05f066549e0 100644 --- a/Userland/Libraries/LibVideo/VP9/TreeParser.cpp +++ b/Userland/Libraries/LibMedia/Video/VP9/TreeParser.cpp @@ -14,7 +14,7 @@ #include "TreeParser.h" #include "Utilities.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { // Parsing of binary trees is handled here, as defined in sections 9.3. // Each syntax element is defined in its own section for each overarching section listed here: diff --git a/Userland/Libraries/LibVideo/VP9/TreeParser.h b/Userland/Libraries/LibMedia/Video/VP9/TreeParser.h similarity index 99% rename from Userland/Libraries/LibVideo/VP9/TreeParser.h rename to Userland/Libraries/LibMedia/Video/VP9/TreeParser.h index f35aa5056a0..bc3f3143209 100644 --- a/Userland/Libraries/LibVideo/VP9/TreeParser.h +++ b/Userland/Libraries/LibMedia/Video/VP9/TreeParser.h @@ -13,7 +13,7 @@ #include "ProbabilityTables.h" #include "SyntaxElementCounter.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { class Parser; diff --git a/Userland/Libraries/LibVideo/VP9/Utilities.h b/Userland/Libraries/LibMedia/Video/VP9/Utilities.h similarity index 99% rename from Userland/Libraries/LibVideo/VP9/Utilities.h rename to Userland/Libraries/LibMedia/Video/VP9/Utilities.h index 6580e9cfb4d..e7f828ab58f 100644 --- a/Userland/Libraries/LibVideo/VP9/Utilities.h +++ b/Userland/Libraries/LibMedia/Video/VP9/Utilities.h @@ -12,7 +12,7 @@ #include "LookupTables.h" -namespace Video::VP9 { +namespace Media::Video::VP9 { // FIXME: Once everything is working, replace this with plain clamp // since parameter order is different diff --git a/Userland/Libraries/LibVideo/Sample.h b/Userland/Libraries/LibMedia/Video/VideoSample.h similarity index 78% rename from Userland/Libraries/LibVideo/Sample.h rename to Userland/Libraries/LibMedia/Video/VideoSample.h index e2c9f204154..45598b83c0c 100644 --- a/Userland/Libraries/LibVideo/Sample.h +++ b/Userland/Libraries/LibMedia/Video/VideoSample.h @@ -8,18 +8,12 @@ #include #include -#include +#include +#include -namespace Video { +namespace Media::Video { -class Sample { -public: - virtual ~Sample() = default; - - virtual bool is_video_sample() const { return false; } -}; - -class VideoSample : public Sample { +class VideoSample : public Media::Sample { public: VideoSample(ReadonlyBytes data, CodingIndependentCodePoints container_cicp, Duration timestamp) : m_data(data) diff --git a/Userland/Libraries/LibVideo/VideoDecoder.h b/Userland/Libraries/LibMedia/VideoDecoder.h similarity index 92% rename from Userland/Libraries/LibVideo/VideoDecoder.h rename to Userland/Libraries/LibMedia/VideoDecoder.h index a4b239c4c45..76659d7c400 100644 --- a/Userland/Libraries/LibVideo/VideoDecoder.h +++ b/Userland/Libraries/LibMedia/VideoDecoder.h @@ -10,9 +10,8 @@ #include #include "DecoderError.h" -#include "VideoFrame.h" -namespace Video { +namespace Media { class VideoDecoder { public: diff --git a/Userland/Libraries/LibVideo/VideoFrame.cpp b/Userland/Libraries/LibMedia/VideoFrame.cpp similarity index 99% rename from Userland/Libraries/LibVideo/VideoFrame.cpp rename to Userland/Libraries/LibMedia/VideoFrame.cpp index 206b27827eb..9325d6fa2dd 100644 --- a/Userland/Libraries/LibVideo/VideoFrame.cpp +++ b/Userland/Libraries/LibMedia/VideoFrame.cpp @@ -6,11 +6,11 @@ #include #include -#include +#include #include "VideoFrame.h" -namespace Video { +namespace Media { ErrorOr> SubsampledYUVFrame::try_create( Gfx::Size size, diff --git a/Userland/Libraries/LibVideo/VideoFrame.h b/Userland/Libraries/LibMedia/VideoFrame.h similarity index 95% rename from Userland/Libraries/LibVideo/VideoFrame.h rename to Userland/Libraries/LibMedia/VideoFrame.h index eba9d7b406b..8ecf97f263b 100644 --- a/Userland/Libraries/LibVideo/VideoFrame.h +++ b/Userland/Libraries/LibMedia/VideoFrame.h @@ -10,10 +10,11 @@ #include #include #include -#include -#include +#include -namespace Video { +#include "DecoderError.h" + +namespace Media { class VideoFrame { diff --git a/Userland/Libraries/LibVideo/CMakeLists.txt b/Userland/Libraries/LibVideo/CMakeLists.txt deleted file mode 100644 index 2d52891ac82..00000000000 --- a/Userland/Libraries/LibVideo/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -set(SOURCES - Color/ColorConverter.cpp - Color/ColorPrimaries.cpp - Color/TransferCharacteristics.cpp - Containers/Matroska/MatroskaDemuxer.cpp - Containers/Matroska/Reader.cpp - PlaybackManager.cpp - VideoFrame.cpp - VP9/Decoder.cpp - VP9/Parser.cpp - VP9/ProbabilityTables.cpp - VP9/SyntaxElementCounter.cpp - VP9/TreeParser.cpp -) - -serenity_lib(LibVideo video) -target_link_libraries(LibVideo PRIVATE LibAudio LibCore LibIPC LibGfx LibThreading) diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 5e903b5ef45..a74e5873940 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -754,7 +754,7 @@ find_package(unofficial-skia CONFIG REQUIRED) serenity_lib(LibWeb web) -target_link_libraries(LibWeb PRIVATE LibCore LibCrypto LibJS LibHTTP LibGfx LibIPC LibLocale LibRegex LibSyntax LibTextCodec LibUnicode LibAudio LibVideo LibWasm LibXML LibIDL LibURL LibTLS unofficial::skia::skia) +target_link_libraries(LibWeb PRIVATE LibCore LibCrypto LibJS LibHTTP LibGfx LibIPC LibLocale LibRegex LibSyntax LibTextCodec LibUnicode LibAudio LibMedia LibWasm LibXML LibIDL LibURL LibTLS unofficial::skia::skia) if (HAS_ACCELERATED_GRAPHICS) target_link_libraries(LibWeb PRIVATE ${ACCEL_GFX_LIBS}) diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp index 8c557555a5a..a6305928e23 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include #include @@ -1068,7 +1068,7 @@ WebIDL::ExceptionOr HTMLMediaElement::process_media_data(Function If the media data cannot be fetched at all, due to network errors, causing the user agent to give up trying to fetch the resource // -> If the media data can be fetched but is found by inspection to be in an unsupported format, or can otherwise not be rendered at all diff --git a/Userland/Libraries/LibWeb/HTML/VideoTrack.cpp b/Userland/Libraries/LibWeb/HTML/VideoTrack.cpp index 1c7f6ed699c..4c0eb73972a 100644 --- a/Userland/Libraries/LibWeb/HTML/VideoTrack.cpp +++ b/Userland/Libraries/LibWeb/HTML/VideoTrack.cpp @@ -9,8 +9,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include @@ -26,7 +26,7 @@ JS_DEFINE_ALLOCATOR(VideoTrack); static IDAllocator s_video_track_id_allocator; -VideoTrack::VideoTrack(JS::Realm& realm, JS::NonnullGCPtr media_element, NonnullOwnPtr playback_manager) +VideoTrack::VideoTrack(JS::Realm& realm, JS::NonnullGCPtr media_element, NonnullOwnPtr playback_manager) : PlatformObject(realm) , m_media_element(media_element) , m_playback_manager(move(playback_manager)) @@ -42,7 +42,7 @@ VideoTrack::VideoTrack(JS::Realm& realm, JS::NonnullGCPtr medi m_playback_manager->on_playback_state_change = [this]() { switch (m_playback_manager->get_state()) { - case Video::PlaybackState::Stopped: { + case Media::PlaybackState::Stopped: { auto playback_position_ms = static_cast(duration().to_milliseconds()); m_media_element->set_current_playback_position(playback_position_ms / 1000.0); break; @@ -117,10 +117,10 @@ void VideoTrack::seek(Duration position, MediaSeekMode seek_mode) { switch (seek_mode) { case MediaSeekMode::Accurate: - m_playback_manager->seek_to_timestamp(position, Video::PlaybackManager::SeekMode::Accurate); + m_playback_manager->seek_to_timestamp(position, Media::PlaybackManager::SeekMode::Accurate); break; case MediaSeekMode::ApproximateForSpeed: - m_playback_manager->seek_to_timestamp(position, Video::PlaybackManager::SeekMode::Fast); + m_playback_manager->seek_to_timestamp(position, Media::PlaybackManager::SeekMode::Fast); break; } } diff --git a/Userland/Libraries/LibWeb/HTML/VideoTrack.h b/Userland/Libraries/LibWeb/HTML/VideoTrack.h index 5efbe86f625..042fbce9427 100644 --- a/Userland/Libraries/LibWeb/HTML/VideoTrack.h +++ b/Userland/Libraries/LibWeb/HTML/VideoTrack.h @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include namespace Web::HTML { @@ -43,7 +43,7 @@ public: void set_selected(bool selected); private: - VideoTrack(JS::Realm&, JS::NonnullGCPtr, NonnullOwnPtr); + VideoTrack(JS::Realm&, JS::NonnullGCPtr, NonnullOwnPtr); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; @@ -66,7 +66,7 @@ private: JS::NonnullGCPtr m_media_element; JS::GCPtr m_video_track_list; - NonnullOwnPtr m_playback_manager; + NonnullOwnPtr m_playback_manager; }; } diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 1974103f271..998c8b83d56 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(aconv PRIVATE LibAudio LibFileSystem) target_link_libraries(animation PRIVATE LibGfx) target_link_libraries(gzip PRIVATE LibCompress) target_link_libraries(headless-browser PRIVATE LibCrypto LibFileSystem LibGfx LibHTTP LibImageDecoderClient LibTLS LibWeb LibWebView LibWebSocket LibIPC LibJS LibDiff LibURL) -target_link_libraries(icc PRIVATE LibGfx LibVideo LibURL) +target_link_libraries(icc PRIVATE LibGfx LibMedia LibURL) target_link_libraries(image PRIVATE LibGfx) target_link_libraries(js PRIVATE LibCrypto LibJS LibLine LibLocale LibTextCodec) target_link_libraries(lzcat PRIVATE LibCompress) diff --git a/Userland/Utilities/icc.cpp b/Userland/Utilities/icc.cpp index fea7c162918..f86189d5016 100644 --- a/Userland/Utilities/icc.cpp +++ b/Userland/Utilities/icc.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include template static ErrorOr hyperlink(URL::URL const& target, T const& label) @@ -406,13 +406,13 @@ ErrorOr serenity_main(Main::Arguments arguments) } else if (tag_data->type() == Gfx::ICC::CicpTagData::Type) { auto& cicp = static_cast(*tag_data); outln(" color primaries: {} - {}", cicp.color_primaries(), - Video::color_primaries_to_string((Video::ColorPrimaries)cicp.color_primaries())); + Media::color_primaries_to_string((Media::ColorPrimaries)cicp.color_primaries())); outln(" transfer characteristics: {} - {}", cicp.transfer_characteristics(), - Video::transfer_characteristics_to_string((Video::TransferCharacteristics)cicp.transfer_characteristics())); + Media::transfer_characteristics_to_string((Media::TransferCharacteristics)cicp.transfer_characteristics())); outln(" matrix coefficients: {} - {}", cicp.matrix_coefficients(), - Video::matrix_coefficients_to_string((Video::MatrixCoefficients)cicp.matrix_coefficients())); + Media::matrix_coefficients_to_string((Media::MatrixCoefficients)cicp.matrix_coefficients())); outln(" video full range flag: {} - {}", cicp.video_full_range_flag(), - Video::video_full_range_flag_to_string((Video::VideoFullRangeFlag)cicp.video_full_range_flag())); + Media::video_full_range_flag_to_string((Media::VideoFullRangeFlag)cicp.video_full_range_flag())); } else if (tag_data->type() == Gfx::ICC::CurveTagData::Type) { TRY(out_curve_tag(*tag_data, /*indent=*/4)); } else if (tag_data->type() == Gfx::ICC::Lut16TagData::Type) {