f5a7dc14c7
Two defects in the HEIF/AVIF sniffing added by this PR. 1. Major-brand-only detection mislabeled AVIF as HEIC. AVIF encoders routinely stamp the generic still-image brand 'mif1' as the MAJOR brand and declare the AV1 codec only in the compatible-brand list, so every mif1-major file was reported as HEVC-coded HEIC. Parse the compatible-brand list (bounded by the declared ftyp box size, so an 'avif' token in a following box can't upgrade a real HEIC) and let AV1 brands win when both families appear. 2. AVIF was rejected outright when pillow-heif was missing. Pillow >= 11.3 bundles a native AvifImagePlugin, while pillow-heif wheels are commonly built with no AV1 codec at all (libheif_info() reports AVIF: ''). Gating AVIF on a pillow-heif import therefore refused files Pillow could already decode, and pointed the user at a library that cannot decode them. Registration is now best-effort: the decode attempt is the arbiter, and failures emit codec-specific guidance naming the backend that actually serves that format. Tests: mif1+avif and mif1+av01 regressions, a box-size bound guard, a truncated/bogus-size guard, AVIF-converts-without-pillow-heif, and AVIF error text. Verified against real pillow-heif-encoded HEIC and Pillow-encoded AVIF files, not just synthetic headers; both new brand tests fail if the compatible-brand scan is reverted.