| Name: ffmpeg |
| URL: http://ffmpeg.org/ |
| License: LGPL 2.1 |
| License File: CREDITS.fuchsia |
| Upstream Git: git://source.ffmpeg.org/ffmpeg.git |
| Last Upstream Merge: 6a97ba521558ce131fe839eed2d51ff745280e1d, Feb 11 2018 |
| 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 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. |
| |
| BUILD.gn: Has the targets for building FFmpeg for Fuchsia. |
| |
| ffmpeg_generated.gni: Pregenerated listing of files necessary to build |
| every variation. See fuchsia/scripts/generate_gn.py 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: http://ffmpeg.org/developer.html#Submitting-patches-1 > |
| |
| 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://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 Fuchsia's FFmpeg Git repository."> |
| |
| |
| Performing An Upstream Merge |
| ============================ |
| |
| # Note: upstream/master automatically tracks upstream. |
| |
| # 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, namely |
| # ../../prebuilt/third_party/sysroot/linux |
| |
| # 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 |
| |
| # Build the ffmpeg for all profiles and architectures |
| ./fuchsia/scripts/build_ffmpeg.py x64 |
| ./fuchsia/scripts/build_ffmpeg.py arm64 |
| |
| # Update Fuchsia stuff based on the results of the builds |
| ./fuchsia/scripts/copy_config.sh |
| ./fuchsia/scripts/generate_gn.py |
| |
| # Use 'git add' to add new files as necessary (not the build.* dirs) |
| # Commit changes |
| # Test for regressions |
| # Submit |