Find a file
Pekka Paalanen f2c1b01bd2 info: add di_info_get_hdr_static_metadata()
The low-level struct di_cta_hdr_static_metadata_block is essentially
duplicated in struct di_hdr_static_metadata to make the high-level API
independent of low-level API headers. It's also simpler in form, while
new fields can still be added in the end while maintaining ABI backward
compatibility.

If new sources for HDR static metadata appear, they can be parsed into
this same structure in the future when compatible.

Wayland compositors will be interested in this.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2024-06-12 16:26:33 +03:00
di-edid-decode cta: Add support for the HDMI Audio Data Block 2024-05-29 11:29:37 +02:00
include info: add di_info_get_hdr_static_metadata() 2024-06-12 16:26:33 +03:00
subprojects build: build edid-decode as subproject 2024-06-07 17:05:47 +02:00
test test: di_info_get_default_color_primaries() 2024-06-12 16:26:33 +03:00
tool tool: fix redirect bashism in dump-i2c.sh 2023-06-28 12:12:04 +03:00
.editorconfig editorconfig: bump max line length to 100 chars 2023-05-11 08:58:10 +00:00
.gitlab-ci.yml build: build edid-decode as subproject 2024-06-07 17:05:47 +02:00
cta-vic-table.c cta: add VIC table 2023-01-13 02:37:01 +01:00
cta.c cta: HDMI Audio: Add a failure when NonMixed is supported without MS 2024-06-06 10:58:48 +02:00
cvt.c Introduce di_cvt_compute() 2022-12-16 15:37:38 +01:00
displayid.c displayid: add support for type III timings 2024-03-21 17:15:27 +01:00
dmt-table.c dmt: add reduced_blanking field 2022-11-23 15:30:33 +01:00
edid.c edid: Record failures instead of aborting parsing 2024-05-08 12:43:20 +02:00
gcovr.cfg Add code coverage configuration file 2023-01-07 13:47:28 +01:00
gtf.c Introduce di_gtf_compute() 2022-09-29 11:50:09 +00:00
info.c info: add di_info_get_hdr_static_metadata() 2024-06-12 16:26:33 +03:00
libdisplay-info.map build: set symbol visibility 2022-06-14 11:40:07 +00:00
LICENSE Initial commit 2022-03-24 01:49:00 +01:00
log.c info: introduce di_logger 2022-08-04 08:40:36 +02:00
memory-stream.c memory-stream: Add memory_stream_cleanup helper 2022-11-25 12:15:14 +00:00
meson.build build: build edid-decode as subproject 2024-06-07 17:05:47 +02:00
README.md readme: update test suite instructions 2023-03-02 19:43:44 +01:00
release.sh release: Add release instructions and script 2023-02-10 17:06:13 +01:00
releasing.md release: Add release instructions and script 2023-02-10 17:06:13 +01:00

libdisplay-info

EDID and DisplayID library.

Goals:

  • Provide a set of high-level, easy-to-use, opinionated functions as well as low-level functions to access detailed information.
  • Simplicity and correctness over performance and resource usage.
  • Well-tested and fuzzed.

Documentation is available on the website.

Using

The public API headers are categorised as either high-level or low-level API as per the comments in the header files. Users of libdisplay-info should prefer high-level API over low-level API when possible.

If high-level API lacks needed features, please propose additions to the high-level API upstream before using low-level API to get what you need. If the additions are rejected, you are welcome to use the low-level API.

This policy is aimed to propagate best practises when interpreting EDID and DisplayID information which can often be cryptic or even inconsistent.

libdisplay-info uses semantic versioning. The public API is not yet stable.

Contributing

Open issues and merge requests on the GitLab project. Discuss and ask questions in the #wayland IRC channel on OFTC.

In general, the Wayland contribution guidelines should be followed. In particular, each commit must carry a Signed-off-by tag to denote that the submitter adheres to the Developer Certificate of Origin 1.1. This project follows the freedesktop.org Contributor Covenant.

Building

libdisplay-info has the following dependencies:

  • hwdata for the PNP ID database used at build-time only.

libdisplay-info is built using Meson:

meson setup build/
ninja -C build/

Testing

The low-level EDID library is tested against edid-decode. test/data/ contains a small collection of EDID blobs and diffs between upstream edid-decode and our di-edid-decode clone. Our CI ensures the diffs are up-to-date. A patch should never make the diffs grow larger. To re-generate the test data, build edid-decode at the Git revision mentioned in .gitlab-ci.yml, put the executable in PATH, and run ninja -C build/ gen-test-data.

The latest code coverage report is available on GitLab CI.

Fuzzing

To fuzz libdisplay-info with AFL, the library needs to be instrumented:

CC=afl-gcc meson build/
ninja -C build/
afl-fuzz -i test/data/ -o afl/ build/di-edid-decode/di-edid-decode