imagesize/formats/
avif.rs

1// AVIF is a special case of HEIF. Image size methods are defined in there and should work for both.
2// Only difference is that we want to specify the image type as AVIF instead of wrapping it into HEIF.
3pub fn matches(header: &[u8]) -> bool {
4    if header.len() < 12 || &header[4..8] != b"ftyp" {
5        return false;
6    }
7
8    let header_brand = &header[8..12];
9
10    // Since other non-AVIF files may contain ftype in the header
11    // we try to use brands to distinguish image files specifically.
12    // List of brands from here: https://mp4ra.org/#/brands
13    let valid_brands = [
14        b"avif", b"avio", b"avis", b"MA1A",
15        b"MA1B",
16    ];
17
18    for brand in valid_brands {
19        if brand == header_brand {
20            return true;
21        }
22    }
23    
24    false
25}