FFmpeg
======

The libraries avcodec, avformat, avutil, swresample and swscale in this jar
are FFmpeg 8.1 (https://ffmpeg.org), licensed under the GNU Lesser
General Public License version 2.1 or later. The full text of that license is in
COPYING.LGPLv2.1, next to this file.

They are built without --enable-gpl and without --enable-nonfree, so no part
of them is under the GPL or a non-free license.

They are linked dynamically: the webrtc-java-media library loads them as
separate shared libraries, which you may replace with your own build of a
compatible FFmpeg version.


dav1d
-----

libavcodec contains dav1d 1.5.4 (https://code.videolan.org/videolan/dav1d),
the AV1 decoder of the VideoLAN project, linked in statically. dav1d is
licensed under the BSD 2-Clause license, whose text is in
META-INF/licenses/dav1d/COPYING of this jar. It is built from the release tag
1.5.4, without modifications:

  https://code.videolan.org/videolan/dav1d/-/tree/1.5.4


Source code
-----------

The libraries are built from the FFmpeg release n8.1, without
modifications:

  https://github.com/FFmpeg/FFmpeg/tree/n8.1
  https://ffmpeg.org/releases/ffmpeg-8.1.tar.xz

How they are configured and built, including which demuxers, decoders,
parsers and protocols are enabled, is set out in
webrtc-java-media/src/main/cpp/dependencies/ffmpeg/CMakeLists.txt of
webrtc-java, at the release this jar belongs to:

  https://github.com/devopvoid/webrtc-java


Patents
-------

Some of the formats FFmpeg decodes, such as H.264, H.265/HEVC and AAC, may be
covered by patents in some countries. Whether your use of them needs a patent
license is for you to determine.


HEVC/H.265
----------

Disclaimer regarding HEVC/H.265:
This project decodes HEVC/H.265 video through hardware acceleration only, using
the hardware decoders of the operating system or GPU (VideoToolbox, Direct3D
11/12, NVDEC, Vulkan Video). It does not include, bundle, or distribute any
software-based HEVC encoder (such as x265), and it never decodes HEVC in
software. The FFmpeg libraries in the webrtc-java-media platform jars that
decode HEVC in hardware (all but 32-bit ARM Linux) contain FFmpeg's HEVC
decoder, because FFmpeg's hardware decoding runs through it: it reads the
stream's headers and passes the coded data to the hardware decoder, which
decodes the pictures. End-users and distributors are responsible for ensuring
that the underlying operating system or hardware platform holds a valid license
for HEVC playback and encoding.
