Find a file
Simon Ser f7160730cc Introduce di_cvt_compute()
Same as di_gtf_compute(), but for CVT.

Code imported from edid-decode, fixed up [1] [2], edited for
code style and extended to return all output parameters.

Will help with CVT timing code descriptors in EDID [3].

[1]: https://lore.kernel.org/linux-media/20221005121221.14882-1-contact@emersion.fr/T/#u
[2]: https://lore.kernel.org/linux-media/20221028142405.81894-1-contact@emersion.fr/T/#u
[3]: https://gitlab.freedesktop.org/emersion/libdisplay-info/-/merge_requests/93

Signed-off-by: Simon Ser <contact@emersion.fr>
2022-12-16 15:37:38 +01:00
di-edid-decode cta: parse short audio descriptors 2022-12-14 15:19:27 +01:00
include Introduce di_cvt_compute() 2022-12-16 15:37:38 +01:00
test cta: parse short audio descriptors 2022-12-14 15:19:27 +01:00
tool dmt: add reduced_blanking field 2022-11-23 15:30:33 +01:00
.editorconfig editorconfig: add python rules 2022-11-09 14:18:24 +02:00
.gitlab-ci.yml ci: pin Alpine version 2022-11-24 10:27:13 +01:00
cta.c cta: parse short audio descriptors 2022-12-14 15:19:27 +01:00
cvt.c Introduce di_cvt_compute() 2022-12-16 15:37:38 +01:00
displayid.c displayid: add support for display parameters data block 2022-10-03 08:56:03 +02:00
dmt-table.c dmt: add reduced_blanking field 2022-11-23 15:30:33 +01:00
edid.c edid: fix uint16_t conversion warning 2022-10-13 13:03:16 +03:00
gtf.c Introduce di_gtf_compute() 2022-09-29 11:50:09 +00:00
info.c info: Use memory_stream_cleanup in di_info_get_serial 2022-11-25 12:15:14 +00: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 Introduce di_cvt_compute() 2022-12-16 15:37:38 +01:00
README.md build: add gen-test-data run target 2022-11-17 22:10:08 +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.

Contributing

Open issues and merge requests on the GitLab project.

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, run ninja -C build/ gen-test-data.

To run the test suite locally, you need to use edid-decode of the git revision mentioned in .gitlab-ci.yml. Otherwise you may experience false failures.

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