aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-02-09 11:38:38 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-02-09 11:38:38 +0100
commit6434cb8463988f94659da773d338286343528571 (patch)
tree8f90bbd347d894b93f07ec53a1ed947096c37fcf
parent4d912e229cc8d946e85ea967063619dd78a83ede (diff)
Imported Upstream version 1.2.3upstream/1.2.3
-rw-r--r--ChangeLog87
-rw-r--r--Makefile.in5
-rw-r--r--NEWS2
-rw-r--r--aclocal.m46
-rw-r--r--common/Makefile.in2
-rw-r--r--common/m4/Makefile.in2
-rwxr-xr-xconfigure93
-rw-r--r--configure.ac36
-rw-r--r--docs/Makefile.in2
-rw-r--r--ext/Makefile.in2
-rw-r--r--ext/libav/Makefile.in2
-rw-r--r--ext/libav/gstavauddec.c7
-rw-r--r--ext/libav/gstavaudenc.c2
-rw-r--r--ext/libav/gstavcfg.c4
-rw-r--r--ext/libav/gstavcodecmap.c17
-rw-r--r--ext/libav/gstavdeinterlace.c1
-rw-r--r--ext/libav/gstavmux.c6
-rw-r--r--ext/libav/gstavviddec.c2
-rw-r--r--ext/libav/gstavvidenc.c2
-rw-r--r--ext/libswscale/Makefile.in2
-rw-r--r--gst-libav.doap10
-rw-r--r--gst-libav.spec2
-rw-r--r--gst-libs/Makefile.in2
-rw-r--r--gst-libs/ext/Makefile.in2
-rw-r--r--gst-libs/ext/libav/Changelog30
-rw-r--r--gst-libs/ext/libav/RELEASE2
-rw-r--r--gst-libs/ext/libav/libavcodec/ac3dec.c2
-rw-r--r--gst-libs/ext/libav/libavcodec/alsdec.c5
-rw-r--r--gst-libs/ext/libav/libavcodec/arm/int_neon.S12
-rw-r--r--gst-libs/ext/libav/libavcodec/cavsdec.c11
-rw-r--r--gst-libs/ext/libav/libavcodec/dsputil.c4
-rw-r--r--gst-libs/ext/libav/libavcodec/eacmv.c7
-rw-r--r--gst-libs/ext/libav/libavcodec/ffv1dec.c1
-rw-r--r--gst-libs/ext/libav/libavcodec/flashsv.c6
-rw-r--r--gst-libs/ext/libav/libavcodec/gifdec.c103
-rw-r--r--gst-libs/ext/libav/libavcodec/h263dec.c28
-rw-r--r--gst-libs/ext/libav/libavcodec/h264.c12
-rw-r--r--gst-libs/ext/libav/libavcodec/h264_cavlc.c4
-rw-r--r--gst-libs/ext/libav/libavcodec/h264_ps.c4
-rw-r--r--gst-libs/ext/libav/libavcodec/indeo4.c24
-rw-r--r--gst-libs/ext/libav/libavcodec/lzw.c30
-rw-r--r--gst-libs/ext/libav/libavcodec/lzw.h2
-rw-r--r--gst-libs/ext/libav/libavcodec/motionpixels.c1
-rw-r--r--gst-libs/ext/libav/libavcodec/mpeg4video.h1
-rw-r--r--gst-libs/ext/libav/libavcodec/mpeg4video_parser.c2
-rw-r--r--gst-libs/ext/libav/libavcodec/mpeg4videodec.c53
-rw-r--r--gst-libs/ext/libav/libavcodec/mpegvideo.c14
-rw-r--r--gst-libs/ext/libav/libavcodec/pcx.c2
-rw-r--r--gst-libs/ext/libav/libavcodec/pngdsp.c2
-rw-r--r--gst-libs/ext/libav/libavcodec/proresdec.c76
-rw-r--r--gst-libs/ext/libav/libavcodec/pthread.c10
-rw-r--r--gst-libs/ext/libav/libavcodec/rv30.c14
-rw-r--r--gst-libs/ext/libav/libavcodec/shorten.c10
-rw-r--r--gst-libs/ext/libav/libavcodec/truemotion1.c25
-rw-r--r--gst-libs/ext/libav/libavcodec/vc1.c1
-rw-r--r--gst-libs/ext/libav/libavcodec/vmnc.c417
-rw-r--r--gst-libs/ext/libav/libavcodec/x86/ac3dsp.asm36
-rw-r--r--gst-libs/ext/libav/libavcodec/x86/ac3dsp_init.c1
-rw-r--r--gst-libs/ext/libav/libavdevice/alsa-audio-dec.c2
-rw-r--r--gst-libs/ext/libav/libavformat/avidec.c16
-rw-r--r--gst-libs/ext/libav/libavformat/avio.c2
-rw-r--r--gst-libs/ext/libav/libavformat/matroskadec.c6
-rw-r--r--gst-libs/ext/libav/libavformat/mov.c11
-rw-r--r--gst-libs/ext/libav/libavformat/nut.c10
-rw-r--r--gst-libs/ext/libav/libavformat/nut.h2
-rw-r--r--gst-libs/ext/libav/libavformat/nutdec.c5
-rw-r--r--gst-libs/ext/libav/libavformat/nutenc.c3
-rw-r--r--gst-libs/ext/libav/libavformat/oggparseogm.c5
-rw-r--r--gst-libs/ext/libav/libavformat/omadec.c7
-rw-r--r--gst-libs/ext/libav/libavformat/pmpdec.c5
-rw-r--r--gst-libs/ext/libav/libavformat/sdp.c2
-rw-r--r--gst-libs/ext/libav/libavformat/segafilm.c35
-rw-r--r--gst-libs/ext/libav/libavformat/utils.c15
-rw-r--r--gst-libs/ext/libav/libavresample/audio_mix.c20
-rw-r--r--gst-libs/ext/libav/libavresample/utils.c3
-rw-r--r--gst-libs/ext/libav/libavutil/mathematics.c7
-rw-r--r--gst-libs/ext/libav/tests/fate/ac3.mak2
-rw-r--r--pkgconfig/Makefile.in2
-rw-r--r--tests/Makefile.in2
-rw-r--r--tests/check/Makefile.in2
-rw-r--r--tests/files/Makefile.in2
81 files changed, 821 insertions, 595 deletions
diff --git a/ChangeLog b/ChangeLog
index 28dc75c..b90d1ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,92 @@
+=== release 1.2.3 ===
+
+2014-02-08 Sebastian Dröge <slomo@coaxion.net>
+
+ * configure.ac:
+ releasing 1.2.3
+
+2014-02-04 18:17:32 +0200 Dmitry Melnichenko <dmitry.m@samsung.com>
+
+ * ext/libav/gstavmux.c:
+ avmux: Fix invalid address passing to av_opt_set_int()
+ https://bugzilla.gnome.org/show_bug.cgi?id=723615
+
+2014-01-21 22:58:42 +1100 Tim 'mithro' Ansell <mithro@mithis.com>
+
+ * ext/libav/gstavmux.c:
+ avmux: Force DV audio input format to 48kHz, 2 channels
+ libavformat only supports muxing 16bit, 48kHz stereo into DV containers.
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722672
+
+2014-02-04 16:12:59 +0100 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/ext/libav:
+ libav: Update to v9.11 bugfix release
+
+2014-01-15 09:02:33 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+ * ext/libav/gstavauddec.c:
+ * ext/libav/gstavaudenc.c:
+ * ext/libav/gstavcfg.c:
+ * ext/libav/gstavdeinterlace.c:
+ * ext/libav/gstavviddec.c:
+ * ext/libav/gstavvidenc.c:
+ gst-libav: fix context leaks
+ A AVCodecContext needs cleaning up before being freed.
+ Go through all of the allocations/setups to ensure none of them
+ can leak a context or its contents.
+
+2014-01-11 19:19:24 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/libav/gstavviddec.c:
+ Revert "avviddec: release buffers when not direct rendering"
+ This reverts commit fcf09aff3272a12b1f91168a856637f146ced113.
+ This broke the build. In theory the problem might occur with
+ libav 9 too, but it seems in practice it doesn't, unless you
+ link against ffmpeg 2.x, but then you're on your own anyway.
+ https://bugzilla.gnome.org/show_bug.cgi?id=721077
+
+2014-01-10 17:18:53 +0100 Wim Taymans <wtaymans@redhat.com>
+
+ * ext/libav/gstavviddec.c:
+ avviddec: release buffers when not direct rendering
+ New libav will not call the release_buffer callback anymore when
+ avcodec_default_get_buffer() is called from get_buffer. Releasing of the
+ memory in a picture should now be done by registering a callback to the
+ avbuffer objects in the picture. There is some compatibility code to
+ wrap the memory we provide in get_buffer in avbuffer with a callback to
+ release_buffer but that is not done when avcodec_default_get_buffer()
+ is called.
+ Work around this by adding a dummy avbuffer object to the picture that
+ will release the frame.
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=721077
+
+2014-01-03 15:58:26 +0000 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/libav/gstavcodecmap.c:
+ avcodecmap: fix regression with wmv3 video in WMVA format
+ The VC-1 decoder should handle that. Before avdec_wmv3 handled
+ it, but then we added format=WMV3 to its sink pad template
+ caps, at which point nothing handled WMVA any longer.
+ https://bugzilla.gnome.org/show_bug.cgi?id=697665
+
+2013-12-27 12:06:28 +0100 Sebastian Dröge <sebastian@centricular.com>
+
+ * configure.ac:
+ configure.ac: Remove warning when building against a system version of libav
+ Nowadays libav has proper releases and API/ABI guarantees.
+ We're not living in last decade.
+
=== release 1.2.2 ===
-2013-12-26 Sebastian Dröge <slomo@coaxion.net>
+2013-12-26 17:55:41 +0100 Sebastian Dröge <sebastian@centricular.com>
+ * ChangeLog:
+ * NEWS:
+ * RELEASE:
* configure.ac:
- releasing 1.2.2
+ * gst-libav.doap:
+ Release 1.2.2
2013-12-07 11:35:09 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net>
diff --git a/Makefile.in b/Makefile.in
index f5062d5..89225a8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -779,9 +779,10 @@ distcheck: dist
&& $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build \
- && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ && ../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
+ --srcdir=.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/NEWS b/NEWS
index 18ce783..1b038db 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,2 @@
-This is GStreamer Libav Plugins 1.2.2
+This is GStreamer Libav Plugins 1.2.3
diff --git a/aclocal.m4 b/aclocal.m4
index d4fae24..9a6a131 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.14 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
@@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.14'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14], [],
+m4_if([$1], [1.14.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/common/Makefile.in b/common/Makefile.in
index 34aa445..5276bf7 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 75b9555..540e7db 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/configure b/configure
index 0aed3f6..173eea7 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GStreamer libav 1.2.2.
+# Generated by GNU Autoconf 2.69 for GStreamer libav 1.2.3.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GStreamer libav'
PACKAGE_TARNAME='gst-libav'
-PACKAGE_VERSION='1.2.2'
-PACKAGE_STRING='GStreamer libav 1.2.2'
+PACKAGE_VERSION='1.2.3'
+PACKAGE_STRING='GStreamer libav 1.2.3'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -1519,7 +1519,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GStreamer libav 1.2.2 to adapt to many kinds of systems.
+\`configure' configures GStreamer libav 1.2.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1590,7 +1590,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer libav 1.2.2:";;
+ short | recursive ) echo "Configuration of GStreamer libav 1.2.3:";;
esac
cat <<\_ACEOF
@@ -1759,7 +1759,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer libav configure 1.2.2
+GStreamer libav configure 1.2.3
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2174,7 +2174,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GStreamer libav $as_me 1.2.2, which was
+It was created by GStreamer libav $as_me 1.2.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3152,7 +3152,7 @@ fi
# Define the identity of the package.
PACKAGE='gst-libav'
- VERSION='1.2.2'
+ VERSION='1.2.3'
cat >>confdefs.h <<_ACEOF
@@ -3362,9 +3362,9 @@ END
fi
- PACKAGE_VERSION_MAJOR=$(echo 1.2.2 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 1.2.2 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 1.2.2 | cut -d'.' -f3)
+ PACKAGE_VERSION_MAJOR=$(echo 1.2.3 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 1.2.3 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 1.2.3 | cut -d'.' -f3)
@@ -3375,7 +3375,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 1.2.2 | cut -d'.' -f4)
+ NANO=$(echo 1.2.3 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8021,10 +8021,10 @@ fi
done
- GST_CURRENT=202
+ GST_CURRENT=203
GST_REVISION=0
- GST_AGE=202
- GST_LIBVERSION=202:0:202
+ GST_AGE=203
+ GST_LIBVERSION=203:0:203
@@ -17349,66 +17349,7 @@ $as_echo "#define LIBAV_SOURCE \"system install\"" >>confdefs.h
HAVE_LIBAV_UNINSTALLED=0
{ $as_echo "$as_me:${as_lineno-$LINENO}: Using system-installed libav code" >&5
$as_echo "$as_me: Using system-installed libav code" >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
- ======================================================================
- WARNING: you have chosen to build gst-libav against a random
- external version of Libav instead of building it against the tested
- internal Libav snapshot that is included with gst-libav.
-
- This is a very bad idea. So bad in fact that words cannot express
- just how bad it is. Suffice to say that it is BAD.
-
- The GStreamer developers cannot and will not support a gst-libav
- built this way. Any bug reports that indicate there is an external
- version of Libav involved will be closed immediately without further
- investigation.
-
- The reason such a setup can't be supported is that the Libav API
- and ABI is in constant flux, yet there aren't any official releases
- of the Libav library to develop against. This makes it impossible
- to guarantee that gst-libav will work reliably, or even compile,
- with a randomly picked version Libav. Even if gst-libav compiles
- and superficially appears to work fine against your chosen external
- Libav version, that might just not be the case on other systems, or
- even the same system at a later time, or when using decoders,
- encoders, demuxers or muxers that have not been tested.
-
- Please do not create or distribute binary packages of gst-Libav
- that link against an external libav. Thank you!
- ======================================================================
- " >&5
-$as_echo "$as_me: WARNING:
- ======================================================================
- WARNING: you have chosen to build gst-libav against a random
- external version of Libav instead of building it against the tested
- internal Libav snapshot that is included with gst-libav.
-
- This is a very bad idea. So bad in fact that words cannot express
- just how bad it is. Suffice to say that it is BAD.
-
- The GStreamer developers cannot and will not support a gst-libav
- built this way. Any bug reports that indicate there is an external
- version of Libav involved will be closed immediately without further
- investigation.
-
- The reason such a setup can't be supported is that the Libav API
- and ABI is in constant flux, yet there aren't any official releases
- of the Libav library to develop against. This makes it impossible
- to guarantee that gst-libav will work reliably, or even compile,
- with a randomly picked version Libav. Even if gst-libav compiles
- and superficially appears to work fine against your chosen external
- Libav version, that might just not be the case on other systems, or
- even the same system at a later time, or when using decoders,
- encoders, demuxers or muxers that have not been tested.
-
- Please do not create or distribute binary packages of gst-Libav
- that link against an external libav. Thank you!
- ======================================================================
- " >&2;}
-
- sleep 15
else
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: Using local Libav snapshot" >&5
$as_echo "$as_me: Using local Libav snapshot" >&6;}
@@ -18233,7 +18174,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GStreamer libav $as_me 1.2.2, which was
+This file was extended by GStreamer libav $as_me 1.2.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18299,7 +18240,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GStreamer libav config.status 1.2.2
+GStreamer libav config.status 1.2.3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index c1066ee..03057e6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ(2.62)
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT(GStreamer libav, 1.2.2,
+AC_INIT(GStreamer libav, 1.2.3,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-libav)
@@ -42,7 +42,7 @@ GST_API_VERSION=1.0
AC_SUBST(GST_API_VERSION)
AG_GST_LIBTOOL_PREPARE
-AS_LIBTOOL(GST, 202, 0, 202)
+AS_LIBTOOL(GST, 203, 0, 203)
dnl *** required versions of GStreamer stuff ***
GST_REQ=1.2.0
@@ -257,39 +257,7 @@ if test "x$with_system_libav" = "xyes"; then
AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
HAVE_LIBAV_UNINSTALLED=0
AC_MSG_NOTICE([Using system-installed libav code])
- AC_MSG_WARN([
- ======================================================================
- WARNING: you have chosen to build gst-libav against a random
- external version of Libav instead of building it against the tested
- internal Libav snapshot that is included with gst-libav.
-
- This is a very bad idea. So bad in fact that words cannot express
- just how bad it is. Suffice to say that it is BAD.
-
- The GStreamer developers cannot and will not support a gst-libav
- built this way. Any bug reports that indicate there is an external
- version of Libav involved will be closed immediately without further
- investigation.
-
- The reason such a setup can't be supported is that the Libav API
- and ABI is in constant flux, yet there aren't any official releases
- of the Libav library to develop against. This makes it impossible
- to guarantee that gst-libav will work reliably, or even compile,
- with a randomly picked version Libav. Even if gst-libav compiles
- and superficially appears to work fine against your chosen external
- Libav version, that might just not be the case on other systems, or
- even the same system at a later time, or when using decoders,
- encoders, demuxers or muxers that have not been tested.
-
- Please do not create or distribute binary packages of gst-Libav
- that link against an external libav. Thank you!
- ======================================================================
- ])
-
- dnl No, this is not too extreme, we want people to see and read the above
- sleep 15
else
-
AC_MSG_NOTICE([Using local Libav snapshot])
dnl libgstlibav.la: include dirs
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 27df8c2..8ac84f7 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/ext/Makefile.in b/ext/Makefile.in
index a276d68..98351c3 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/ext/libav/Makefile.in b/ext/libav/Makefile.in
index 806dadb..10958d4 100644
--- a/ext/libav/Makefile.in
+++ b/ext/libav/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/ext/libav/gstavauddec.c b/ext/libav/gstavauddec.c
index f195ca0..b685928 100644
--- a/ext/libav/gstavauddec.c
+++ b/ext/libav/gstavauddec.c
@@ -150,9 +150,11 @@ gst_ffmpegauddec_finalize (GObject * object)
{
GstFFMpegAudDec *ffmpegdec = (GstFFMpegAudDec *) object;
- if (ffmpegdec->context != NULL)
+ if (ffmpegdec->context != NULL) {
+ gst_ffmpeg_avcodec_close (ffmpegdec->context);
av_free (ffmpegdec->context);
- ffmpegdec->context = NULL;
+ ffmpegdec->context = NULL;
+ }
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -199,6 +201,7 @@ gst_ffmpegauddec_start (GstAudioDecoder * decoder)
oclass = (GstFFMpegAudDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
GST_OBJECT_LOCK (ffmpegdec);
+ gst_ffmpeg_avcodec_close (ffmpegdec->context);
if (avcodec_get_context_defaults3 (ffmpegdec->context, oclass->in_plugin) < 0) {
GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults");
GST_OBJECT_UNLOCK (ffmpegdec);
diff --git a/ext/libav/gstavaudenc.c b/ext/libav/gstavaudenc.c
index 83a2eee..11969cb 100644
--- a/ext/libav/gstavaudenc.c
+++ b/ext/libav/gstavaudenc.c
@@ -191,6 +191,7 @@ gst_ffmpegaudenc_finalize (GObject * object)
GstFFMpegAudEnc *ffmpegaudenc = (GstFFMpegAudEnc *) object;
/* clean up remaining allocated data */
+ gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
av_free (ffmpegaudenc->context);
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -203,6 +204,7 @@ gst_ffmpegaudenc_start (GstAudioEncoder * encoder)
GstFFMpegAudEncClass *oclass =
(GstFFMpegAudEncClass *) G_OBJECT_GET_CLASS (ffmpegaudenc);
+ gst_ffmpeg_avcodec_close (ffmpegaudenc->context);
if (avcodec_get_context_defaults3 (ffmpegaudenc->context,
oclass->in_plugin) < 0) {
GST_DEBUG_OBJECT (ffmpegaudenc, "Failed to set context defaults");
diff --git a/ext/libav/gstavcfg.c b/ext/libav/gstavcfg.c
index 8c368ad..64e8398 100644
--- a/ext/libav/gstavcfg.c
+++ b/ext/libav/gstavcfg.c
@@ -839,8 +839,10 @@ gst_ffmpeg_cfg_install_property (GstFFMpegVidEncClass * klass, guint base)
}
}
- if (ctx)
+ if (ctx) {
+ gst_ffmpeg_avcodec_close (ctx);
av_free (ctx);
+ }
}
/* returns TRUE if it is a known property for this config system,
diff --git a/ext/libav/gstavcodecmap.c b/ext/libav/gstavcodecmap.c
index a5be63e..fe52cff 100644
--- a/ext/libav/gstavcodecmap.c
+++ b/ext/libav/gstavcodecmap.c
@@ -1438,7 +1438,22 @@ gst_ffmpeg_codecid_to_caps (enum CodecID codec_id,
case AV_CODEC_ID_VC1:
caps =
gst_ff_vid_caps_new (context, NULL, codec_id, encode, "video/x-wmv",
- "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL);
+ "wmvversion", G_TYPE_INT, 3, NULL);
+ if (!context && !encode) {
+ GValue arr = { 0, };
+ GValue item = { 0, };
+
+ g_value_init (&arr, GST_TYPE_LIST);
+ g_value_init (&item, G_TYPE_STRING);
+ g_value_set_string (&item, "WVC1");
+ gst_value_list_append_value (&arr, &item);
+ g_value_set_string (&item, "WMVA");
+ gst_value_list_append_and_take_value (&arr, &item);
+ gst_caps_set_value (caps, "format", &arr);
+ g_value_unset (&arr);
+ } else {
+ gst_caps_set_simple (caps, "format", G_TYPE_STRING, "WVC1", NULL);
+ }
break;
case AV_CODEC_ID_QDM2:
caps =
diff --git a/ext/libav/gstavdeinterlace.c b/ext/libav/gstavdeinterlace.c
index faa81bb..67ec9c2 100644
--- a/ext/libav/gstavdeinterlace.c
+++ b/ext/libav/gstavdeinterlace.c
@@ -209,6 +209,7 @@ gst_ffmpegdeinterlace_sink_setcaps (GstPad * pad, GstCaps * caps)
ctx->pix_fmt = PIX_FMT_NB;
gst_ffmpeg_caps_with_codectype (AVMEDIA_TYPE_VIDEO, caps, ctx);
if (ctx->pix_fmt == PIX_FMT_NB) {
+ gst_ffmpeg_avcodec_close (ctx);
av_free (ctx);
return FALSE;
}
diff --git a/ext/libav/gstavmux.c b/ext/libav/gstavmux.c
index e15931c..f161d75 100644
--- a/ext/libav/gstavmux.c
+++ b/ext/libav/gstavmux.c
@@ -254,6 +254,10 @@ gst_ffmpegmux_base_init (gpointer g_class)
const gint rates[] = { 44100, 22050, 11025 };
gst_ffmpeg_mux_simple_caps_set_int_list (audiosinkcaps, "rate", 3, rates);
+ } else if (strcmp (in_plugin->name, "dv") == 0) {
+ gst_caps_set_simple (audiosinkcaps,
+ "rate", G_TYPE_INT, 48000, "channels", G_TYPE_INT, 2, NULL);
+
} else if (strcmp (in_plugin->name, "gif") == 0) {
if (videosinkcaps)
gst_caps_unref (videosinkcaps);
@@ -474,7 +478,7 @@ gst_ffmpegmux_setcaps (GstPad * pad, GstCaps * caps)
collect_pad = (GstFFMpegMuxPad *) gst_pad_get_element_private (pad);
st = ffmpegmux->context->streams[collect_pad->padnum];
- av_opt_set_int (&ffmpegmux->context, "preload", ffmpegmux->preload, 0);
+ av_opt_set_int (ffmpegmux->context, "preload", ffmpegmux->preload, 0);
ffmpegmux->context->max_delay = ffmpegmux->max_delay;
/* for the format-specific guesses, we'll go to
diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c
index 3453231..6c9c0c9 100644
--- a/ext/libav/gstavviddec.c
+++ b/ext/libav/gstavviddec.c
@@ -266,6 +266,7 @@ gst_ffmpegviddec_finalize (GObject * object)
GstFFMpegVidDec *ffmpegdec = (GstFFMpegVidDec *) object;
if (ffmpegdec->context != NULL) {
+ gst_ffmpeg_avcodec_close (ffmpegdec->context);
av_free (ffmpegdec->context);
ffmpegdec->context = NULL;
}
@@ -1548,6 +1549,7 @@ gst_ffmpegviddec_start (GstVideoDecoder * decoder)
oclass = (GstFFMpegVidDecClass *) (G_OBJECT_GET_CLASS (ffmpegdec));
GST_OBJECT_LOCK (ffmpegdec);
+ gst_ffmpeg_avcodec_close (ffmpegdec->context);
if (avcodec_get_context_defaults3 (ffmpegdec->context, oclass->in_plugin) < 0) {
GST_DEBUG_OBJECT (ffmpegdec, "Failed to set context defaults");
GST_OBJECT_UNLOCK (ffmpegdec);
diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c
index 6f32627..11d1eef 100644
--- a/ext/libav/gstavvidenc.c
+++ b/ext/libav/gstavvidenc.c
@@ -263,6 +263,7 @@ gst_ffmpegvidenc_finalize (GObject * object)
gst_ffmpeg_cfg_finalize (ffmpegenc);
/* clean up remaining allocated data */
+ gst_ffmpeg_avcodec_close (ffmpegenc->context);
av_free (ffmpegenc->context);
avcodec_free_frame (&ffmpegenc->picture);
@@ -834,6 +835,7 @@ gst_ffmpegvidenc_start (GstVideoEncoder * encoder)
(GstFFMpegVidEncClass *) G_OBJECT_GET_CLASS (ffmpegenc);
/* close old session */
+ gst_ffmpeg_avcodec_close (ffmpegenc->context);
if (avcodec_get_context_defaults3 (ffmpegenc->context, oclass->in_plugin) < 0) {
GST_DEBUG_OBJECT (ffmpegenc, "Failed to set context defaults");
return FALSE;
diff --git a/ext/libswscale/Makefile.in b/ext/libswscale/Makefile.in
index a46a1ec..80079a1 100644
--- a/ext/libswscale/Makefile.in
+++ b/ext/libswscale/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/gst-libav.doap b/gst-libav.doap
index 02f040d..ff06dc2 100644
--- a/gst-libav.doap
+++ b/gst-libav.doap
@@ -34,6 +34,16 @@ colorspace conversion elements.
<release>
<Version>
+ <revision>1.2.3</revision>
+ <branch>1.2</branch>
+ <name></name>
+ <created>2014-02-08</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.2.3.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.2.2</revision>
<branch>1.2</branch>
<name></name>
diff --git a/gst-libav.spec b/gst-libav.spec
index 032061b..dc17023 100644
--- a/gst-libav.spec
+++ b/gst-libav.spec
@@ -4,7 +4,7 @@
%define gst_majorminor 1.0
Name: %{gstreamer}-libav
-Version: 1.2.2
+Version: 1.2.3
Release: 1
Summary: GStreamer Streaming-media framework plug-in using libav (FFmpeg).
Group: Libraries/Multimedia
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index c52be43..ca76749 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/gst-libs/ext/Makefile.in b/gst-libs/ext/Makefile.in
index 9f19af0..7896bd5 100644
--- a/gst-libs/ext/Makefile.in
+++ b/gst-libs/ext/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/gst-libs/ext/libav/Changelog b/gst-libs/ext/libav/Changelog
index 594a6ff..bc18fef 100644
--- a/gst-libs/ext/libav/Changelog
+++ b/gst-libs/ext/libav/Changelog
@@ -1,5 +1,35 @@
Releases are sorted from youngest to oldest.
+version 9.11:
+- oggparseogm: check timing variables
+- mathematics: remove asserts from av_rescale_rnd()
+- vc1: Always reset numref when parsing a new frame header.
+- h264: reset num_reorder_frames if it is invalid
+- h264: check that an IDR NAL only contains I slices
+- mov: Free an earlier allocated array if allocating a new one
+- mov: Free intermediate arrays in the normal cleanup function
+- segafilm: fix leaks if reading the header fails
+- h264_cavlc: check the size of the intra PCM data.
+- h263: Check init_get_bits return value
+- cavsdec: check ff_get_buffer() return value
+- cavs: Check for negative cbp
+- avi: DV in AVI must be considered single stream
+- vmnc: Check the cursor dimensions
+- vmnc: Port to bytestream2
+- vmnc: K&R formatting cosmetics
+- flashsv: Check diff_start diff_height values
+- dsputil/pngdsp: fix signed/unsigned type in end comparison (CVE-2013-7010, CVE-2013-7014)
+- lavf: make av_probe_input_buffer more robust (CVE-2012-6618)
+- lavf: use a fixed width type
+- lavf: simplify handling of offset in av_probe_input_buffer()
+- prores: Error out only on surely incomplete ac_coeffs
+- shorten: Fix out-of-array read
+- prores: Add a codepath for decoding errors
+- nut: Fix unchecked allocations
+- avi: directly resync on DV in AVI read failure
+- mov: Don't allocate arrays with av_malloc that will be realloced
+- shorten: Extend fixed_coeffs to properly support pred_order 0
+
version 9.10:
- alac: Do bounds checking of lpc_order read from the bitstream
- ape: Don't allow the seektable to be omitted
diff --git a/gst-libs/ext/libav/RELEASE b/gst-libs/ext/libav/RELEASE
index 5f3c440..d4ce17d 100644
--- a/gst-libs/ext/libav/RELEASE
+++ b/gst-libs/ext/libav/RELEASE
@@ -1 +1 @@
-9.10
+9.11
diff --git a/gst-libs/ext/libav/libavcodec/ac3dec.c b/gst-libs/ext/libav/libavcodec/ac3dec.c
index 51ac334..ce14737 100644
--- a/gst-libs/ext/libav/libavcodec/ac3dec.c
+++ b/gst-libs/ext/libav/libavcodec/ac3dec.c
@@ -1398,7 +1398,7 @@ static int ac3_decode_frame(AVCodecContext * avctx, void *data,
memcpy(s->outptr[channel_map[ch]], output[ch], 1024);
for (ch = 0; ch < s->out_channels; ch++)
output[ch] = s->outptr[channel_map[ch]];
- for (ch = 0; ch < s->channels; ch++)
+ for (ch = 0; ch < s->out_channels; ch++)
s->outptr[ch] += AC3_BLOCK_SIZE;
}
diff --git a/gst-libs/ext/libav/libavcodec/alsdec.c b/gst-libs/ext/libav/libavcodec/alsdec.c
index f1d01a2..cb942c2 100644
--- a/gst-libs/ext/libav/libavcodec/alsdec.c
+++ b/gst-libs/ext/libav/libavcodec/alsdec.c
@@ -1380,6 +1380,11 @@ static int read_frame_data(ALSDecContext *ctx, unsigned int ra_frame)
for (b = 0; b < ctx->num_blocks; b++) {
bd.block_length = div_blocks[b];
+ if (bd.block_length <= 0) {
+ av_log(ctx->avctx, AV_LOG_WARNING,
+ "Invalid block length %d in channel data!\n", bd.block_length);
+ continue;
+ }
for (c = 0; c < avctx->channels; c++) {
bd.const_block = ctx->const_block + c;
diff --git a/gst-libs/ext/libav/libavcodec/arm/int_neon.S b/gst-libs/ext/libav/libavcodec/arm/int_neon.S
index 04208c2..b1906c8 100644
--- a/gst-libs/ext/libav/libavcodec/arm/int_neon.S
+++ b/gst-libs/ext/libav/libavcodec/arm/int_neon.S
@@ -41,10 +41,10 @@ function ff_scalarproduct_int16_neon, export=1
vpadd.s32 d16, d0, d1
vpadd.s32 d17, d2, d3
- vpadd.s32 d10, d4, d5
- vpadd.s32 d11, d6, d7
+ vpadd.s32 d18, d4, d5
+ vpadd.s32 d19, d6, d7
vpadd.s32 d0, d16, d17
- vpadd.s32 d1, d10, d11
+ vpadd.s32 d1, d18, d19
vpadd.s32 d2, d0, d1
vpaddl.s32 d3, d2
vmov.32 r0, d3[0]
@@ -81,10 +81,10 @@ function ff_scalarproduct_and_madd_int16_neon, export=1
vpadd.s32 d16, d0, d1
vpadd.s32 d17, d2, d3
- vpadd.s32 d10, d4, d5
- vpadd.s32 d11, d6, d7
+ vpadd.s32 d18, d4, d5
+ vpadd.s32 d19, d6, d7
vpadd.s32 d0, d16, d17
- vpadd.s32 d1, d10, d11
+ vpadd.s32 d1, d18, d19
vpadd.s32 d2, d0, d1
vpaddl.s32 d3, d2
vmov.32 r0, d3[0]
diff --git a/gst-libs/ext/libav/libavcodec/cavsdec.c b/gst-libs/ext/libav/libavcodec/cavsdec.c
index 7cfb2ca..c68f7b2 100644
--- a/gst-libs/ext/libav/libavcodec/cavsdec.c
+++ b/gst-libs/ext/libav/libavcodec/cavsdec.c
@@ -602,8 +602,8 @@ static inline int decode_residual_inter(AVSContext *h)
/* get coded block pattern */
int cbp = get_ue_golomb(&h->gb);
- if (cbp > 63) {
- av_log(h->avctx, AV_LOG_ERROR, "illegal inter cbp\n");
+ if (cbp > 63 || cbp < 0) {
+ av_log(h->avctx, AV_LOG_ERROR, "illegal inter cbp %d\n", cbp);
return -1;
}
h->cbp = cbp_tab[cbp][1];
@@ -673,7 +673,7 @@ static int decode_mb_i(AVSContext *h, int cbp_code)
/* get coded block pattern */
if (h->cur.f->pict_type == AV_PICTURE_TYPE_I)
cbp_code = get_ue_golomb(gb);
- if (cbp_code > 63) {
+ if (cbp_code > 63 || cbp_code < 0) {
av_log(h->avctx, AV_LOG_ERROR, "illegal intra cbp\n");
return -1;
}
@@ -928,6 +928,7 @@ static inline int check_for_slice(AVSContext *h)
static int decode_pic(AVSContext *h)
{
+ int ret;
int skip_count = -1;
enum cavs_mb mb_type;
@@ -965,7 +966,9 @@ static int decode_pic(AVSContext *h)
if (h->cur.f->data[0])
h->avctx->release_buffer(h->avctx, h->cur.f);
- ff_get_buffer(h->avctx, h->cur.f);
+ ret = ff_get_buffer(h->avctx, h->cur.f);
+ if (ret < 0)
+ return ret;
if (!h->edge_emu_buffer) {
int alloc_size = FFALIGN(FFABS(h->cur.f->linesize[0]) + 32, 32);
diff --git a/gst-libs/ext/libav/libavcodec/dsputil.c b/gst-libs/ext/libav/libavcodec/dsputil.c
index 4696bc7..338c314 100644
--- a/gst-libs/ext/libav/libavcodec/dsputil.c
+++ b/gst-libs/ext/libav/libavcodec/dsputil.c
@@ -1800,7 +1800,7 @@ void ff_set_cmp(DSPContext* c, me_cmp_func *cmp, int type){
static void add_bytes_c(uint8_t *dst, uint8_t *src, int w){
long i;
- for(i=0; i<=w-sizeof(long); i+=sizeof(long)){
+ for (i = 0; i <= w - (int) sizeof(long); i += sizeof(long)) {
long a = *(long*)(src+i);
long b = *(long*)(dst+i);
*(long*)(dst+i) = ((a&pb_7f) + (b&pb_7f)) ^ ((a^b)&pb_80);
@@ -1825,7 +1825,7 @@ static void diff_bytes_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w){
}
}else
#endif
- for(i=0; i<=w-sizeof(long); i+=sizeof(long)){
+ for (i = 0; i <= w - (int) sizeof(long); i += sizeof(long)) {
long a = *(long*)(src1+i);
long b = *(long*)(src2+i);
*(long*)(dst+i) = ((a|pb_80) - (b&pb_7f)) ^ ((a^b^pb_80)&pb_80);
diff --git a/gst-libs/ext/libav/libavcodec/eacmv.c b/gst-libs/ext/libav/libavcodec/eacmv.c
index b7e13b1..4c65f6f 100644
--- a/gst-libs/ext/libav/libavcodec/eacmv.c
+++ b/gst-libs/ext/libav/libavcodec/eacmv.c
@@ -119,7 +119,7 @@ static void cmv_decode_inter(CmvContext * s, const uint8_t *buf, const uint8_t *
static void cmv_process_header(CmvContext *s, const uint8_t *buf, const uint8_t *buf_end)
{
- int pal_start, pal_count, i;
+ int pal_start, pal_count, i, fps;
if(buf_end - buf < 16) {
av_log(s->avctx, AV_LOG_WARNING, "truncated header\n");
@@ -131,8 +131,9 @@ static void cmv_process_header(CmvContext *s, const uint8_t *buf, const uint8_t
if (s->avctx->width!=s->width || s->avctx->height!=s->height)
avcodec_set_dimensions(s->avctx, s->width, s->height);
- s->avctx->time_base.num = 1;
- s->avctx->time_base.den = AV_RL16(&buf[10]);
+ fps = AV_RL16(&buf[10]);
+ if (fps > 0)
+ s->avctx->time_base = (AVRational){ 1, fps };
pal_start = AV_RL16(&buf[12]);
pal_count = AV_RL16(&buf[14]);
diff --git a/gst-libs/ext/libav/libavcodec/ffv1dec.c b/gst-libs/ext/libav/libavcodec/ffv1dec.c
index 97e2bd5..e74598c 100644
--- a/gst-libs/ext/libav/libavcodec/ffv1dec.c
+++ b/gst-libs/ext/libav/libavcodec/ffv1dec.c
@@ -670,6 +670,7 @@ static int read_header(FFV1Context *f)
return AVERROR(ENOSYS);
}
switch (f->avctx->bits_per_raw_sample) {
+ case 0:
case 8:
f->avctx->pix_fmt = AV_PIX_FMT_RGB32;
break;
diff --git a/gst-libs/ext/libav/libavcodec/flashsv.c b/gst-libs/ext/libav/libavcodec/flashsv.c
index 3c5a35c..d55616e 100644
--- a/gst-libs/ext/libav/libavcodec/flashsv.c
+++ b/gst-libs/ext/libav/libavcodec/flashsv.c
@@ -384,6 +384,12 @@ static int flashsv_decode_frame(AVCodecContext *avctx, void *data,
}
s->diff_start = get_bits(&gb, 8);
s->diff_height = get_bits(&gb, 8);
+ if (s->diff_start + s->diff_height > cur_blk_height) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Block parameters invalid: %d + %d > %d\n",
+ s->diff_start, s->diff_height, cur_blk_height);
+ return AVERROR_INVALIDDATA;
+ }
av_log(avctx, AV_LOG_DEBUG,
"%dx%d diff start %d height %d\n",
i, j, s->diff_start, s->diff_height);
diff --git a/gst-libs/ext/libav/libavcodec/gifdec.c b/gst-libs/ext/libav/libavcodec/gifdec.c
index 8f1d694..99c24d5 100644
--- a/gst-libs/ext/libav/libavcodec/gifdec.c
+++ b/gst-libs/ext/libav/libavcodec/gifdec.c
@@ -49,8 +49,7 @@ typedef struct GifState {
int gce_delay;
/* LZW compatible decoder */
- const uint8_t *bytestream;
- const uint8_t *bytestream_end;
+ GetByteContext gb;
LZWState *lzw;
/* aux buffers */
@@ -69,11 +68,11 @@ static int gif_read_image(GifState *s)
int is_interleaved, has_local_palette, y, pass, y1, linesize, n, i;
uint8_t *ptr, *spal, *palette, *ptr1;
- left = bytestream_get_le16(&s->bytestream);
- top = bytestream_get_le16(&s->bytestream);
- width = bytestream_get_le16(&s->bytestream);
- height = bytestream_get_le16(&s->bytestream);
- flags = bytestream_get_byte(&s->bytestream);
+ left = bytestream2_get_le16(&s->gb);
+ top = bytestream2_get_le16(&s->gb);
+ width = bytestream2_get_le16(&s->gb);
+ height = bytestream2_get_le16(&s->gb);
+ flags = bytestream2_get_byte(&s->gb);
is_interleaved = flags & 0x40;
has_local_palette = flags & 0x80;
bits_per_pixel = (flags & 0x07) + 1;
@@ -81,7 +80,7 @@ static int gif_read_image(GifState *s)
av_dlog(s->avctx, "gif: image x=%d y=%d w=%d h=%d\n", left, top, width, height);
if (has_local_palette) {
- bytestream_get_buffer(&s->bytestream, s->local_palette, 3 * (1 << bits_per_pixel));
+ bytestream2_get_buffer(&s->gb, s->local_palette, 3 * (1 << bits_per_pixel));
palette = s->local_palette;
} else {
palette = s->global_palette;
@@ -90,8 +89,11 @@ static int gif_read_image(GifState *s)
/* verify that all the image is inside the screen dimensions */
if (left + width > s->screen_width ||
- top + height > s->screen_height)
- return AVERROR(EINVAL);
+ top + height > s->screen_height ||
+ !width || !height) {
+ av_log(s->avctx, AV_LOG_ERROR, "Invalid image dimensions.\n");
+ return AVERROR_INVALIDDATA;
+ }
/* build the palette */
n = (1 << bits_per_pixel);
@@ -107,9 +109,9 @@ static int gif_read_image(GifState *s)
s->image_palette[s->transparent_color_index] = 0;
/* now get the image data */
- code_size = bytestream_get_byte(&s->bytestream);
- ff_lzw_decode_init(s->lzw, code_size, s->bytestream,
- s->bytestream_end - s->bytestream, FF_LZW_GIF);
+ code_size = bytestream2_get_byte(&s->gb);
+ ff_lzw_decode_init(s->lzw, code_size, s->gb.buffer,
+ bytestream2_get_bytes_left(&s->gb), FF_LZW_GIF);
/* read all the image */
linesize = s->picture.linesize[0];
@@ -152,7 +154,8 @@ static int gif_read_image(GifState *s)
}
/* read the garbage data until end marker is found */
ff_lzw_decode_tail(s->lzw);
- s->bytestream = ff_lzw_cur_ptr(s->lzw);
+
+ bytestream2_skip(&s->gb, ff_lzw_size_read(s->lzw));
return 0;
}
@@ -161,8 +164,8 @@ static int gif_read_extension(GifState *s)
int ext_code, ext_len, i, gce_flags, gce_transparent_index;
/* extension */
- ext_code = bytestream_get_byte(&s->bytestream);
- ext_len = bytestream_get_byte(&s->bytestream);
+ ext_code = bytestream2_get_byte(&s->gb);
+ ext_len = bytestream2_get_byte(&s->gb);
av_dlog(s->avctx, "gif: ext_code=0x%x len=%d\n", ext_code, ext_len);
@@ -171,9 +174,9 @@ static int gif_read_extension(GifState *s)
if (ext_len != 4)
goto discard_ext;
s->transparent_color_index = -1;
- gce_flags = bytestream_get_byte(&s->bytestream);
- s->gce_delay = bytestream_get_le16(&s->bytestream);
- gce_transparent_index = bytestream_get_byte(&s->bytestream);
+ gce_flags = bytestream2_get_byte(&s->gb);
+ s->gce_delay = bytestream2_get_le16(&s->gb);
+ gce_transparent_index = bytestream2_get_byte(&s->gb);
if (gce_flags & 0x01)
s->transparent_color_index = gce_transparent_index;
else
@@ -184,7 +187,7 @@ static int gif_read_extension(GifState *s)
gce_flags, s->gce_delay,
s->transparent_color_index, s->gce_disposal);
- ext_len = bytestream_get_byte(&s->bytestream);
+ ext_len = bytestream2_get_byte(&s->gb);
break;
}
@@ -192,8 +195,8 @@ static int gif_read_extension(GifState *s)
discard_ext:
while (ext_len != 0) {
for (i = 0; i < ext_len; i++)
- bytestream_get_byte(&s->bytestream);
- ext_len = bytestream_get_byte(&s->bytestream);
+ bytestream2_get_byte(&s->gb);
+ ext_len = bytestream2_get_byte(&s->gb);
av_dlog(s->avctx, "gif: ext_len1=%d\n", ext_len);
}
@@ -206,31 +209,31 @@ static int gif_read_header1(GifState *s)
int v, n;
int has_global_palette;
- if (s->bytestream_end < s->bytestream + 13)
- return -1;
+ if (bytestream2_get_bytes_left(&s->gb) < 13)
+ return AVERROR_INVALIDDATA;
/* read gif signature */
- bytestream_get_buffer(&s->bytestream, sig, 6);
+ bytestream2_get_buffer(&s->gb, sig, 6);
if (memcmp(sig, gif87a_sig, 6) != 0 &&
memcmp(sig, gif89a_sig, 6) != 0)
- return -1;
+ return AVERROR_INVALIDDATA;
/* read screen header */
s->transparent_color_index = -1;
- s->screen_width = bytestream_get_le16(&s->bytestream);
- s->screen_height = bytestream_get_le16(&s->bytestream);
+ s->screen_width = bytestream2_get_le16(&s->gb);
+ s->screen_height = bytestream2_get_le16(&s->gb);
if( (unsigned)s->screen_width > 32767
|| (unsigned)s->screen_height > 32767){
av_log(NULL, AV_LOG_ERROR, "picture size too large\n");
- return -1;
+ return AVERROR_INVALIDDATA;
}
- v = bytestream_get_byte(&s->bytestream);
+ v = bytestream2_get_byte(&s->gb);
s->color_resolution = ((v & 0x70) >> 4) + 1;
has_global_palette = (v & 0x80);
s->bits_per_pixel = (v & 0x07) + 1;
- s->background_color_index = bytestream_get_byte(&s->bytestream);
- bytestream_get_byte(&s->bytestream); /* ignored */
+ s->background_color_index = bytestream2_get_byte(&s->gb);
+ bytestream2_get_byte(&s->gb); /* ignored */
av_dlog(s->avctx, "gif: screen_w=%d screen_h=%d bpp=%d global_palette=%d\n",
s->screen_width, s->screen_height, s->bits_per_pixel,
@@ -238,17 +241,18 @@ static int gif_read_header1(GifState *s)
if (has_global_palette) {
n = 1 << s->bits_per_pixel;
- if (s->bytestream_end < s->bytestream + n * 3)
- return -1;
- bytestream_get_buffer(&s->bytestream, s->global_palette, n * 3);
+ if (bytestream2_get_bytes_left(&s->gb) < n * 3)
+ return AVERROR_INVALIDDATA;
+ bytestream2_get_buffer(&s->gb, s->global_palette, n * 3);
}
return 0;
}
static int gif_parse_next_image(GifState *s)
{
- while (s->bytestream < s->bytestream_end) {
- int code = bytestream_get_byte(&s->bytestream);
+ while (bytestream2_get_bytes_left(&s->gb) > 0) {
+ int code = bytestream2_get_byte(&s->gb);
+ int ret;
av_dlog(s->avctx, "gif: code=%02x '%c'\n", code, code);
@@ -256,17 +260,17 @@ static int gif_parse_next_image(GifState *s)
case ',':
return gif_read_image(s);
case '!':
- if (gif_read_extension(s) < 0)
- return -1;
+ if ((ret = gif_read_extension(s)) < 0)
+ return ret;
break;
case ';':
/* end of image */
default:
/* error or erroneous EOF */
- return -1;
+ return AVERROR_INVALIDDATA;
}
}
- return -1;
+ return AVERROR_INVALIDDATA;
}
static av_cold int gif_decode_init(AVCodecContext *avctx)
@@ -291,21 +295,20 @@ static int gif_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
AVFrame *picture = data;
int ret;
- s->bytestream = buf;
- s->bytestream_end = buf + buf_size;
- if (gif_read_header1(s) < 0)
- return -1;
+ bytestream2_init(&s->gb, buf, buf_size);
+ if ((ret = gif_read_header1(s)) < 0)
+ return ret;
avctx->pix_fmt = AV_PIX_FMT_PAL8;
- if (av_image_check_size(s->screen_width, s->screen_height, 0, avctx))
- return -1;
+ if ((ret = av_image_check_size(s->screen_width, s->screen_height, 0, avctx)) < 0)
+ return ret;
avcodec_set_dimensions(avctx, s->screen_width, s->screen_height);
if (s->picture.data[0])
avctx->release_buffer(avctx, &s->picture);
- if (ff_get_buffer(avctx, &s->picture) < 0) {
+ if ((ret = ff_get_buffer(avctx, &s->picture)) < 0) {
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
- return -1;
+ return ret;
}
s->image_palette = (uint32_t *)s->picture.data[1];
ret = gif_parse_next_image(s);
@@ -314,7 +317,7 @@ static int gif_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
*picture = s->picture;
*got_frame = 1;
- return s->bytestream - buf;
+ return bytestream2_tell(&s->gb);
}
static av_cold int gif_decode_close(AVCodecContext *avctx)
diff --git a/gst-libs/ext/libav/libavcodec/h263dec.c b/gst-libs/ext/libav/libavcodec/h263dec.c
index db58fd2..47e903a 100644
--- a/gst-libs/ext/libav/libavcodec/h263dec.c
+++ b/gst-libs/ext/libav/libavcodec/h263dec.c
@@ -384,17 +384,20 @@ uint64_t time= rdtsc();
return buf_size;
}
+ if (s->bitstream_buffer_size && (s->divx_packed || buf_size < 20)) // divx 5.01+/xvid frame reorder
+ ret = init_get_bits8(&s->gb, s->bitstream_buffer,
+ s->bitstream_buffer_size);
+ else
+ ret = init_get_bits8(&s->gb, buf, buf_size);
+ s->bitstream_buffer_size = 0;
- if(s->bitstream_buffer_size && (s->divx_packed || buf_size<20)){ //divx 5.01+/xvid frame reorder
- init_get_bits(&s->gb, s->bitstream_buffer, s->bitstream_buffer_size*8);
- }else
- init_get_bits(&s->gb, buf, buf_size*8);
- s->bitstream_buffer_size=0;
+ if (ret < 0)
+ return ret;
- if (!s->context_initialized) {
- if (ff_MPV_common_init(s) < 0) //we need the idct permutaton for reading a custom matrix
- return -1;
- }
+ if (!s->context_initialized)
+ // we need the idct permutaton for reading a custom matrix
+ if ((ret = ff_MPV_common_init(s)) < 0)
+ return ret;
/* We need to set current_picture_ptr before reading the header,
* otherwise we cannot store anyting in there */
@@ -414,8 +417,11 @@ uint64_t time= rdtsc();
if(s->avctx->extradata_size && s->picture_number==0){
GetBitContext gb;
- init_get_bits(&gb, s->avctx->extradata, s->avctx->extradata_size*8);
- ret = ff_mpeg4_decode_picture_header(s, &gb);
+ ret = init_get_bits8(&gb, s->avctx->extradata,
+ s->avctx->extradata_size);
+ if (ret < 0)
+ return ret;
+ ff_mpeg4_decode_picture_header(s, &gb);
}
ret = ff_mpeg4_decode_picture_header(s, &s->gb);
} else if (CONFIG_H263I_DECODER && s->codec_id == AV_CODEC_ID_H263I) {
diff --git a/gst-libs/ext/libav/libavcodec/h264.c b/gst-libs/ext/libav/libavcodec/h264.c
index 8625b0f..b256969 100644
--- a/gst-libs/ext/libav/libavcodec/h264.c
+++ b/gst-libs/ext/libav/libavcodec/h264.c
@@ -60,9 +60,15 @@ static const uint8_t div6[QP_MAX_NUM + 1] = {
};
static const enum AVPixelFormat hwaccel_pixfmt_list_h264_jpeg_420[] = {
+#if CONFIG_H264_DXVA2_HWACCEL
AV_PIX_FMT_DXVA2_VLD,
+#endif
+#if CONFIG_H264_VAAPI_HWACCEL
AV_PIX_FMT_VAAPI_VLD,
+#endif
+#if CONFIG_H264_VDA_HWACCEL
AV_PIX_FMT_VDA_VLD,
+#endif
AV_PIX_FMT_YUVJ420P,
AV_PIX_FMT_NONE
};
@@ -2649,6 +2655,12 @@ static int decode_slice_header(H264Context *h, H264Context *h0)
h->slice_type = slice_type;
h->slice_type_nos = slice_type & 3;
+ if (h->nal_unit_type == NAL_IDR_SLICE &&
+ h->slice_type_nos != AV_PICTURE_TYPE_I) {
+ av_log(h->s.avctx, AV_LOG_ERROR, "A non-intra slice in an IDR NAL unit.\n");
+ return AVERROR_INVALIDDATA;
+ }
+
// to make a few old functions happy, it's wrong though
s->pict_type = h->slice_type;
diff --git a/gst-libs/ext/libav/libavcodec/h264_cavlc.c b/gst-libs/ext/libav/libavcodec/h264_cavlc.c
index 0cc7214..c01e94b 100644
--- a/gst-libs/ext/libav/libavcodec/h264_cavlc.c
+++ b/gst-libs/ext/libav/libavcodec/h264_cavlc.c
@@ -770,6 +770,10 @@ decode_intra_mb:
// We assume these blocks are very rare so we do not optimize it.
align_get_bits(&s->gb);
+ if (get_bits_left(&s->gb) < mb_size) {
+ av_log(s->avctx, AV_LOG_ERROR, "Not enough data for an intra PCM block.\n");
+ return AVERROR_INVALIDDATA;
+ }
// The pixels are stored in the same order as levels in h->mb array.
for(x=0; x < mb_size; x++){
diff --git a/gst-libs/ext/libav/libavcodec/h264_ps.c b/gst-libs/ext/libav/libavcodec/h264_ps.c
index ff6c077..fad2d77 100644
--- a/gst-libs/ext/libav/libavcodec/h264_ps.c
+++ b/gst-libs/ext/libav/libavcodec/h264_ps.c
@@ -236,7 +236,9 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){
}
if(sps->num_reorder_frames > 16U /*max_dec_frame_buffering || max_dec_frame_buffering > 16*/){
- av_log(h->s.avctx, AV_LOG_ERROR, "illegal num_reorder_frames %d\n", sps->num_reorder_frames);
+ av_log(h->s.avctx, AV_LOG_ERROR, "Clipping illegal num_reorder_frames %d\n",
+ sps->num_reorder_frames);
+ sps->num_reorder_frames = 16;
return -1;
}
}
diff --git a/gst-libs/ext/libav/libavcodec/indeo4.c b/gst-libs/ext/libav/libavcodec/indeo4.c
index 42b1130..b250f50 100644
--- a/gst-libs/ext/libav/libavcodec/indeo4.c
+++ b/gst-libs/ext/libav/libavcodec/indeo4.c
@@ -294,6 +294,7 @@ static int decode_band_hdr(IVI45DecContext *ctx, IVIBandDesc *band,
band->is_empty = get_bits1(&ctx->gb);
if (!band->is_empty) {
+ int old_blk_size = band->blk_size;
/* skip header size
* If header size is not given, header size is 4 bytes. */
if (get_bits1(&ctx->gb))
@@ -370,13 +371,28 @@ static int decode_band_hdr(IVI45DecContext *ctx, IVIBandDesc *band,
band->scan = scan_index_to_tab[scan_indx];
band->quant_mat = get_bits(&ctx->gb, 5);
- if (band->quant_mat == 31) {
- av_log(avctx, AV_LOG_ERROR, "Custom quant matrix encountered!\n");
- return AVERROR_INVALIDDATA;
- }
if (band->quant_mat >= FF_ARRAY_ELEMS(quant_index_to_tab)) {
av_log_ask_for_sample(avctx, "Quantization matrix %d",
band->quant_mat);
+
+ if (band->quant_mat == 31)
+ av_log(avctx, AV_LOG_ERROR,
+ "Custom quant matrix encountered!\n");
+ else
+ av_log_ask_for_sample(avctx, "Quantization matrix %d",
+ band->quant_mat);
+ band->quant_mat = -1;
+ return AVERROR_INVALIDDATA;
+ }
+ } else {
+ if (old_blk_size != band->blk_size) {
+ av_log(avctx, AV_LOG_ERROR,
+ "The band block size does not match the configuration "
+ "inherited\n");
+ return AVERROR_INVALIDDATA;
+ }
+ if (band->quant_mat < 0) {
+ av_log(avctx, AV_LOG_ERROR, "Invalid quant_mat inherited\n");
return AVERROR_INVALIDDATA;
}
}
diff --git a/gst-libs/ext/libav/libavcodec/lzw.c b/gst-libs/ext/libav/libavcodec/lzw.c
index 2c99014..fae5687 100644
--- a/gst-libs/ext/libav/libavcodec/lzw.c
+++ b/gst-libs/ext/libav/libavcodec/lzw.c
@@ -28,6 +28,7 @@
*/
#include "avcodec.h"
+#include "bytestream.h"
#include "lzw.h"
#include "libavutil/mem.h"
@@ -43,7 +44,7 @@ static const uint16_t mask[17] =
};
struct LZWState {
- const uint8_t *pbuf, *ebuf;
+ GetByteContext gb;
int bbits;
unsigned int bbuf;
@@ -73,9 +74,9 @@ static int lzw_get_code(struct LZWState * s)
if(s->mode == FF_LZW_GIF) {
while (s->bbits < s->cursize) {
if (!s->bs) {
- s->bs = *s->pbuf++;
+ s->bs = bytestream2_get_byte(&s->gb);
}
- s->bbuf |= (*s->pbuf++) << s->bbits;
+ s->bbuf |= bytestream2_get_byte(&s->gb) << s->bbits;
s->bbits += 8;
s->bs--;
}
@@ -83,7 +84,7 @@ static int lzw_get_code(struct LZWState * s)
s->bbuf >>= s->cursize;
} else { // TIFF
while (s->bbits < s->cursize) {
- s->bbuf = (s->bbuf << 8) | (*s->pbuf++);
+ s->bbuf = (s->bbuf << 8) | bytestream2_get_byte(&s->gb);
s->bbits += 8;
}
c = s->bbuf >> (s->bbits - s->cursize);
@@ -92,9 +93,10 @@ static int lzw_get_code(struct LZWState * s)
return c & s->curmask;
}
-const uint8_t* ff_lzw_cur_ptr(LZWState *p)
+int ff_lzw_size_read(LZWState *p)
{
- return ((struct LZWState*)p)->pbuf;
+ struct LZWState *s = p;
+ return bytestream2_tell(&s->gb);
}
void ff_lzw_decode_tail(LZWState *p)
@@ -102,17 +104,12 @@ void ff_lzw_decode_tail(LZWState *p)
struct LZWState *s = (struct LZWState *)p;
if(s->mode == FF_LZW_GIF) {
- while (s->bs > 0) {
- if (s->bs >= s->ebuf - s->pbuf) {
- s->pbuf = s->ebuf;
- break;
- } else {
- s->pbuf += s->bs;
- s->bs = *s->pbuf++;
- }
+ while (s->bs > 0 && bytestream2_get_bytes_left(&s->gb)) {
+ bytestream2_skip(&s->gb, s->bs);
+ s->bs = bytestream2_get_byte(&s->gb);
}
}else
- s->pbuf= s->ebuf;
+ bytestream2_skip(&s->gb, bytestream2_get_bytes_left(&s->gb));
}
av_cold void ff_lzw_decode_open(LZWState **p)
@@ -140,8 +137,7 @@ int ff_lzw_decode_init(LZWState *p, int csize, const uint8_t *buf, int buf_size,
if(csize < 1 || csize >= LZW_MAXBITS)
return -1;
/* read buffer */
- s->pbuf = buf;
- s->ebuf = s->pbuf + buf_size;
+ bytestream2_init(&s->gb, buf, buf_size);
s->bbuf = 0;
s->bbits = 0;
s->bs = 0;
diff --git a/gst-libs/ext/libav/libavcodec/lzw.h b/gst-libs/ext/libav/libavcodec/lzw.h
index ab782f5..d925d35 100644
--- a/gst-libs/ext/libav/libavcodec/lzw.h
+++ b/gst-libs/ext/libav/libavcodec/lzw.h
@@ -47,7 +47,7 @@ void ff_lzw_decode_open(LZWState **p);
void ff_lzw_decode_close(LZWState **p);
int ff_lzw_decode_init(LZWState *s, int csize, const uint8_t *buf, int buf_size, int mode);
int ff_lzw_decode(LZWState *s, uint8_t *buf, int len);
-const uint8_t* ff_lzw_cur_ptr(LZWState *lzw);
+int ff_lzw_size_read(LZWState *lzw);
void ff_lzw_decode_tail(LZWState *lzw);
/** LZW encode state */
diff --git a/gst-libs/ext/libav/libavcodec/motionpixels.c b/gst-libs/ext/libav/libavcodec/motionpixels.c
index c2bd0f4..4c0b98b 100644
--- a/gst-libs/ext/libav/libavcodec/motionpixels.c
+++ b/gst-libs/ext/libav/libavcodec/motionpixels.c
@@ -159,6 +159,7 @@ static int mp_get_vlc(MotionPixelsContext *mp, GetBitContext *gb)
int i;
i = (mp->codes_count == 1) ? 0 : get_vlc2(gb, mp->vlc.table, mp->max_codes_bits, 1);
+ i = FFMIN(i, FF_ARRAY_ELEMS(mp->codes) - 1);
return mp->codes[i].delta;
}
diff --git a/gst-libs/ext/libav/libavcodec/mpeg4video.h b/gst-libs/ext/libav/libavcodec/mpeg4video.h
index 64c0243..0dec893 100644
--- a/gst-libs/ext/libav/libavcodec/mpeg4video.h
+++ b/gst-libs/ext/libav/libavcodec/mpeg4video.h
@@ -110,6 +110,7 @@ int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my);
extern uint8_t ff_mpeg4_static_rl_table_store[3][2][2*MAX_RUN + MAX_LEVEL + 3];
+void ff_mpeg4_init_tables(void);
#if 0 //3IV1 is quite rare and it slows things down a tiny bit
#define IS_3IV1 s->codec_tag == AV_RL32("3IV1")
diff --git a/gst-libs/ext/libav/libavcodec/mpeg4video_parser.c b/gst-libs/ext/libav/libavcodec/mpeg4video_parser.c
index e291262..6587d7f 100644
--- a/gst-libs/ext/libav/libavcodec/mpeg4video_parser.c
+++ b/gst-libs/ext/libav/libavcodec/mpeg4video_parser.c
@@ -100,6 +100,8 @@ static av_cold int mpeg4video_parse_init(AVCodecParserContext *s)
{
struct Mp4vParseContext *pc = s->priv_data;
+ ff_mpeg4_init_tables();
+
pc->first_picture = 1;
pc->enc.slice_context_count = 1;
return 0;
diff --git a/gst-libs/ext/libav/libavcodec/mpeg4videodec.c b/gst-libs/ext/libav/libavcodec/mpeg4videodec.c
index 7ff290c..3e8c8f7 100644
--- a/gst-libs/ext/libav/libavcodec/mpeg4videodec.c
+++ b/gst-libs/ext/libav/libavcodec/mpeg4videodec.c
@@ -45,6 +45,33 @@ static const int mb_type_b_map[4]= {
MB_TYPE_L0 | MB_TYPE_16x16,
};
+void ff_mpeg4_init_tables(void)
+{
+ static int done = 0;
+ if (!done) {
+ done = 1;
+
+ ff_init_rl(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]);
+ ff_init_rl(&ff_rvlc_rl_inter, ff_mpeg4_static_rl_table_store[1]);
+ ff_init_rl(&ff_rvlc_rl_intra, ff_mpeg4_static_rl_table_store[2]);
+ INIT_VLC_RL(ff_mpeg4_rl_intra, 554);
+ INIT_VLC_RL(ff_rvlc_rl_inter, 1072);
+ INIT_VLC_RL(ff_rvlc_rl_intra, 1072);
+ INIT_VLC_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */,
+ &ff_mpeg4_DCtab_lum[0][1], 2, 1,
+ &ff_mpeg4_DCtab_lum[0][0], 2, 1, 512);
+ INIT_VLC_STATIC(&dc_chrom, DC_VLC_BITS, 10 /* 13 */,
+ &ff_mpeg4_DCtab_chrom[0][1], 2, 1,
+ &ff_mpeg4_DCtab_chrom[0][0], 2, 1, 512);
+ INIT_VLC_STATIC(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15,
+ &ff_sprite_trajectory_tab[0][1], 4, 2,
+ &ff_sprite_trajectory_tab[0][0], 4, 2, 128);
+ INIT_VLC_STATIC(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4,
+ &ff_mb_type_b_tab[0][1], 2, 1,
+ &ff_mb_type_b_tab[0][0], 2, 1, 16);
+ }
+}
+
/**
* Predict the ac.
* @param n block index (0-3 are luma, 4-5 are chroma)
@@ -2202,7 +2229,8 @@ static av_cold int decode_init(AVCodecContext *avctx)
{
MpegEncContext *s = avctx->priv_data;
int ret;
- static int done = 0;
+
+ ff_mpeg4_init_tables();
s->divx_version=
s->divx_build=
@@ -2212,29 +2240,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
if((ret=ff_h263_decode_init(avctx)) < 0)
return ret;
- if (!done) {
- done = 1;
-
- ff_init_rl(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]);
- ff_init_rl(&ff_rvlc_rl_inter, ff_mpeg4_static_rl_table_store[1]);
- ff_init_rl(&ff_rvlc_rl_intra, ff_mpeg4_static_rl_table_store[2]);
- INIT_VLC_RL(ff_mpeg4_rl_intra, 554);
- INIT_VLC_RL(ff_rvlc_rl_inter, 1072);
- INIT_VLC_RL(ff_rvlc_rl_intra, 1072);
- INIT_VLC_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */,
- &ff_mpeg4_DCtab_lum[0][1], 2, 1,
- &ff_mpeg4_DCtab_lum[0][0], 2, 1, 512);
- INIT_VLC_STATIC(&dc_chrom, DC_VLC_BITS, 10 /* 13 */,
- &ff_mpeg4_DCtab_chrom[0][1], 2, 1,
- &ff_mpeg4_DCtab_chrom[0][0], 2, 1, 512);
- INIT_VLC_STATIC(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15,
- &ff_sprite_trajectory_tab[0][1], 4, 2,
- &ff_sprite_trajectory_tab[0][0], 4, 2, 128);
- INIT_VLC_STATIC(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4,
- &ff_mb_type_b_tab[0][1], 2, 1,
- &ff_mb_type_b_tab[0][0], 2, 1, 16);
- }
-
s->h263_pred = 1;
s->low_delay = 0; //default, might be overriden in the vol header during header parsing
s->decode_mb= mpeg4_decode_mb;
diff --git a/gst-libs/ext/libav/libavcodec/mpegvideo.c b/gst-libs/ext/libav/libavcodec/mpegvideo.c
index 0274f01..eb71670 100644
--- a/gst-libs/ext/libav/libavcodec/mpegvideo.c
+++ b/gst-libs/ext/libav/libavcodec/mpegvideo.c
@@ -131,9 +131,15 @@ const enum AVPixelFormat ff_pixfmt_list_420[] = {
};
const enum AVPixelFormat ff_hwaccel_pixfmt_list_420[] = {
+#if CONFIG_H264_DXVA2_HWACCEL
AV_PIX_FMT_DXVA2_VLD,
+#endif
+#if CONFIG_H264_VAAPI_HWACCEL
AV_PIX_FMT_VAAPI_VLD,
+#endif
+#if CONFIG_H264_VDA_HWACCEL
AV_PIX_FMT_VDA_VLD,
+#endif
AV_PIX_FMT_YUV420P,
AV_PIX_FMT_NONE
};
@@ -1515,8 +1521,12 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
s->last_picture_ptr->owner2 = s;
}
- assert(s->pict_type == AV_PICTURE_TYPE_I || (s->last_picture_ptr &&
- s->last_picture_ptr->f.data[0]));
+ if (s->pict_type != AV_PICTURE_TYPE_I &&
+ !(s->last_picture_ptr && s->last_picture_ptr->f.data[0])) {
+ av_log(s, AV_LOG_ERROR,
+ "Non-reference picture received and no reference available\n");
+ return AVERROR_INVALIDDATA;
+ }
if (s->picture_structure!= PICT_FRAME && s->out_format != FMT_H264) {
int i;
diff --git a/gst-libs/ext/libav/libavcodec/pcx.c b/gst-libs/ext/libav/libavcodec/pcx.c
index 223429d..4bc9adc 100644
--- a/gst-libs/ext/libav/libavcodec/pcx.c
+++ b/gst-libs/ext/libav/libavcodec/pcx.c
@@ -120,7 +120,7 @@ static int pcx_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
nplanes = buf[65];
bytes_per_scanline = nplanes * bytes_per_line;
- if (bytes_per_scanline < w * bits_per_pixel * nplanes / 8 ||
+ if (bytes_per_scanline < (w * bits_per_pixel * nplanes + 7) / 8 ||
(!compressed && bytes_per_scanline > buf_size / h)) {
av_log(avctx, AV_LOG_ERROR, "PCX data is corrupted\n");
return -1;
diff --git a/gst-libs/ext/libav/libavcodec/pngdsp.c b/gst-libs/ext/libav/libavcodec/pngdsp.c
index 00734d7..9220c20 100644
--- a/gst-libs/ext/libav/libavcodec/pngdsp.c
+++ b/gst-libs/ext/libav/libavcodec/pngdsp.c
@@ -30,7 +30,7 @@
static void add_bytes_l2_c(uint8_t *dst, uint8_t *src1, uint8_t *src2, int w)
{
long i;
- for (i = 0; i <= w - sizeof(long); i += sizeof(long)) {
+ for (i = 0; i <= w - (int)sizeof(long); i += sizeof(long)) {
long a = *(long *)(src1 + i);
long b = *(long *)(src2 + i);
*(long *)(dst + i) = ((a & pb_7f) + (b & pb_7f)) ^ ((a ^ b) & pb_80);
diff --git a/gst-libs/ext/libav/libavcodec/proresdec.c b/gst-libs/ext/libav/libavcodec/proresdec.c
index 4b196f6..2049545 100644
--- a/gst-libs/ext/libav/libavcodec/proresdec.c
+++ b/gst-libs/ext/libav/libavcodec/proresdec.c
@@ -368,7 +368,7 @@ static inline void decode_dc_coeffs(GetBitContext *gb, DCTELEM *out,
/**
* Decode AC coefficients for all blocks in a slice.
*/
-static inline void decode_ac_coeffs(GetBitContext *gb, DCTELEM *out,
+static inline int decode_ac_coeffs(GetBitContext *gb, DCTELEM *out,
int blocks_per_slice,
int plane_size_factor,
const uint8_t *scan)
@@ -389,15 +389,19 @@ static inline void decode_ac_coeffs(GetBitContext *gb, DCTELEM *out,
bits_left = get_bits_left(gb);
if (bits_left <= 0 || (bits_left <= 8 && !show_bits(gb, bits_left)))
- return;
+ return 0;
run = decode_vlc_codeword(gb, ff_prores_ac_codebook[run_cb_index]);
+ if (run < 0)
+ return AVERROR_INVALIDDATA;
bits_left = get_bits_left(gb);
if (bits_left <= 0 || (bits_left <= 8 && !show_bits(gb, bits_left)))
- return;
+ return AVERROR_INVALIDDATA;
level = decode_vlc_codeword(gb, ff_prores_ac_codebook[lev_cb_index]) + 1;
+ if (level < 0)
+ return AVERROR_INVALIDDATA;
pos += run + 1;
if (pos >= max_coeffs)
@@ -407,22 +411,24 @@ static inline void decode_ac_coeffs(GetBitContext *gb, DCTELEM *out,
out[((pos & block_mask) << 6) + scan[pos >> plane_size_factor]] =
(level ^ sign) - sign;
}
+
+ return 0;
}
/**
* Decode a slice plane (luma or chroma).
*/
-static void decode_slice_plane(ProresContext *ctx, ProresThreadData *td,
- const uint8_t *buf,
- int data_size, uint16_t *out_ptr,
- int linesize, int mbs_per_slice,
- int blocks_per_mb, int plane_size_factor,
- const int16_t *qmat, int is_chroma)
+static int decode_slice_plane(ProresContext *ctx, ProresThreadData *td,
+ const uint8_t *buf,
+ int data_size, uint16_t *out_ptr,
+ int linesize, int mbs_per_slice,
+ int blocks_per_mb, int plane_size_factor,
+ const int16_t *qmat, int is_chroma)
{
GetBitContext gb;
DCTELEM *block_ptr;
- int mb_num, blocks_per_slice;
+ int mb_num, blocks_per_slice, ret;
blocks_per_slice = mbs_per_slice * blocks_per_mb;
@@ -432,8 +438,10 @@ static void decode_slice_plane(ProresContext *ctx, ProresThreadData *td,
decode_dc_coeffs(&gb, td->blocks, blocks_per_slice);
- decode_ac_coeffs(&gb, td->blocks, blocks_per_slice,
- plane_size_factor, ctx->scantable.permutated);
+ ret = decode_ac_coeffs(&gb, td->blocks, blocks_per_slice,
+ plane_size_factor, ctx->scantable.permutated);
+ if (ret < 0)
+ return ret;
/* inverse quantization, inverse transform and output */
block_ptr = td->blocks;
@@ -467,6 +475,7 @@ static void decode_slice_plane(ProresContext *ctx, ProresThreadData *td,
}
}
}
+ return 0;
}
@@ -485,6 +494,7 @@ static int decode_slice(AVCodecContext *avctx, void *tdata)
int i, sf, slice_width_factor;
int slice_data_size, hdr_size, y_data_size, u_data_size, v_data_size;
int y_linesize, u_linesize, v_linesize;
+ int ret;
buf = ctx->slice_data[slice_num].index;
slice_data_size = ctx->slice_data[slice_num + 1].index - buf;
@@ -541,28 +551,34 @@ static int decode_slice(AVCodecContext *avctx, void *tdata)
}
/* decode luma plane */
- decode_slice_plane(ctx, td, buf + hdr_size, y_data_size,
- (uint16_t*) (y_data + (mb_y_pos << 4) * y_linesize +
- (mb_x_pos << 5)), y_linesize,
- mbs_per_slice, 4, slice_width_factor + 2,
- td->qmat_luma_scaled, 0);
+ ret = decode_slice_plane(ctx, td, buf + hdr_size, y_data_size,
+ (uint16_t*) (y_data + (mb_y_pos << 4) * y_linesize +
+ (mb_x_pos << 5)), y_linesize,
+ mbs_per_slice, 4, slice_width_factor + 2,
+ td->qmat_luma_scaled, 0);
+ if (ret < 0)
+ return ret;
/* decode U chroma plane */
- decode_slice_plane(ctx, td, buf + hdr_size + y_data_size, u_data_size,
- (uint16_t*) (u_data + (mb_y_pos << 4) * u_linesize +
- (mb_x_pos << ctx->mb_chroma_factor)),
- u_linesize, mbs_per_slice, ctx->num_chroma_blocks,
- slice_width_factor + ctx->chroma_factor - 1,
- td->qmat_chroma_scaled, 1);
+ ret = decode_slice_plane(ctx, td, buf + hdr_size + y_data_size, u_data_size,
+ (uint16_t*) (u_data + (mb_y_pos << 4) * u_linesize +
+ (mb_x_pos << ctx->mb_chroma_factor)),
+ u_linesize, mbs_per_slice, ctx->num_chroma_blocks,
+ slice_width_factor + ctx->chroma_factor - 1,
+ td->qmat_chroma_scaled, 1);
+ if (ret < 0)
+ return ret;
/* decode V chroma plane */
- decode_slice_plane(ctx, td, buf + hdr_size + y_data_size + u_data_size,
- v_data_size,
- (uint16_t*) (v_data + (mb_y_pos << 4) * v_linesize +
- (mb_x_pos << ctx->mb_chroma_factor)),
- v_linesize, mbs_per_slice, ctx->num_chroma_blocks,
- slice_width_factor + ctx->chroma_factor - 1,
- td->qmat_chroma_scaled, 1);
+ ret = decode_slice_plane(ctx, td, buf + hdr_size + y_data_size + u_data_size,
+ v_data_size,
+ (uint16_t*) (v_data + (mb_y_pos << 4) * v_linesize +
+ (mb_x_pos << ctx->mb_chroma_factor)),
+ v_linesize, mbs_per_slice, ctx->num_chroma_blocks,
+ slice_width_factor + ctx->chroma_factor - 1,
+ td->qmat_chroma_scaled, 1);
+ if (ret < 0)
+ return ret;
return 0;
}
diff --git a/gst-libs/ext/libav/libavcodec/pthread.c b/gst-libs/ext/libav/libavcodec/pthread.c
index 73d9da3..8ae494b 100644
--- a/gst-libs/ext/libav/libavcodec/pthread.c
+++ b/gst-libs/ext/libav/libavcodec/pthread.c
@@ -76,6 +76,7 @@ typedef struct ThreadContext {
pthread_cond_t last_job_cond;
pthread_cond_t current_job_cond;
pthread_mutex_t current_job_lock;
+ unsigned current_execute;
int current_job;
int done;
} ThreadContext;
@@ -196,6 +197,7 @@ static void* attribute_align_arg worker(void *v)
{
AVCodecContext *avctx = v;
ThreadContext *c = avctx->thread_opaque;
+ unsigned last_execute = 0;
int our_job = c->job_count;
int thread_count = avctx->thread_count;
int self_id;
@@ -207,7 +209,9 @@ static void* attribute_align_arg worker(void *v)
if (c->current_job == thread_count + c->job_count)
pthread_cond_signal(&c->last_job_cond);
- pthread_cond_wait(&c->current_job_cond, &c->current_job_lock);
+ while (last_execute == c->current_execute && !c->done)
+ pthread_cond_wait(&c->current_job_cond, &c->current_job_lock);
+ last_execute = c->current_execute;
our_job = self_id;
if (c->done) {
@@ -227,7 +231,8 @@ static void* attribute_align_arg worker(void *v)
static av_always_inline void avcodec_thread_park_workers(ThreadContext *c, int thread_count)
{
- pthread_cond_wait(&c->last_job_cond, &c->current_job_lock);
+ while (c->current_job != thread_count + c->job_count)
+ pthread_cond_wait(&c->last_job_cond, &c->current_job_lock);
pthread_mutex_unlock(&c->current_job_lock);
}
@@ -276,6 +281,7 @@ static int avcodec_thread_execute(AVCodecContext *avctx, action_func* func, void
c->rets = &dummy_ret;
c->rets_count = 1;
}
+ c->current_execute++;
pthread_cond_broadcast(&c->current_job_cond);
avcodec_thread_park_workers(c, avctx->thread_count);
diff --git a/gst-libs/ext/libav/libavcodec/rv30.c b/gst-libs/ext/libav/libavcodec/rv30.c
index b61b75d..ffd4d96 100644
--- a/gst-libs/ext/libav/libavcodec/rv30.c
+++ b/gst-libs/ext/libav/libavcodec/rv30.c
@@ -35,6 +35,7 @@
static int rv30_parse_slice_header(RV34DecContext *r, GetBitContext *gb, SliceInfo *si)
{
+ AVCodecContext *avctx = r->s.avctx;
int mb_bits;
int w = r->s.width, h = r->s.height;
int mb_size;
@@ -52,6 +53,13 @@ static int rv30_parse_slice_header(RV34DecContext *r, GetBitContext *gb, SliceIn
si->pts = get_bits(gb, 13);
rpr = get_bits(gb, r->rpr);
if(rpr){
+ if (avctx->extradata_size < rpr * 2 + 8) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Insufficient extradata - need at least %d bytes, got %d\n",
+ 8 + rpr * 2, avctx->extradata_size);
+ return AVERROR(EINVAL);
+ }
+
w = r->s.avctx->extradata[6 + rpr*2] << 2;
h = r->s.avctx->extradata[7 + rpr*2] << 2;
}
@@ -255,11 +263,7 @@ static av_cold int rv30_decode_init(AVCodecContext *avctx)
}
r->rpr = (avctx->extradata[1] & 7) >> 1;
r->rpr = FFMIN(r->rpr + 1, 3);
- if(avctx->extradata_size - 8 < (r->rpr - 1) * 2){
- av_log(avctx, AV_LOG_ERROR, "Insufficient extradata - need at least %d bytes, got %d\n",
- 6 + r->rpr * 2, avctx->extradata_size);
- return AVERROR(EINVAL);
- }
+
r->parse_slice_header = rv30_parse_slice_header;
r->decode_intra_types = rv30_decode_intra_types;
r->decode_mb_info = rv30_decode_mb_info;
diff --git a/gst-libs/ext/libav/libavcodec/shorten.c b/gst-libs/ext/libav/libavcodec/shorten.c
index fda90fe..22976e0 100644
--- a/gst-libs/ext/libav/libavcodec/shorten.c
+++ b/gst-libs/ext/libav/libavcodec/shorten.c
@@ -277,7 +277,8 @@ static void output_buffer(int16_t **samples, int nchan, int blocksize,
}
}
-static const int fixed_coeffs[3][3] = {
+static const int fixed_coeffs[][3] = {
+ { 0, 0, 0 },
{ 1, 0, 0 },
{ 2, -1, 0 },
{ 3, -3, 1 }
@@ -306,7 +307,12 @@ static int decode_subframe_lpc(ShortenContext *s, int command, int channel,
} else {
/* fixed LPC coeffs */
pred_order = command;
- coeffs = fixed_coeffs[pred_order - 1];
+ if (pred_order >= FF_ARRAY_ELEMS(fixed_coeffs)) {
+ av_log(s->avctx, AV_LOG_ERROR, "invalid pred_order %d\n",
+ pred_order);
+ return AVERROR_INVALIDDATA;
+ }
+ coeffs = fixed_coeffs[pred_order];
qshift = 0;
}
diff --git a/gst-libs/ext/libav/libavcodec/truemotion1.c b/gst-libs/ext/libav/libavcodec/truemotion1.c
index c49f9fe..63cd05b 100644
--- a/gst-libs/ext/libav/libavcodec/truemotion1.c
+++ b/gst-libs/ext/libav/libavcodec/truemotion1.c
@@ -512,6 +512,15 @@ hres,vres,i,i%vres (0 < i < 4)
index = s->index_stream[index_stream_index++] * 4; \
}
+#define INC_INDEX \
+do { \
+ if (index >= 1023) { \
+ av_log(s->avctx, AV_LOG_ERROR, "Invalid index value.\n"); \
+ return; \
+ } \
+ index++; \
+} while (0)
+
#define APPLY_C_PREDICTOR() \
predictor_pair = s->c_predictor_table[index]; \
horiz_pred += (predictor_pair >> 1); \
@@ -524,10 +533,10 @@ hres,vres,i,i%vres (0 < i < 4)
if (predictor_pair & 1) \
GET_NEXT_INDEX() \
else \
- index++; \
+ INC_INDEX; \
} \
} else \
- index++;
+ INC_INDEX;
#define APPLY_C_PREDICTOR_24() \
predictor_pair = s->c_predictor_table[index]; \
@@ -541,10 +550,10 @@ hres,vres,i,i%vres (0 < i < 4)
if (predictor_pair & 1) \
GET_NEXT_INDEX() \
else \
- index++; \
+ INC_INDEX; \
} \
} else \
- index++;
+ INC_INDEX;
#define APPLY_Y_PREDICTOR() \
@@ -559,10 +568,10 @@ hres,vres,i,i%vres (0 < i < 4)
if (predictor_pair & 1) \
GET_NEXT_INDEX() \
else \
- index++; \
+ INC_INDEX; \
} \
} else \
- index++;
+ INC_INDEX;
#define APPLY_Y_PREDICTOR_24() \
predictor_pair = s->y_predictor_table[index]; \
@@ -576,10 +585,10 @@ hres,vres,i,i%vres (0 < i < 4)
if (predictor_pair & 1) \
GET_NEXT_INDEX() \
else \
- index++; \
+ INC_INDEX; \
} \
} else \
- index++;
+ INC_INDEX;
#define OUTPUT_PIXEL_PAIR() \
*current_pixel_pair = *vert_pred + horiz_pred; \
diff --git a/gst-libs/ext/libav/libavcodec/vc1.c b/gst-libs/ext/libav/libavcodec/vc1.c
index a8dd38a..d2e1e69 100644
--- a/gst-libs/ext/libav/libavcodec/vc1.c
+++ b/gst-libs/ext/libav/libavcodec/vc1.c
@@ -826,6 +826,7 @@ int ff_vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
int mbmodetab, imvtab, icbptab, twomvbptab, fourmvbptab; /* useful only for debugging */
int scale, shift, i; /* for initializing LUT for intensity compensation */
+ v->numref = 0;
v->p_frame_skipped = 0;
if (v->second_field) {
v->s.pict_type = (v->fptype & 1) ? AV_PICTURE_TYPE_P : AV_PICTURE_TYPE_I;
diff --git a/gst-libs/ext/libav/libavcodec/vmnc.c b/gst-libs/ext/libav/libavcodec/vmnc.c
index 4071cdf..346fdb5 100644
--- a/gst-libs/ext/libav/libavcodec/vmnc.c
+++ b/gst-libs/ext/libav/libavcodec/vmnc.c
@@ -31,6 +31,7 @@
#include "libavutil/common.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
+#include "bytestream.h"
enum EncTypes {
MAGIC_WMVd = 0x574D5664,
@@ -62,55 +63,66 @@ typedef struct VmncContext {
int bigendian;
uint8_t pal[768];
int width, height;
+ GetByteContext gb;
/* cursor data */
int cur_w, cur_h;
int cur_x, cur_y;
int cur_hx, cur_hy;
- uint8_t* curbits, *curmask;
- uint8_t* screendta;
+ uint8_t *curbits, *curmask;
+ uint8_t *screendta;
} VmncContext;
/* read pixel value from stream */
-static av_always_inline int vmnc_get_pixel(const uint8_t* buf, int bpp, int be) {
- switch(bpp * 2 + be) {
+static av_always_inline int vmnc_get_pixel(GetByteContext *gb, int bpp, int be)
+{
+ switch (bpp * 2 + be) {
case 2:
- case 3: return *buf;
- case 4: return AV_RL16(buf);
- case 5: return AV_RB16(buf);
- case 8: return AV_RL32(buf);
- case 9: return AV_RB32(buf);
+ case 3:
+ return bytestream2_get_byte(gb);
+ case 4:
+ return bytestream2_get_le16(gb);
+ case 5:
+ return bytestream2_get_be16(gb);
+ case 8:
+ return bytestream2_get_le32(gb);
+ case 9:
+ return bytestream2_get_be32(gb);
default: return 0;
}
}
-static void load_cursor(VmncContext *c, const uint8_t *src)
+static void load_cursor(VmncContext *c)
{
int i, j, p;
- const int bpp = c->bpp2;
- uint8_t *dst8 = c->curbits;
- uint16_t *dst16 = (uint16_t*)c->curbits;
- uint32_t *dst32 = (uint32_t*)c->curbits;
-
- for(j = 0; j < c->cur_h; j++) {
- for(i = 0; i < c->cur_w; i++) {
- p = vmnc_get_pixel(src, bpp, c->bigendian);
- src += bpp;
- if(bpp == 1) *dst8++ = p;
- if(bpp == 2) *dst16++ = p;
- if(bpp == 4) *dst32++ = p;
+ const int bpp = c->bpp2;
+ uint8_t *dst8 = c->curbits;
+ uint16_t *dst16 = (uint16_t *)c->curbits;
+ uint32_t *dst32 = (uint32_t *)c->curbits;
+
+ for (j = 0; j < c->cur_h; j++) {
+ for (i = 0; i < c->cur_w; i++) {
+ p = vmnc_get_pixel(&c->gb, bpp, c->bigendian);
+ if (bpp == 1)
+ *dst8++ = p;
+ if (bpp == 2)
+ *dst16++ = p;
+ if (bpp == 4)
+ *dst32++ = p;
}
}
- dst8 = c->curmask;
+ dst8 = c->curmask;
dst16 = (uint16_t*)c->curmask;
dst32 = (uint32_t*)c->curmask;
- for(j = 0; j < c->cur_h; j++) {
- for(i = 0; i < c->cur_w; i++) {
- p = vmnc_get_pixel(src, bpp, c->bigendian);
- src += bpp;
- if(bpp == 1) *dst8++ = p;
- if(bpp == 2) *dst16++ = p;
- if(bpp == 4) *dst32++ = p;
+ for (j = 0; j < c->cur_h; j++) {
+ for (i = 0; i < c->cur_w; i++) {
+ p = vmnc_get_pixel(&c->gb, bpp, c->bigendian);
+ if (bpp == 1)
+ *dst8++ = p;
+ if (bpp == 2)
+ *dst16++ = p;
+ if (bpp == 4)
+ *dst32++ = p;
}
}
}
@@ -120,96 +132,100 @@ static void put_cursor(uint8_t *dst, int stride, VmncContext *c, int dx, int dy)
int i, j;
int w, h, x, y;
w = c->cur_w;
- if(c->width < c->cur_x + c->cur_w) w = c->width - c->cur_x;
+ if (c->width < c->cur_x + c->cur_w)
+ w = c->width - c->cur_x;
h = c->cur_h;
- if(c->height < c->cur_y + c->cur_h) h = c->height - c->cur_y;
+ if (c->height < c->cur_y + c->cur_h)
+ h = c->height - c->cur_y;
x = c->cur_x;
y = c->cur_y;
- if(x < 0) {
+ if (x < 0) {
w += x;
- x = 0;
+ x = 0;
}
- if(y < 0) {
+ if (y < 0) {
h += y;
- y = 0;
+ y = 0;
}
- if((w < 1) || (h < 1)) return;
+ if ((w < 1) || (h < 1))
+ return;
dst += x * c->bpp2 + y * stride;
- if(c->bpp2 == 1) {
- uint8_t* cd = c->curbits, *msk = c->curmask;
- for(j = 0; j < h; j++) {
- for(i = 0; i < w; i++)
+ if (c->bpp2 == 1) {
+ uint8_t *cd = c->curbits, *msk = c->curmask;
+ for (j = 0; j < h; j++) {
+ for (i = 0; i < w; i++)
dst[i] = (dst[i] & cd[i]) ^ msk[i];
msk += c->cur_w;
- cd += c->cur_w;
+ cd += c->cur_w;
dst += stride;
}
- } else if(c->bpp2 == 2) {
- uint16_t* cd = (uint16_t*)c->curbits, *msk = (uint16_t*)c->curmask;
- uint16_t* dst2;
- for(j = 0; j < h; j++) {
+ } else if (c->bpp2 == 2) {
+ uint16_t *cd = (uint16_t*)c->curbits, *msk = (uint16_t*)c->curmask;
+ uint16_t *dst2;
+ for (j = 0; j < h; j++) {
dst2 = (uint16_t*)dst;
- for(i = 0; i < w; i++)
+ for (i = 0; i < w; i++)
dst2[i] = (dst2[i] & cd[i]) ^ msk[i];
msk += c->cur_w;
- cd += c->cur_w;
+ cd += c->cur_w;
dst += stride;
}
- } else if(c->bpp2 == 4) {
- uint32_t* cd = (uint32_t*)c->curbits, *msk = (uint32_t*)c->curmask;
- uint32_t* dst2;
- for(j = 0; j < h; j++) {
+ } else if (c->bpp2 == 4) {
+ uint32_t *cd = (uint32_t*)c->curbits, *msk = (uint32_t*)c->curmask;
+ uint32_t *dst2;
+ for (j = 0; j < h; j++) {
dst2 = (uint32_t*)dst;
- for(i = 0; i < w; i++)
+ for (i = 0; i < w; i++)
dst2[i] = (dst2[i] & cd[i]) ^ msk[i];
msk += c->cur_w;
- cd += c->cur_w;
+ cd += c->cur_w;
dst += stride;
}
}
}
/* fill rectangle with given color */
-static av_always_inline void paint_rect(uint8_t *dst, int dx, int dy, int w, int h, int color, int bpp, int stride)
+static av_always_inline void paint_rect(uint8_t *dst, int dx, int dy,
+ int w, int h, int color,
+ int bpp, int stride)
{
int i, j;
dst += dx * bpp + dy * stride;
- if(bpp == 1){
- for(j = 0; j < h; j++) {
+ if (bpp == 1) {
+ for (j = 0; j < h; j++) {
memset(dst, color, w);
dst += stride;
}
- }else if(bpp == 2){
- uint16_t* dst2;
- for(j = 0; j < h; j++) {
+ } else if (bpp == 2) {
+ uint16_t *dst2;
+ for (j = 0; j < h; j++) {
dst2 = (uint16_t*)dst;
- for(i = 0; i < w; i++) {
+ for (i = 0; i < w; i++)
*dst2++ = color;
- }
dst += stride;
}
- }else if(bpp == 4){
- uint32_t* dst2;
- for(j = 0; j < h; j++) {
+ } else if (bpp == 4) {
+ uint32_t *dst2;
+ for (j = 0; j < h; j++) {
dst2 = (uint32_t*)dst;
- for(i = 0; i < w; i++) {
+ for (i = 0; i < w; i++)
dst2[i] = color;
- }
dst += stride;
}
}
}
-static av_always_inline void paint_raw(uint8_t *dst, int w, int h, const uint8_t* src, int bpp, int be, int stride)
+static av_always_inline void paint_raw(uint8_t *dst, int w, int h,
+ GetByteContext *gb, int bpp,
+ int be, int stride)
{
int i, j, p;
- for(j = 0; j < h; j++) {
- for(i = 0; i < w; i++) {
- p = vmnc_get_pixel(src, bpp, be);
- src += bpp;
- switch(bpp){
+ for (j = 0; j < h; j++) {
+ for (i = 0; i < w; i++) {
+ p = vmnc_get_pixel(gb, bpp, be);
+ switch (bpp) {
case 1:
dst[i] = p;
break;
@@ -225,74 +241,81 @@ static av_always_inline void paint_raw(uint8_t *dst, int w, int h, const uint8_t
}
}
-static int decode_hextile(VmncContext *c, uint8_t* dst, const uint8_t* src, int ssize, int w, int h, int stride)
+static int decode_hextile(VmncContext *c, uint8_t* dst, GetByteContext *gb,
+ int w, int h, int stride)
{
int i, j, k;
int bg = 0, fg = 0, rects, color, flags, xy, wh;
const int bpp = c->bpp2;
uint8_t *dst2;
int bw = 16, bh = 16;
- const uint8_t *ssrc=src;
- for(j = 0; j < h; j += 16) {
+ for (j = 0; j < h; j += 16) {
dst2 = dst;
- bw = 16;
- if(j + 16 > h) bh = h - j;
- for(i = 0; i < w; i += 16, dst2 += 16 * bpp) {
- if(src - ssrc >= ssize) {
+ bw = 16;
+ if (j + 16 > h)
+ bh = h - j;
+ for (i = 0; i < w; i += 16, dst2 += 16 * bpp) {
+ if (bytestream2_get_bytes_left(gb) <= 0) {
av_log(c->avctx, AV_LOG_ERROR, "Premature end of data!\n");
return -1;
}
- if(i + 16 > w) bw = w - i;
- flags = *src++;
- if(flags & HT_RAW) {
- if(src - ssrc > ssize - bw * bh * bpp) {
+ if (i + 16 > w)
+ bw = w - i;
+ flags = bytestream2_get_byte(gb);
+ if (flags & HT_RAW) {
+ if (bytestream2_get_bytes_left(gb) < bw * bh * bpp) {
av_log(c->avctx, AV_LOG_ERROR, "Premature end of data!\n");
return -1;
}
- paint_raw(dst2, bw, bh, src, bpp, c->bigendian, stride);
- src += bw * bh * bpp;
+ paint_raw(dst2, bw, bh, gb, bpp, c->bigendian, stride);
} else {
- if(flags & HT_BKG) {
- bg = vmnc_get_pixel(src, bpp, c->bigendian); src += bpp;
- }
- if(flags & HT_FG) {
- fg = vmnc_get_pixel(src, bpp, c->bigendian); src += bpp;
- }
+ if (flags & HT_BKG)
+ bg = vmnc_get_pixel(gb, bpp, c->bigendian);
+ if (flags & HT_FG)
+ fg = vmnc_get_pixel(gb, bpp, c->bigendian);
rects = 0;
- if(flags & HT_SUB)
- rects = *src++;
+ if (flags & HT_SUB)
+ rects = bytestream2_get_byte(gb);
color = !!(flags & HT_CLR);
paint_rect(dst2, 0, 0, bw, bh, bg, bpp, stride);
- if(src - ssrc > ssize - rects * (color * bpp + 2)) {
+ if (bytestream2_get_bytes_left(gb) < rects * (color * bpp + 2)) {
av_log(c->avctx, AV_LOG_ERROR, "Premature end of data!\n");
return -1;
}
- for(k = 0; k < rects; k++) {
- if(color) {
- fg = vmnc_get_pixel(src, bpp, c->bigendian); src += bpp;
- }
- xy = *src++;
- wh = *src++;
- paint_rect(dst2, xy >> 4, xy & 0xF, (wh>>4)+1, (wh & 0xF)+1, fg, bpp, stride);
+ for (k = 0; k < rects; k++) {
+ if (color)
+ fg = vmnc_get_pixel(gb, bpp, c->bigendian);
+ xy = bytestream2_get_byte(gb);
+ wh = bytestream2_get_byte(gb);
+ paint_rect(dst2, xy >> 4, xy & 0xF,
+ (wh>>4)+1, (wh & 0xF)+1, fg, bpp, stride);
}
}
}
dst += stride * 16;
}
- return src - ssrc;
+ return 0;
+}
+
+static void reset_buffers(VmncContext *c)
+{
+ av_freep(&c->curbits);
+ av_freep(&c->curmask);
+ av_freep(&c->screendta);
+ c->cur_w = c->cur_h = 0;
}
static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
AVPacket *avpkt)
{
const uint8_t *buf = avpkt->data;
- int buf_size = avpkt->size;
+ int buf_size = avpkt->size;
VmncContext * const c = avctx->priv_data;
+ GetByteContext *gb = &c->gb;
uint8_t *outptr;
- const uint8_t *src = buf;
int dx, dy, w, h, depth, enc, chunks, res, size_left;
c->pic.reference = 1;
@@ -302,178 +325,199 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
return -1;
}
+ bytestream2_init(gb, buf, buf_size);
+
c->pic.key_frame = 0;
c->pic.pict_type = AV_PICTURE_TYPE_P;
- //restore screen after cursor
- if(c->screendta) {
+ // restore screen after cursor
+ if (c->screendta) {
int i;
w = c->cur_w;
- if(c->width < c->cur_x + w) w = c->width - c->cur_x;
+ if (c->width < c->cur_x + w)
+ w = c->width - c->cur_x;
h = c->cur_h;
- if(c->height < c->cur_y + h) h = c->height - c->cur_y;
+ if (c->height < c->cur_y + h)
+ h = c->height - c->cur_y;
dx = c->cur_x;
- if(dx < 0) {
+ if (dx < 0) {
w += dx;
dx = 0;
}
dy = c->cur_y;
- if(dy < 0) {
+ if (dy < 0) {
h += dy;
dy = 0;
}
- if((w > 0) && (h > 0)) {
+ if ((w > 0) && (h > 0)) {
outptr = c->pic.data[0] + dx * c->bpp2 + dy * c->pic.linesize[0];
- for(i = 0; i < h; i++) {
- memcpy(outptr, c->screendta + i * c->cur_w * c->bpp2, w * c->bpp2);
+ for (i = 0; i < h; i++) {
+ memcpy(outptr, c->screendta + i * c->cur_w * c->bpp2,
+ w * c->bpp2);
outptr += c->pic.linesize[0];
}
}
}
- src += 2;
- chunks = AV_RB16(src); src += 2;
- while(chunks--) {
- dx = AV_RB16(src); src += 2;
- dy = AV_RB16(src); src += 2;
- w = AV_RB16(src); src += 2;
- h = AV_RB16(src); src += 2;
- enc = AV_RB32(src); src += 4;
+ bytestream2_skip(gb, 2);
+ chunks = bytestream2_get_be16(gb);
+ while (chunks--) {
+ dx = bytestream2_get_be16(gb);
+ dy = bytestream2_get_be16(gb);
+ w = bytestream2_get_be16(gb);
+ h = bytestream2_get_be16(gb);
+ enc = bytestream2_get_be32(gb);
outptr = c->pic.data[0] + dx * c->bpp2 + dy * c->pic.linesize[0];
- size_left = buf_size - (src - buf);
- switch(enc) {
+ size_left = bytestream2_get_bytes_left(gb);
+ switch (enc) {
case MAGIC_WMVd: // cursor
- if(size_left < 2 + w * h * c->bpp2 * 2) {
- av_log(avctx, AV_LOG_ERROR, "Premature end of data! (need %i got %i)\n", 2 + w * h * c->bpp2 * 2, size_left);
+ if (size_left < 2 + w * h * c->bpp2 * 2) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Premature end of data! (need %i got %i)\n",
+ 2 + w * h * c->bpp2 * 2, size_left);
return -1;
}
- src += 2;
- c->cur_w = w;
- c->cur_h = h;
+ bytestream2_skip(gb, 2);
+ c->cur_w = w;
+ c->cur_h = h;
c->cur_hx = dx;
c->cur_hy = dy;
- if((c->cur_hx > c->cur_w) || (c->cur_hy > c->cur_h)) {
- av_log(avctx, AV_LOG_ERROR, "Cursor hot spot is not in image: %ix%i of %ix%i cursor size\n", c->cur_hx, c->cur_hy, c->cur_w, c->cur_h);
+ if ((c->cur_hx > c->cur_w) || (c->cur_hy > c->cur_h)) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Cursor hot spot is not in image: "
+ "%ix%i of %ix%i cursor size\n",
+ c->cur_hx, c->cur_hy, c->cur_w, c->cur_h);
c->cur_hx = c->cur_hy = 0;
}
- c->curbits = av_realloc(c->curbits, c->cur_w * c->cur_h * c->bpp2);
- c->curmask = av_realloc(c->curmask, c->cur_w * c->cur_h * c->bpp2);
- c->screendta = av_realloc(c->screendta, c->cur_w * c->cur_h * c->bpp2);
- load_cursor(c, src);
- src += w * h * c->bpp2 * 2;
+ if (c->cur_w * c->cur_h >= INT_MAX / c->bpp2) {
+ reset_buffers(c);
+ return AVERROR(EINVAL);
+ } else {
+ int screen_size = c->cur_w * c->cur_h * c->bpp2;
+ if ((c->curbits = av_realloc(c->curbits, screen_size)) == NULL ||
+ (c->curmask = av_realloc(c->curmask, screen_size)) == NULL ||
+ (c->screendta = av_realloc(c->screendta, screen_size)) == NULL) {
+ reset_buffers(c);
+ return screen_size ? AVERROR(ENOMEM) : 0;
+ }
+ }
+ load_cursor(c);
break;
case MAGIC_WMVe: // unknown
- src += 2;
+ bytestream2_skip(gb, 2);
break;
case MAGIC_WMVf: // update cursor position
c->cur_x = dx - c->cur_hx;
c->cur_y = dy - c->cur_hy;
break;
case MAGIC_WMVg: // unknown
- src += 10;
+ bytestream2_skip(gb, 10);
break;
case MAGIC_WMVh: // unknown
- src += 4;
+ bytestream2_skip(gb, 4);
break;
case MAGIC_WMVi: // ServerInitialization struct
c->pic.key_frame = 1;
c->pic.pict_type = AV_PICTURE_TYPE_I;
- depth = *src++;
- if(depth != c->bpp) {
- av_log(avctx, AV_LOG_INFO, "Depth mismatch. Container %i bpp, Frame data: %i bpp\n", c->bpp, depth);
+ depth = bytestream2_get_byte(gb);
+ if (depth != c->bpp) {
+ av_log(avctx, AV_LOG_INFO,
+ "Depth mismatch. Container %i bpp, "
+ "Frame data: %i bpp\n",
+ c->bpp, depth);
}
- src++;
- c->bigendian = *src++;
- if(c->bigendian & (~1)) {
- av_log(avctx, AV_LOG_INFO, "Invalid header: bigendian flag = %i\n", c->bigendian);
+ bytestream2_skip(gb, 1);
+ c->bigendian = bytestream2_get_byte(gb);
+ if (c->bigendian & (~1)) {
+ av_log(avctx, AV_LOG_INFO,
+ "Invalid header: bigendian flag = %i\n", c->bigendian);
return -1;
}
//skip the rest of pixel format data
- src += 13;
+ bytestream2_skip(gb, 13);
break;
case MAGIC_WMVj: // unknown
- src += 2;
+ bytestream2_skip(gb, 2);
break;
case 0x00000000: // raw rectangle data
- if((dx + w > c->width) || (dy + h > c->height)) {
- av_log(avctx, AV_LOG_ERROR, "Incorrect frame size: %ix%i+%ix%i of %ix%i\n", w, h, dx, dy, c->width, c->height);
+ if ((dx + w > c->width) || (dy + h > c->height)) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Incorrect frame size: %ix%i+%ix%i of %ix%i\n",
+ w, h, dx, dy, c->width, c->height);
return -1;
}
- if(size_left < w * h * c->bpp2) {
- av_log(avctx, AV_LOG_ERROR, "Premature end of data! (need %i got %i)\n", w * h * c->bpp2, size_left);
+ if (size_left < w * h * c->bpp2) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Premature end of data! (need %i got %i)\n",
+ w * h * c->bpp2, size_left);
return -1;
}
- paint_raw(outptr, w, h, src, c->bpp2, c->bigendian, c->pic.linesize[0]);
- src += w * h * c->bpp2;
+ paint_raw(outptr, w, h, gb, c->bpp2, c->bigendian,
+ c->pic.linesize[0]);
break;
case 0x00000005: // HexTile encoded rectangle
- if((dx + w > c->width) || (dy + h > c->height)) {
- av_log(avctx, AV_LOG_ERROR, "Incorrect frame size: %ix%i+%ix%i of %ix%i\n", w, h, dx, dy, c->width, c->height);
+ if ((dx + w > c->width) || (dy + h > c->height)) {
+ av_log(avctx, AV_LOG_ERROR,
+ "Incorrect frame size: %ix%i+%ix%i of %ix%i\n",
+ w, h, dx, dy, c->width, c->height);
return -1;
}
- res = decode_hextile(c, outptr, src, size_left, w, h, c->pic.linesize[0]);
- if(res < 0)
+ res = decode_hextile(c, outptr, gb, w, h, c->pic.linesize[0]);
+ if (res < 0)
return -1;
- src += res;
break;
default:
av_log(avctx, AV_LOG_ERROR, "Unsupported block type 0x%08X\n", enc);
chunks = 0; // leave chunks decoding loop
}
}
- if(c->screendta){
+ if (c->screendta) {
int i;
- //save screen data before painting cursor
+ // save screen data before painting cursor
w = c->cur_w;
- if(c->width < c->cur_x + w) w = c->width - c->cur_x;
+ if (c->width < c->cur_x + w)
+ w = c->width - c->cur_x;
h = c->cur_h;
- if(c->height < c->cur_y + h) h = c->height - c->cur_y;
+ if (c->height < c->cur_y + h)
+ h = c->height - c->cur_y;
dx = c->cur_x;
- if(dx < 0) {
+ if (dx < 0) {
w += dx;
dx = 0;
}
dy = c->cur_y;
- if(dy < 0) {
+ if (dy < 0) {
h += dy;
dy = 0;
}
- if((w > 0) && (h > 0)) {
+ if ((w > 0) && (h > 0)) {
outptr = c->pic.data[0] + dx * c->bpp2 + dy * c->pic.linesize[0];
- for(i = 0; i < h; i++) {
- memcpy(c->screendta + i * c->cur_w * c->bpp2, outptr, w * c->bpp2);
+ for (i = 0; i < h; i++) {
+ memcpy(c->screendta + i * c->cur_w * c->bpp2, outptr,
+ w * c->bpp2);
outptr += c->pic.linesize[0];
}
outptr = c->pic.data[0];
put_cursor(outptr, c->pic.linesize[0], c, c->cur_x, c->cur_y);
}
}
- *got_frame = 1;
+ *got_frame = 1;
*(AVFrame*)data = c->pic;
/* always report that the buffer was completely consumed */
return buf_size;
}
-
-
-/*
- *
- * Init VMnc decoder
- *
- */
static av_cold int decode_init(AVCodecContext *avctx)
{
VmncContext * const c = avctx->priv_data;
- c->avctx = avctx;
-
- c->width = avctx->width;
+ c->avctx = avctx;
+ c->width = avctx->width;
c->height = avctx->height;
+ c->bpp = avctx->bits_per_coded_sample;
+ c->bpp2 = c->bpp / 8;
- c->bpp = avctx->bits_per_coded_sample;
- c->bpp2 = c->bpp/8;
-
- switch(c->bpp){
+ switch (c->bpp) {
case 8:
avctx->pix_fmt = AV_PIX_FMT_PAL8;
break;
@@ -491,13 +535,6 @@ static av_cold int decode_init(AVCodecContext *avctx)
return 0;
}
-
-
-/*
- *
- * Uninit VMnc decoder
- *
- */
static av_cold int decode_end(AVCodecContext *avctx)
{
VmncContext * const c = avctx->priv_data;
diff --git a/gst-libs/ext/libav/libavcodec/x86/ac3dsp.asm b/gst-libs/ext/libav/libavcodec/x86/ac3dsp.asm
index 45c30d1..4facf32 100644
--- a/gst-libs/ext/libav/libavcodec/x86/ac3dsp.asm
+++ b/gst-libs/ext/libav/libavcodec/x86/ac3dsp.asm
@@ -382,42 +382,6 @@ cglobal ac3_compute_mantissa_size, 1, 2, 4, mant_cnt, sum
%endif
%endmacro
-%if HAVE_AMD3DNOW_EXTERNAL
-INIT_MMX 3dnow
-cglobal ac3_extract_exponents, 3, 3, 0, exp, coef, len
- add expq, lenq
- lea coefq, [coefq+4*lenq]
- neg lenq
- movq m3, [pd_1]
- movq m4, [pd_151]
-.loop:
- movq m0, [coefq+4*lenq ]
- movq m1, [coefq+4*lenq+8]
- PABSD m0, m2
- PABSD m1, m2
- pslld m0, 1
- por m0, m3
- pi2fd m2, m0
- psrld m2, 23
- movq m0, m4
- psubd m0, m2
- pslld m1, 1
- por m1, m3
- pi2fd m2, m1
- psrld m2, 23
- movq m1, m4
- psubd m1, m2
- packssdw m0, m0
- packuswb m0, m0
- packssdw m1, m1
- packuswb m1, m1
- punpcklwd m0, m1
- movd [expq+lenq], m0
- add lenq, 4
- jl .loop
- REP_RET
-%endif
-
%macro AC3_EXTRACT_EXPONENTS 0
cglobal ac3_extract_exponents, 3, 3, 4, exp, coef, len
add expq, lenq
diff --git a/gst-libs/ext/libav/libavcodec/x86/ac3dsp_init.c b/gst-libs/ext/libav/libavcodec/x86/ac3dsp_init.c
index e8f7304..e144440 100644
--- a/gst-libs/ext/libav/libavcodec/x86/ac3dsp_init.c
+++ b/gst-libs/ext/libav/libavcodec/x86/ac3dsp_init.c
@@ -189,7 +189,6 @@ av_cold void ff_ac3dsp_init_x86(AC3DSPContext *c, int bit_exact)
c->ac3_rshift_int32 = ff_ac3_rshift_int32_mmx;
}
if (EXTERNAL_AMD3DNOW(mm_flags)) {
- c->extract_exponents = ff_ac3_extract_exponents_3dnow;
if (!bit_exact) {
c->float_to_fixed24 = ff_float_to_fixed24_3dnow;
}
diff --git a/gst-libs/ext/libav/libavdevice/alsa-audio-dec.c b/gst-libs/ext/libav/libavdevice/alsa-audio-dec.c
index 5b32ed9..0687a4a 100644
--- a/gst-libs/ext/libav/libavdevice/alsa-audio-dec.c
+++ b/gst-libs/ext/libav/libavdevice/alsa-audio-dec.c
@@ -142,7 +142,7 @@ static int audio_read_packet(AVFormatContext *s1, AVPacket *pkt)
ts_delay += res;
pkt->pts = timestamp.tv_sec * 1000000LL
+ (timestamp.tv_nsec * st->codec->sample_rate
- - ts_delay * 1000000000LL + st->codec->sample_rate * 500LL)
+ - (int64_t)ts_delay * 1000000000LL + st->codec->sample_rate * 500LL)
/ (st->codec->sample_rate * 1000LL);
pkt->size = res * s->frame_size;
diff --git a/gst-libs/ext/libav/libavformat/avidec.c b/gst-libs/ext/libav/libavformat/avidec.c
index e17d932..759abbc 100644
--- a/gst-libs/ext/libav/libavformat/avidec.c
+++ b/gst-libs/ext/libav/libavformat/avidec.c
@@ -456,13 +456,15 @@ static int avi_read_header(AVFormatContext *s)
ast = s->streams[0]->priv_data;
av_freep(&s->streams[0]->codec->extradata);
av_freep(&s->streams[0]->codec);
+ av_freep(&s->streams[0]->info);
av_freep(&s->streams[0]);
s->nb_streams = 0;
if (CONFIG_DV_DEMUXER) {
avi->dv_demux = avpriv_dv_init_demux(s);
if (!avi->dv_demux)
goto fail;
- }
+ } else
+ goto fail;
s->streams[0]->priv_data = ast;
avio_skip(pb, 3 * 4);
ast->scale = avio_rl32(pb);
@@ -885,7 +887,7 @@ start_sync:
goto start_sync;
}
- n= get_stream_idx(d);
+ n = avi->dv_demux ? 0 : get_stream_idx(d);
if(!((i-avi->last_pkt_pos)&1) && get_stream_idx(d+1) < s->nb_streams)
continue;
@@ -988,6 +990,8 @@ static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
int size = avpriv_dv_get_packet(avi->dv_demux, pkt);
if (size >= 0)
return size;
+ else
+ goto resync;
}
if(avi->non_interleaved){
@@ -1287,12 +1291,17 @@ static int avi_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp
int64_t pos;
AVIStream *ast;
+ /* Does not matter which stream is requested dv in avi has the
+ * stream information in the first video stream.
+ */
+ if (avi->dv_demux)
+ stream_index = 0;
+
if (!avi->index_loaded) {
/* we only load the index on demand */
avi_load_index(s);
avi->index_loaded = 1;
}
- assert(stream_index>= 0);
st = s->streams[stream_index];
ast= st->priv_data;
@@ -1311,7 +1320,6 @@ static int avi_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp
/* One and only one real stream for DV in AVI, and it has video */
/* offsets. Calling with other stream indexes should have failed */
/* the av_index_search_timestamp call above. */
- assert(stream_index == 0);
/* Feed the DV video stream version of the timestamp to the */
/* DV demux so it can synthesize correct timestamps. */
diff --git a/gst-libs/ext/libav/libavformat/avio.c b/gst-libs/ext/libav/libavformat/avio.c
index ad39e6f..689d4a1 100644
--- a/gst-libs/ext/libav/libavformat/avio.c
+++ b/gst-libs/ext/libav/libavformat/avio.c
@@ -197,7 +197,7 @@ int ffurl_alloc(URLContext **puc, const char *filename, int flags,
return url_alloc_for_protocol (puc, up, filename, flags, int_cb);
}
*puc = NULL;
- return AVERROR(ENOENT);
+ return AVERROR_PROTOCOL_NOT_FOUND;
}
int ffurl_open(URLContext **puc, const char *filename, int flags,
diff --git a/gst-libs/ext/libav/libavformat/matroskadec.c b/gst-libs/ext/libav/libavformat/matroskadec.c
index 8a0c91b..730285a 100644
--- a/gst-libs/ext/libav/libavformat/matroskadec.c
+++ b/gst-libs/ext/libav/libavformat/matroskadec.c
@@ -704,9 +704,11 @@ static int ebml_read_ascii(AVIOContext *pb, int size, char **str)
static int ebml_read_binary(AVIOContext *pb, int length, EbmlBin *bin)
{
av_free(bin->data);
- if (!(bin->data = av_malloc(length)))
+ if (!(bin->data = av_malloc(length + FF_INPUT_BUFFER_PADDING_SIZE)))
return AVERROR(ENOMEM);
+ memset(bin->data + length, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+
bin->size = length;
bin->pos = avio_tell(pb);
if (avio_read(pb, bin->data, length) != length) {
@@ -1405,7 +1407,7 @@ static int matroska_read_header(AVFormatContext *s)
for (i=0; i < matroska->tracks.nb_elem; i++) {
MatroskaTrack *track = &tracks[i];
enum AVCodecID codec_id = AV_CODEC_ID_NONE;
- EbmlList *encodings_list = &tracks->encodings;
+ EbmlList *encodings_list = &track->encodings;
MatroskaTrackEncoding *encodings = encodings_list->elem;
uint8_t *extradata = NULL;
int extradata_size = 0;
diff --git a/gst-libs/ext/libav/libavformat/mov.c b/gst-libs/ext/libav/libavformat/mov.c
index 6b89a2d..e5d8311 100644
--- a/gst-libs/ext/libav/libavformat/mov.c
+++ b/gst-libs/ext/libav/libavformat/mov.c
@@ -1649,6 +1649,7 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
if (entries >= UINT_MAX / sizeof(*sc->stts_data))
return AVERROR(EINVAL);
+ av_free(sc->stts_data);
sc->stts_data = av_malloc(entries * sizeof(*sc->stts_data));
if (!sc->stts_data)
return AVERROR(ENOMEM);
@@ -2313,7 +2314,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom)
if (!sc->ctts_count && sc->sample_count)
{
/* Complement ctts table if moov atom doesn't have ctts atom. */
- ctts_data = av_malloc(sizeof(*sc->ctts_data));
+ ctts_data = av_realloc(NULL, sizeof(*sc->ctts_data));
if (!ctts_data)
return AVERROR(ENOMEM);
sc->ctts_data = ctts_data;
@@ -2758,6 +2759,14 @@ static int mov_read_close(AVFormatContext *s)
av_freep(&sc->drefs);
if (sc->pb && sc->pb != s->pb)
avio_close(sc->pb);
+
+ av_freep(&sc->chunk_offsets);
+ av_freep(&sc->stsc_data);
+ av_freep(&sc->sample_sizes);
+ av_freep(&sc->keyframes);
+ av_freep(&sc->stts_data);
+ av_freep(&sc->stps_data);
+ av_freep(&sc->rap_group);
}
if (mov->dv_demux) {
diff --git a/gst-libs/ext/libav/libavformat/nut.c b/gst-libs/ext/libav/libavformat/nut.c
index 196e04e..65d84d1 100644
--- a/gst-libs/ext/libav/libavformat/nut.c
+++ b/gst-libs/ext/libav/libavformat/nut.c
@@ -179,10 +179,16 @@ int ff_nut_sp_pts_cmp(const Syncpoint *a, const Syncpoint *b){
return ((a->ts - b->ts) >> 32) - ((b->ts - a->ts) >> 32);
}
-void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){
+int ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){
Syncpoint *sp= av_mallocz(sizeof(Syncpoint));
struct AVTreeNode *node = av_tree_node_alloc();
+ if (!sp || !node) {
+ av_freep(&sp);
+ av_freep(&node);
+ return AVERROR(ENOMEM);
+ }
+
sp->pos= pos;
sp->back_ptr= back_ptr;
sp->ts= ts;
@@ -191,6 +197,8 @@ void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts){
av_free(sp);
av_free(node);
}
+
+ return 0;
}
static int enu_free(void *opaque, void *elem)
diff --git a/gst-libs/ext/libav/libavformat/nut.h b/gst-libs/ext/libav/libavformat/nut.h
index 89b0248..066d186 100644
--- a/gst-libs/ext/libav/libavformat/nut.h
+++ b/gst-libs/ext/libav/libavformat/nut.h
@@ -119,7 +119,7 @@ void ff_nut_reset_ts(NUTContext *nut, AVRational time_base, int64_t val);
int64_t ff_lsb2full(StreamContext *stream, int64_t lsb);
int ff_nut_sp_pos_cmp(const Syncpoint *a, const Syncpoint *b);
int ff_nut_sp_pts_cmp(const Syncpoint *a, const Syncpoint *b);
-void ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts);
+int ff_nut_add_sp(NUTContext *nut, int64_t pos, int64_t back_ptr, int64_t ts);
void ff_nut_free_sp(NUTContext *nut);
extern const Dispositions ff_nut_dispositions[];
diff --git a/gst-libs/ext/libav/libavformat/nutdec.c b/gst-libs/ext/libav/libavformat/nutdec.c
index b705987..1a9390c 100644
--- a/gst-libs/ext/libav/libavformat/nutdec.c
+++ b/gst-libs/ext/libav/libavformat/nutdec.c
@@ -526,6 +526,7 @@ static int decode_syncpoint(NUTContext *nut, int64_t *ts, int64_t *back_ptr)
AVFormatContext *s = nut->avf;
AVIOContext *bc = s->pb;
int64_t end, tmp;
+ int ret;
nut->last_syncpoint_pos = avio_tell(bc) - 8;
@@ -547,7 +548,9 @@ static int decode_syncpoint(NUTContext *nut, int64_t *ts, int64_t *back_ptr)
*ts = tmp / s->nb_streams *
av_q2d(nut->time_base[tmp % s->nb_streams]) * AV_TIME_BASE;
- ff_nut_add_sp(nut, nut->last_syncpoint_pos, *back_ptr, *ts);
+
+ if ((ret = ff_nut_add_sp(nut, nut->last_syncpoint_pos, *back_ptr, *ts)) < 0)
+ return ret;
return 0;
}
diff --git a/gst-libs/ext/libav/libavformat/nutenc.c b/gst-libs/ext/libav/libavformat/nutenc.c
index df70f94..51bddf0 100644
--- a/gst-libs/ext/libav/libavformat/nutenc.c
+++ b/gst-libs/ext/libav/libavformat/nutenc.c
@@ -815,7 +815,8 @@ static int nut_write_packet(AVFormatContext *s, AVPacket *pkt)
ff_put_v(dyn_bc, sp ? (nut->last_syncpoint_pos - sp->pos) >> 4 : 0);
put_packet(nut, bc, dyn_bc, 1, SYNCPOINT_STARTCODE);
- ff_nut_add_sp(nut, nut->last_syncpoint_pos, 0 /*unused*/, pkt->dts);
+ if ((ret = ff_nut_add_sp(nut, nut->last_syncpoint_pos, 0 /*unused*/, pkt->dts)) < 0)
+ return ret;
}
assert(nus->last_pts != AV_NOPTS_VALUE);
diff --git a/gst-libs/ext/libav/libavformat/oggparseogm.c b/gst-libs/ext/libav/libavformat/oggparseogm.c
index 56ea557..2313625 100644
--- a/gst-libs/ext/libav/libavformat/oggparseogm.c
+++ b/gst-libs/ext/libav/libavformat/oggparseogm.c
@@ -75,6 +75,11 @@ ogm_header(AVFormatContext *s, int idx)
time_unit = bytestream2_get_le64(&p);
spu = bytestream2_get_le64(&p);
+ if (!time_unit || !spu) {
+ av_log(s, AV_LOG_ERROR, "Invalid timing values.\n");
+ return AVERROR_INVALIDDATA;
+ }
+
bytestream2_skip(&p, 4); /* default_len */
bytestream2_skip(&p, 8); /* buffersize + bits_per_sample */
diff --git a/gst-libs/ext/libav/libavformat/omadec.c b/gst-libs/ext/libav/libavformat/omadec.c
index 0403451..e3b1518 100644
--- a/gst-libs/ext/libav/libavformat/omadec.c
+++ b/gst-libs/ext/libav/libavformat/omadec.c
@@ -234,6 +234,11 @@ static int decrypt_init(AVFormatContext *s, ID3v2ExtraMeta *em, uint8_t *header)
av_log(s, AV_LOG_ERROR, "Invalid encryption header\n");
return -1;
}
+ if (OMA_ENC_HEADER_SIZE + oc->k_size + oc->e_size + oc->i_size + 8 > geob->datasize ||
+ OMA_ENC_HEADER_SIZE + 48 > geob->datasize) {
+ av_log(s, AV_LOG_ERROR, "Too little GEOB data\n");
+ return AVERROR_INVALIDDATA;
+ }
oc->rid = AV_RB32(&gdata[OMA_ENC_HEADER_SIZE + 28]);
av_log(s, AV_LOG_DEBUG, "RID: %.8x\n", oc->rid);
@@ -258,7 +263,7 @@ static int decrypt_init(AVFormatContext *s, ID3v2ExtraMeta *em, uint8_t *header)
!nprobe(s, gdata, geob->datasize, oc->n_val))
break;
}
- if (i >= sizeof(leaf_table)) {
+ if (i >= FF_ARRAY_ELEMS(leaf_table)) {
av_log(s, AV_LOG_ERROR, "Invalid key\n");
return -1;
}
diff --git a/gst-libs/ext/libav/libavformat/pmpdec.c b/gst-libs/ext/libav/libavformat/pmpdec.c
index 6cdce10..b2c613a 100644
--- a/gst-libs/ext/libav/libavformat/pmpdec.c
+++ b/gst-libs/ext/libav/libavformat/pmpdec.c
@@ -124,6 +124,11 @@ static int pmp_packet(AVFormatContext *s, AVPacket *pkt)
if (pmp->cur_stream == 0) {
int num_packets;
pmp->audio_packets = avio_r8(pb);
+ if (!pmp->audio_packets) {
+ av_log(s, AV_LOG_ERROR, "No audio packets.\n");
+ return AVERROR_INVALIDDATA;
+ }
+
num_packets = (pmp->num_streams - 1) * pmp->audio_packets + 1;
avio_skip(pb, 8);
pmp->current_packet = 0;
diff --git a/gst-libs/ext/libav/libavformat/sdp.c b/gst-libs/ext/libav/libavformat/sdp.c
index 57044d4..e6e6f82 100644
--- a/gst-libs/ext/libav/libavformat/sdp.c
+++ b/gst-libs/ext/libav/libavformat/sdp.c
@@ -402,7 +402,7 @@ static char *sdp_write_media_attributes(char *buff, int size, AVCodecContext *c,
switch (c->codec_id) {
case AV_CODEC_ID_H264: {
int mode = 1;
- if (fmt && fmt->oformat->priv_class &&
+ if (fmt && fmt->oformat && fmt->oformat->priv_class &&
av_opt_flag_is_set(fmt->priv_data, "rtpflags", "h264_mode0"))
mode = 0;
if (c->extradata_size) {
diff --git a/gst-libs/ext/libav/libavformat/segafilm.c b/gst-libs/ext/libav/libavformat/segafilm.c
index 5643f33..53e2066 100644
--- a/gst-libs/ext/libav/libavformat/segafilm.c
+++ b/gst-libs/ext/libav/libavformat/segafilm.c
@@ -75,13 +75,23 @@ static int film_probe(AVProbeData *p)
return AVPROBE_SCORE_MAX;
}
+static int film_read_close(AVFormatContext *s)
+{
+ FilmDemuxContext *film = s->priv_data;
+
+ av_freep(&film->sample_table);
+ av_freep(&film->stereo_buffer);
+
+ return 0;
+}
+
static int film_read_header(AVFormatContext *s)
{
FilmDemuxContext *film = s->priv_data;
AVIOContext *pb = s->pb;
AVStream *st;
unsigned char scratch[256];
- int i;
+ int i, ret;
unsigned int data_offset;
unsigned int audio_frame_counter;
@@ -213,14 +223,16 @@ static int film_read_header(AVFormatContext *s)
for (i = 0; i < film->sample_count; i++) {
/* load the next sample record and transfer it to an internal struct */
if (avio_read(pb, scratch, 16) != 16) {
- av_free(film->sample_table);
- return AVERROR(EIO);
+ ret = AVERROR(EIO);
+ goto fail;
}
film->sample_table[i].sample_offset =
data_offset + AV_RB32(&scratch[0]);
film->sample_table[i].sample_size = AV_RB32(&scratch[4]);
- if (film->sample_table[i].sample_size > INT_MAX / 4)
- return AVERROR_INVALIDDATA;
+ if (film->sample_table[i].sample_size > INT_MAX / 4) {
+ ret = AVERROR_INVALIDDATA;
+ goto fail;
+ }
if (AV_RB32(&scratch[8]) == 0xFFFFFFFF) {
film->sample_table[i].stream = film->audio_stream_index;
film->sample_table[i].pts = audio_frame_counter;
@@ -241,6 +253,9 @@ static int film_read_header(AVFormatContext *s)
film->current_sample = 0;
return 0;
+fail:
+ film_read_close(s);
+ return ret;
}
static int film_read_packet(AVFormatContext *s,
@@ -319,16 +334,6 @@ static int film_read_packet(AVFormatContext *s,
return ret;
}
-static int film_read_close(AVFormatContext *s)
-{
- FilmDemuxContext *film = s->priv_data;
-
- av_free(film->sample_table);
- av_free(film->stereo_buffer);
-
- return 0;
-}
-
AVInputFormat ff_segafilm_demuxer = {
.name = "film_cpk",
.long_name = NULL_IF_CONFIG_SMALL("Sega FILM / CPK"),
diff --git a/gst-libs/ext/libav/libavformat/utils.c b/gst-libs/ext/libav/libavformat/utils.c
index b0bfea2..43790c7 100644
--- a/gst-libs/ext/libav/libavformat/utils.c
+++ b/gst-libs/ext/libav/libavformat/utils.c
@@ -357,8 +357,8 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
const char *filename, void *logctx,
unsigned int offset, unsigned int max_probe_size)
{
- AVProbeData pd = { filename ? filename : "", NULL, -offset };
- unsigned char *buf = NULL;
+ AVProbeData pd = { filename ? filename : "" };
+ uint8_t *buf = NULL;
int ret = 0, probe_size;
if (!max_probe_size) {
@@ -372,19 +372,16 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
if (offset >= max_probe_size) {
return AVERROR(EINVAL);
}
+ avio_skip(pb, offset);
+ max_probe_size -= offset;
for(probe_size= PROBE_BUF_MIN; probe_size<=max_probe_size && !*fmt;
probe_size = FFMIN(probe_size<<1, FFMAX(max_probe_size, probe_size+1))) {
int score = probe_size < max_probe_size ? AVPROBE_SCORE_MAX/4 : 0;
- int buf_offset = (probe_size == PROBE_BUF_MIN) ? 0 : probe_size>>1;
-
- if (probe_size < offset) {
- continue;
- }
/* read probe data */
buf = av_realloc(buf, probe_size + AVPROBE_PADDING_SIZE);
- if ((ret = avio_read(pb, buf + buf_offset, probe_size - buf_offset)) < 0) {
+ if ((ret = avio_read(pb, buf + pd.buf_size, probe_size - pd.buf_size)) < 0) {
/* fail if error was not end of file, otherwise, lower score */
if (ret != AVERROR_EOF) {
av_free(buf);
@@ -394,7 +391,7 @@ int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
ret = 0; /* error was end of file, nothing read */
}
pd.buf_size += ret;
- pd.buf = &buf[offset];
+ pd.buf = buf;
memset(pd.buf + pd.buf_size, 0, AVPROBE_PADDING_SIZE);
diff --git a/gst-libs/ext/libav/libavresample/audio_mix.c b/gst-libs/ext/libav/libavresample/audio_mix.c
index c056028..f737a30 100644
--- a/gst-libs/ext/libav/libavresample/audio_mix.c
+++ b/gst-libs/ext/libav/libavresample/audio_mix.c
@@ -195,23 +195,23 @@ static void mix_1_to_2_fltp_flt_c(float **samples, float **matrix, int len,
while (len > 4) {
v = *src++;
- *dst0++ = v * m1;
- *dst1++ = v * m0;
+ *dst0++ = v * m0;
+ *dst1++ = v * m1;
v = *src++;
- *dst0++ = v * m1;
- *dst1++ = v * m0;
+ *dst0++ = v * m0;
+ *dst1++ = v * m1;
v = *src++;
- *dst0++ = v * m1;
- *dst1++ = v * m0;
+ *dst0++ = v * m0;
+ *dst1++ = v * m1;
v = *src++;
- *dst0++ = v * m1;
- *dst1++ = v * m0;
+ *dst0++ = v * m0;
+ *dst1++ = v * m1;
len -= 4;
}
while (len > 0) {
v = *src++;
- *dst0++ = v * m1;
- *dst1++ = v * m0;
+ *dst0++ = v * m0;
+ *dst1++ = v * m1;
len--;
}
}
diff --git a/gst-libs/ext/libav/libavresample/utils.c b/gst-libs/ext/libav/libavresample/utils.c
index ed7f470..36d9d04 100644
--- a/gst-libs/ext/libav/libavresample/utils.c
+++ b/gst-libs/ext/libav/libavresample/utils.c
@@ -350,7 +350,8 @@ int attribute_align_arg avresample_convert(AVAudioResampleContext *avr,
resample_out = &output_buffer;
else
resample_out = avr->resample_out_buffer;
- av_dlog(avr, "[resample] %s to %s\n", current_buffer->name,
+ av_dlog(avr, "[resample] %s to %s\n",
+ current_buffer ? current_buffer->name : "null",
resample_out->name);
ret = ff_audio_resample(avr->resample, resample_out,
current_buffer);
diff --git a/gst-libs/ext/libav/libavutil/mathematics.c b/gst-libs/ext/libav/libavutil/mathematics.c
index 137683e..1a38f64 100644
--- a/gst-libs/ext/libav/libavutil/mathematics.c
+++ b/gst-libs/ext/libav/libavutil/mathematics.c
@@ -23,7 +23,6 @@
* miscellaneous math routines and tables
*/
-#include <assert.h>
#include <stdint.h>
#include <limits.h>
@@ -58,9 +57,9 @@ int64_t av_gcd(int64_t a, int64_t b){
int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd){
int64_t r=0;
- assert(c > 0);
- assert(b >=0);
- assert((unsigned)rnd<=5 && rnd!=4);
+
+ if (c <= 0 || b < 0 || rnd == 4 || rnd > 5)
+ return INT64_MIN;
if(a<0 && a != INT64_MIN) return -av_rescale_rnd(-a, b, c, rnd ^ ((rnd>>1)&1));
diff --git a/gst-libs/ext/libav/tests/fate/ac3.mak b/gst-libs/ext/libav/tests/fate/ac3.mak
index 46e7a38..fa9f893 100644
--- a/gst-libs/ext/libav/tests/fate/ac3.mak
+++ b/gst-libs/ext/libav/tests/fate/ac3.mak
@@ -52,14 +52,12 @@ fate-ac3-encode: CMD = enc_dec_pcm ac3 wav s16le $(REF) -c:a ac3 -b:a 128k
fate-ac3-encode: CMP_SHIFT = -1024
fate-ac3-encode: CMP_TARGET = 399.62
fate-ac3-encode: SIZE_TOLERANCE = 488
-fate-ac3-encode: FUZZ = 3
FATE_EAC3-$(call ENCDEC, EAC3, EAC3) += fate-eac3-encode
fate-eac3-encode: CMD = enc_dec_pcm eac3 wav s16le $(REF) -c:a eac3 -b:a 128k
fate-eac3-encode: CMP_SHIFT = -1024
fate-eac3-encode: CMP_TARGET = 514.02
fate-eac3-encode: SIZE_TOLERANCE = 488
-fate-eac3-encode: FUZZ = 3
fate-ac3-encode fate-eac3-encode: CMP = stddev
fate-ac3-encode fate-eac3-encode: REF = $(SAMPLES)/audio-reference/luckynight_2ch_44kHz_s16.wav
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 82d8e23..d81046c 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 30d8b7e..c409f83 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index c9fb5e9..045bc0f 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index 88c1709..64075b0 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.14 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.