blob: 754d21c8edd00e82762d7c68b09e8e1c0b3bc8b1 [file] [log] [blame]
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.