diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-04-19 15:52:40 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-04-19 15:52:40 +0200 |
commit | 0ee9933f9516fd5dd64cdc7982c706eb79d12f64 (patch) | |
tree | 0213d186c3c937f0bb51b635157ac4b911a4f194 | |
parent | 6434cb8463988f94659da773d338286343528571 (diff) |
Imported Upstream version 1.2.4upstream/1.2.4
27 files changed, 198 insertions, 65 deletions
@@ -1,9 +1,39 @@ +=== release 1.2.4 === + +2014-04-18 Sebastian Dröge <slomo@coaxion.net> + + * configure.ac: + releasing 1.2.4 + +2014-04-15 21:32:07 +0200 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * ext/libav/gstavviddec.c: + * ext/libav/gstavviddec.h: + avviddec: guard against invalid libav opaque + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=727779 + +2014-04-14 09:59:17 +0100 Tim-Philipp Müller <tim@centricular.com> + + * gst-libs/ext/libav: + libav: update to v9.12 + +2014-02-23 11:40:14 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> + + * ext/libav/gstavvidenc.c: + avvidenc: make all properties work again + ... as previously broken due to additional compliance property + (see 13ffed87b1597fa60ccee293f71c3993ec59d1b2). + === release 1.2.3 === -2014-02-08 Sebastian Dröge <slomo@coaxion.net> +2014-02-08 12:58:28 +0100 Sebastian Dröge <sebastian@centricular.com> + * ChangeLog: + * NEWS: + * RELEASE: * configure.ac: - releasing 1.2.3 + * gst-libav.doap: + Release 1.2.3 2014-02-04 18:17:32 +0200 Dmitry Melnichenko <dmitry.m@samsung.com> @@ -1,2 +1,2 @@ -This is GStreamer Libav Plugins 1.2.3 +This is GStreamer Libav Plugins 1.2.4 @@ -573,7 +573,8 @@ to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi -fi]) +fi +]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further @@ -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.3. +# Generated by GNU Autoconf 2.69 for GStreamer libav 1.2.4. # # 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.3' -PACKAGE_STRING='GStreamer libav 1.2.3' +PACKAGE_VERSION='1.2.4' +PACKAGE_STRING='GStreamer libav 1.2.4' 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.3 to adapt to many kinds of systems. +\`configure' configures GStreamer libav 1.2.4 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.3:";; + short | recursive ) echo "Configuration of GStreamer libav 1.2.4:";; 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.3 +GStreamer libav configure 1.2.4 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.3, which was +It was created by GStreamer libav $as_me 1.2.4, 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.3' + VERSION='1.2.4' cat >>confdefs.h <<_ACEOF @@ -3362,9 +3362,10 @@ END fi - 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) + + PACKAGE_VERSION_MAJOR=$(echo 1.2.4 | cut -d'.' -f1) + PACKAGE_VERSION_MINOR=$(echo 1.2.4 | cut -d'.' -f2) + PACKAGE_VERSION_MICRO=$(echo 1.2.4 | cut -d'.' -f3) @@ -3375,7 +3376,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5 $as_echo_n "checking nano version... " >&6; } - NANO=$(echo 1.2.3 | cut -d'.' -f4) + NANO=$(echo 1.2.4 | cut -d'.' -f4) if test x"$NANO" = x || test "x$NANO" = "x0" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5 @@ -6849,7 +6850,7 @@ ia64-*-hpux*) rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -6874,7 +6875,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -6893,7 +6897,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) @@ -8021,10 +8028,10 @@ fi done - GST_CURRENT=203 + GST_CURRENT=204 GST_REVISION=0 - GST_AGE=203 - GST_LIBVERSION=203:0:203 + GST_AGE=204 + GST_LIBVERSION=204:0:204 @@ -18174,7 +18181,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.3, which was +This file was extended by GStreamer libav $as_me 1.2.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18240,7 +18247,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.3 +GStreamer libav config.status 1.2.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 03057e6..cb958f0 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.3, +AC_INIT(GStreamer libav, 1.2.4, 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, 203, 0, 203) +AS_LIBTOOL(GST, 204, 0, 204) dnl *** required versions of GStreamer stuff *** GST_REQ=1.2.0 diff --git a/ext/libav/gstavviddec.c b/ext/libav/gstavviddec.c index 6c9c0c9..f369cf4 100644 --- a/ext/libav/gstavviddec.c +++ b/ext/libav/gstavviddec.c @@ -591,6 +591,8 @@ gst_ffmpegviddec_get_buffer (AVCodecContext * context, AVFrame * picture) /* GstFFMpegVidDecVideoFrame receives the frame ref */ picture->opaque = dframe = gst_ffmpegviddec_video_frame_new (frame); + ffmpegdec->opaques = g_slist_prepend (ffmpegdec->opaques, dframe); + GST_DEBUG_OBJECT (ffmpegdec, "storing opaque %p", dframe); ffmpegdec->context->pix_fmt = context->pix_fmt; @@ -695,6 +697,7 @@ fallback: int c; int ret = avcodec_default_get_buffer (context, picture); + GST_LOG_OBJECT (ffmpegdec, "performing fallback alloc"); for (c = 0; c < AV_NUM_DATA_POINTERS; c++) ffmpegdec->stride[c] = picture->linesize[c]; @@ -775,8 +778,8 @@ gst_ffmpegviddec_release_buffer (AVCodecContext * context, AVFrame * picture) ffmpegdec = (GstFFMpegVidDec *) context->opaque; frame = (GstFFMpegVidDecVideoFrame *) picture->opaque; - GST_DEBUG_OBJECT (ffmpegdec, "release frame SN %d", - frame->frame->system_frame_number); + GST_DEBUG_OBJECT (ffmpegdec, "release frame SN %d (%p)", + frame->frame->system_frame_number, frame); /* check if it was our buffer */ if (picture->type != FF_BUFFER_TYPE_USER) { @@ -789,6 +792,8 @@ gst_ffmpegviddec_release_buffer (AVCodecContext * context, AVFrame * picture) gst_ffmpegviddec_video_frame_free (ffmpegdec, frame); + ffmpegdec->opaques = g_slist_remove (ffmpegdec->opaques, frame); + /* zero out the reference in ffmpeg */ for (i = 0; i < 4; i++) { picture->data[i] = NULL; @@ -1221,6 +1226,14 @@ gst_ffmpegviddec_video_frame (GstFFMpegVidDec * ffmpegdec, if (len < 0 || have_data <= 0) goto beach; + GST_LOG_OBJECT (ffmpegdec, "picture opaque %p", ffmpegdec->picture->opaque); + /* libav might be tripping, and handing a picture with invalid opaque + * (e.g. already released) (sigh), so double-check here ... */ + if (!g_slist_find (ffmpegdec->opaques, ffmpegdec->picture->opaque)) { + GST_ERROR_OBJECT (ffmpegdec, "invalid picture opaque"); + goto beach; + } + /* get the output picture timing info again */ out_dframe = ffmpegdec->picture->opaque; out_frame = gst_video_codec_frame_ref (out_dframe->frame); @@ -1578,6 +1591,8 @@ gst_ffmpegviddec_stop (GstVideoDecoder * decoder) if (ffmpegdec->output_state) gst_video_codec_state_unref (ffmpegdec->output_state); ffmpegdec->output_state = NULL; + g_slist_free (ffmpegdec->opaques); + ffmpegdec->opaques = NULL; ffmpegdec->ctx_width = 0; ffmpegdec->ctx_height = 0; diff --git a/ext/libav/gstavviddec.h b/ext/libav/gstavviddec.h index cd691ec..5f4d7af 100644 --- a/ext/libav/gstavviddec.h +++ b/ext/libav/gstavviddec.h @@ -67,6 +67,8 @@ struct _GstFFMpegVidDec gboolean is_realvideo; GstCaps *last_caps; + + GSList *opaques; }; typedef struct _GstFFMpegVidDecClass GstFFMpegVidDecClass; diff --git a/ext/libav/gstavvidenc.c b/ext/libav/gstavvidenc.c index 11d1eef..74d6108 100644 --- a/ext/libav/gstavvidenc.c +++ b/ext/libav/gstavvidenc.c @@ -62,8 +62,8 @@ enum PROP_ME_METHOD, PROP_BUFSIZE, PROP_RTP_PAYLOAD_SIZE, - PROP_CFG_BASE, PROP_COMPLIANCE, + PROP_CFG_BASE, }; #define GST_TYPE_ME_METHOD (gst_ffmpegvidenc_me_method_get_type()) @@ -214,7 +214,7 @@ gst_ffmpegvidenc_class_init (GstFFMpegVidEncClass * klass) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /* register additional properties, possibly dependent on the exact CODEC */ - gst_ffmpeg_cfg_install_property (klass, PROP_COMPLIANCE); + gst_ffmpeg_cfg_install_property (klass, PROP_CFG_BASE); venc_class->start = gst_ffmpegvidenc_start; venc_class->stop = gst_ffmpegvidenc_stop; diff --git a/gst-libav.doap b/gst-libav.doap index ff06dc2..06490dd 100644 --- a/gst-libav.doap +++ b/gst-libav.doap @@ -34,6 +34,16 @@ colorspace conversion elements. <release> <Version> + <revision>1.2.4</revision> + <branch>1.2</branch> + <name></name> + <created>2014-04-18</created> + <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.2.4.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.2.3</revision> <branch>1.2</branch> <name></name> diff --git a/gst-libav.spec b/gst-libav.spec index dc17023..11bdb04 100644 --- a/gst-libav.spec +++ b/gst-libav.spec @@ -4,7 +4,7 @@ %define gst_majorminor 1.0 Name: %{gstreamer}-libav -Version: 1.2.3 +Version: 1.2.4 Release: 1 Summary: GStreamer Streaming-media framework plug-in using libav (FFmpeg). Group: Libraries/Multimedia diff --git a/gst-libs/ext/libav/Changelog b/gst-libs/ext/libav/Changelog index bc18fef..1c4114f 100644 --- a/gst-libs/ext/libav/Changelog +++ b/gst-libs/ext/libav/Changelog @@ -1,5 +1,25 @@ Releases are sorted from youngest to oldest. +version 9.12: +- configure: Update freetype check to follow upstream +- drawtext: Drop pointless header +- configure: Support preprocessor macros as header names +- arm: hpeldsp: fix put_pixels8_y2_{,no_rnd_}armv6 +- qt-faststart: Check offset_count before reading from the moov_atom buffer +- arm: hpeldsp: prevent overreads in armv6 asm +- configure: enable PIC on s390(x) +- ituh263: reject b-frame with pp_time = 0 +- lagarith: reallocate rgb_planes when needed +- truemotion1: check the header size +- shorten: pad the internal bitstream buffer +- samplefmt: avoid integer overflow in av_samples_get_buffer_size() +- h264: Fix a typo from the previous commit +- h264: Lower bound check for slice offsets +- Add missing header to fix compilation after d2a0654 +- configure: Add missing dependency of Snow decoder on videodsp +- rpza: limit the number of blocks to the total remaining blocks in the frame + + version 9.11: - oggparseogm: check timing variables - mathematics: remove asserts from av_rescale_rnd() diff --git a/gst-libs/ext/libav/RELEASE b/gst-libs/ext/libav/RELEASE index d4ce17d..5cb42eb 100644 --- a/gst-libs/ext/libav/RELEASE +++ b/gst-libs/ext/libav/RELEASE @@ -1 +1 @@ -9.11 +9.12 diff --git a/gst-libs/ext/libav/configure b/gst-libs/ext/libav/configure index dea4bde..3117b9f 100755 --- a/gst-libs/ext/libav/configure +++ b/gst-libs/ext/libav/configure @@ -738,6 +738,13 @@ check_ld(){ check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs } +print_include(){ + hdr=$1 + test "${hdr%.h}" = "${hdr}" && + echo "#include $hdr" || + echo "#include <$hdr>" +} + check_code(){ log check_code "$@" check=$1 @@ -746,7 +753,7 @@ check_code(){ shift 3 { for hdr in $headers; do - echo "#include <$hdr>" + print_include $hdr done echo "int main(void) { $code; return 0; }" } | check_$check "$@" @@ -822,7 +829,7 @@ check_func_headers(){ shift 2 { for hdr in $headers; do - echo "#include <$hdr>" + print_include $hdr done for func in $funcs; do echo "long check_$func(void) { return (long) $func; }" @@ -1562,7 +1569,7 @@ rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvi rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo" shorten_decoder_select="golomb" sipr_decoder_select="lsp" -snow_decoder_select="dwt rangecoder" +snow_decoder_select="dwt rangecoder videodsp" snow_encoder_select="aandcttables dwt error_resilience mpegvideoenc rangecoder" svq1_decoder_select="error_resilience mpegvideo" svq1_encoder_select="aandcttables error_resilience mpegvideoenc" @@ -2818,6 +2825,10 @@ case "$arch" in check_64bit ppc ppc64 'sizeof(void *) > 4' spic=$shared ;; + s390) + check_64bit s390 s390x 'sizeof(void *) > 4' + spic=$shared + ;; sparc) check_64bit sparc sparc64 'sizeof(void *) > 4' spic=$shared @@ -3481,7 +3492,7 @@ enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac -enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType +enabled libfreetype && require_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType enabled libgsm && require libgsm gsm/gsm.h gsm_create -lgsm enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame diff --git a/gst-libs/ext/libav/libavcodec/arm/dsputil_armv6.S b/gst-libs/ext/libav/libavcodec/arm/dsputil_armv6.S index 61535a1..2230613 100644 --- a/gst-libs/ext/libav/libavcodec/arm/dsputil_armv6.S +++ b/gst-libs/ext/libav/libavcodec/arm/dsputil_armv6.S @@ -144,10 +144,11 @@ function ff_put_pixels8_y2_armv6, export=1 eor r7, r5, r7 uadd8 r10, r10, r6 and r7, r7, r12 - ldr_pre r6, r1, r2 + ldrc_pre ne, r6, r1, r2 uadd8 r11, r11, r7 strd_post r8, r9, r0, r2 - ldr r7, [r1, #4] + it ne + ldrne r7, [r1, #4] strd_post r10, r11, r0, r2 bne 1b @@ -196,9 +197,10 @@ function ff_put_pixels8_y2_no_rnd_armv6, export=1 uhadd8 r9, r5, r7 ldr r5, [r1, #4] uhadd8 r12, r4, r6 - ldr_pre r6, r1, r2 + ldrc_pre ne, r6, r1, r2 uhadd8 r14, r5, r7 - ldr r7, [r1, #4] + it ne + ldrne r7, [r1, #4] stm r0, {r8,r9} add r0, r0, r2 stm r0, {r12,r14} diff --git a/gst-libs/ext/libav/libavcodec/h264.c b/gst-libs/ext/libav/libavcodec/h264.c index b256969..d6d3d42 100644 --- a/gst-libs/ext/libav/libavcodec/h264.c +++ b/gst-libs/ext/libav/libavcodec/h264.c @@ -3157,8 +3157,8 @@ static int decode_slice_header(H264Context *h, H264Context *h0) get_se_golomb(&s->gb); /* slice_qs_delta */ h->deblocking_filter = 1; - h->slice_alpha_c0_offset = 52; - h->slice_beta_offset = 52; + h->slice_alpha_c0_offset = 0; + h->slice_beta_offset = 0; if (h->pps.deblocking_filter_parameters_present) { tmp = get_ue_golomb_31(&s->gb); if (tmp > 2) { @@ -3171,10 +3171,12 @@ static int decode_slice_header(H264Context *h, H264Context *h0) h->deblocking_filter ^= 1; // 1<->0 if (h->deblocking_filter) { - h->slice_alpha_c0_offset += get_se_golomb(&s->gb) << 1; - h->slice_beta_offset += get_se_golomb(&s->gb) << 1; - if (h->slice_alpha_c0_offset > 104U || - h->slice_beta_offset > 104U) { + h->slice_alpha_c0_offset = get_se_golomb(&s->gb) * 2; + h->slice_beta_offset = get_se_golomb(&s->gb) * 2; + if (h->slice_alpha_c0_offset > 12 || + h->slice_alpha_c0_offset < -12 || + h->slice_beta_offset > 12 || + h->slice_beta_offset < -12) { av_log(s->avctx, AV_LOG_ERROR, "deblocking filter parameters %d %d out of range\n", h->slice_alpha_c0_offset, h->slice_beta_offset); @@ -3211,7 +3213,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0) } } } - h->qp_thresh = 15 + 52 - + h->qp_thresh = 15 - FFMIN(h->slice_alpha_c0_offset, h->slice_beta_offset) - FFMAX3(0, h->pps.chroma_qp_index_offset[0], @@ -3280,7 +3282,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0) h->ref_count[0], h->ref_count[1], s->qscale, h->deblocking_filter, - h->slice_alpha_c0_offset / 2 - 26, h->slice_beta_offset / 2 - 26, + h->slice_alpha_c0_offset, h->slice_beta_offset, h->use_weight, h->use_weight == 1 && h->use_weight_chroma ? "c" : "", h->slice_type == AV_PICTURE_TYPE_B ? (h->direct_spatial_mv_pred ? "SPAT" : "TEMP") : ""); diff --git a/gst-libs/ext/libav/libavcodec/h264_loopfilter.c b/gst-libs/ext/libav/libavcodec/h264_loopfilter.c index b045d23..4417d79 100644 --- a/gst-libs/ext/libav/libavcodec/h264_loopfilter.c +++ b/gst-libs/ext/libav/libavcodec/h264_loopfilter.c @@ -254,8 +254,8 @@ static av_always_inline void h264_filter_mb_fast_internal(H264Context *h, int top_type= h->top_type; int qp_bd_offset = 6 * (h->sps.bit_depth_luma - 8); - int a = h->slice_alpha_c0_offset - qp_bd_offset; - int b = h->slice_beta_offset - qp_bd_offset; + int a = 52 + h->slice_alpha_c0_offset - qp_bd_offset; + int b = 52 + h->slice_beta_offset - qp_bd_offset; int mb_type = s->current_picture.f.mb_type[mb_xy]; int qp = s->current_picture.f.qscale_table[mb_xy]; @@ -711,8 +711,8 @@ void ff_h264_filter_mb( H264Context *h, int mb_x, int mb_y, uint8_t *img_y, uint av_unused int dir; int chroma = !(CONFIG_GRAY && (s->flags&CODEC_FLAG_GRAY)); int qp_bd_offset = 6 * (h->sps.bit_depth_luma - 8); - int a = h->slice_alpha_c0_offset - qp_bd_offset; - int b = h->slice_beta_offset - qp_bd_offset; + int a = 52 + h->slice_alpha_c0_offset - qp_bd_offset; + int b = 52 + h->slice_beta_offset - qp_bd_offset; if (FRAME_MBAFF // and current and left pair do not have the same interlaced type diff --git a/gst-libs/ext/libav/libavcodec/ituh263dec.c b/gst-libs/ext/libav/libavcodec/ituh263dec.c index cb26be2..3cbc7b8 100644 --- a/gst-libs/ext/libav/libavcodec/ituh263dec.c +++ b/gst-libs/ext/libav/libavcodec/ituh263dec.c @@ -753,6 +753,8 @@ int ff_h263_decode_mb(MpegEncContext *s, } if(IS_DIRECT(mb_type)){ + if (!s->pp_time) + return AVERROR_INVALIDDATA; s->mv_dir = MV_DIR_FORWARD | MV_DIR_BACKWARD | MV_DIRECT; mb_type |= ff_mpeg4_set_direct_mv(s, 0, 0); }else{ diff --git a/gst-libs/ext/libav/libavcodec/lagarith.c b/gst-libs/ext/libav/libavcodec/lagarith.c index 33dd8b0..5290d39 100644 --- a/gst-libs/ext/libav/libavcodec/lagarith.c +++ b/gst-libs/ext/libav/libavcodec/lagarith.c @@ -53,6 +53,7 @@ typedef struct LagarithContext { int zeros; /**< number of consecutive zero bytes encountered */ int zeros_rem; /**< number of zero bytes remaining to output */ uint8_t *rgb_planes; + int rgb_planes_allocated; int rgb_stride; } LagarithContext; @@ -557,13 +558,12 @@ static int lag_decode_frame(AVCodecContext *avctx, offs[1] = offset_gu; offs[2] = offset_ry; + l->rgb_stride = FFALIGN(avctx->width, 16); + av_fast_malloc(&l->rgb_planes, &l->rgb_planes_allocated, + l->rgb_stride * avctx->height * planes + 1); if (!l->rgb_planes) { - l->rgb_stride = FFALIGN(avctx->width, 16); - l->rgb_planes = av_malloc(l->rgb_stride * avctx->height * planes + 1); - if (!l->rgb_planes) { - av_log(avctx, AV_LOG_ERROR, "cannot allocate temporary buffer\n"); - return AVERROR(ENOMEM); - } + av_log(avctx, AV_LOG_ERROR, "cannot allocate temporary buffer\n"); + return AVERROR(ENOMEM); } for (i = 0; i < planes; i++) srcs[i] = l->rgb_planes + (i + 1) * l->rgb_stride * avctx->height - l->rgb_stride; diff --git a/gst-libs/ext/libav/libavcodec/rpza.c b/gst-libs/ext/libav/libavcodec/rpza.c index 59b15c6..d8d689c 100644 --- a/gst-libs/ext/libav/libavcodec/rpza.c +++ b/gst-libs/ext/libav/libavcodec/rpza.c @@ -38,8 +38,10 @@ #include <stdlib.h> #include <string.h> +#include "libavutil/common.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" +#include "libavutil/common.h" #include "avcodec.h" typedef struct RpzaContext { @@ -126,6 +128,8 @@ static void rpza_decode_stream(RpzaContext *s) } } + n_blocks = FFMIN(n_blocks, total_blocks); + switch (opcode & 0xe0) { /* Skip blocks */ diff --git a/gst-libs/ext/libav/libavcodec/shorten.c b/gst-libs/ext/libav/libavcodec/shorten.c index 22976e0..31bd943 100644 --- a/gst-libs/ext/libav/libavcodec/shorten.c +++ b/gst-libs/ext/libav/libavcodec/shorten.c @@ -441,7 +441,7 @@ static int shorten_decode_frame(AVCodecContext *avctx, void *data, void *tmp_ptr; s->max_framesize = 1024; // should hopefully be enough for the first header tmp_ptr = av_fast_realloc(s->bitstream, &s->allocated_bitstream_size, - s->max_framesize); + s->max_framesize + FF_INPUT_BUFFER_PADDING_SIZE); if (!tmp_ptr) { av_log(avctx, AV_LOG_ERROR, "error allocating bitstream buffer\n"); return AVERROR(ENOMEM); diff --git a/gst-libs/ext/libav/libavcodec/truemotion1.c b/gst-libs/ext/libav/libavcodec/truemotion1.c index 63cd05b..2421dac 100644 --- a/gst-libs/ext/libav/libavcodec/truemotion1.c +++ b/gst-libs/ext/libav/libavcodec/truemotion1.c @@ -322,6 +322,11 @@ static int truemotion1_decode_header(TrueMotion1Context *s) return -1; } + if (header.header_size + 1 > s->size) { + av_log(s->avctx, AV_LOG_ERROR, "Input packet too small.\n"); + return AVERROR_INVALIDDATA; + } + /* unscramble the header bytes with a XOR operation */ for (i = 1; i < header.header_size; i++) header_buffer[i - 1] = s->buf[i] ^ s->buf[i + 1]; diff --git a/gst-libs/ext/libav/libavfilter/vf_drawtext.c b/gst-libs/ext/libav/libavfilter/vf_drawtext.c index f8800d2..70f034f 100644 --- a/gst-libs/ext/libav/libavfilter/vf_drawtext.c +++ b/gst-libs/ext/libav/libavfilter/vf_drawtext.c @@ -47,7 +47,6 @@ #include "video.h" #include <ft2build.h> -#include <freetype/config/ftheader.h> #include FT_FREETYPE_H #include FT_GLYPH_H diff --git a/gst-libs/ext/libav/libavutil/arm/asm.S b/gst-libs/ext/libav/libavutil/arm/asm.S index a181789..f088857 100644 --- a/gst-libs/ext/libav/libavutil/arm/asm.S +++ b/gst-libs/ext/libav/libavutil/arm/asm.S @@ -212,6 +212,13 @@ T ldr \rt, [\rn] T add \rn, \rn, \rm .endm +.macro ldrc_pre cc, rt, rn, rm:vararg +A ldr\cc \rt, [\rn, \rm]! +T itt \cc +T add\cc \rn, \rn, \rm +T ldr\cc \rt, [\rn] +.endm + .macro ldrd_reg rt, rt2, rn, rm A ldrd \rt, \rt2, [\rn, \rm] T add \rt, \rn, \rm diff --git a/gst-libs/ext/libav/libavutil/samplefmt.c b/gst-libs/ext/libav/libavutil/samplefmt.c index 389f726..bff6004 100644 --- a/gst-libs/ext/libav/libavutil/samplefmt.c +++ b/gst-libs/ext/libav/libavutil/samplefmt.c @@ -118,6 +118,8 @@ int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, /* auto-select alignment if not specified */ if (!align) { + if (nb_samples > INT_MAX - 31) + return AVERROR(EINVAL); align = 1; nb_samples = FFALIGN(nb_samples, 32); } diff --git a/gst-libs/ext/libav/tools/qt-faststart.c b/gst-libs/ext/libav/tools/qt-faststart.c index f33d6fa..47f5c73 100644 --- a/gst-libs/ext/libav/tools/qt-faststart.c +++ b/gst-libs/ext/libav/tools/qt-faststart.c @@ -225,6 +225,10 @@ int main(int argc, char *argv[]) goto error_out; } offset_count = BE_32(&moov_atom[i + 8]); + if (i + 12 + offset_count * UINT64_C(4) > moov_atom_size) { + printf(" bad atom size/element count\n"); + goto error_out; + } for (j = 0; j < offset_count; j++) { current_offset = BE_32(&moov_atom[i + 12 + j * 4]); current_offset += moov_atom_size; @@ -242,6 +246,10 @@ int main(int argc, char *argv[]) goto error_out; } offset_count = BE_32(&moov_atom[i + 8]); + if (i + 12 + offset_count * UINT64_C(8) > moov_atom_size) { + printf(" bad atom size/element count\n"); + goto error_out; + } for (j = 0; j < offset_count; j++) { current_offset = BE_64(&moov_atom[i + 12 + j * 8]); current_offset += moov_atom_size; @@ -70,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.3 +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.7 # automake: $automake_version # autoconf: $autoconf_version # @@ -80,7 +80,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.3" +VERSION="2.4.2 Debian-2.4.2-1.7" TIMESTAMP="" package_revision=1.3337 diff --git a/m4/libtool.m4 b/m4/libtool.m4 index 02b4bbe..d7c043f 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1312,7 +1312,7 @@ ia64-*-hpux*) rm -rf conftest* ;; -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext @@ -1333,7 +1333,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ;; esac ;; - ppc64-*linux*|powerpc64-*linux*) + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) @@ -1352,7 +1355,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; - ppc*-*linux*|powerpc*-*linux*) + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) |