# libavif third party sources

Anything in this directory is imported from third party sources with minimal changes.

See `LICENSE` file of respective subdirectories of this directory for license information.

# libyuv
This subdirectory contains source code imported from libyuv as of `c60323de1756f489bd061e66aea9c3c73a8ef72c`, with modifications intended to keep them relatively small and simple.

# Importing from upstream
When importing source code from upstream libyuv, the following changes must be done:
1. Source hierachy is to be kept the same as in libyuv.
2. The only APIs that are called by libavif for scaling are `ScalePlane` and `ScalePlane_12`. Anything else must be left out.
3. In function `ScalePlane` and `ScalePlane_16`, only the `ScalePlaneVertical`, `CopyPlane`, `ScalePlaneBox`, `ScalePlaneUp2_Linear`, `ScalePlaneUp2_Bilinear`, `ScalePlaneBilinearUp`, `ScalePlaneBilinearDown` and `ScalePlaneSimple` paths (and their `_16` equivalents) from libyuv must be kept; any other paths are to be stripped out (including SIMD).
4. The commit hash of libyuv from where the files got imported in this README.md file must be updated if possible.
5. `LIBYUV_API` must be removed from any and all imported functions as these files are always built static.
6. Replace .cc file extension by .c.