- 15 Aug, 2023 1 commit
-
-
moto authored
Summary: In https://github.com/pytorch/audio/pull/3460, we switched the build process for FFmpeg extension. Since it is complicated to install FFmpeg in some environments, at build time, pre-built binaries and its headers are downloaded and used as a scaffolding for torchaudio build. Now even though we did not change any code or FFmpeg version, it turned out that this causes segmentation fault on Ubuntu when using system Python and FFmpeg 4.4 installed via aptitude. While investigating the issue, I swapped the said pre-built FFmpeg scaffolding with FFmpeg 4.4 from aptitude, and the segmentation fault did not happen. This indicates that it is binary compatibility issue. Before https://github.com/pytorch/audio/issues/3460, each binary build job was building FFmpeg 4.1.8 using the same compiler used to build torchaudio, but after https://github.com/pytorch/audio/issues/3460 the environments to build FFmpeg 4.1.8 and torchaudio are different. My hypothesis is that this difference is causing some ABI incompatibility when linking against FFmpeg 4.4. (Also, I don't remember well, but I read somewhere that 4.4 has a different ABI) Through experiments, it turned out upgrading the pre-built FFmpeg scaffolding to 4.4 resolves this. So this commit upgrade the pre-built FFmpeg 4 to 4.4. The potential (yet unconfirmed) downside is that torchaudio will no longer work with 4.1, 4.2, and 4.3. Since FFmpeg 4.4 is what Ubuntu 20.04 and 22.04 support by default, and Google Colab is also on 20.04, I think it is more important to support 4.4. Therefore we drop the support for 4.1-4.3 from normal build (and official distributions). Those who wish to use 4.1-4.3 can build torchaudio from source by linking to specific FFmpeg. Pull Request resolved: https://github.com/pytorch/audio/pull/3561 Reviewed By: hwangjeff Differential Revision: D48340201 Pulled By: mthrok fbshipit-source-id: 7ece82910f290c7cf83f58311c4cf6a384e8795e
-
- 12 Jul, 2023 1 commit
-
-
moto authored
Summary: This commit introduces support for multiple FFmpeg versions for OSS binary distributions. Currently torchaudio only works with FFmpeg 4. This is inconvenient from installing to runtime linking. This commit allows to pick FFmpeg 4, 5 or 6 at runtime, instead of just looking for v4. The way it works is that we compile the FFmpeg extension three times with different FFmpeg and ship them. At runtime, we look for libavutil of specific version and when one is found, load the corresponding FFmpeg extension. The order of preference is 6, 5, then 4. To make the build process simple and reproducible, we use pre-built binaries of FFmpeg during the build. They are LGPL and downloaded from S3 at build time, instead of building every time. The use of pre-built binaries as scaffolding limits the system that can build torchaudio, so it also introduces single FFmpeg version support mode. setting FFMPEG_ROOT during the build will change the way binaries are built so that it will only support one specific version of FFmpeg. Pull Request resolved: https://github.com/pytorch/audio/pull/3464 Differential Revision: D47300223 Pulled By: mthrok fbshipit-source-id: 560c7968315e4c8922afa11a4693f648c0356d04
-
- 07 Jul, 2023 1 commit
-
-
moto authored
Summary: This commit changes the way FFmpeg extension is built. Originally, the build process expected the FFmpeg binaries to be somehow available in build env. This makes the build process unpredictable and prevents default enabling FFmpeg extension. The proposed change uses pre-built FFmpeg binaries as build-time only scaffold, which are built in our CI job https://github.com/pytorch/audio/actions/workflows/ffmpeg.yml. This makes the build process more predictable and removes the necessity to build FFmpeg in our CI. Currently, it supports macOS (arm64, x86_64), unix (x86_64, aarch64) and windows (amd64). The downside is that it no longer works with the architecture not listed above. We can potentially workaround by searching the FFmpeg binaries available in system (the old way) for these system, but since they are not supported by PyTorch, the priority is low. Pull Request resolved: https://github.com/pytorch/audio/pull/3460 Differential Revision: D47261885 Pulled By: mthrok fbshipit-source-id: 223a15e95c9140c95688af968beb35ff40354476
-