| Name: ffmpeg |
| URL: http://ffmpeg.org/ |
| License: LGPL 2.1 |
| License File: CREDITS.fuchsia |
| Upstream Git: https://chromium.googlesource.com/chromium/third_party/ffmpeg/ |
| Last Upstream Merge: 8d21d41d8bec5c0b266ee305d1a708dc5c23b594, Mar 29, 2023 |
| Description: |
| |
| This file documents the layout of the Fuchsia copy of FFmpeg, some common |
| tasks, and how to create the build files and related configurations. |
| |
| FFmpeg Layout: |
| ============== |
| |
| Fuchsia's copy of FFmpeg combines files in fuchsia.git and an unmodified import of |
| https://chromium.googlesource.com/chromium/third_party/ffmpeg/. See the tags above |
| for the latest imported revision. The Chromium ffmpeg repo is imported under |
| third_party/ffmpeg/src, and the remainder of the files and directories in |
| third_party/ffmpeg (including files generated during a roll) are checked in to |
| fuchsia.git. |
| |
| BUILD.gn: Has the targets for building FFmpeg for Fuchsia. |
| |
| ffmpeg_generated.gni: Pregenerated listing of files necessary to build |
| every variation. See scripts/generate_gn.py for more details. |
| |
| scripts/...: Utilities for building the gn and config files. |
| |
| config/...: Pregenerated FFmpeg config options for each profile |
| and architecture. |
| |
| |
| Help w/ Common Tasks: |
| ===================== |
| |
| -- Changing the ffmpeg build or GN generation process. |
| |
| This is done in fuchsia.git like any other fuchsia change. Ffmpeg can be built |
| locally along with the rest of fuchsia using instructions found in |
| //src/media/lib/ffmpeg/BUILD.gn. When changes are made to the ffmpeg files in |
| fuchsia.git, the prebuilder should be checked to make sure it's still working. |
| |
| -- Modifying the Chromium ffmpeg repo. |
| |
| Changes to the Chromium ffmpeg repo must be coordinated with the Chromium media |
| team as they will impact the Chromium products. |
| |
| |
| Performing a Roll |
| ================= |
| |
| Configure your fuchsia build to build ffmpeg locally. See |
| //src/media/lib/ffmpeg/BUILD.gn for instructions. |
| |
| Integrate the new version of Chromium's ffmpeg repo and update the tag at the |
| top of this file. |
| |
| Make sure your path is set up to use the right yasm and clang. yasm needs to |
| be installed, and clang is in //prebuilt/third_party/clang/linux-x64/bin. |
| |
| Make sure that sysroot is available at //prebuilt/third_party/sysroot/linux. |
| |
| Make sure the target //src/media/lib/ffmpeg/profiles is among your package |
| labels, for example: |
| |
| fx set workstation_eng.chromebook-x64 --release \ |
| --with //src/media/lib/ffmpeg/profiles \ |
| --args use_prebuilt_ffmpeg=false |
| |
| Perform the following steps in //build/secondary/third_party/ffmpeg: |
| |
| rm -rf config |
| rm -rf roll |
| ./scripts/roll.py \ |
| <out>/gen/src/media/lib/ffmpeg/profiles/profiles_ffmpeg_profile_set |
| |
| where <out> is your Fuchsia out directory (e.g. ~/fuchsia/out/default). |
| |
| Build and test for regressions. |
| |
| Prepare and submit a CL for the ffmpeg repo changes. The scripts leave a |
| roll/ directory in //build/secondary/third_party/ffmpeg. That should not |
| be checked in. |
| |
| Once your changes are integrated, make sure the prebuilder is still working |
| properly. |