LabLib ====== |image1| |run all tests| |documentation| Generate intermediate sequences for VFX processing using OIIO and FFMPEG! This module aims to help by providing helper classes and functions to: - Get basic info from videos and images using iinfo and ffprobe as a fallback. - Read and parse effect json outputted by `AYON/Openpype `__ for pipeline automation. - Create a custom OCIO config file for direct use. - Create OIIO and FFMPEG matrix values to be used in filters for repositioning. - Create correctly formed OIIO commandline strings automatically. - Render out frames with Color and Repositioning baked in using oiiotool Instructions ------------ The core functionality relies on using **Processors** and **Operators** to compute the correct commandline parameters. **Operators** are single operation classes that hold your operation parameters (translation, luts, cdls etc.) **Processors** (usually classes such as ``ColorTransformProcessor``) compute **Operators** chains together. They can be fed ordered lists of dicts (with same name attributes as Operator classes) or ordered lists of **Operators** objects, or one at a time for secondary processing between the chained operations. On compute they return their relevant section of commandline flags to be passed to oiio. **Renderers** take care of returning the fully formed commanline command and executing it. Installation ------------ LabLib requires ``python-3.9`` and uses ``poetry`` for managing its dependencies. It’s encouraged to use the provided PowerShell script to install and download the binaries for `oiiotool `__, `ffmpeg `__, the `OCIO Color Configs `__ and the font `Source Code Pro `__ which is used in tests. - clone this repo - ``.\start.ps1 install`` - ``.\start.ps1 get-dependencies`` Testing ~~~~~~~ You can run the full suite with ``.\start.ps1 test`` or to run custom ``pytest`` commands make sure to be in the cloned repository’s directory and run ``poetry run pytest [ARGS]``. Contributing ------------ The best way to contribute to LabLib currently is to write extensive test cases for all modules. But also sharing your thoughts and ideas on the `Discussions Page `__ really helps to keep this project going 💞 .. |image1| image:: https://img.shields.io/badge/os-windows-blue .. |run all tests| image:: https://github.com/ynput/LabLib/actions/workflows/run_all_tests.yml/badge.svg :target: https://github.com/ynput/LabLib/actions/workflows/run_all_tests.yml .. |documentation| image:: https://github.com/ynput/LabLib/actions/workflows/documentation.yml/badge.svg :target: https://github.com/ynput/LabLib/actions/workflows/documentation.yml