third_party/ffmpeg: restart based on github upstream

This CL is based on a recent ToT from the github mirror of ffmpeg.
Previously, we had used Chromium's fork of github as our upstream,
modifying their gn build stuff a bit to make it work for fuchsia.
This wasn't really workable long-term, because the Chromium ffmpeg
rolls are extremely complex and involve 'make'ing a bunch of configs
we don't care about on multiple host machines.

The new approach is to use the github mirror of ffmpeg as our
upstream and to adapt Chromium's gn build stuff to work for us.
The result is something we can roll pretty easily using one linux
host.

The following files are adapted from Chromium:

	BUILD.gn
	README.fuchsia
	ffmpeg_options.gni
	fuchsia/patches/README
	fuchsia/scripts/...

These files are original ffmpeg source files that have been modified
to eliminate compiler warnings. Chromium does this as well:

	libavcodec/utils.c
	libavformat/utils.c

These files are generated by the 'roll' procedure:

	CREDITS.fuchsia
	ffmpeg_generated.gni
	fuchsia/config/...

Change-Id: Idb4926ca2bf8e9f1a9c6450318e8ea20d5dff5ff
4120 files changed
tree: a15263d40c1d9a16a2e0b3a49c0446e951076437
  1. compat/
  2. doc/
  3. fuchsia/
  4. libavcodec/
  5. libavdevice/
  6. libavfilter/
  7. libavformat/
  8. libavresample/
  9. libavutil/
  10. libpostproc/
  11. libswresample/
  12. libswscale/
  13. presets/
  14. tests/
  15. tools/
  16. .gitattributes
  17. .gitignore
  18. .travis.yml
  19. arch.mak
  20. BUILD.gn
  21. Changelog
  22. cmdutils.c
  23. cmdutils.h
  24. cmdutils_common_opts.h
  25. cmdutils_opencl.c
  26. common.mak
  27. configure
  28. CONTRIBUTING.md
  29. COPYING.GPLv2
  30. COPYING.GPLv3
  31. COPYING.LGPLv2.1
  32. COPYING.LGPLv3
  33. CREDITS
  34. CREDITS.fuchsia
  35. ffmpeg.c
  36. ffmpeg.h
  37. ffmpeg_cuvid.c
  38. ffmpeg_dxva2.c
  39. ffmpeg_filter.c
  40. ffmpeg_generated.gni
  41. ffmpeg_opt.c
  42. ffmpeg_options.gni
  43. ffmpeg_qsv.c
  44. ffmpeg_vaapi.c
  45. ffmpeg_vdpau.c
  46. ffmpeg_videotoolbox.c
  47. ffplay.c
  48. ffprobe.c
  49. ffserver.c
  50. ffserver_config.c
  51. ffserver_config.h
  52. INSTALL.md
  53. library.mak
  54. LICENSE.md
  55. MAINTAINERS
  56. Makefile
  57. README.fuchsia
  58. README.md
  59. RELEASE
  60. version.sh
README.md

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • ffserver is a multimedia streaming server for live broadcasts.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.