Skip to content

Commit

Permalink
README: add versioning principles
Browse files Browse the repository at this point in the history
  • Loading branch information
rbouqueau committed Jun 3, 2023
1 parent 86a779d commit 324d251
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@

## Introduction

The [Compliance Warden](https://github.com/gpac/ComplianceWarden), often abbrevated as "the warden" or "cw" or "CW", is compliance checker.
The [Compliance Warden](https://github.com/gpac/ComplianceWarden), often abbrevated as "CW" or "cw" or "the warden", is compliance checker.
CW has been developed as a reference software for MPEG MIAF, AOM AVIF, and AOM AV1 HDR10+.
It is meant to be extended to check MP4, CMAF, and many other file formats.

CW decouples the processing phases. First it parses the input to build an [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) stored in very generic structures. Then it processes the AST to validate sets of rules attached to specifications. This approach offers a lot of flexibility and extensibiility.

CW is written in modern C++. Binary test vectors are described in assembly (x86 nasm syntax) because [Why Not](https://twitter.com/daemon404/status/1301885488928878593). CW derives from a more generic effort called [Abstract](https://www.motionspell.com/compliance-testing/) started by contributors from the [GPAC](http://gpac.io) open-source project.

The Compliance Warden is distributed under the [BSD-3 license](https://raw.githubusercontent.com/gpac/ComplianceWarden/master/LICENSE).
The Compliance Warden is distributed under the [BSD-3 permissive license](https://raw.githubusercontent.com/gpac/ComplianceWarden/master/LICENSE).

## Useful information

Expand All @@ -36,7 +36,12 @@ Usage:

### Specifications

CW is mainly [sponsored](#Acknowledgments) by companies and standardization groups to validate specific versions of specifications they develop or use. However, once a specification is validated, we accept to add new rules progressively.
CW is mainly [sponsored](#Acknowledgments) by companies and standardization groups to validate specific versions of specifications they develop or use.

The master branch only references official specifications. Draft versions or updates are meant to be in spearate branches. To know more please read the [design principles](https://github.com/gpac/ComplianceWarden/issues/55#issuecomment-1517063130).


However, once a specification is validated, we accept to add new rules progressively.

```
$ bin/cw.exe list
Expand Down Expand Up @@ -174,15 +179,17 @@ $ sudo make install

### Ensure good code coverage

You need ```lcov```/
You need ```lcov```.

```
scripts/cov.sh
```

### Modifying test results

The tests (launched with ```./check```) will stop running on first error. Uncomment the ```# cp "$new" "$ref"``` line in the ```tests/run``` script to update the script. This avoids tests to halt when an error occurs.
The tests (launched with ```./check```) will stop running on first error.

To update the test results, uncomment the ```# cp "$new" "$ref"``` line in the ```tests/run``` script. This avoids tests to halt when an error occurs. Please review carefully the changes before updating test results.

## Code architecture

Expand Down Expand Up @@ -268,8 +275,8 @@ struct SpecDesc
## Limitations

Some aspects are not activated:
- Brand presence checks are not fully activated. When activated, relaxed brands (e.g. 'MiPr') emit a lot of messages that bring little value to the user. Aggressive shall/should statements need to be balanced at standardization level.
- Codec-level parsing is incomplete. It should be deferred in most case to an external project that can analyze both the metadata and the data (e.g. [GPAC](http://gpac.io)).
- Brand presence checks are not fully activated. When activated, relaxed brands (e.g. 'MiPr') emit a lot of messages that bring little value to the user. Aggressive shall/should normative statements need to be balanced at standardization level.
- Codec-level parsing is incomplete. It should be deferred in most case to an external project that can analyze both the metadata and the data (e.g. [GPAC](http://gpac.io)). This hasn't been done due to licensing concerns.
- Some rules related to pixel formats (color spaces, ...) (computations and consistency) may only be checked by a player. Hence they are considered outside of the scope of this project.
- Some rules related to pixel formats are only processed for AV1. Because we embed some codec-level parsing for AV1.
- Some rules are not implemented due to missing content (e.g. Apple Audio Twos).
Expand Down

0 comments on commit 324d251

Please sign in to comment.