blob: 84a910b1e8dfbaa512e2ba132f9b02d507beb21f [file] [log] [blame]
Name: ffmpeg
License: LGPL 2.1
License File: CREDITS.fuchsia
Upstream Git: git://
Last Upstream Merge: 6a97ba521558ce131fe839eed2d51ff745280e1d, Feb 11 2018
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 is a fork of the upstream git repository, see the
tags above for the latest merged upstream revision. All of the
Fuchsia-specific bits, minus the gn files, are located under the fuchsia/
folder off the root. Has the targets for building FFmpeg for Fuchsia.
ffmpeg_generated.gni: Pregenerated listing of files necessary to build
every variation. See fuchsia/scripts/ for more details.
fuchsia/scripts: Utilities for building the gn and config files.
fuchsia/config/...: Pregenerated FFmpeg config options for each profile
and architecture.
fuchsia/patches/README: Details of Fuchsia-specific changes that haven't
yet made it upstream.
Help w/ Common Tasks:
-- Submitting changes to Fuchsia's FFmpeg Git repository.
The goal of Fuchsia's FFmpeg repository is to just be a mirror of the upstream
Git repository. This means every change made must be upstreamed. If you make
a change, please add an entry to fuchsia/patches/README with a link to the
tracking issue and code review for your change.
-- Upstreaming a patch.
<checkout copy of upstream repo>
git checkout <hash of last Fuchsia FFmpeg, see tag above> -b my_patch
git apply <patch. pulled from code review or cherry-picked from this repo>
git rebase origin/master
< Follow FFmpeg guide: >
Once your change has been upstreamed, please update the fuchsia/patches/README
file with the status. The next time an upstream merge is done, the committer
will clear out all the patches which have been upstreamed.
-- Cherry-picking a patch from upstream.
# Tell our repo about the upstream one.
git remote add upstream git://
git fetch upstream
# Create a new branch based off of master for committing our patch.
git checkout origin/master -b my_new_branch
# Pull the patch out of upstream.
git cherry-pick -x <hash of commit in upstream>
<Follow rest of "Submitting changes to Fuchsia's FFmpeg Git repository.">
Performing An Upstream Merge
# Note: upstream/master automatically tracks upstream.
# Create a new branch based off of master.
git checkout origin/master -b my_new_branch
# Merge with master, taking theirs in case of conflicts.
git merge -X theirs upstream/master
# Remove removed files.
git diff --name-only --diff-filter=U | xargs git rm
# Install nasm
sudo apt-get install nasm
# Build the ffmpeg for all profiles and architectures
./fuchsia/scripts/ x64
./fuchsia/scripts/ arm64
# Update Fuchsia stuff based on the results of the builds
# Use 'git add' to add new files as necessary (not the build.* dirs)
# Commit changes
# Test for regressions
# Submit