commit | 6b8141e74720aeebfb2326d649c55be84dc1d3b4 | [log] [tgz] |
---|---|---|
author | Yannis Guyon <yguyon@google.com> | Fri Nov 26 17:32:39 2021 +0100 |
committer | Yannis Guyon <yguyon@google.com> | Fri Nov 26 17:32:39 2021 +0100 |
tree | e7431664d5ef5db4eccedaa90840901d5281dae4 | |
parent | ca1fb3c7115db12ad2cd6af4cd36db8f38bfc2e9 [diff] |
Streamed input API Refactor the code to: - sequentially read all boxes once into AvifInfoInternalFeatures, - after "ipma" and "iref", check if AvifInfoInternalFeatures contain all necessary information to output AvifInfoFeatures. This allows to fetch just a few bytes at a time from the stream, in order, in a contiguous manner and never twice the same data. The drawback is the ~250-byte long AvifInfoInternalFeatures struct that is stored on the stack to avoid dynamic allocation. It can be decreased or increased to adjust the variety of handled input AVIFs. Change-Id: I98ccf4c55706f6c88d65008ccbcbefc782d2be87
libavifinfo is a standalone library that can be used to extract the width, height, bit depth and number of channels from an AVIF payload.
See avifinfo.h
for details on the API and avifinfo.c
for the implementation. See avifinfo_test.cc
for usage examples.
libavifinfo can be used when only a few AVIF features are needed and when linking to or including libavif is not an option. For decoding an image or extracting more features, please rely on libavif.
AvifInfoFeatures features; if (AvifInfoGet(bytes, number_of_available_bytes, &features) == kAvifInfoOk) { // Use 'features.width' etc. }
Note: AvifInfoGet()
is designed to return the same avifImage
field values as avifDecoderRead()
. However libavifinfo is more permissive and may return features of images considered invalid by libavif.
avifinfo.c
is written in C. To build from this directory:
mkdir build && \ cd build && \ cmake .. && \ cmake --build . --config Release
Tests are written in C++. GoogleTest is required.
mkdir build && \ cd build && \ cmake .. -DAVIFINFO_BUILD_TESTS=ON && \ cmake --build . --config Debug && \ ctest .
Google C/C++ Style Guide is used in this project.
If you would like to contribute to libavifinfo, please follow the steps for libaom at https://aomedia.googlesource.com/aom/#submitting-patches.
Bug reports can be filed in the Alliance for Open Media issue tracker.