Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propagate AVIF support from libgd #7026

Closed
wants to merge 38 commits into from
Closed

Propagate AVIF support from libgd #7026

wants to merge 38 commits into from

Conversation

morsssss
Copy link
Contributor

The work to support AVIF in getimagesize() and imagecreatefromstring() will be done in a followup PR.

Also I realize I need some tests :)

/cc @cmb69

@cmb69
Copy link
Member

cmb69 commented May 21, 2021

Also I realize I need some tests :)

Yes, at least some basic tests should be there.

Also, please resolve the merge conflicts (might be related to Flavio's already merged PR). I'll try to add Windows and AppVeyor support over the weekend.

@morsssss
Copy link
Contributor Author

Agreed - I'd bet the conflicts deal with the includes.

Looks like I now have access to resolve those; so, thanks! :)

.travis.yml Outdated Show resolved Hide resolved
@morsssss
Copy link
Contributor Author

Added a little test suite!

@morsssss
Copy link
Contributor Author

Well, I imagine I'd need to do something else here to help the build include libavif - or to leave it out if it's unwanted. I'm not sure where this gets configured....

@cmb69
Copy link
Member

cmb69 commented May 22, 2021

I have just pushed a commit that fixes the imagetype support (not the real AVIF detection, though). I think that AppVeyor CI will now pass. Please pull that commit.

To get the other CIs green, just remove the attempt to install libavif (and the --with-avif) from all CIs which don't support it (probably all except for Cirrus).

@cmb69
Copy link
Member

cmb69 commented May 22, 2021

There was another failing image test, which I fixed now. I also added AVIF support for Windows; that's not yet available for AppVeyor; I'm working on that.

@cmb69
Copy link
Member

cmb69 commented May 22, 2021

Two CIs green! \o/

I just pushed a commit which is supposed to build with AVIF support on AppVeyor.

morsssss and others added 13 commits May 24, 2021 11:57
To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
We fix an accidental fall through, and the order of enum values (COUNT
has to be last).  We also fix the respective test case.
This is only needed as long as libavif is not part of the official
dependencies.  This commit should be reverted before the PR is merged.
@cmb69
Copy link
Member

cmb69 commented May 24, 2021

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@morsssss
Copy link
Contributor Author

@morsssss, if you rebase your branch onto master (and force push afterwards) instead of merging master into your branch, the PR would be less noisy. :)

@cmb69 Yes! I'm so embarrassed. I rebased to avoid just this problem... but I failed to force push. Then I watched in horror as it told me 302 files had been modified 😭

To avoid possible collision with the original libgd header files, which may be installed somewhere common like /usr/local/include
@morsssss morsssss requested a review from cmb69 June 7, 2021 13:55
@nikic
Copy link
Member

nikic commented Jun 8, 2021

@cmb69 Any further comments from your side?

@morsssss
Copy link
Contributor Author

morsssss commented Jun 8, 2021

🎉🎉🎉

@nikic nikic closed this in 81f6d36 Jun 10, 2021
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
While not mentioned in the changelog entry, the commit to PHP itself does contain a new constant declaration...

Related to:

> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>     `imageavif()` functions, if libgd has been built with avif support.

Includes unit tests.

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373
jrfnl added a commit to PHPCompatibility/PHPCompatibility that referenced this pull request Mar 9, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>     `imageavif()` functions, if libgd has been built with avif support.

Includes unit tests.

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
(mentioned in new features, but not in the new functions list)

> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>    `imageavif()` functions, if libgd has been built with avif support.

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36
jrfnl added a commit to jrfnl/doc-en that referenced this pull request Mar 11, 2022
> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>     `imageavif()` functions, if libgd has been built with avif support.

While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373

> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
>    quality. This constant is only defined, if a libgd is used which supports
>    lossless WebP encoding.

Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]

> * Added CURLOPT_DOH_URL option

> * Added certificate blob options when for libcurl >= 7.71.0:
>
>         CURLOPT_ISSUERCERT_BLOB
>         CURLOPT_PROXY_ISSUERCERT
>         CURLOPT_PROXY_ISSUERCERT_BLOB
>         CURLOPT_PROXY_SSLCERT_BLOB
>         CURLOPT_PROXY_SSLKEY_BLOB
>         CURLOPT_SSLCERT_BLOB
>         CURLOPT_SSLKEY_BLOB

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c

* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]

> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>     `imageavif()` functions, if libgd has been built with avif support.

While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373

> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
>    quality. This constant is only defined, if a libgd is used which supports
>    lossless WebP encoding.

Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb

* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]

> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.

Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de

* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]

Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa

* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]

While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...

Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357

While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...

Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381

Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>

Closes GH-1449.
cmb69 pushed a commit to php/doc-en that referenced this pull request Mar 11, 2022
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]

(mentioned in new features, but not in the new functions list)

> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>    `imageavif()` functions, if libgd has been built with avif support.

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36

* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]

(mentioned in new features, but not in the new functions list)

> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.

While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.

Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6

Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>

Closes GH-1448.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New constants: add missing constants [1]

> * Added CURLOPT_DOH_URL option

> * Added certificate blob options when for libcurl >= 7.71.0:
>
>         CURLOPT_ISSUERCERT_BLOB
>         CURLOPT_PROXY_ISSUERCERT
>         CURLOPT_PROXY_ISSUERCERT_BLOB
>         CURLOPT_PROXY_SSLCERT_BLOB
>         CURLOPT_PROXY_SSLKEY_BLOB
>         CURLOPT_SSLCERT_BLOB
>         CURLOPT_SSLKEY_BLOB

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L220-L229
* php/php-src#6612
* php/php-src@3dad63b
* php/php-src#7194
* php/php-src@b11785c

* PHP 8.1 | MigrationGuide/New constants: add missing constants [2]

> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>     `imageavif()` functions, if libgd has been built with avif support.

While not mentioned in the changelog entry, the commit to PHP does contain a new constant declaration...

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36#diff-00d1efef2247b288c86a6c3bfefac111a4774fbc5453fdc02dcf36c4a23da283R373

> GD:
> * `imagewebp()` can do lossless WebP encoding by passing `IMG_WEBP_LOSSLESS` as
>    quality. This constant is only defined, if a libgd is used which supports
>    lossless WebP encoding.

Refs:
* https://github.com/php/php-src/blob/3a71fcf5caf042a4ce8a586a6b554fd70432e1e2/UPGRADING#L568-L571
* php/php-src#7348
* php/php-src@eb6c9eb

* PHP 8.1 | MigrationGuide/New constants: add missing constants [3]

> Added `POSIX_RLIMIT_KQUEUES` and `POSIX_RLIMIT_NPTS`. These rlimits are only available on FreeBSD.

Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.posix
* php/php-src#6608
* php/php-src@ebca8de

* PHP 8.1 | MigrationGuide/New constants: add missing constants [4]

Refs:
* https://wiki.php.net/rfc/readonly_properties_v2
* php/php-src#7089
* php/php-src@6780aaa

* PHP 8.1 | MigrationGuide/New constants: add missing constants [5]

While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium xchacha* functions, does declare a couple of new constants as well...

Refs:
* php/php-src#6868
* php/php-src@f7f1f7f#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR352-R357

While not mentioned anywhere at all, the commit to PHP itself adding support for the Sodium ristretto255* functions, also declares a number of new constants as well...

Refs:
* php/php-src#6922
* php/php-src@9b794f8#diff-3fe4027560fd299248af1dc1efe04287cc2b6418e8f01755c05c9db64b668b1eR368-R381

Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>

Closes phpGH-1449.
tiffany-taylor pushed a commit to tiffany-taylor/doc-en that referenced this pull request Jan 16, 2023
* PHP 8.1 | MigrationGuide/New functions: add missing functions [1]

(mentioned in new features, but not in the new functions list)

> GD:
> * Avif support is now available through the `imagecreatefromavif()` and
>    `imageavif()` functions, if libgd has been built with avif support.

Refs:
* https://github.com/php/php-src/blob/f67986a9218f4889d9352a87c29337a5b6eaa4bd/UPGRADING#L245-L247
* php/php-src#7026
* php/php-src@81f6d36

* PHP 8.1 | MigrationGuide/New functions: add missing functions [2]

(mentioned in new features, but not in the new functions list)

> `mysqli_result::fetch_column()` has been added to allow fetching a single scalar value from the result set.

While only the method is mentioned in the RFC and the Migration guide, a procedural version of the same was also implemented.

Refs:
* https://www.php.net/manual/en/migration81.new-features.php#migration81.new-features.mysqli.mysqli_fetch_column
* https://wiki.php.net/rfc/mysqli_fetch_column
* php/php-src#6798
* php/php-src@54222a6

Co-authored-by: jrfnl <jrfnl@users.noreply.github.com>

Closes phpGH-1448.
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 12, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.

Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.

`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.

 - [^1]: https://packages.ubuntu.com/jammy/libavif-dev
 - [^2]: https://packages.ubuntu.com/noble/libavif-dev
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 12, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.

Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.

`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.

[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Ayesh added a commit to Ayesh/php-src that referenced this pull request Sep 13, 2024
When the avif support was first added (phpGH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.

Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.

`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.

[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
TimWolla pushed a commit that referenced this pull request Sep 15, 2024
When the avif support was first added (GH-7026), php-src did not
use GitHub Actions. When we moved to GitHub Actions for CI, the
`--with-avif` option nor the `libavif-dev` dependencies were not
added.

Cirrus CI still runs the tests, and now that we no longer use
Travis CI, this brings parity to test avif on x64 tests on
GitHub Actions as well.

`libavif-dev` package's x86 builds seem to be missing[^1][^2] on older
Ubuntu versions, so this commit only adds it for x64 builds.

[^1]: https://packages.ubuntu.com/jammy/libavif-dev
[^2]: https://packages.ubuntu.com/noble/libavif-dev
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants