| Name: ffmpeg |
| URL: http://ffmpeg.org/ |
| License: LGPL 2.1 |
| License File: CREDITS.chromium |
| Upstream Git: git://source.ffmpeg.org/ffmpeg.git |
| Last Upstream Merge: adf72718a41943bb62b3fabd5dbe33f5b9a6e63e, Dec 11 2020 |
| |
| This file documents the layout of the Chromium copy of FFmpeg, some common |
| tasks, and how to create the build files and related configurations. |
| |
| FFmpeg Layout: |
| ============== |
| |
| Chromium'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 |
| Chromium-specific bits, minus the gn files, are located under the chromium/ |
| folder off the root. |
| |
| BUILD.gn: Has the targets for building FFmpeg for Chrome. |
| |
| ffmpeg_generated.gni: Pregenerated listing of files necessary to build |
| every platform. See chromium/scripts/generate_gn.py for more details. |
| |
| chromium/scripts: Utilities for building the gn and config files. |
| |
| chromium/config/...: Pregenerated FFmpeg config options for each platform |
| and architecture; e.g., ChromeOS: ARM-Neon, Linux: X64, etc. |
| |
| chromium/patches/README: Details of Chromium-specific changes that haven't |
| yet made it upstream. |
| |
| |
| Help w/ Common Tasks: |
| ===================== |
| |
| -- Submitting changes to Chromium's FFmpeg Git repository. |
| |
| The goal of Chromium'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 chromium/patches/README with a link to the |
| tracking issue and code review for your change. Reviews are performed with |
| Gerrit at https://chromium-review.googlesource.com. |
| |
| 1) Create a branch and make a local, single commit. Gerrit differs from |
| Rietveld in that you must have a single commit, so use git commit --amend |
| if you need to make changes. Verify that your commit contains a |
| Change-Id field, which is how Gerrit coalesces separate patch sets into the |
| same code review. |
| |
| 2) Upload for review: |
| git cl upload |
| |
| 3) Commit via https://chromium-review.googlesource.com once approved. |
| |
| 4) If needed, submit a Chromium-side change to update DEPS. |
| |
| -- Upstreaming a patch. |
| |
| <checkout copy of upstream repo> |
| git checkout <hash of last Chromium 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: http://ffmpeg.org/developer.html#Submitting-patches-1 > |
| |
| Once your change has been upstreamed, please update the chromium/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://source.ffmpeg.org/ffmpeg.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 Chromium's FFmpeg Git repository."> |
| |
| |
| Performing An Upstream Merge |
| ============================ |
| |
| Currently this is an extremely tedious process that requires access to a Linux, |
| Mac, and Windows development machine and lot of blood, sweat, and tears. |
| |
| The instructions are also prone to going stale, so in the interest of |
| collaboration and sharing tips we have moved to a public document: |
| https://docs.google.com/a/chromium.org/document/d/14bqZ9NISsyEO3948wehhJ7wc9deTIz-yHUhF1MQp7Po/edit# |