Skip to content

Commit

Permalink
feat: PSY micro-release info
Browse files Browse the repository at this point in the history
This will print via the tags when we make a release, but the additional constant helps us keep track internally
  • Loading branch information
gianni-rosato committed May 8, 2024
1 parent 368ac93 commit eee58e5
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 0 deletions.
6 changes: 6 additions & 0 deletions Docs/PSY-Development.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,12 @@ SVT-AV1-PSY is a project that aims to enhance the Scalable Video Technology for

The development process involves rigorous community testing and optimization to ensure that the encoder and decoder deliver the best possible performance. The team uses a variety of tools and methodologies to analyze and improve the performance of the encoder and decoder, including subjective analyses. SSIMULACRA2 and XPSNR are used extensively for metrics testing, and the team is committed to improving the overall quality and performance of the encoder using these two metrics as general guidelines and benchmarks. However, our goal is not to improve metric scores but to improve the overall perceptual quality of the encoder; that will always come first, so naturally some changes may be made that degrade metric performance in favor of perceptual fidelity per bit.

### Micro-Releases

As we develop SVT-AV1-PSY on `testing`, we always recommend users go to `master` to experience new features as soon as they are stable. To make PSY feature additions more clear, micro-release tags indicate when significant new feature additions have been made to `master`. These tags are letters starting at `A`, so new releases will be tagged as `v#.#.#-A`, `v#.#.#-B`, etc.

These micro-releases are only numbered & tagged before a `master` merge from `testing`, so if you are making your own contributions to testing this should not be a concern for you. If you think it is time to make a new micro-release, you can modify the constant in `EbVersion.h.in` and open a PR to `master` with the change. The lead maintainer(s) will then decide if a new micro-release is warranted.

## Self-Testing

If you wish to test local changes to see if you have improved on the perceptual quality of the encoder, you can use SSIMULACRA2 & XPSNR locally on legal content. This isn't a requirement for opening a PR, but it helps us quite a bit.
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ SVT-AV1-PSY has different defaults than mainline SVT-AV1 in order to provide bet
- `--color-help`
Prints the information found in Appendix A.2 of the user guide in order to help users more easily understand the Color Description Options in SvtAv1EncApp.

- `Micro-Releases`
We are always continuously improving SVT-AV1-PSY, and we always recommend using the `master` branch to experience exciting new features as soon as they can be considered usable. To make our feature additions more clear, micro-release tags indicate when significant new feature additions have been made. Micro-release tags are letters starting with `A`, so new releases will be tagged as `v#.#.#-A`, `v#.#.#-B`, etc.

# Building

For Linux, macOS, & Windows build instructions, see the [PSY Development](Docs/PSY-Development.md) page.
Expand Down
6 changes: 6 additions & 0 deletions Source/API/EbSvtAv1Enc.h
Original file line number Diff line number Diff line change
Expand Up @@ -1003,6 +1003,12 @@ typedef struct EbSvtAv1EncConfiguration {
*/
EB_API const char *svt_av1_get_version(void);

/**
* Returns a string containing only the SVT-AV1-PSY micro-release letter
* @param[out] SVT_AV1_PSY_RELEASE
*/
EB_API const char *svt_psy_get_version(void);

/**
* Prints the version header and build information to the file
* specified by the SVT_LOG_FILE environment variable or stderr
Expand Down
1 change: 1 addition & 0 deletions Source/App/EncApp/EbAppConfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -1959,6 +1959,7 @@ int get_version(int argc, char *argv[]) {
if (find_token(argc, argv, VERSION_TOKEN, NULL))
return 0;
printf("SVT-AV1-PSY %s (%s)\n", svt_av1_get_version(), debug_build ? "release" : "debug");
printf("PSY Release: \x1b[32m%s\x1b[0m\n", svt_psy_get_version());
return 1;
}

Expand Down
1 change: 1 addition & 0 deletions Source/Lib/Common/Codec/EbVersion.h.in
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
#define SVT_AV1_CVS_VERSION "@PACKAGE_VERSION_STRING@"
#define SVT_AV1_PSY_RELEASE "A"
4 changes: 4 additions & 0 deletions Source/Lib/Encoder/Globals/EbEncHandle.c
Original file line number Diff line number Diff line change
Expand Up @@ -5637,6 +5637,10 @@ EB_API const char *svt_av1_get_version(void) {
return SVT_AV1_CVS_VERSION;
}

EB_API const char *svt_psy_get_version(void) {
return SVT_AV1_PSY_RELEASE;
}

EB_API void svt_av1_print_version(void) {
SVT_INFO("-------------------------------------------\n");
SVT_INFO("SVT [version]:\tSVT-AV1-PSY Encoder Lib %s\n", SVT_AV1_CVS_VERSION);
Expand Down

0 comments on commit eee58e5

Please sign in to comment.