From e57d2c734318c18694f09b131253867edfbec286 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Thu, 26 Sep 2024 16:06:57 -0700 Subject: [PATCH 01/23] Initial setup of the dropdown menu to select media references Signed-off-by: jspadafora --- app.h | 3 ++ inspector.cpp | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 95 insertions(+), 1 deletion(-) diff --git a/app.h b/app.h index 59ce916..30557f7 100644 --- a/app.h +++ b/app.h @@ -112,6 +112,9 @@ struct AppState { std::string selected_text; // displayed in the JSON inspector char message[1024]; // single-line message displayed in main window + // Store the currently selected MediaReference index for the inspector. + int selected_reference_index = -1; + // Toggles for Dear ImGui windows bool show_main_window = true; bool show_style_editor = false; diff --git a/inspector.cpp b/inspector.cpp index ec4f9ff..4d98583 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -10,14 +10,18 @@ #include #include #include +#include #include +#include #include #include +#include #include #include -#include #include +#include +#include static const char* marker_color_names[] = { "PINK", "RED", "ORANGE", "YELLOW", @@ -606,6 +610,93 @@ void DrawInspector() { DrawMetadataTable(metadata); } + + // Draw Reference Media Information + if (const auto& clip = dynamic_cast(selected_object)) { + ImGui::Dummy(ImVec2(0.0f, 20.0f)); + ImGui::Text("Media Information:"); + + const auto& media_references = clip->media_references(); + + // Array of names and corresponding MediaReference pointers + const char** reference_names = new const char*[media_references.size()]; + otio::MediaReference** reference_objects = new otio::MediaReference*[media_references.size()]; + + size_t i = 0; + for (const auto& media_reference : media_references) { + std::string ref_name = media_reference.second->name(); + + // Account for situations where the name attribute is not set. + // Use the target instead. + if (ref_name.empty() || ref_name == "") { + std::cout << "Reference name is empty, using target URL instead." << std::endl; + std::string target = ""; + + if (auto external_ref = dynamic_cast(media_reference.second)) { + target = external_ref->target_url(); + } else if (auto external_ref = dynamic_cast(media_reference.second)) { + target = external_ref->target_url_base(); + } else { + target = "Unknown"; + } + size_t pos = target.find_last_of("/\\"); + ref_name = (pos == std::string::npos) ? target : target.substr(pos + 1); + std::cout << "Reference name: " << ref_name << std::endl; + } + + reference_names[i] = ref_name.c_str(); + reference_objects[i] = media_reference.second; + i++; + } + int num_references = static_cast(media_references.size()); + + std::string current_reference_name = clip->active_media_reference_key(); + + // Initialize selected_reference_index if it's not set + if (appState.selected_reference_index == -1) { + for (int i = 0; i < num_references; i++) { + if (current_reference_name == reference_names[i]) { + appState.selected_reference_index = i; + break; + } + } + } + + // print all the reference names to console + for (int i = 0; i < num_references; i++) { + std::cout << "reference_names." << i << reference_names[i] << std::endl; + } + + ImGui::Combo("", &appState.selected_reference_index, reference_names, num_references); + + // Retrieve the selected MediaReference object + otio::MediaReference* selected_reference = nullptr; + try { + if (appState.selected_reference_index >= 0 && appState.selected_reference_index < num_references) { + selected_reference = reference_objects[appState.selected_reference_index]; + } else { + throw std::out_of_range("Selected reference index is out of range."); + } + } catch (const std::out_of_range& e) { + std::cerr << "Error: " << e.what() << std::endl; + } + + // You can now use the selected_reference object here + if (selected_reference) { + if (auto external_ref = dynamic_cast(selected_reference)) { + ImGui::Text("Type: External Media"); + ImGui::Text("Target: %s", external_ref->target_url().c_str()); + + } else if (auto missing_ref = dynamic_cast(selected_reference)) { + ImGui::Text("Type: Missing Media"); + } + + // Add metadata table for the selected reference + } + + delete[] reference_names; + delete[] reference_objects; + } } void DrawMarkersInspector() { From 0463c8556407e54c26365c2e3923cecba35d2d10 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Thu, 26 Sep 2024 16:53:11 -0700 Subject: [PATCH 02/23] Use the key on the media ref object to display in the dropdown Signed-off-by: jspadafora --- inspector.cpp | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/inspector.cpp b/inspector.cpp index 4d98583..2a21f38 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -619,32 +619,12 @@ void DrawInspector() { const auto& media_references = clip->media_references(); // Array of names and corresponding MediaReference pointers - const char** reference_names = new const char*[media_references.size()]; + std::vector reference_names; otio::MediaReference** reference_objects = new otio::MediaReference*[media_references.size()]; size_t i = 0; for (const auto& media_reference : media_references) { - std::string ref_name = media_reference.second->name(); - - // Account for situations where the name attribute is not set. - // Use the target instead. - if (ref_name.empty() || ref_name == "") { - std::cout << "Reference name is empty, using target URL instead." << std::endl; - std::string target = ""; - - if (auto external_ref = dynamic_cast(media_reference.second)) { - target = external_ref->target_url(); - } else if (auto external_ref = dynamic_cast(media_reference.second)) { - target = external_ref->target_url_base(); - } else { - target = "Unknown"; - } - size_t pos = target.find_last_of("/\\"); - ref_name = (pos == std::string::npos) ? target : target.substr(pos + 1); - std::cout << "Reference name: " << ref_name << std::endl; - } - - reference_names[i] = ref_name.c_str(); + reference_names.push_back(media_reference.first.c_str()); reference_objects[i] = media_reference.second; i++; } @@ -662,12 +642,7 @@ void DrawInspector() { } } - // print all the reference names to console - for (int i = 0; i < num_references; i++) { - std::cout << "reference_names." << i << reference_names[i] << std::endl; - } - - ImGui::Combo("", &appState.selected_reference_index, reference_names, num_references); + ImGui::Combo("", &appState.selected_reference_index, reference_names.data(), num_references); // Retrieve the selected MediaReference object otio::MediaReference* selected_reference = nullptr; @@ -693,9 +668,6 @@ void DrawInspector() { // Add metadata table for the selected reference } - - delete[] reference_names; - delete[] reference_objects; } } From 8129364bf2919e42031a726656e4ee209b1f139a Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 10:08:42 -0700 Subject: [PATCH 03/23] Set the selected media ref index to -1 on clip change, UI updates, Set the active media ref on dropdown change, Display additional attributes Signed-off-by: jspadafora --- .vscode/settings.json | 70 + examples/Untitled.otio | 3024 ++++++++++++++++++++++++++++++++++++++++ inspector.cpp | 70 +- 3 files changed, 3157 insertions(+), 7 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 examples/Untitled.otio diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d7b6a5c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,70 @@ +{ + "files.associations": { + "string": "cpp", + "__bit_reference": "cpp", + "__hash_table": "cpp", + "__locale": "cpp", + "__node_handle": "cpp", + "__split_buffer": "cpp", + "__threading_support": "cpp", + "__tree": "cpp", + "__verbose_abort": "cpp", + "any": "cpp", + "array": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "charconv": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "codecvt": "cpp", + "complex": "cpp", + "condition_variable": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "execution": "cpp", + "memory": "cpp", + "forward_list": "cpp", + "fstream": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "ios": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "list": "cpp", + "locale": "cpp", + "map": "cpp", + "mutex": "cpp", + "new": "cpp", + "optional": "cpp", + "ostream": "cpp", + "print": "cpp", + "queue": "cpp", + "ratio": "cpp", + "regex": "cpp", + "set": "cpp", + "sstream": "cpp", + "stack": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string_view": "cpp", + "tuple": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "valarray": "cpp", + "variant": "cpp", + "vector": "cpp", + "algorithm": "cpp" + } +} \ No newline at end of file diff --git a/examples/Untitled.otio b/examples/Untitled.otio new file mode 100644 index 0000000..bc363ba --- /dev/null +++ b/examples/Untitled.otio @@ -0,0 +1,3024 @@ +{ + "OTIO_SCHEMA": "Timeline.1", + "metadata": {}, + "name": "aswf-encoding-tests", + "global_start_time": null, + "tracks": { + "OTIO_SCHEMA": "Stack.1", + "metadata": {}, + "name": "tracks", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Track.1", + "metadata": {}, + "name": "ffmpeg_version_6.0", + "source_range": null, + "effects": [], + "markers": [], + "enabled": true, + "children": [ + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb/chimera_cars_srgb.%05d.png.yml", + "duration": 200, + "height": 1080, + "images": true, + "in": 2500, + "path": "chimera_cars_srgb.%05d.png", + "pix_fmt": "rgb48be", + "rate": 25.0, + "width": 1920 + } + }, + "raven": { + "color": "PINK" + }, + "source_test_name": "test_mp4" + }, + "name": "chimera_cars_srgb.%05d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 2500.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 2500.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb", + "name_prefix": "chimera_cars_srgb.", + "name_suffix": ".png", + "start_frame": 2500, + "frame_step": 1, + "rate": 25.0, + "frame_zero_padding": 5, + "missing_frame_policy": "error" + }, + "test_mp4-libsvtav1-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:19:24.499520+00:00", + "encode_time": 20.4923, + "filesize": 3646329, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 50.325414, + "max": 51.516216, + "mean": 50.328543, + "min": 49.115223 + }, + "psnr_cr": { + "harmonic_mean": 49.762308, + "max": 51.33137, + "mean": 49.764491, + "min": 48.984304 + }, + "psnr_y": { + "harmonic_mean": 46.696538, + "max": 49.142278, + "mean": 46.706295, + "min": 45.29358 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.434523, + "max": 100.0, + "mean": 99.441143, + "min": 95.877138 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_cars_srgb.-test_mp4-libsvtav1-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libsvtav1-10bit.mp4" + }, + "test_mp4-libsvtav1-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:21:03.011374+00:00", + "encode_time": 18.7277, + "filesize": 3639752, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.75372, + "max": 49.837518, + "mean": 48.755609, + "min": 47.814779 + }, + "psnr_cr": { + "harmonic_mean": 48.127583, + "max": 49.559283, + "mean": 48.129269, + "min": 47.46561 + }, + "psnr_y": { + "harmonic_mean": 45.483847, + "max": 48.22492, + "mean": 45.49587, + "min": 43.882691 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.277824, + "max": 100.0, + "mean": 99.286231, + "min": 95.931186 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_cars_srgb.-test_mp4-libsvtav1-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libsvtav1-8bit.mp4" + }, + "test_mp4-libvpx-vp9-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-b:v": 0, + "-c:v": "libvpx-vp9", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 22, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-quality": "good", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:20:14.961170+00:00", + "encode_time": 50.4597, + "filesize": 3645796, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 50.242876, + "max": 51.735213, + "mean": 50.246118, + "min": 48.902526 + }, + "psnr_cr": { + "harmonic_mean": 49.60329, + "max": 51.507627, + "mean": 49.605602, + "min": 48.918143 + }, + "psnr_y": { + "harmonic_mean": 46.599533, + "max": 49.925824, + "mean": 46.609295, + "min": 44.9628 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.418256, + "max": 100.0, + "mean": 99.425135, + "min": 96.246675 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_cars_srgb.-test_mp4-libvpx-vp9-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libvpx-vp9-10bit.mp4" + }, + "test_mp4-libx264-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:19:04.005442+00:00", + "encode_time": 18.2133, + "filesize": 3669367, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 49.899884, + "max": 50.523645, + "mean": 49.90196, + "min": 48.859751 + }, + "psnr_cr": { + "harmonic_mean": 49.356841, + "max": 49.900288, + "mean": 49.358003, + "min": 48.629115 + }, + "psnr_y": { + "harmonic_mean": 46.208245, + "max": 47.130147, + "mean": 46.211665, + "min": 45.10649 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.397578, + "max": 100.0, + "mean": 99.40475, + "min": 95.161232 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_cars_srgb.-test_mp4-libx264-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libx264-10bit.mp4" + }, + "test_mp4-libx264-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:20:44.282039+00:00", + "encode_time": 5.9504, + "filesize": 3878811, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.491985, + "max": 48.957945, + "mean": 48.493181, + "min": 47.724934 + }, + "psnr_cr": { + "harmonic_mean": 47.952192, + "max": 48.356399, + "mean": 47.952955, + "min": 47.371182 + }, + "psnr_y": { + "harmonic_mean": 45.334152, + "max": 46.122186, + "mean": 45.336499, + "min": 44.473132 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.331812, + "max": 100.0, + "mean": 99.339961, + "min": 94.928093 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_cars_srgb.-test_mp4-libx264-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libx264-8bit.mp4" + }, + "test_mp4-libx265-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx265", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 20, + "-pix_fmt": "yuv420p10le", + "-preset": "medium", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-tag:v": "hvc1", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:20:38.330119+00:00", + "encode_time": 23.3674, + "filesize": 2701507, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 49.494789, + "max": 50.159769, + "mean": 49.496876, + "min": 48.606755 + }, + "psnr_cr": { + "harmonic_mean": 48.926694, + "max": 49.438152, + "mean": 48.927782, + "min": 48.351656 + }, + "psnr_y": { + "harmonic_mean": 45.700754, + "max": 47.153988, + "mean": 45.704974, + "min": 44.604577 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 98.875062, + "max": 100.0, + "mean": 98.888588, + "min": 94.869443 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_cars_srgb.-test_mp4-libx265-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libx265-10bit.mp4" + } + }, + "active_media_reference_key": "test_mp4-libx264-10bit" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb/chimera_coaster_srgb.%06d.png.yml", + "duration": 200, + "height": 1080, + "images": true, + "in": 44200, + "path": "chimera_coaster_srgb.%06d.png", + "pix_fmt": "rgb48be", + "rate": 25.0, + "width": 1920 + } + }, + "source_test_name": "test_mp4" + }, + "name": "chimera_coaster_srgb.%06d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 44200.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 44200.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb", + "name_prefix": "chimera_coaster_srgb.", + "name_suffix": ".png", + "start_frame": 44200, + "frame_step": 1, + "rate": 25.0, + "frame_zero_padding": 6, + "missing_frame_policy": "error" + }, + "test_mp4-libsvtav1-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:28:24.969846+00:00", + "encode_time": 29.2195, + "filesize": 7658703, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 46.229805, + "max": 48.367358, + "mean": 46.272343, + "min": 43.428809 + }, + "psnr_cr": { + "harmonic_mean": 46.430817, + "max": 48.005142, + "mean": 46.442715, + "min": 44.678293 + }, + "psnr_y": { + "harmonic_mean": 43.273328, + "max": 46.940733, + "mean": 43.347846, + "min": 40.008069 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.193019, + "max": 100.0, + "mean": 99.206091, + "min": 94.808005 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_coaster_srgb.-test_mp4-libsvtav1-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libsvtav1-10bit.mp4" + }, + "test_mp4-libsvtav1-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:30:56.954081+00:00", + "encode_time": 25.9825, + "filesize": 6798944, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 45.18191, + "max": 47.304972, + "mean": 45.216923, + "min": 42.591227 + }, + "psnr_cr": { + "harmonic_mean": 45.415999, + "max": 46.953655, + "mean": 45.425869, + "min": 43.717966 + }, + "psnr_y": { + "harmonic_mean": 42.102575, + "max": 46.077861, + "mean": 42.15911, + "min": 39.301899 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 98.641072, + "max": 100.0, + "mean": 98.664015, + "min": 94.727856 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_coaster_srgb.-test_mp4-libsvtav1-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libsvtav1-8bit.mp4" + }, + "test_mp4-libvpx-vp9-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-b:v": 0, + "-c:v": "libvpx-vp9", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 22, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-quality": "good", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:29:44.390337+00:00", + "encode_time": 79.4182, + "filesize": 7900693, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 46.285124, + "max": 49.687269, + "mean": 46.328656, + "min": 43.309053 + }, + "psnr_cr": { + "harmonic_mean": 46.524112, + "max": 49.634483, + "mean": 46.53976, + "min": 44.50843 + }, + "psnr_y": { + "harmonic_mean": 43.830853, + "max": 47.505384, + "mean": 43.921708, + "min": 40.171287 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.530172, + "max": 100.0, + "mean": 99.536965, + "min": 95.536135 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_coaster_srgb.-test_mp4-libvpx-vp9-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libvpx-vp9-10bit.mp4" + }, + "test_mp4-libx264-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:27:55.748231+00:00", + "encode_time": 26.357, + "filesize": 8538024, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 45.998854, + "max": 48.040734, + "mean": 46.034684, + "min": 43.452074 + }, + "psnr_cr": { + "harmonic_mean": 46.338028, + "max": 47.820437, + "mean": 46.348313, + "min": 44.936338 + }, + "psnr_y": { + "harmonic_mean": 43.500409, + "max": 46.042736, + "mean": 43.575723, + "min": 40.058992 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.27909, + "max": 100.0, + "mean": 99.290404, + "min": 93.880475 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_coaster_srgb.-test_mp4-libx264-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libx264-10bit.mp4" + }, + "test_mp4-libx264-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:30:30.969963+00:00", + "encode_time": 8.6474, + "filesize": 9031995, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 45.180556, + "max": 46.919318, + "mean": 45.207459, + "min": 42.919511 + }, + "psnr_cr": { + "harmonic_mean": 45.516446, + "max": 46.751879, + "mean": 45.523217, + "min": 44.342361 + }, + "psnr_y": { + "harmonic_mean": 42.91937, + "max": 45.154666, + "mean": 42.978926, + "min": 39.865413 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.159661, + "max": 100.0, + "mean": 99.172628, + "min": 93.753536 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_coaster_srgb.-test_mp4-libx264-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libx264-8bit.mp4" + }, + "test_mp4-libx265-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx265", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 20, + "-pix_fmt": "yuv420p10le", + "-preset": "medium", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-tag:v": "hvc1", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:30:22.321192+00:00", + "encode_time": 37.9287, + "filesize": 5527687, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 45.919827, + "max": 47.475851, + "mean": 45.955631, + "min": 43.227212 + }, + "psnr_cr": { + "harmonic_mean": 46.12958, + "max": 47.18235, + "mean": 46.139819, + "min": 44.551776 + }, + "psnr_y": { + "harmonic_mean": 43.19475, + "max": 46.029324, + "mean": 43.267278, + "min": 39.800059 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 98.690663, + "max": 100.0, + "mean": 98.711175, + "min": 93.83353 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_coaster_srgb.-test_mp4-libx265-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libx265-10bit.mp4" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb/chimera_fountains_srgb.%05d.png.yml", + "duration": 200, + "height": 1080, + "images": true, + "in": 5400, + "path": "chimera_fountains_srgb.%05d.png", + "pix_fmt": "rgb48be", + "rate": 25.0, + "width": 1920 + } + }, + "source_test_name": "test_mp4" + }, + "name": "chimera_fountains_srgb.%05d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 5400.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 5400.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb", + "name_prefix": "chimera_fountains_srgb.", + "name_suffix": ".png", + "start_frame": 5400, + "frame_step": 1, + "rate": 25.0, + "frame_zero_padding": 5, + "missing_frame_policy": "error" + }, + "test_mp4-libsvtav1-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:38:54.812627+00:00", + "encode_time": 33.9712, + "filesize": 35423665, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.360055, + "max": 50.06136, + "mean": 48.363245, + "min": 47.688624 + }, + "psnr_cr": { + "harmonic_mean": 47.059123, + "max": 49.129992, + "mean": 47.064283, + "min": 46.207404 + }, + "psnr_y": { + "harmonic_mean": 42.395554, + "max": 46.190958, + "mean": 42.421287, + "min": 40.782292 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.969508, + "max": 100.0, + "mean": 99.971236, + "min": 94.247167 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_fountains_srgb.-test_mp4-libsvtav1-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libsvtav1-10bit.mp4" + }, + "test_mp4-libsvtav1-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:43:51.628527+00:00", + "encode_time": 32.5414, + "filesize": 34013762, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 47.171775, + "max": 48.53089, + "mean": 47.173929, + "min": 46.63743 + }, + "psnr_cr": { + "harmonic_mean": 46.165179, + "max": 48.004123, + "mean": 46.168906, + "min": 45.479085 + }, + "psnr_y": { + "harmonic_mean": 41.499103, + "max": 45.554285, + "mean": 41.525086, + "min": 40.062911 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.970078, + "max": 100.0, + "mean": 99.971744, + "min": 94.348788 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_fountains_srgb.-test_mp4-libsvtav1-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libsvtav1-8bit.mp4" + }, + "test_mp4-libvpx-vp9-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-b:v": 0, + "-c:v": "libvpx-vp9", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 22, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-quality": "good", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:41:46.977438+00:00", + "encode_time": 172.1605, + "filesize": 33132867, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.831438, + "max": 51.3058, + "mean": 48.837096, + "min": 47.971101 + }, + "psnr_cr": { + "harmonic_mean": 47.598113, + "max": 50.987965, + "mean": 47.607489, + "min": 46.562103 + }, + "psnr_y": { + "harmonic_mean": 42.405738, + "max": 48.358629, + "mean": 42.461625, + "min": 40.302925 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.973985, + "max": 100.0, + "mean": 99.975253, + "min": 95.050655 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_fountains_srgb.-test_mp4-libvpx-vp9-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libvpx-vp9-10bit.mp4" + }, + "test_mp4-libx264-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:38:20.838407+00:00", + "encode_time": 54.0462, + "filesize": 34972900, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.755556, + "max": 49.22362, + "mean": 48.756362, + "min": 48.320252 + }, + "psnr_cr": { + "harmonic_mean": 47.229769, + "max": 48.007667, + "mean": 47.231632, + "min": 46.589777 + }, + "psnr_y": { + "harmonic_mean": 41.652679, + "max": 42.390444, + "mean": 41.655599, + "min": 40.742599 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.960587, + "max": 100.0, + "mean": 99.963427, + "min": 92.685407 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_fountains_srgb.-test_mp4-libx264-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libx264-10bit.mp4" + }, + "test_mp4-libx264-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:43:19.081749+00:00", + "encode_time": 19.7648, + "filesize": 35234179, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 47.635422, + "max": 48.046346, + "mean": 47.635923, + "min": 47.301517 + }, + "psnr_cr": { + "harmonic_mean": 46.422142, + "max": 47.04846, + "mean": 46.423308, + "min": 45.940926 + }, + "psnr_y": { + "harmonic_mean": 41.323369, + "max": 42.057646, + "mean": 41.325869, + "min": 40.466623 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.959593, + "max": 100.0, + "mean": 99.962573, + "min": 92.514579 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_fountains_srgb.-test_mp4-libx264-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libx264-8bit.mp4" + }, + "test_mp4-libx265-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx265", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 20, + "-pix_fmt": "yuv420p10le", + "-preset": "medium", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-tag:v": "hvc1", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:42:59.312833+00:00", + "encode_time": 72.332, + "filesize": 23589581, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 47.743693, + "max": 48.475433, + "mean": 47.744768, + "min": 47.259059 + }, + "psnr_cr": { + "harmonic_mean": 46.43295, + "max": 47.171916, + "mean": 46.434611, + "min": 45.762453 + }, + "psnr_y": { + "harmonic_mean": 39.788635, + "max": 42.779944, + "mean": 39.803592, + "min": 38.359924 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.243685, + "max": 100.0, + "mean": 99.254268, + "min": 91.854865 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "chimera_fountains_srgb.-test_mp4-libx265-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libx265-10bit.mp4" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb/sparks_srgb.%05d.png.yml", + "duration": 200, + "height": 1014, + "images": true, + "in": 6100, + "path": "sparks_srgb.%05d.png", + "pix_fmt": "rgb24", + "rate": 24, + "width": 1920 + } + }, + "source_test_name": "test_mp4" + }, + "name": "sparks_srgb.%05d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 6100.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 6100.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb", + "name_prefix": "sparks_srgb.", + "name_suffix": ".png", + "start_frame": 6100, + "frame_step": 1, + "rate": 24.0, + "frame_zero_padding": 5, + "missing_frame_policy": "error" + }, + "test_mp4-libsvtav1-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:50:40.105083+00:00", + "encode_time": 26.6703, + "filesize": 51856088, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 43.828261, + "max": 48.823331, + "mean": 43.860521, + "min": 42.439191 + }, + "psnr_cr": { + "harmonic_mean": 44.241134, + "max": 49.516746, + "mean": 44.273513, + "min": 42.923123 + }, + "psnr_y": { + "harmonic_mean": 41.457886, + "max": 45.232032, + "mean": 41.478459, + "min": 40.43574 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.975515, + "max": 100.0, + "mean": 99.976266, + "min": 96.199294 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "sparks_srgb.-test_mp4-libsvtav1-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libsvtav1-10bit.mp4" + }, + "test_mp4-libsvtav1-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libsvtav1", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": 9, + "-svtav1-params": "tune=0", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:53:21.073237+00:00", + "encode_time": 24.5763, + "filesize": 51177121, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 43.358244, + "max": 47.895122, + "mean": 43.385131, + "min": 42.067822 + }, + "psnr_cr": { + "harmonic_mean": 43.840956, + "max": 48.469058, + "mean": 43.867757, + "min": 42.480941 + }, + "psnr_y": { + "harmonic_mean": 40.975566, + "max": 45.045074, + "mean": 40.994497, + "min": 40.041661 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.976447, + "max": 100.0, + "mean": 99.977123, + "min": 96.398221 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "sparks_srgb.-test_mp4-libsvtav1-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libsvtav1-8bit.mp4" + }, + "test_mp4-libvpx-vp9-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-b:v": 0, + "-c:v": "libvpx-vp9", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 22, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-quality": "good", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:52:10.514899+00:00", + "encode_time": 90.4065, + "filesize": 45149070, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 44.659344, + "max": 50.187332, + "mean": 44.712214, + "min": 42.823737 + }, + "psnr_cr": { + "harmonic_mean": 45.043701, + "max": 50.52511, + "mean": 45.096244, + "min": 43.235261 + }, + "psnr_y": { + "harmonic_mean": 41.752702, + "max": 47.795718, + "mean": 41.797903, + "min": 40.252583 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.967161, + "max": 100.0, + "mean": 99.967788, + "min": 96.834095 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "sparks_srgb.-test_mp4-libvpx-vp9-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libvpx-vp9-10bit.mp4" + }, + "test_mp4-libx264-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p10le", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:50:13.432464+00:00", + "encode_time": 23.3883, + "filesize": 38564157, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 42.52905, + "max": 45.370691, + "mean": 42.546193, + "min": 41.404606 + }, + "psnr_cr": { + "harmonic_mean": 43.063198, + "max": 45.627264, + "mean": 43.080115, + "min": 41.950488 + }, + "psnr_y": { + "harmonic_mean": 39.635255, + "max": 42.929145, + "mean": 39.650378, + "min": 38.617977 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.933343, + "max": 100.0, + "mean": 99.935559, + "min": 93.964978 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "sparks_srgb.-test_mp4-libx264-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libx264-10bit.mp4" + }, + "test_mp4-libx264-8bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx264", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 18, + "-pix_fmt": "yuv420p", + "-preset": "slow", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:52:56.493941+00:00", + "encode_time": 9.3863, + "filesize": 39193097, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 42.275532, + "max": 44.927411, + "mean": 42.29139, + "min": 41.21224 + }, + "psnr_cr": { + "harmonic_mean": 42.820493, + "max": 45.203316, + "mean": 42.835821, + "min": 41.701165 + }, + "psnr_y": { + "harmonic_mean": 39.471238, + "max": 42.605046, + "mean": 39.486254, + "min": 38.488513 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.930621, + "max": 100.0, + "mean": 99.932913, + "min": 93.925221 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "sparks_srgb.-test_mp4-libx264-8bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libx264-8bit.mp4" + }, + "test_mp4-libx265-10bit": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "libx265", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-crf": 20, + "-pix_fmt": "yuv420p10le", + "-preset": "medium", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-tag:v": "hvc1", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:52:47.106420+00:00", + "encode_time": 36.5886, + "filesize": 33768873, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 41.231515, + "max": 44.982949, + "mean": 41.259224, + "min": 39.783741 + }, + "psnr_cr": { + "harmonic_mean": 42.054527, + "max": 45.670637, + "mean": 42.079072, + "min": 40.727199 + }, + "psnr_y": { + "harmonic_mean": 38.031841, + "max": 41.36038, + "mean": 38.057557, + "min": 36.61754 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.061138, + "max": 100.0, + "mean": 99.077814, + "min": 94.190353 + } + }, + "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" + } + }, + "name": "sparks_srgb.-test_mp4-libx265-10bit.mp4", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libx265-10bit.mp4" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb/chimera_cars_srgb.%05d.png.yml", + "duration": 200, + "height": 1080, + "images": true, + "in": 2500, + "path": "chimera_cars_srgb.%05d.png", + "pix_fmt": "rgb48be", + "rate": 25.0, + "width": 1920 + } + }, + "source_test_name": "test_mov" + }, + "name": "chimera_cars_srgb.%05d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 2500.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 2500.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb", + "name_prefix": "chimera_cars_srgb.", + "name_suffix": ".png", + "start_frame": 2500, + "frame_step": 1, + "rate": 25.0, + "frame_zero_padding": 5, + "missing_frame_policy": "error" + }, + "test_mov-dnxhd": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "dnxhd", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuv422p10le", + "-profile:v": "dnxhr_hqx", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:58:03.873672+00:00", + "encode_time": 3.5186, + "filesize": 183502387, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 52.724971, + "max": 53.183093, + "mean": 52.727963, + "min": 51.180445 + }, + "psnr_cr": { + "harmonic_mean": 53.42397, + "max": 53.679999, + "mean": 53.42436, + "min": 53.095753 + }, + "psnr_y": { + "harmonic_mean": 52.774063, + "max": 53.728965, + "mean": 52.790823, + "min": 49.274661 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.985288, + "max": 100.0, + "mean": 99.985702, + "min": 97.140491 + } + }, + "test_config_path": null + } + }, + "name": "chimera_cars_srgb.-test_mov-dnxhd.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mov-dnxhd.mov" + }, + "test_mov-mjpeg": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "mjpeg", + "-color_primaries": 1, + "-color_range": "pc", + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-qscale:v": 3, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:58:00.350534+00:00", + "encode_time": 2.3734, + "filesize": 39653965, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.637885, + "max": 48.876947, + "mean": 48.63842, + "min": 48.047279 + }, + "psnr_cr": { + "harmonic_mean": 47.46414, + "max": 47.750857, + "mean": 47.464391, + "min": 47.217035 + }, + "psnr_y": { + "harmonic_mean": 44.775684, + "max": 45.171577, + "mean": 44.776817, + "min": 44.046149 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.094568, + "max": 100.0, + "mean": 99.106077, + "min": 94.095421 + } + }, + "test_config_path": null + } + }, + "name": "chimera_cars_srgb.-test_mov-mjpeg.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mov-mjpeg.mov" + }, + "test_mov-prores_ks": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "prores_ks", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-profile:v": 3, + "-qscale:v": 10, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vendor": "apl0", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T14:58:06.485369+00:00", + "encode_time": 2.6101, + "filesize": 83723580, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 52.127995, + "max": 52.563811, + "mean": 52.130207, + "min": 50.87097 + }, + "psnr_cr": { + "harmonic_mean": 51.459675, + "max": 51.973436, + "mean": 51.463624, + "min": 49.590206 + }, + "psnr_y": { + "harmonic_mean": 32.539527, + "max": 33.749233, + "mean": 32.547767, + "min": 31.507423 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 100.0, + "max": 100.0, + "mean": 100.0, + "min": 100.0 + } + }, + "test_config_path": null + } + }, + "name": "chimera_cars_srgb.-test_mov-prores_ks.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mov-prores_ks.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb/chimera_coaster_srgb.%06d.png.yml", + "duration": 200, + "height": 1080, + "images": true, + "in": 44200, + "path": "chimera_coaster_srgb.%06d.png", + "pix_fmt": "rgb48be", + "rate": 25.0, + "width": 1920 + } + }, + "source_test_name": "test_mov" + }, + "name": "chimera_coaster_srgb.%06d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 44200.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 44200.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb", + "name_prefix": "chimera_coaster_srgb.", + "name_suffix": ".png", + "start_frame": 44200, + "frame_step": 1, + "rate": 25.0, + "frame_zero_padding": 6, + "missing_frame_policy": "error" + }, + "test_mov-dnxhd": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "dnxhd", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuv422p10le", + "-profile:v": "dnxhr_hqx", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:00:35.597072+00:00", + "encode_time": 3.9756, + "filesize": 183502371, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 49.66394, + "max": 51.679317, + "mean": 49.765877, + "min": 45.53689 + }, + "psnr_cr": { + "harmonic_mean": 50.58558, + "max": 52.253174, + "mean": 50.599808, + "min": 48.944143 + }, + "psnr_y": { + "harmonic_mean": 46.750312, + "max": 50.009958, + "mean": 46.948449, + "min": 41.451333 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.982576, + "max": 100.0, + "mean": 99.983155, + "min": 96.630939 + } + }, + "test_config_path": null + } + }, + "name": "chimera_coaster_srgb.-test_mov-dnxhd.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mov-dnxhd.mov" + }, + "test_mov-mjpeg": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "mjpeg", + "-color_primaries": 1, + "-color_range": "pc", + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-qscale:v": 3, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:00:31.612372+00:00", + "encode_time": 2.5941, + "filesize": 46390043, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 46.443322, + "max": 47.761595, + "mean": 46.478035, + "min": 43.902255 + }, + "psnr_cr": { + "harmonic_mean": 46.917535, + "max": 47.597379, + "mean": 46.920672, + "min": 46.167591 + }, + "psnr_y": { + "harmonic_mean": 43.502694, + "max": 45.602487000000004, + "mean": 43.571062, + "min": 40.331866 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.685062, + "max": 100.0, + "mean": 99.689453, + "min": 93.562439 + } + }, + "test_config_path": null + } + }, + "name": "chimera_coaster_srgb.-test_mov-mjpeg.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mov-mjpeg.mov" + }, + "test_mov-prores_ks": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "prores_ks", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-profile:v": 3, + "-qscale:v": 10, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vendor": "apl0", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:00:38.622578+00:00", + "encode_time": 3.0233, + "filesize": 86645261, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 46.286589, + "max": 48.323236, + "mean": 46.345023, + "min": 43.390523 + }, + "psnr_cr": { + "harmonic_mean": 48.117794, + "max": 50.783844, + "mean": 48.262313, + "min": 43.347144 + }, + "psnr_y": { + "harmonic_mean": 29.41395, + "max": 31.297283, + "mean": 29.459535, + "min": 27.883989 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 100.0, + "max": 100.0, + "mean": 100.0, + "min": 100.0 + } + }, + "test_config_path": null + } + }, + "name": "chimera_coaster_srgb.-test_mov-prores_ks.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mov-prores_ks.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb/chimera_fountains_srgb.%05d.png.yml", + "duration": 200, + "height": 1080, + "images": true, + "in": 5400, + "path": "chimera_fountains_srgb.%05d.png", + "pix_fmt": "rgb48be", + "rate": 25.0, + "width": 1920 + } + }, + "source_test_name": "test_mov" + }, + "name": "chimera_fountains_srgb.%05d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 5400.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 5400.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb", + "name_prefix": "chimera_fountains_srgb.", + "name_suffix": ".png", + "start_frame": 5400, + "frame_step": 1, + "rate": 25.0, + "frame_zero_padding": 5, + "missing_frame_policy": "error" + }, + "test_mov-dnxhd": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "dnxhd", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuv422p10le", + "-profile:v": "dnxhr_hqx", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:03:09.619221+00:00", + "encode_time": 3.4502, + "filesize": 183502387, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 52.939273, + "max": 53.352505, + "mean": 52.940579, + "min": 52.258893 + }, + "psnr_cr": { + "harmonic_mean": 52.95007, + "max": 53.789509, + "mean": 52.955295, + "min": 51.504002 + }, + "psnr_y": { + "harmonic_mean": 50.406007, + "max": 51.030927, + "mean": 50.40954, + "min": 49.289954 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.98123, + "max": 100.0, + "mean": 99.981899, + "min": 96.379815 + } + }, + "test_config_path": null + } + }, + "name": "chimera_fountains_srgb.-test_mov-dnxhd.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mov-dnxhd.mov" + }, + "test_mov-mjpeg": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "mjpeg", + "-color_primaries": 1, + "-color_range": "pc", + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-qscale:v": 3, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:03:06.166416+00:00", + "encode_time": 2.4826, + "filesize": 62528487, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.623472, + "max": 48.889547, + "mean": 48.623783, + "min": 48.386739 + }, + "psnr_cr": { + "harmonic_mean": 46.90771, + "max": 47.380739, + "mean": 46.909088, + "min": 46.272338 + }, + "psnr_y": { + "harmonic_mean": 42.641389, + "max": 43.227724, + "mean": 42.643968, + "min": 41.740903 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.959628, + "max": 100.0, + "mean": 99.962603, + "min": 92.520515 + } + }, + "test_config_path": null + } + }, + "name": "chimera_fountains_srgb.-test_mov-mjpeg.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mov-mjpeg.mov" + }, + "test_mov-prores_ks": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "prores_ks", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-profile:v": 3, + "-qscale:v": 10, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vendor": "apl0", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:03:12.362397+00:00", + "encode_time": 2.7413, + "filesize": 142209108, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 51.83811, + "max": 52.151394, + "mean": 51.838485, + "min": 51.582211 + }, + "psnr_cr": { + "harmonic_mean": 50.550282, + "max": 50.822529, + "mean": 50.55093, + "min": 50.065315 + }, + "psnr_y": { + "harmonic_mean": 29.207743, + "max": 30.491845, + "mean": 29.218874, + "min": 28.41963 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 100.0, + "max": 100.0, + "mean": 100.0, + "min": 100.0 + } + }, + "test_config_path": null + } + }, + "name": "chimera_fountains_srgb.-test_mov-prores_ks.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 25.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mov-prores_ks.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + }, + { + "OTIO_SCHEMA": "Clip.2", + "metadata": { + "aswf_enctests": { + "source_info": { + "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb/sparks_srgb.%05d.png.yml", + "duration": 200, + "height": 1014, + "images": true, + "in": 6100, + "path": "sparks_srgb.%05d.png", + "pix_fmt": "rgb24", + "rate": 24, + "width": 1920 + } + }, + "source_test_name": "test_mov" + }, + "name": "sparks_srgb.%05d", + "source_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 6100.0 + } + }, + "effects": [], + "markers": [], + "enabled": true, + "media_references": { + "DEFAULT_MEDIA": { + "OTIO_SCHEMA": "ImageSequenceReference.1", + "metadata": {}, + "name": "", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 6100.0 + } + }, + "available_image_bounds": null, + "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb", + "name_prefix": "sparks_srgb.", + "name_suffix": ".png", + "start_frame": 6100, + "frame_step": 1, + "rate": 24.0, + "frame_zero_padding": 5, + "missing_frame_policy": "error" + }, + "test_mov-dnxhd": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "dnxhd", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuv422p10le", + "-profile:v": "dnxhr_hqx", + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:05:43.932991+00:00", + "encode_time": 2.9071, + "filesize": 172852787, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.605083, + "max": 51.628808, + "mean": 48.626091, + "min": 47.06892 + }, + "psnr_cr": { + "harmonic_mean": 48.846116, + "max": 52.060041, + "mean": 48.869235, + "min": 47.420523 + }, + "psnr_y": { + "harmonic_mean": 46.618336, + "max": 49.723039, + "mean": 46.641074, + "min": 45.136702 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.991138, + "max": 100.0, + "mean": 99.99129, + "min": 98.258054 + } + }, + "test_config_path": null + } + }, + "name": "sparks_srgb.-test_mov-dnxhd.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mov-dnxhd.mov" + }, + "test_mov-mjpeg": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "mjpeg", + "-color_primaries": 1, + "-color_range": "pc", + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-qscale:v": 3, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:05:41.019488+00:00", + "encode_time": 1.6491, + "filesize": 107053286, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 43.606776, + "max": 45.678529, + "mean": 43.616932, + "min": 42.571085 + }, + "psnr_cr": { + "harmonic_mean": 43.80491, + "max": 45.978499, + "mean": 43.815534, + "min": 42.914635 + }, + "psnr_y": { + "harmonic_mean": 41.139537, + "max": 42.245794, + "mean": 41.142505, + "min": 40.640868 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 99.970873, + "max": 100.0, + "mean": 99.972454, + "min": 94.490829 + } + }, + "test_config_path": null + } + }, + "name": "sparks_srgb.-test_mov-mjpeg.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mov-mjpeg.mov" + }, + "test_mov-prores_ks": { + "OTIO_SCHEMA": "ExternalReference.1", + "metadata": { + "aswf_enctests": { + "description": "A comparison of different codecs, with VMAF > 98.", + "encode_arguments": { + "-c:v": "prores_ks", + "-color_primaries": 1, + "-color_range": 1, + "-color_trc": 2, + "-colorspace": 1, + "-pix_fmt": "yuvj444p", + "-profile:v": 3, + "-qscale:v": 10, + "-sws_flags": "spline+accurate_rnd+full_chroma_int", + "-vendor": "apl0", + "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" + }, + "results": { + "completed_utc": "2023-09-02T15:05:46.271678+00:00", + "encode_time": 2.332, + "filesize": 235894554, + "psnr": null, + "psnr_cb": { + "harmonic_mean": 48.167753, + "max": 49.76611, + "mean": 48.173506, + "min": 47.234445 + }, + "psnr_cr": { + "harmonic_mean": 49.764946, + "max": 50.789645, + "mean": 49.767341, + "min": 49.103259 + }, + "psnr_y": { + "harmonic_mean": 31.286978, + "max": 31.913112, + "mean": 31.289394, + "min": 30.465914 + }, + "result": "Completed", + "vmaf": { + "harmonic_mean": 100.0, + "max": 100.0, + "mean": 100.0, + "min": 100.0 + } + }, + "test_config_path": null + } + }, + "name": "sparks_srgb.-test_mov-prores_ks.mov", + "available_range": { + "OTIO_SCHEMA": "TimeRange.1", + "duration": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 200.0 + }, + "start_time": { + "OTIO_SCHEMA": "RationalTime.1", + "rate": 24.0, + "value": 0.0 + } + }, + "available_image_bounds": null, + "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mov-prores_ks.mov" + } + }, + "active_media_reference_key": "DEFAULT_MEDIA" + } + ], + "kind": "Video" + } + ] + } +} \ No newline at end of file diff --git a/inspector.cpp b/inspector.cpp index 2a21f38..8ceea6f 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -79,6 +79,10 @@ void UpdateJSONInspector() { jsonEditor.SetReadOnly(true); jsonEditor.SetLanguageDefinition(otioLangDef); jsonEditor.SetText(appState.selected_text); + + // When the user selects a new clip, we need to update the selected reference index + // this allows the inspector to show the correct reference when the user selects a clip + appState.selected_reference_index = -1; } void DrawJSONInspector() { @@ -614,7 +618,7 @@ void DrawInspector() { // Draw Reference Media Information if (const auto& clip = dynamic_cast(selected_object)) { ImGui::Dummy(ImVec2(0.0f, 20.0f)); - ImGui::Text("Media Information:"); + ImGui::Text("Selected Media Reference:"); const auto& media_references = clip->media_references(); @@ -632,7 +636,7 @@ void DrawInspector() { std::string current_reference_name = clip->active_media_reference_key(); - // Initialize selected_reference_index if it's not set + // Select the active media reference if it is not already set in the appState. if (appState.selected_reference_index == -1) { for (int i = 0; i < num_references; i++) { if (current_reference_name == reference_names[i]) { @@ -642,7 +646,12 @@ void DrawInspector() { } } - ImGui::Combo("", &appState.selected_reference_index, reference_names.data(), num_references); + // Set the active media ref key based on user selection + if (ImGui::Combo("", &appState.selected_reference_index, reference_names.data(), num_references)) { + if (appState.selected_reference_index >= 0 && appState.selected_reference_index < num_references) { + clip->set_active_media_reference_key(reference_names[appState.selected_reference_index]); + } + } // Retrieve the selected MediaReference object otio::MediaReference* selected_reference = nullptr; @@ -656,17 +665,64 @@ void DrawInspector() { std::cerr << "Error: " << e.what() << std::endl; } - // You can now use the selected_reference object here if (selected_reference) { + ImGui::Indent(); + ImGui::Dummy(ImVec2(0.0f, 5.0f)); + // External Reference Node if (auto external_ref = dynamic_cast(selected_reference)) { ImGui::Text("Type: External Media"); - ImGui::Text("Target: %s", external_ref->target_url().c_str()); + snprintf(tmp_str, sizeof(tmp_str), "%s", external_ref->target_url().c_str()); + if (ImGui::InputText("Target", tmp_str, sizeof(tmp_str))) { + external_ref->set_target_url(tmp_str); + } + + auto available_range = external_ref->available_range(); + if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { + external_ref->set_available_range(available_range); + } + + auto available_image_bounds = external_ref->available_image_bounds(); + if (available_image_bounds) { + ImGui::Text("Available Image Bounds:"); + ImGui::Indent(); + ImGui::Text("Min: (%f, %f)", available_image_bounds->min.x, available_image_bounds->min.y); + ImGui::Text("Max: (%f, %f)", available_image_bounds->max.x, available_image_bounds->max.y); + ImGui::Unindent(); + } + + DrawMetadataTable(external_ref->metadata()); + // Missing media node } else if (auto missing_ref = dynamic_cast(selected_reference)) { ImGui::Text("Type: Missing Media"); - } + } else if (auto imageSeqRef = dynamic_cast(selected_reference)) { + ImGui::Text("Type: Image Sequence"); + + auto target_url = imageSeqRef->target_url_base(); + if (ImGui::InputText("Target url base", tmp_str, sizeof(tmp_str))) { + imageSeqRef->set_target_url_base(tmp_str); + } + + auto available_range = imageSeqRef->available_range(); + if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { + imageSeqRef->set_available_range(available_range); + } - // Add metadata table for the selected reference + auto available_image_bounds = imageSeqRef->available_image_bounds(); + if (available_image_bounds) { + ImGui::Text("Available Image Bounds:"); + ImGui::Indent(); + ImGui::Text("Min: (%f, %f)", available_image_bounds->min.x, available_image_bounds->min.y); + ImGui::Text("Max: (%f, %f)", available_image_bounds->max.x, available_image_bounds->max.y); + ImGui::Unindent(); + } + + DrawMetadataTable(imageSeqRef->metadata()); + + } else { + ImGui::Text("Type: The selected media type is not yet supported in the inspector."); + } + ImGui::Unindent(); } } } From 5e58a2b5231748a8a24ed47db15ee0c9b9a41811 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 10:09:52 -0700 Subject: [PATCH 04/23] Remove test file Signed-off-by: jspadafora --- examples/Untitled.otio | 3024 ---------------------------------------- 1 file changed, 3024 deletions(-) delete mode 100644 examples/Untitled.otio diff --git a/examples/Untitled.otio b/examples/Untitled.otio deleted file mode 100644 index bc363ba..0000000 --- a/examples/Untitled.otio +++ /dev/null @@ -1,3024 +0,0 @@ -{ - "OTIO_SCHEMA": "Timeline.1", - "metadata": {}, - "name": "aswf-encoding-tests", - "global_start_time": null, - "tracks": { - "OTIO_SCHEMA": "Stack.1", - "metadata": {}, - "name": "tracks", - "source_range": null, - "effects": [], - "markers": [], - "enabled": true, - "children": [ - { - "OTIO_SCHEMA": "Track.1", - "metadata": {}, - "name": "ffmpeg_version_6.0", - "source_range": null, - "effects": [], - "markers": [], - "enabled": true, - "children": [ - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb/chimera_cars_srgb.%05d.png.yml", - "duration": 200, - "height": 1080, - "images": true, - "in": 2500, - "path": "chimera_cars_srgb.%05d.png", - "pix_fmt": "rgb48be", - "rate": 25.0, - "width": 1920 - } - }, - "raven": { - "color": "PINK" - }, - "source_test_name": "test_mp4" - }, - "name": "chimera_cars_srgb.%05d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 2500.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 2500.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb", - "name_prefix": "chimera_cars_srgb.", - "name_suffix": ".png", - "start_frame": 2500, - "frame_step": 1, - "rate": 25.0, - "frame_zero_padding": 5, - "missing_frame_policy": "error" - }, - "test_mp4-libsvtav1-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:19:24.499520+00:00", - "encode_time": 20.4923, - "filesize": 3646329, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 50.325414, - "max": 51.516216, - "mean": 50.328543, - "min": 49.115223 - }, - "psnr_cr": { - "harmonic_mean": 49.762308, - "max": 51.33137, - "mean": 49.764491, - "min": 48.984304 - }, - "psnr_y": { - "harmonic_mean": 46.696538, - "max": 49.142278, - "mean": 46.706295, - "min": 45.29358 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.434523, - "max": 100.0, - "mean": 99.441143, - "min": 95.877138 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_cars_srgb.-test_mp4-libsvtav1-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libsvtav1-10bit.mp4" - }, - "test_mp4-libsvtav1-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:21:03.011374+00:00", - "encode_time": 18.7277, - "filesize": 3639752, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.75372, - "max": 49.837518, - "mean": 48.755609, - "min": 47.814779 - }, - "psnr_cr": { - "harmonic_mean": 48.127583, - "max": 49.559283, - "mean": 48.129269, - "min": 47.46561 - }, - "psnr_y": { - "harmonic_mean": 45.483847, - "max": 48.22492, - "mean": 45.49587, - "min": 43.882691 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.277824, - "max": 100.0, - "mean": 99.286231, - "min": 95.931186 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_cars_srgb.-test_mp4-libsvtav1-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libsvtav1-8bit.mp4" - }, - "test_mp4-libvpx-vp9-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-b:v": 0, - "-c:v": "libvpx-vp9", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 22, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-quality": "good", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:20:14.961170+00:00", - "encode_time": 50.4597, - "filesize": 3645796, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 50.242876, - "max": 51.735213, - "mean": 50.246118, - "min": 48.902526 - }, - "psnr_cr": { - "harmonic_mean": 49.60329, - "max": 51.507627, - "mean": 49.605602, - "min": 48.918143 - }, - "psnr_y": { - "harmonic_mean": 46.599533, - "max": 49.925824, - "mean": 46.609295, - "min": 44.9628 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.418256, - "max": 100.0, - "mean": 99.425135, - "min": 96.246675 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_cars_srgb.-test_mp4-libvpx-vp9-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libvpx-vp9-10bit.mp4" - }, - "test_mp4-libx264-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:19:04.005442+00:00", - "encode_time": 18.2133, - "filesize": 3669367, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 49.899884, - "max": 50.523645, - "mean": 49.90196, - "min": 48.859751 - }, - "psnr_cr": { - "harmonic_mean": 49.356841, - "max": 49.900288, - "mean": 49.358003, - "min": 48.629115 - }, - "psnr_y": { - "harmonic_mean": 46.208245, - "max": 47.130147, - "mean": 46.211665, - "min": 45.10649 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.397578, - "max": 100.0, - "mean": 99.40475, - "min": 95.161232 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_cars_srgb.-test_mp4-libx264-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libx264-10bit.mp4" - }, - "test_mp4-libx264-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:20:44.282039+00:00", - "encode_time": 5.9504, - "filesize": 3878811, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.491985, - "max": 48.957945, - "mean": 48.493181, - "min": 47.724934 - }, - "psnr_cr": { - "harmonic_mean": 47.952192, - "max": 48.356399, - "mean": 47.952955, - "min": 47.371182 - }, - "psnr_y": { - "harmonic_mean": 45.334152, - "max": 46.122186, - "mean": 45.336499, - "min": 44.473132 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.331812, - "max": 100.0, - "mean": 99.339961, - "min": 94.928093 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_cars_srgb.-test_mp4-libx264-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libx264-8bit.mp4" - }, - "test_mp4-libx265-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx265", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 20, - "-pix_fmt": "yuv420p10le", - "-preset": "medium", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-tag:v": "hvc1", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:20:38.330119+00:00", - "encode_time": 23.3674, - "filesize": 2701507, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 49.494789, - "max": 50.159769, - "mean": 49.496876, - "min": 48.606755 - }, - "psnr_cr": { - "harmonic_mean": 48.926694, - "max": 49.438152, - "mean": 48.927782, - "min": 48.351656 - }, - "psnr_y": { - "harmonic_mean": 45.700754, - "max": 47.153988, - "mean": 45.704974, - "min": 44.604577 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 98.875062, - "max": 100.0, - "mean": 98.888588, - "min": 94.869443 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_cars_srgb.-test_mp4-libx265-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mp4-libx265-10bit.mp4" - } - }, - "active_media_reference_key": "test_mp4-libx264-10bit" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb/chimera_coaster_srgb.%06d.png.yml", - "duration": 200, - "height": 1080, - "images": true, - "in": 44200, - "path": "chimera_coaster_srgb.%06d.png", - "pix_fmt": "rgb48be", - "rate": 25.0, - "width": 1920 - } - }, - "source_test_name": "test_mp4" - }, - "name": "chimera_coaster_srgb.%06d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 44200.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 44200.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb", - "name_prefix": "chimera_coaster_srgb.", - "name_suffix": ".png", - "start_frame": 44200, - "frame_step": 1, - "rate": 25.0, - "frame_zero_padding": 6, - "missing_frame_policy": "error" - }, - "test_mp4-libsvtav1-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:28:24.969846+00:00", - "encode_time": 29.2195, - "filesize": 7658703, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 46.229805, - "max": 48.367358, - "mean": 46.272343, - "min": 43.428809 - }, - "psnr_cr": { - "harmonic_mean": 46.430817, - "max": 48.005142, - "mean": 46.442715, - "min": 44.678293 - }, - "psnr_y": { - "harmonic_mean": 43.273328, - "max": 46.940733, - "mean": 43.347846, - "min": 40.008069 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.193019, - "max": 100.0, - "mean": 99.206091, - "min": 94.808005 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_coaster_srgb.-test_mp4-libsvtav1-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libsvtav1-10bit.mp4" - }, - "test_mp4-libsvtav1-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:30:56.954081+00:00", - "encode_time": 25.9825, - "filesize": 6798944, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 45.18191, - "max": 47.304972, - "mean": 45.216923, - "min": 42.591227 - }, - "psnr_cr": { - "harmonic_mean": 45.415999, - "max": 46.953655, - "mean": 45.425869, - "min": 43.717966 - }, - "psnr_y": { - "harmonic_mean": 42.102575, - "max": 46.077861, - "mean": 42.15911, - "min": 39.301899 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 98.641072, - "max": 100.0, - "mean": 98.664015, - "min": 94.727856 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_coaster_srgb.-test_mp4-libsvtav1-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libsvtav1-8bit.mp4" - }, - "test_mp4-libvpx-vp9-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-b:v": 0, - "-c:v": "libvpx-vp9", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 22, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-quality": "good", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:29:44.390337+00:00", - "encode_time": 79.4182, - "filesize": 7900693, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 46.285124, - "max": 49.687269, - "mean": 46.328656, - "min": 43.309053 - }, - "psnr_cr": { - "harmonic_mean": 46.524112, - "max": 49.634483, - "mean": 46.53976, - "min": 44.50843 - }, - "psnr_y": { - "harmonic_mean": 43.830853, - "max": 47.505384, - "mean": 43.921708, - "min": 40.171287 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.530172, - "max": 100.0, - "mean": 99.536965, - "min": 95.536135 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_coaster_srgb.-test_mp4-libvpx-vp9-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libvpx-vp9-10bit.mp4" - }, - "test_mp4-libx264-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:27:55.748231+00:00", - "encode_time": 26.357, - "filesize": 8538024, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 45.998854, - "max": 48.040734, - "mean": 46.034684, - "min": 43.452074 - }, - "psnr_cr": { - "harmonic_mean": 46.338028, - "max": 47.820437, - "mean": 46.348313, - "min": 44.936338 - }, - "psnr_y": { - "harmonic_mean": 43.500409, - "max": 46.042736, - "mean": 43.575723, - "min": 40.058992 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.27909, - "max": 100.0, - "mean": 99.290404, - "min": 93.880475 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_coaster_srgb.-test_mp4-libx264-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libx264-10bit.mp4" - }, - "test_mp4-libx264-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:30:30.969963+00:00", - "encode_time": 8.6474, - "filesize": 9031995, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 45.180556, - "max": 46.919318, - "mean": 45.207459, - "min": 42.919511 - }, - "psnr_cr": { - "harmonic_mean": 45.516446, - "max": 46.751879, - "mean": 45.523217, - "min": 44.342361 - }, - "psnr_y": { - "harmonic_mean": 42.91937, - "max": 45.154666, - "mean": 42.978926, - "min": 39.865413 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.159661, - "max": 100.0, - "mean": 99.172628, - "min": 93.753536 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_coaster_srgb.-test_mp4-libx264-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libx264-8bit.mp4" - }, - "test_mp4-libx265-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx265", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 20, - "-pix_fmt": "yuv420p10le", - "-preset": "medium", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-tag:v": "hvc1", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:30:22.321192+00:00", - "encode_time": 37.9287, - "filesize": 5527687, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 45.919827, - "max": 47.475851, - "mean": 45.955631, - "min": 43.227212 - }, - "psnr_cr": { - "harmonic_mean": 46.12958, - "max": 47.18235, - "mean": 46.139819, - "min": 44.551776 - }, - "psnr_y": { - "harmonic_mean": 43.19475, - "max": 46.029324, - "mean": 43.267278, - "min": 39.800059 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 98.690663, - "max": 100.0, - "mean": 98.711175, - "min": 93.83353 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_coaster_srgb.-test_mp4-libx265-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mp4-libx265-10bit.mp4" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb/chimera_fountains_srgb.%05d.png.yml", - "duration": 200, - "height": 1080, - "images": true, - "in": 5400, - "path": "chimera_fountains_srgb.%05d.png", - "pix_fmt": "rgb48be", - "rate": 25.0, - "width": 1920 - } - }, - "source_test_name": "test_mp4" - }, - "name": "chimera_fountains_srgb.%05d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 5400.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 5400.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb", - "name_prefix": "chimera_fountains_srgb.", - "name_suffix": ".png", - "start_frame": 5400, - "frame_step": 1, - "rate": 25.0, - "frame_zero_padding": 5, - "missing_frame_policy": "error" - }, - "test_mp4-libsvtav1-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:38:54.812627+00:00", - "encode_time": 33.9712, - "filesize": 35423665, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.360055, - "max": 50.06136, - "mean": 48.363245, - "min": 47.688624 - }, - "psnr_cr": { - "harmonic_mean": 47.059123, - "max": 49.129992, - "mean": 47.064283, - "min": 46.207404 - }, - "psnr_y": { - "harmonic_mean": 42.395554, - "max": 46.190958, - "mean": 42.421287, - "min": 40.782292 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.969508, - "max": 100.0, - "mean": 99.971236, - "min": 94.247167 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_fountains_srgb.-test_mp4-libsvtav1-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libsvtav1-10bit.mp4" - }, - "test_mp4-libsvtav1-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:43:51.628527+00:00", - "encode_time": 32.5414, - "filesize": 34013762, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 47.171775, - "max": 48.53089, - "mean": 47.173929, - "min": 46.63743 - }, - "psnr_cr": { - "harmonic_mean": 46.165179, - "max": 48.004123, - "mean": 46.168906, - "min": 45.479085 - }, - "psnr_y": { - "harmonic_mean": 41.499103, - "max": 45.554285, - "mean": 41.525086, - "min": 40.062911 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.970078, - "max": 100.0, - "mean": 99.971744, - "min": 94.348788 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_fountains_srgb.-test_mp4-libsvtav1-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libsvtav1-8bit.mp4" - }, - "test_mp4-libvpx-vp9-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-b:v": 0, - "-c:v": "libvpx-vp9", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 22, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-quality": "good", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:41:46.977438+00:00", - "encode_time": 172.1605, - "filesize": 33132867, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.831438, - "max": 51.3058, - "mean": 48.837096, - "min": 47.971101 - }, - "psnr_cr": { - "harmonic_mean": 47.598113, - "max": 50.987965, - "mean": 47.607489, - "min": 46.562103 - }, - "psnr_y": { - "harmonic_mean": 42.405738, - "max": 48.358629, - "mean": 42.461625, - "min": 40.302925 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.973985, - "max": 100.0, - "mean": 99.975253, - "min": 95.050655 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_fountains_srgb.-test_mp4-libvpx-vp9-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libvpx-vp9-10bit.mp4" - }, - "test_mp4-libx264-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:38:20.838407+00:00", - "encode_time": 54.0462, - "filesize": 34972900, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.755556, - "max": 49.22362, - "mean": 48.756362, - "min": 48.320252 - }, - "psnr_cr": { - "harmonic_mean": 47.229769, - "max": 48.007667, - "mean": 47.231632, - "min": 46.589777 - }, - "psnr_y": { - "harmonic_mean": 41.652679, - "max": 42.390444, - "mean": 41.655599, - "min": 40.742599 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.960587, - "max": 100.0, - "mean": 99.963427, - "min": 92.685407 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_fountains_srgb.-test_mp4-libx264-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libx264-10bit.mp4" - }, - "test_mp4-libx264-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:43:19.081749+00:00", - "encode_time": 19.7648, - "filesize": 35234179, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 47.635422, - "max": 48.046346, - "mean": 47.635923, - "min": 47.301517 - }, - "psnr_cr": { - "harmonic_mean": 46.422142, - "max": 47.04846, - "mean": 46.423308, - "min": 45.940926 - }, - "psnr_y": { - "harmonic_mean": 41.323369, - "max": 42.057646, - "mean": 41.325869, - "min": 40.466623 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.959593, - "max": 100.0, - "mean": 99.962573, - "min": 92.514579 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_fountains_srgb.-test_mp4-libx264-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libx264-8bit.mp4" - }, - "test_mp4-libx265-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx265", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 20, - "-pix_fmt": "yuv420p10le", - "-preset": "medium", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-tag:v": "hvc1", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:42:59.312833+00:00", - "encode_time": 72.332, - "filesize": 23589581, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 47.743693, - "max": 48.475433, - "mean": 47.744768, - "min": 47.259059 - }, - "psnr_cr": { - "harmonic_mean": 46.43295, - "max": 47.171916, - "mean": 46.434611, - "min": 45.762453 - }, - "psnr_y": { - "harmonic_mean": 39.788635, - "max": 42.779944, - "mean": 39.803592, - "min": 38.359924 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.243685, - "max": 100.0, - "mean": 99.254268, - "min": 91.854865 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "chimera_fountains_srgb.-test_mp4-libx265-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mp4-libx265-10bit.mp4" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb/sparks_srgb.%05d.png.yml", - "duration": 200, - "height": 1014, - "images": true, - "in": 6100, - "path": "sparks_srgb.%05d.png", - "pix_fmt": "rgb24", - "rate": 24, - "width": 1920 - } - }, - "source_test_name": "test_mp4" - }, - "name": "sparks_srgb.%05d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 6100.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 6100.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb", - "name_prefix": "sparks_srgb.", - "name_suffix": ".png", - "start_frame": 6100, - "frame_step": 1, - "rate": 24.0, - "frame_zero_padding": 5, - "missing_frame_policy": "error" - }, - "test_mp4-libsvtav1-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:50:40.105083+00:00", - "encode_time": 26.6703, - "filesize": 51856088, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 43.828261, - "max": 48.823331, - "mean": 43.860521, - "min": 42.439191 - }, - "psnr_cr": { - "harmonic_mean": 44.241134, - "max": 49.516746, - "mean": 44.273513, - "min": 42.923123 - }, - "psnr_y": { - "harmonic_mean": 41.457886, - "max": 45.232032, - "mean": 41.478459, - "min": 40.43574 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.975515, - "max": 100.0, - "mean": 99.976266, - "min": 96.199294 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "sparks_srgb.-test_mp4-libsvtav1-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libsvtav1-10bit.mp4" - }, - "test_mp4-libsvtav1-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libsvtav1", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": 9, - "-svtav1-params": "tune=0", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:53:21.073237+00:00", - "encode_time": 24.5763, - "filesize": 51177121, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 43.358244, - "max": 47.895122, - "mean": 43.385131, - "min": 42.067822 - }, - "psnr_cr": { - "harmonic_mean": 43.840956, - "max": 48.469058, - "mean": 43.867757, - "min": 42.480941 - }, - "psnr_y": { - "harmonic_mean": 40.975566, - "max": 45.045074, - "mean": 40.994497, - "min": 40.041661 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.976447, - "max": 100.0, - "mean": 99.977123, - "min": 96.398221 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "sparks_srgb.-test_mp4-libsvtav1-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libsvtav1-8bit.mp4" - }, - "test_mp4-libvpx-vp9-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-b:v": 0, - "-c:v": "libvpx-vp9", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 22, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-quality": "good", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:52:10.514899+00:00", - "encode_time": 90.4065, - "filesize": 45149070, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 44.659344, - "max": 50.187332, - "mean": 44.712214, - "min": 42.823737 - }, - "psnr_cr": { - "harmonic_mean": 45.043701, - "max": 50.52511, - "mean": 45.096244, - "min": 43.235261 - }, - "psnr_y": { - "harmonic_mean": 41.752702, - "max": 47.795718, - "mean": 41.797903, - "min": 40.252583 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.967161, - "max": 100.0, - "mean": 99.967788, - "min": 96.834095 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "sparks_srgb.-test_mp4-libvpx-vp9-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libvpx-vp9-10bit.mp4" - }, - "test_mp4-libx264-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p10le", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:50:13.432464+00:00", - "encode_time": 23.3883, - "filesize": 38564157, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 42.52905, - "max": 45.370691, - "mean": 42.546193, - "min": 41.404606 - }, - "psnr_cr": { - "harmonic_mean": 43.063198, - "max": 45.627264, - "mean": 43.080115, - "min": 41.950488 - }, - "psnr_y": { - "harmonic_mean": 39.635255, - "max": 42.929145, - "mean": 39.650378, - "min": 38.617977 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.933343, - "max": 100.0, - "mean": 99.935559, - "min": 93.964978 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "sparks_srgb.-test_mp4-libx264-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libx264-10bit.mp4" - }, - "test_mp4-libx264-8bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx264", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 18, - "-pix_fmt": "yuv420p", - "-preset": "slow", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:52:56.493941+00:00", - "encode_time": 9.3863, - "filesize": 39193097, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 42.275532, - "max": 44.927411, - "mean": 42.29139, - "min": 41.21224 - }, - "psnr_cr": { - "harmonic_mean": 42.820493, - "max": 45.203316, - "mean": 42.835821, - "min": 41.701165 - }, - "psnr_y": { - "harmonic_mean": 39.471238, - "max": 42.605046, - "mean": 39.486254, - "min": 38.488513 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.930621, - "max": 100.0, - "mean": 99.932913, - "min": 93.925221 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "sparks_srgb.-test_mp4-libx264-8bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libx264-8bit.mp4" - }, - "test_mp4-libx265-10bit": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "libx265", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-crf": 20, - "-pix_fmt": "yuv420p10le", - "-preset": "medium", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-tag:v": "hvc1", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:52:47.106420+00:00", - "encode_time": 36.5886, - "filesize": 33768873, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 41.231515, - "max": 44.982949, - "mean": 41.259224, - "min": 39.783741 - }, - "psnr_cr": { - "harmonic_mean": 42.054527, - "max": 45.670637, - "mean": 42.079072, - "min": 40.727199 - }, - "psnr_y": { - "harmonic_mean": 38.031841, - "max": 41.36038, - "mean": 38.057557, - "min": 36.61754 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.061138, - "max": 100.0, - "mean": 99.077814, - "min": 94.190353 - } - }, - "test_config_path": "/Users/sam/git/EncodingGuidelines/enctests/test_configs/codec_tests.yml" - } - }, - "name": "sparks_srgb.-test_mp4-libx265-10bit.mp4", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mp4-libx265-10bit.mp4" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb/chimera_cars_srgb.%05d.png.yml", - "duration": 200, - "height": 1080, - "images": true, - "in": 2500, - "path": "chimera_cars_srgb.%05d.png", - "pix_fmt": "rgb48be", - "rate": 25.0, - "width": 1920 - } - }, - "source_test_name": "test_mov" - }, - "name": "chimera_cars_srgb.%05d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 2500.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 2500.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_cars_srgb", - "name_prefix": "chimera_cars_srgb.", - "name_suffix": ".png", - "start_frame": 2500, - "frame_step": 1, - "rate": 25.0, - "frame_zero_padding": 5, - "missing_frame_policy": "error" - }, - "test_mov-dnxhd": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "dnxhd", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuv422p10le", - "-profile:v": "dnxhr_hqx", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:58:03.873672+00:00", - "encode_time": 3.5186, - "filesize": 183502387, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 52.724971, - "max": 53.183093, - "mean": 52.727963, - "min": 51.180445 - }, - "psnr_cr": { - "harmonic_mean": 53.42397, - "max": 53.679999, - "mean": 53.42436, - "min": 53.095753 - }, - "psnr_y": { - "harmonic_mean": 52.774063, - "max": 53.728965, - "mean": 52.790823, - "min": 49.274661 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.985288, - "max": 100.0, - "mean": 99.985702, - "min": 97.140491 - } - }, - "test_config_path": null - } - }, - "name": "chimera_cars_srgb.-test_mov-dnxhd.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mov-dnxhd.mov" - }, - "test_mov-mjpeg": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "mjpeg", - "-color_primaries": 1, - "-color_range": "pc", - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-qscale:v": 3, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:58:00.350534+00:00", - "encode_time": 2.3734, - "filesize": 39653965, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.637885, - "max": 48.876947, - "mean": 48.63842, - "min": 48.047279 - }, - "psnr_cr": { - "harmonic_mean": 47.46414, - "max": 47.750857, - "mean": 47.464391, - "min": 47.217035 - }, - "psnr_y": { - "harmonic_mean": 44.775684, - "max": 45.171577, - "mean": 44.776817, - "min": 44.046149 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.094568, - "max": 100.0, - "mean": 99.106077, - "min": 94.095421 - } - }, - "test_config_path": null - } - }, - "name": "chimera_cars_srgb.-test_mov-mjpeg.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mov-mjpeg.mov" - }, - "test_mov-prores_ks": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "prores_ks", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-profile:v": 3, - "-qscale:v": 10, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vendor": "apl0", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T14:58:06.485369+00:00", - "encode_time": 2.6101, - "filesize": 83723580, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 52.127995, - "max": 52.563811, - "mean": 52.130207, - "min": 50.87097 - }, - "psnr_cr": { - "harmonic_mean": 51.459675, - "max": 51.973436, - "mean": 51.463624, - "min": 49.590206 - }, - "psnr_y": { - "harmonic_mean": 32.539527, - "max": 33.749233, - "mean": 32.547767, - "min": 31.507423 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 100.0, - "max": 100.0, - "mean": 100.0, - "min": 100.0 - } - }, - "test_config_path": null - } - }, - "name": "chimera_cars_srgb.-test_mov-prores_ks.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_cars_srgb.-test_mov-prores_ks.mov" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb/chimera_coaster_srgb.%06d.png.yml", - "duration": 200, - "height": 1080, - "images": true, - "in": 44200, - "path": "chimera_coaster_srgb.%06d.png", - "pix_fmt": "rgb48be", - "rate": 25.0, - "width": 1920 - } - }, - "source_test_name": "test_mov" - }, - "name": "chimera_coaster_srgb.%06d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 44200.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 44200.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_coaster_srgb", - "name_prefix": "chimera_coaster_srgb.", - "name_suffix": ".png", - "start_frame": 44200, - "frame_step": 1, - "rate": 25.0, - "frame_zero_padding": 6, - "missing_frame_policy": "error" - }, - "test_mov-dnxhd": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "dnxhd", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuv422p10le", - "-profile:v": "dnxhr_hqx", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:00:35.597072+00:00", - "encode_time": 3.9756, - "filesize": 183502371, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 49.66394, - "max": 51.679317, - "mean": 49.765877, - "min": 45.53689 - }, - "psnr_cr": { - "harmonic_mean": 50.58558, - "max": 52.253174, - "mean": 50.599808, - "min": 48.944143 - }, - "psnr_y": { - "harmonic_mean": 46.750312, - "max": 50.009958, - "mean": 46.948449, - "min": 41.451333 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.982576, - "max": 100.0, - "mean": 99.983155, - "min": 96.630939 - } - }, - "test_config_path": null - } - }, - "name": "chimera_coaster_srgb.-test_mov-dnxhd.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mov-dnxhd.mov" - }, - "test_mov-mjpeg": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "mjpeg", - "-color_primaries": 1, - "-color_range": "pc", - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-qscale:v": 3, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:00:31.612372+00:00", - "encode_time": 2.5941, - "filesize": 46390043, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 46.443322, - "max": 47.761595, - "mean": 46.478035, - "min": 43.902255 - }, - "psnr_cr": { - "harmonic_mean": 46.917535, - "max": 47.597379, - "mean": 46.920672, - "min": 46.167591 - }, - "psnr_y": { - "harmonic_mean": 43.502694, - "max": 45.602487000000004, - "mean": 43.571062, - "min": 40.331866 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.685062, - "max": 100.0, - "mean": 99.689453, - "min": 93.562439 - } - }, - "test_config_path": null - } - }, - "name": "chimera_coaster_srgb.-test_mov-mjpeg.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mov-mjpeg.mov" - }, - "test_mov-prores_ks": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "prores_ks", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-profile:v": 3, - "-qscale:v": 10, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vendor": "apl0", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:00:38.622578+00:00", - "encode_time": 3.0233, - "filesize": 86645261, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 46.286589, - "max": 48.323236, - "mean": 46.345023, - "min": 43.390523 - }, - "psnr_cr": { - "harmonic_mean": 48.117794, - "max": 50.783844, - "mean": 48.262313, - "min": 43.347144 - }, - "psnr_y": { - "harmonic_mean": 29.41395, - "max": 31.297283, - "mean": 29.459535, - "min": 27.883989 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 100.0, - "max": 100.0, - "mean": 100.0, - "min": 100.0 - } - }, - "test_config_path": null - } - }, - "name": "chimera_coaster_srgb.-test_mov-prores_ks.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_coaster_srgb.-test_mov-prores_ks.mov" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb/chimera_fountains_srgb.%05d.png.yml", - "duration": 200, - "height": 1080, - "images": true, - "in": 5400, - "path": "chimera_fountains_srgb.%05d.png", - "pix_fmt": "rgb48be", - "rate": 25.0, - "width": 1920 - } - }, - "source_test_name": "test_mov" - }, - "name": "chimera_fountains_srgb.%05d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 5400.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 5400.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/enc_sources/chimera_fountains_srgb", - "name_prefix": "chimera_fountains_srgb.", - "name_suffix": ".png", - "start_frame": 5400, - "frame_step": 1, - "rate": 25.0, - "frame_zero_padding": 5, - "missing_frame_policy": "error" - }, - "test_mov-dnxhd": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "dnxhd", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuv422p10le", - "-profile:v": "dnxhr_hqx", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:03:09.619221+00:00", - "encode_time": 3.4502, - "filesize": 183502387, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 52.939273, - "max": 53.352505, - "mean": 52.940579, - "min": 52.258893 - }, - "psnr_cr": { - "harmonic_mean": 52.95007, - "max": 53.789509, - "mean": 52.955295, - "min": 51.504002 - }, - "psnr_y": { - "harmonic_mean": 50.406007, - "max": 51.030927, - "mean": 50.40954, - "min": 49.289954 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.98123, - "max": 100.0, - "mean": 99.981899, - "min": 96.379815 - } - }, - "test_config_path": null - } - }, - "name": "chimera_fountains_srgb.-test_mov-dnxhd.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mov-dnxhd.mov" - }, - "test_mov-mjpeg": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "mjpeg", - "-color_primaries": 1, - "-color_range": "pc", - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-qscale:v": 3, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:03:06.166416+00:00", - "encode_time": 2.4826, - "filesize": 62528487, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.623472, - "max": 48.889547, - "mean": 48.623783, - "min": 48.386739 - }, - "psnr_cr": { - "harmonic_mean": 46.90771, - "max": 47.380739, - "mean": 46.909088, - "min": 46.272338 - }, - "psnr_y": { - "harmonic_mean": 42.641389, - "max": 43.227724, - "mean": 42.643968, - "min": 41.740903 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.959628, - "max": 100.0, - "mean": 99.962603, - "min": 92.520515 - } - }, - "test_config_path": null - } - }, - "name": "chimera_fountains_srgb.-test_mov-mjpeg.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mov-mjpeg.mov" - }, - "test_mov-prores_ks": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "prores_ks", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-profile:v": 3, - "-qscale:v": 10, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vendor": "apl0", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:03:12.362397+00:00", - "encode_time": 2.7413, - "filesize": 142209108, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 51.83811, - "max": 52.151394, - "mean": 51.838485, - "min": 51.582211 - }, - "psnr_cr": { - "harmonic_mean": 50.550282, - "max": 50.822529, - "mean": 50.55093, - "min": 50.065315 - }, - "psnr_y": { - "harmonic_mean": 29.207743, - "max": 30.491845, - "mean": 29.218874, - "min": 28.41963 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 100.0, - "max": 100.0, - "mean": 100.0, - "min": 100.0 - } - }, - "test_config_path": null - } - }, - "name": "chimera_fountains_srgb.-test_mov-prores_ks.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 25.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/chimera_fountains_srgb.-test_mov-prores_ks.mov" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - }, - { - "OTIO_SCHEMA": "Clip.2", - "metadata": { - "aswf_enctests": { - "source_info": { - "config_path": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb/sparks_srgb.%05d.png.yml", - "duration": 200, - "height": 1014, - "images": true, - "in": 6100, - "path": "sparks_srgb.%05d.png", - "pix_fmt": "rgb24", - "rate": 24, - "width": 1920 - } - }, - "source_test_name": "test_mov" - }, - "name": "sparks_srgb.%05d", - "source_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 6100.0 - } - }, - "effects": [], - "markers": [], - "enabled": true, - "media_references": { - "DEFAULT_MEDIA": { - "OTIO_SCHEMA": "ImageSequenceReference.1", - "metadata": {}, - "name": "", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 6100.0 - } - }, - "available_image_bounds": null, - "target_url_base": "/Users/sam/git/EncodingGuidelines/enctests/sources/hdr_sources/sparks_srgb", - "name_prefix": "sparks_srgb.", - "name_suffix": ".png", - "start_frame": 6100, - "frame_step": 1, - "rate": 24.0, - "frame_zero_padding": 5, - "missing_frame_policy": "error" - }, - "test_mov-dnxhd": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "dnxhd", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuv422p10le", - "-profile:v": "dnxhr_hqx", - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=tv:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:05:43.932991+00:00", - "encode_time": 2.9071, - "filesize": 172852787, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.605083, - "max": 51.628808, - "mean": 48.626091, - "min": 47.06892 - }, - "psnr_cr": { - "harmonic_mean": 48.846116, - "max": 52.060041, - "mean": 48.869235, - "min": 47.420523 - }, - "psnr_y": { - "harmonic_mean": 46.618336, - "max": 49.723039, - "mean": 46.641074, - "min": 45.136702 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.991138, - "max": 100.0, - "mean": 99.99129, - "min": 98.258054 - } - }, - "test_config_path": null - } - }, - "name": "sparks_srgb.-test_mov-dnxhd.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mov-dnxhd.mov" - }, - "test_mov-mjpeg": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "mjpeg", - "-color_primaries": 1, - "-color_range": "pc", - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-qscale:v": 3, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:05:41.019488+00:00", - "encode_time": 1.6491, - "filesize": 107053286, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 43.606776, - "max": 45.678529, - "mean": 43.616932, - "min": 42.571085 - }, - "psnr_cr": { - "harmonic_mean": 43.80491, - "max": 45.978499, - "mean": 43.815534, - "min": 42.914635 - }, - "psnr_y": { - "harmonic_mean": 41.139537, - "max": 42.245794, - "mean": 41.142505, - "min": 40.640868 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 99.970873, - "max": 100.0, - "mean": 99.972454, - "min": 94.490829 - } - }, - "test_config_path": null - } - }, - "name": "sparks_srgb.-test_mov-mjpeg.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mov-mjpeg.mov" - }, - "test_mov-prores_ks": { - "OTIO_SCHEMA": "ExternalReference.1", - "metadata": { - "aswf_enctests": { - "description": "A comparison of different codecs, with VMAF > 98.", - "encode_arguments": { - "-c:v": "prores_ks", - "-color_primaries": 1, - "-color_range": 1, - "-color_trc": 2, - "-colorspace": 1, - "-pix_fmt": "yuvj444p", - "-profile:v": 3, - "-qscale:v": 10, - "-sws_flags": "spline+accurate_rnd+full_chroma_int", - "-vendor": "apl0", - "-vf": "\"scale=in_range=full:in_color_matrix=bt709:out_range=full:out_color_matrix=bt709\"" - }, - "results": { - "completed_utc": "2023-09-02T15:05:46.271678+00:00", - "encode_time": 2.332, - "filesize": 235894554, - "psnr": null, - "psnr_cb": { - "harmonic_mean": 48.167753, - "max": 49.76611, - "mean": 48.173506, - "min": 47.234445 - }, - "psnr_cr": { - "harmonic_mean": 49.764946, - "max": 50.789645, - "mean": 49.767341, - "min": 49.103259 - }, - "psnr_y": { - "harmonic_mean": 31.286978, - "max": 31.913112, - "mean": 31.289394, - "min": 30.465914 - }, - "result": "Completed", - "vmaf": { - "harmonic_mean": 100.0, - "max": 100.0, - "mean": 100.0, - "min": 100.0 - } - }, - "test_config_path": null - } - }, - "name": "sparks_srgb.-test_mov-prores_ks.mov", - "available_range": { - "OTIO_SCHEMA": "TimeRange.1", - "duration": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 200.0 - }, - "start_time": { - "OTIO_SCHEMA": "RationalTime.1", - "rate": 24.0, - "value": 0.0 - } - }, - "available_image_bounds": null, - "target_url": "/Users/sam/git/EncodingGuidelines/enctests/codec-encode/sparks_srgb.-test_mov-prores_ks.mov" - } - }, - "active_media_reference_key": "DEFAULT_MEDIA" - } - ], - "kind": "Video" - } - ] - } -} \ No newline at end of file From 1f2ce64d90b948371f8cb8aaab6c712a10d32dc4 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 10:11:27 -0700 Subject: [PATCH 05/23] remove accidental commit of config file Signed-off-by: jspadafora --- .vscode/settings.json | 70 ------------------------------------------- 1 file changed, 70 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index d7b6a5c..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "files.associations": { - "string": "cpp", - "__bit_reference": "cpp", - "__hash_table": "cpp", - "__locale": "cpp", - "__node_handle": "cpp", - "__split_buffer": "cpp", - "__threading_support": "cpp", - "__tree": "cpp", - "__verbose_abort": "cpp", - "any": "cpp", - "array": "cpp", - "bitset": "cpp", - "cctype": "cpp", - "charconv": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "codecvt": "cpp", - "complex": "cpp", - "condition_variable": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdint": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "deque": "cpp", - "execution": "cpp", - "memory": "cpp", - "forward_list": "cpp", - "fstream": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "ios": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "list": "cpp", - "locale": "cpp", - "map": "cpp", - "mutex": "cpp", - "new": "cpp", - "optional": "cpp", - "ostream": "cpp", - "print": "cpp", - "queue": "cpp", - "ratio": "cpp", - "regex": "cpp", - "set": "cpp", - "sstream": "cpp", - "stack": "cpp", - "stdexcept": "cpp", - "streambuf": "cpp", - "string_view": "cpp", - "tuple": "cpp", - "typeindex": "cpp", - "typeinfo": "cpp", - "unordered_map": "cpp", - "unordered_set": "cpp", - "valarray": "cpp", - "variant": "cpp", - "vector": "cpp", - "algorithm": "cpp" - } -} \ No newline at end of file From 853d3462e49981252e13f7ae27412a70d3cfb83b Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 10:11:45 -0700 Subject: [PATCH 06/23] Add vscode folder to git ignore Signed-off-by: jspadafora --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6122d29..f22e2f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.o -build \ No newline at end of file +build +.vscode \ No newline at end of file From 1039d5f1c96df664d7c83c6572fd8e33df72db63 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:23:20 -0700 Subject: [PATCH 07/23] Add method for drawing and modifying the image bounds Signed-off-by: jspadafora --- inspector.cpp | 83 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 73 insertions(+), 10 deletions(-) diff --git a/inspector.cpp b/inspector.cpp index 8ceea6f..e17d84c 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -218,6 +218,62 @@ bool DrawTimeRange( return changed; } +void DrawAvailableImageBounds( + char const* label, + otio::MediaReference* media_reference) { + /* + * Draw the widgets for viewing and modifying the available image bounds. + * + * @parm label: The label to display above the widgets. + * @parm media_reference: The media reference to get the available image bounds from + * and set the new bounds to. + */ + + auto available_image_bounds = media_reference->available_image_bounds(); + + ImGui::Text("%s", label); + ImGui::Indent(); + + Imath_3_2::Box2d bounds = available_image_bounds.value(); + + ImGui::Text("Min:"); + ImGui::SameLine(); + ImGui::PushItemWidth(100); + float min_x = static_cast(available_image_bounds->min.x); + if (ImGui::InputFloat("##min_x", &min_x)) { + bounds.min.x = static_cast(min_x); + }; + ImGui::SameLine(); + + float min_y = static_cast(available_image_bounds->min.y); + if (ImGui::InputFloat("##min_y", &min_y)) { + bounds.min.y = static_cast(min_y); + }; + + ImGui::PopItemWidth(); + + ImGui::Text("Max:"); + ImGui::SameLine(); + ImGui::PushItemWidth(100); + + float max_x = static_cast(available_image_bounds->max.x); + if (ImGui::InputFloat("##max_x", &max_x)) { + bounds.max.x = static_cast(max_x); + }; + ImGui::SameLine(); + + float max_y = static_cast(available_image_bounds->max.y); + if (ImGui::InputFloat("##max_y", &max_y)) { + bounds.max.y = static_cast(max_y); + }; + ImGui::PopItemWidth(); + ImGui::Unindent(); + + if (bounds != available_image_bounds.value()) { + media_reference->set_available_image_bounds(bounds); + } +} + void DrawMetadataSubtree(std::string key, otio::AnyDictionary& metadata); void DrawMetadataArray(std::string key, otio::AnyVector& vector); @@ -683,18 +739,28 @@ void DrawInspector() { auto available_image_bounds = external_ref->available_image_bounds(); if (available_image_bounds) { - ImGui::Text("Available Image Bounds:"); - ImGui::Indent(); - ImGui::Text("Min: (%f, %f)", available_image_bounds->min.x, available_image_bounds->min.y); - ImGui::Text("Max: (%f, %f)", available_image_bounds->max.x, available_image_bounds->max.y); - ImGui::Unindent(); + DrawAvailableImageBounds("Available Image Bounds", external_ref); } + ImGui::Text("Metadata:"); DrawMetadataTable(external_ref->metadata()); // Missing media node } else if (auto missing_ref = dynamic_cast(selected_reference)) { ImGui::Text("Type: Missing Media"); + + auto available_range = missing_ref->available_range(); + if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { + external_ref->set_available_range(available_range); + } + + auto available_image_bounds = missing_ref->available_image_bounds(); + if (available_image_bounds) { + DrawAvailableImageBounds("Available Image Bounds", missing_ref); + } + + ImGui::Text("Metadata:"); + DrawMetadataTable(missing_ref->metadata()); } else if (auto imageSeqRef = dynamic_cast(selected_reference)) { ImGui::Text("Type: Image Sequence"); @@ -710,13 +776,10 @@ void DrawInspector() { auto available_image_bounds = imageSeqRef->available_image_bounds(); if (available_image_bounds) { - ImGui::Text("Available Image Bounds:"); - ImGui::Indent(); - ImGui::Text("Min: (%f, %f)", available_image_bounds->min.x, available_image_bounds->min.y); - ImGui::Text("Max: (%f, %f)", available_image_bounds->max.x, available_image_bounds->max.y); - ImGui::Unindent(); + DrawAvailableImageBounds("Available Image Bounds", imageSeqRef); } + ImGui::Text("Metadata:"); DrawMetadataTable(imageSeqRef->metadata()); } else { From 05ce4e16b26a4d3d113b95802ea7aaa4e8799d02 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:29:02 -0700 Subject: [PATCH 08/23] Remove unused import Signed-off-by: jspadafora --- inspector.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/inspector.cpp b/inspector.cpp index e17d84c..debf274 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -21,7 +21,6 @@ #include #include -#include static const char* marker_color_names[] = { "PINK", "RED", "ORANGE", "YELLOW", From ef58ace7157335af03fb9b8e84e65e104de3857b Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:30:30 -0700 Subject: [PATCH 09/23] remove try/catch Signed-off-by: jspadafora --- inspector.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/inspector.cpp b/inspector.cpp index debf274..e3dbdf5 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -710,14 +710,10 @@ void DrawInspector() { // Retrieve the selected MediaReference object otio::MediaReference* selected_reference = nullptr; - try { - if (appState.selected_reference_index >= 0 && appState.selected_reference_index < num_references) { - selected_reference = reference_objects[appState.selected_reference_index]; - } else { - throw std::out_of_range("Selected reference index is out of range."); - } - } catch (const std::out_of_range& e) { - std::cerr << "Error: " << e.what() << std::endl; + if (appState.selected_reference_index >= 0 && appState.selected_reference_index < num_references) { + selected_reference = reference_objects[appState.selected_reference_index]; + } else { + std::cerr << "Error: Selected reference index is out of range." << std::endl; } if (selected_reference) { From 89c3ac7efdf1256d4f50b4809dc0ed9d88f6b8da Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:31:11 -0700 Subject: [PATCH 10/23] Remove comments Signed-off-by: jspadafora --- inspector.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/inspector.cpp b/inspector.cpp index e3dbdf5..ea98e6e 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -719,7 +719,7 @@ void DrawInspector() { if (selected_reference) { ImGui::Indent(); ImGui::Dummy(ImVec2(0.0f, 5.0f)); - // External Reference Node + if (auto external_ref = dynamic_cast(selected_reference)) { ImGui::Text("Type: External Media"); snprintf(tmp_str, sizeof(tmp_str), "%s", external_ref->target_url().c_str()); @@ -740,7 +740,6 @@ void DrawInspector() { ImGui::Text("Metadata:"); DrawMetadataTable(external_ref->metadata()); - // Missing media node } else if (auto missing_ref = dynamic_cast(selected_reference)) { ImGui::Text("Type: Missing Media"); From 012be20c7fb4836527afd0e8330992e2ef486797 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:32:44 -0700 Subject: [PATCH 11/23] Fix bug with the wrong pointer being used Signed-off-by: jspadafora --- inspector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inspector.cpp b/inspector.cpp index ea98e6e..16c03a7 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -745,7 +745,7 @@ void DrawInspector() { auto available_range = missing_ref->available_range(); if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { - external_ref->set_available_range(available_range); + missing_ref->set_available_range(available_range); } auto available_image_bounds = missing_ref->available_image_bounds(); From c5865a028f2328c5d40fa25f0df83494827c52a5 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:36:05 -0700 Subject: [PATCH 12/23] Ensure the min value is less then the max Signed-off-by: jspadafora --- inspector.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inspector.cpp b/inspector.cpp index 16c03a7..3363496 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -269,7 +269,10 @@ void DrawAvailableImageBounds( ImGui::Unindent(); if (bounds != available_image_bounds.value()) { - media_reference->set_available_image_bounds(bounds); + // Ensure that the min is less than the max on the x and y + if (bounds.min.x < bounds.max.x && bounds.min.y < bounds.max.y) { + media_reference->set_available_image_bounds(bounds); + } } } From 002bf81846382449cf7584046f639102bee0ebc0 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:44:47 -0700 Subject: [PATCH 13/23] Ensure we are checking for the missing reference Signed-off-by: jspadafora --- inspector.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inspector.cpp b/inspector.cpp index 3363496..c736b37 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -743,7 +744,7 @@ void DrawInspector() { ImGui::Text("Metadata:"); DrawMetadataTable(external_ref->metadata()); - } else if (auto missing_ref = dynamic_cast(selected_reference)) { + } else if (auto missing_ref = dynamic_cast(selected_reference)) { ImGui::Text("Type: Missing Media"); auto available_range = missing_ref->available_range(); From 0a6edf4ff8332db052c4c9f69ebf0fda0862d939 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:47:30 -0700 Subject: [PATCH 14/23] make labels consistent Signed-off-by: jspadafora --- inspector.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/inspector.cpp b/inspector.cpp index c736b37..1ce5c3f 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -732,13 +732,13 @@ void DrawInspector() { } auto available_range = external_ref->available_range(); - if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { + if (available_range && DrawTimeRange("Available range", &(*available_range), false)) { external_ref->set_available_range(available_range); } auto available_image_bounds = external_ref->available_image_bounds(); if (available_image_bounds) { - DrawAvailableImageBounds("Available Image Bounds", external_ref); + DrawAvailableImageBounds("Available image bounds", external_ref); } ImGui::Text("Metadata:"); @@ -748,13 +748,13 @@ void DrawInspector() { ImGui::Text("Type: Missing Media"); auto available_range = missing_ref->available_range(); - if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { + if (available_range && DrawTimeRange("Available range", &(*available_range), false)) { missing_ref->set_available_range(available_range); } auto available_image_bounds = missing_ref->available_image_bounds(); if (available_image_bounds) { - DrawAvailableImageBounds("Available Image Bounds", missing_ref); + DrawAvailableImageBounds("Available image bounds", missing_ref); } ImGui::Text("Metadata:"); @@ -768,13 +768,13 @@ void DrawInspector() { } auto available_range = imageSeqRef->available_range(); - if (available_range && DrawTimeRange("Available Range", &(*available_range), false)) { + if (available_range && DrawTimeRange("Available range", &(*available_range), false)) { imageSeqRef->set_available_range(available_range); } auto available_image_bounds = imageSeqRef->available_image_bounds(); if (available_image_bounds) { - DrawAvailableImageBounds("Available Image Bounds", imageSeqRef); + DrawAvailableImageBounds("Available image bounds", imageSeqRef); } ImGui::Text("Metadata:"); From 05d638e5d40ba423a1d4a3aaab8927deb060a449 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Fri, 27 Sep 2024 11:48:34 -0700 Subject: [PATCH 15/23] make text consistent Signed-off-by: jspadafora --- inspector.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inspector.cpp b/inspector.cpp index 1ce5c3f..63c4642 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -677,7 +677,7 @@ void DrawInspector() { // Draw Reference Media Information if (const auto& clip = dynamic_cast(selected_object)) { ImGui::Dummy(ImVec2(0.0f, 20.0f)); - ImGui::Text("Selected Media Reference:"); + ImGui::Text("Selected media reference:"); const auto& media_references = clip->media_references(); From c2d4b2008cb934264e73a6529728598986b27095 Mon Sep 17 00:00:00 2001 From: jspadafora Date: Tue, 1 Oct 2024 10:01:52 -0700 Subject: [PATCH 16/23] PR feedback Signed-off-by: James Spadafora Signed-off-by: jspadafora --- inspector.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inspector.cpp b/inspector.cpp index 63c4642..42c2203 100644 --- a/inspector.cpp +++ b/inspector.cpp @@ -784,6 +784,8 @@ void DrawInspector() { ImGui::Text("Type: The selected media type is not yet supported in the inspector."); } ImGui::Unindent(); + } else { + ImGui::Text("No media reference found."); } } } From 170dac11790993cee16c9927d924451b51ded119 Mon Sep 17 00:00:00 2001 From: Yaash Jain Date: Thu, 26 Sep 2024 18:30:09 -0700 Subject: [PATCH 17/23] Improve clip and transition color changes on hover and select (#67) Signed-off-by: Yaash Jain Signed-off-by: jspadafora --- timeline.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/timeline.cpp b/timeline.cpp index 8b9925d..00e1828 100644 --- a/timeline.cpp +++ b/timeline.cpp @@ -98,14 +98,15 @@ void DrawItem( auto item_color = GetItemColor(item); if (item_color != "") { fill_color = UIColorFromName(item_color); - fill_color = TintedColorForUI(fill_color); + selected_fill_color = TintedColorForUI(fill_color); + hover_fill_color = TintedColorForUI(fill_color); } if (auto gap = dynamic_cast(item)) { // different colors & style fill_color = appTheme.colors[AppThemeCol_Background]; - selected_fill_color = appTheme.colors[AppThemeCol_GapSelected]; - hover_fill_color = appTheme.colors[AppThemeCol_GapHovered]; + selected_fill_color = TintedColorForUI(fill_color); + hover_fill_color = TintedColorForUI(fill_color); label_str = ""; fancy_corners = false; show_time_range = false; @@ -273,6 +274,12 @@ void DrawTransition( auto selected_fill_color = appTheme.colors[AppThemeCol_TransitionSelected]; auto hover_fill_color = appTheme.colors[AppThemeCol_TransitionHovered]; + if (ColorIsBright(fill_color)) { + auto inverted_fill_color = ColorInvert(fill_color); + selected_fill_color = TintedColorForUI(inverted_fill_color); + hover_fill_color = TintedColorForUI(inverted_fill_color); + } + auto old_pos = ImGui::GetCursorPos(); ImGui::SetCursorPos(render_pos); @@ -584,8 +591,8 @@ void DrawObjectLabel(otio::SerializableObjectWithMetadata* object, float height) auto label_color = appTheme.colors[AppThemeCol_Label]; auto fill_color = appTheme.colors[AppThemeCol_Track]; - auto selected_fill_color = appTheme.colors[AppThemeCol_TrackSelected]; - auto hover_fill_color = appTheme.colors[AppThemeCol_TrackHovered]; + auto selected_fill_color = TintedColorForUI(fill_color); + auto hover_fill_color = TintedColorForUI(fill_color); ImVec2 text_offset(5.0f, 5.0f); From b230c2a5e012ae192659d4be049133ba10b068a5 Mon Sep 17 00:00:00 2001 From: Fernando Ortega Date: Fri, 27 Sep 2024 15:07:05 -0700 Subject: [PATCH 18/23] Add drag & drop functionality for opening files (in macOS) (#69) Signed-off-by: Fernando Ortega Signed-off-by: jspadafora --- app.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++ main.h | 2 +- main_macos.mm | 8 ++++++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/app.cpp b/app.cpp index 5e2dad8..e81e17f 100644 --- a/app.cpp +++ b/app.cpp @@ -22,6 +22,7 @@ void DrawMenu(); void DrawToolbar(ImVec2 buttonSize); +void DrawDroppedFilesPrompt(); #define DEFINE_APP_THEME_NAMES #include "app.h" @@ -37,6 +38,9 @@ AppTheme appTheme; ImFont* gFont = nullptr; +// Variable to store dropped file to load +std::string prompt_dropped_file = ""; + // Log a message to the terminal void Log(const char* format, ...) { va_list args; @@ -315,6 +319,43 @@ void MainInit(int argc, char** argv, int initial_width, int initial_height) { void MainCleanup() { } +// Validate that a file has the .otio extension +bool is_valid_file(const std::string& filepath) { + size_t last_dot = filepath.find_last_of('.'); + + // If no dot is found, it's not a valid file + if (last_dot == std::string::npos) { + return false; + } + + // Get and check the extension + std::string extension = filepath.substr(last_dot + 1); + return extension == "otio"; +} + +// Accept and open a file path +void FileDropCallback(int count, const char** filepaths) { + if (count > 1){ + Message("Cannot open multiple files."); + return; + } + + else if (count == 0) { + return; + } + + std::string file_path = filepaths[0]; + + if (!is_valid_file(file_path)){ + Message("Invalid file: %s", file_path.c_str()); + return; + } + + // Loading is done in DrawDroppedFilesPrompt() + prompt_dropped_file = file_path; + +} + // Make a button using the fancy icon font bool IconButton(const char* label, const ImVec2 size = ImVec2(0, 0)) { bool result = ImGui::Button(label, size); @@ -383,6 +424,7 @@ void MainGui() { exit(0); } + DrawDroppedFilesPrompt(); DrawMenu(); // ImGui::SameLine(ImGui::GetContentRegionAvailWidth() - button_size.x + @@ -785,6 +827,32 @@ void DrawToolbar(ImVec2 button_size) { #endif } +// Prompt the user to confirm file loading +void DrawDroppedFilesPrompt() { + if (prompt_dropped_file == "") { + return; + } + + ImGui::OpenPopup("Open File?"); + // Modal window for confirmation + if (ImGui::BeginPopupModal("Open File?", nullptr, ImGuiWindowFlags_AlwaysAutoResize)) { + ImGui::Text("Open file \n%s?", prompt_dropped_file.c_str()); + + if (ImGui::Button("Yes")) { + LoadFile(prompt_dropped_file); + prompt_dropped_file = ""; + ImGui::CloseCurrentPopup(); + } + ImGui::SameLine(); + if (ImGui::Button("No")) { + Message(""); // Reset last message + prompt_dropped_file = ""; + ImGui::CloseCurrentPopup(); + } + ImGui::EndPopup(); + } +} + void SelectObject( otio::SerializableObject* object, otio::SerializableObject* context) { diff --git a/main.h b/main.h index 269598b..f05143f 100644 --- a/main.h +++ b/main.h @@ -2,4 +2,4 @@ void MainInit(int argc, char** argv, int initial_width, int initial_height); void MainGui(); void MainCleanup(); - +void FileDropCallback(int count, const char** paths); diff --git a/main_macos.mm b/main_macos.mm index 8af61c1..7536b9f 100644 --- a/main_macos.mm +++ b/main_macos.mm @@ -18,6 +18,11 @@ #import #import +// Accept and open a file path +void file_drop_callback(GLFWwindow* window, int count, const char** paths) { + FileDropCallback(count, paths); +} + static void glfw_error_callback(int error, const char* description) { fprintf(stderr, "Glfw Error %d: %s\n", error, description); @@ -100,6 +105,9 @@ int main(int argc, char** argv) // Our state float clear_color[4] = {0.45f, 0.55f, 0.60f, 1.00f}; + // Set the drop callback + glfwSetDropCallback(window, file_drop_callback); + // Main loop while (!glfwWindowShouldClose(window)) { From 358ed9f54d296f14a8eb3185f0227704180920d6 Mon Sep 17 00:00:00 2001 From: Yaash Jain Date: Fri, 27 Sep 2024 23:11:29 -0700 Subject: [PATCH 19/23] Add instruction to do a recursive clone before attempting a build (#66) * Merge in changes from #55 + Improve build steps formatting Co-authored-by: David Douglas @ddouglas Signed-off-by: Yaash Jain Signed-off-by: jspadafora --- README.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 64de337..f2f7ff8 100644 --- a/README.md +++ b/README.md @@ -26,23 +26,34 @@ Linux (Ubuntu, or similar): - A recent version of CMake - You can get this via `sudo snap install cmake` or by downloading from https://cmake.org/download/ +__Note__: Before building, please ensure that you clone this project with the `--recursive` flag. +This will also clone and initialize all of the submodules that this project depends on. + ## Building (macOS, Windows, Linux) - % mkdir build - % cd build - % cmake .. - % cmake --build . -j - % ./raven ../example.otio +Spin up your favourite terminal and follow these steps: + +```shell + git submodule update --init --recursive + mkdir build + cd build + cmake .. + cmake --build . -j + ./raven ../example.otio +``` ## Building (WASM via Emscripten) You will need to install the [Emscripten toolchain](https://emscripten.org) first. - % mkdir build-web - % cd build-web - % emcmake cmake .. - % cmake --build . - % emrun ./raven.html +```shell + git submodule update --init --recursive + mkdir build-web + cd build-web + emcmake cmake .. + cmake --build . + emrun ./raven.html +``` See also: `serve.py` as an alternative to `emrun`, and as a reference for which HTTP headers are needed to host the WASM build. From 5ff0f7880021c1534eca99944195535706bc28f1 Mon Sep 17 00:00:00 2001 From: Austin Witherspoon <46503991+austinwitherspoon@users.noreply.github.com> Date: Fri, 27 Sep 2024 23:18:40 -0700 Subject: [PATCH 20/23] Expose methods to load OTIO files in WASM through Javascript (#70) * Add LoadString function * Add LoadUrl function * Export LoadUrl and LoadString through emscriptem * Update html template to add OTIO load helpers * Document WASM load methods Signed-off-by: Austin Witherspoon <46503991+austinwitherspoon@users.noreply.github.com> Signed-off-by: jspadafora --- CMakeLists.txt | 2 +- README.md | 6 ++++++ app.cpp | 26 ++++++++++++++++++++++++ app.h | 2 ++ main.h | 7 +++++++ main_emscripten.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++--- shell_minimal.html | 37 ++++++++++++++++++++++++++++++++-- 7 files changed, 122 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d284534..efcebde 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,7 @@ elseif(EMSCRIPTEN) target_sources(raven PUBLIC main_emscripten.cpp) set(LIBS ${CMAKE_DL_LIBS} SDL2) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s USE_SDL=2 -s DISABLE_EXCEPTION_CATCHING=1") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s WASM=1 -s NO_EXIT_RUNTIME=0 -s ASSERTIONS=1 -s NO_FILESYSTEM=1 -s USE_PTHREADS=1 -s ALLOW_MEMORY_GROWTH=1 -Wl,--shared-memory,--no-check-features --shell-file ${CMAKE_CURRENT_LIST_DIR}/shell_minimal.html") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s WASM=1 -s NO_EXIT_RUNTIME=0 -s ASSERTIONS=1 -s FETCH -s USE_PTHREADS=1 -s ALLOW_MEMORY_GROWTH=1 -s EXPORTED_RUNTIME_METHODS=ccall,cwrap -Wl,--shared-memory,--no-check-features --shell-file ${CMAKE_CURRENT_LIST_DIR}/shell_minimal.html") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DIMGUI_DISABLE_FILE_FUNCTIONS") set_target_properties(raven PROPERTIES SUFFIX .html) target_link_libraries(raven PUBLIC ${LIBS}) diff --git a/README.md b/README.md index f2f7ff8..53ef4ed 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,12 @@ You will need to install the [Emscripten toolchain](https://emscripten.org) firs See also: `serve.py` as an alternative to `emrun`, and as a reference for which HTTP headers are needed to host the WASM build. +You can load a file into WASM Raven a few ways: +- Add a JSON string to Module.otioLoadString in the HTML file +- Add a URL to Module.otioLoadURL in the HTML file +- Call Module.LoadString(otio_data) at runtime +- Call Module.LoadURL(otio_url) at runtime + Note: The WASM build of raven is missing some features - see the Help Wanted section below. ## Troubleshooting diff --git a/app.cpp b/app.cpp index e81e17f..adab59a 100644 --- a/app.cpp +++ b/app.cpp @@ -245,6 +245,32 @@ void LoadTimeline(otio::Timeline* timeline) { SelectObject(timeline); } +void LoadString(std::string json) { + auto start = std::chrono::high_resolution_clock::now(); + + otio::ErrorStatus error_status; + auto timeline = dynamic_cast( + otio::Timeline::from_json_string(json, &error_status)); + if (!timeline || otio::is_error(error_status)) { + Message( + "Error loading JSON: %s", + otio_error_string(error_status).c_str()); + return; + } + + LoadTimeline(timeline); + + appState.file_path = timeline->name().c_str(); + + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration elapsed = (end - start); + double elapsed_seconds = elapsed.count(); + Message( + "Loaded \"%s\" in %.3f seconds", + timeline->name().c_str(), + elapsed_seconds); +} + void LoadFile(std::string path) { auto start = std::chrono::high_resolution_clock::now(); diff --git a/app.h b/app.h index 30557f7..02d0cf0 100644 --- a/app.h +++ b/app.h @@ -131,6 +131,8 @@ void Log(const char* format, ...); void Message(const char* format, ...); std::string Format(const char* format, ...); +void LoadString(std::string json); + std::string otio_error_string(otio::ErrorStatus const& error_status); void SelectObject( diff --git a/main.h b/main.h index f05143f..b57a742 100644 --- a/main.h +++ b/main.h @@ -3,3 +3,10 @@ void MainInit(int argc, char** argv, int initial_width, int initial_height); void MainGui(); void MainCleanup(); void FileDropCallback(int count, const char** paths); + +#ifdef EMSCRIPTEN +extern "C" { +void js_LoadUrl(char* url); +void js_LoadString(char* json); +} +#endif diff --git a/main_emscripten.cpp b/main_emscripten.cpp index 589b838..f4c5760 100644 --- a/main_emscripten.cpp +++ b/main_emscripten.cpp @@ -8,13 +8,16 @@ // See https://github.com/ocornut/imgui/pull/2492 as an example on how to do just that. #include "imgui.h" -#include "imgui_impl_sdl2.h" #include "imgui_impl_opengl3.h" -#include -#include +#include "imgui_impl_sdl2.h" #include #include +#include +#include +#include +#include +#include "app.h" #include "main.h" // Emscripten requires to have full control over the main loop. We're going to store our SDL book-keeping variables globally. @@ -149,3 +152,42 @@ static void main_loop(void* arg) ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); SDL_GL_SwapWindow(g_Window); } + +void LoadUrlSuccess(emscripten_fetch_t* fetch) { + printf("Finished downloading %llu bytes from URL %s.\n", fetch->numBytes, fetch->url); + + std::string otio_string = std::string(fetch->data, fetch->numBytes); + emscripten_fetch_close(fetch); + + LoadString(otio_string); + + appState.file_path = fetch->url; +} + +void LoadUrlFailure(emscripten_fetch_t* fetch) { + printf("Downloading %s failed, HTTP failure status code: %d.\n", fetch->url, fetch->status); + emscripten_fetch_close(fetch); +} + +void LoadUrl(std::string url) { + printf("Downloading %s...\n", url.c_str()); + emscripten_fetch_attr_t attr; + emscripten_fetch_attr_init(&attr); + strcpy(attr.requestMethod, "GET"); + attr.attributes = EMSCRIPTEN_FETCH_LOAD_TO_MEMORY; + // This is async, so we can provide callbacks to handle the result + attr.onsuccess = LoadUrlSuccess; + attr.onerror = LoadUrlFailure; + emscripten_fetch(&attr, url.c_str()); +} + +extern "C" { +EMSCRIPTEN_KEEPALIVE +void js_LoadUrl(char* url) { + LoadUrl(std::string(url)); +} +EMSCRIPTEN_KEEPALIVE +void js_LoadString(char* json) { + LoadString(std::string(json)); +} +} \ No newline at end of file diff --git a/shell_minimal.html b/shell_minimal.html index f2bd0c7..d45b812 100644 --- a/shell_minimal.html +++ b/shell_minimal.html @@ -30,9 +30,42 @@