Signed-off-by: hwren
---
Changelog | 1 +
configure | 4 ++
doc/decoders.texi | 10 +++
doc/general.texi | 8 +++
libavcodec/Makefile| 1 +
libavcodec/allcodecs.c | 1 +
libavcodec/libdavs2.c | 177 +
7 files changed, 202 insertions(+)
create mode 100644 libavcodec/libdavs2.c
diff --git a/Changelog b/Changelog
index d8e2811..ec65f43 100644
--- a/Changelog
+++ b/Changelog
@@ -13,6 +13,7 @@ version :
- adeclip filter
- libtensorflow backend for DNN based filters like srcnn
- vc1 decoder is now bit-exact
+- AVS2 video decoder via libdavs2
version 4.0:
diff --git a/configure b/configure
index 0e8e8a6..059812f 100755
--- a/configure
+++ b/configure
@@ -226,6 +226,7 @@ External library support:
--enable-libcelt enable CELT decoding via libcelt [no]
--enable-libcdio enable audio CD grabbing with libcdio [no]
--enable-libcodec2 enable codec2 en/decoding using libcodec2 [no]
+ --enable-libdavs2enable AVS2 decoding via libdavs2 [no]
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
and libraw1394 [no]
--enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
@@ -1638,6 +1639,7 @@ EXTERNAL_LIBRARY_GPL_LIST="
avisynth
frei0r
libcdio
+libdavs2
librubberband
libvidstab
libx264
@@ -3048,6 +3050,7 @@ libaom_av1_encoder_deps="libaom"
libcelt_decoder_deps="libcelt"
libcodec2_decoder_deps="libcodec2"
libcodec2_encoder_deps="libcodec2"
+libdavs2_decoder_deps="libdavs2"
libfdk_aac_decoder_deps="libfdk_aac"
libfdk_aac_encoder_deps="libfdk_aac"
libfdk_aac_encoder_select="audio_frame_queue"
@@ -6001,6 +6004,7 @@ enabled libcelt && require libcelt celt/celt.h
celt_decode -lcelt0 &&
die "ERROR: libcelt must be installed and
version must be >= 0.11.0."; }
enabled libcaca && require_pkg_config libcaca caca caca.h
caca_create_canvas
enabled libcodec2 && require libcodec2 codec2/codec2.h codec2_create
-lcodec2
+enabled libdavs2 && require_pkg_config libdavs2 "davs2 >= 1.4.95"
davs2.h davs2_decoder_open
enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2
dc1394/dc1394.h dc1394_new
enabled libdrm&& require_pkg_config libdrm libdrm xf86drm.h
drmGetVersion
enabled libfdk_aac&& { check_pkg_config libfdk_aac fdk-aac
"fdk-aac/aacenc_lib.h" aacEncOpen ||
diff --git a/doc/decoders.texi b/doc/decoders.texi
index 8f07bc1..f119917 100644
--- a/doc/decoders.texi
+++ b/doc/decoders.texi
@@ -47,6 +47,16 @@ top-field-first is assumed
@end table
+@section libdavs2
+
+AVS2/IEEE 1857.4 video decoder wrapper.
+
+This decoder allows libavcodec to decode AVS2 streams with libdavs2 library.
+Using it requires the presence of the libdavs2 headers and library during
+configuration. You need to explicitly configure the build with
@code{--enable-libdavs2}.
+
+libdavs2 uses GPLv2, so you may also need to add @code{--enable-gpl} while
configuring.
+
@c man end VIDEO DECODERS
@chapter Audio Decoders
diff --git a/doc/general.texi b/doc/general.texi
index 8c3a04b..7e89e95 100644
--- a/doc/general.texi
+++ b/doc/general.texi
@@ -17,6 +17,14 @@ for more formats. None of them are used by default, their
use has to be
explicitly requested by passing the appropriate flags to
@command{./configure}.
+@section libdavs2
+
+FFmpeg can make use of the libdavs2 library for AVS2 decoding.
+
+Go to @url{https://github.com/pkuvcl/davs2} and follow the instructions for
+installing the library. Then pass @code{--enable-libdavs2} to configure to
+enable it.
+
@section Alliance for Open Media libaom
FFmpeg can make use of the libaom library for AV1 decoding.
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 6b6d6de..5135b97 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -944,6 +944,7 @@ OBJS-$(CONFIG_LIBAOM_AV1_ENCODER) += libaomenc.o
OBJS-$(CONFIG_LIBCELT_DECODER)+= libcelt_dec.o
OBJS-$(CONFIG_LIBCODEC2_DECODER) += libcodec2.o codec2utils.o
OBJS-$(CONFIG_LIBCODEC2_ENCODER) += libcodec2.o codec2utils.o
+OBJS-$(CONFIG_LIBDAVS2_DECODER) += libdavs2.o
OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
OBJS-$(CONFIG_LIBGSM_DECODER) += libgsmdec.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 90d170b..a59b601 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -667,6 +667,7 @@ extern AVCodec ff_libaom_av1_encoder;
extern AVCodec ff_libcelt_decoder;
extern AVCodec ff_libcodec2_encoder;
extern AVCodec ff_libcodec2_decoder;
+extern AVCodec ff_libdavs2_decoder;
extern AVCodec ff_libfdk_aac_encoder;
extern AVCodec ff_libfdk_aac_decoder;
extern AVCodec ff_libgsm_encoder;
diff --git a/libavcodec/libdavs2.c b/l