diff -Nru ffmpeg-2.7/Changelog ffmpeg-2.7.1/Changelog --- ffmpeg-2.7/Changelog 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/Changelog 2015-06-19 20:47:55.000000000 +0000 @@ -3,6 +3,27 @@ version : +version 2.7.1: +- postproc: fix unaligned access +- avformat: clarify what package needs to be compiled with SSL support +- avcodec/libx264: Avoid reconfig on equivalent aspect ratios +- avcodec/flacenc: Fix Invalid Rice order +- tls_gnutls: fix hang on disconnection +- avcodec/hevc_ps: Only discard overread VPS if a previous is available +- ffmpeg: Free last_frame instead of just unref +- avcodec/ffv1enc: fix bps for >8bit yuv when not explicitly set +- avio: fix potential crashes when combining ffio_ensure_seekback + crc +- examples/demuxing_decoding: use properties from frame instead of video_dec_ctx +- h264: er: Copy from the previous reference only if compatible +- doc: fix spelling errors +- configure: only disable VSX for !ppc64el +- ffmpeg_opt: Check for localtime() failure +- avformat/singlejpeg: fix standalone compilation +- configure: Disable VSX on unspecified / generic CPUs +- avformat: Fix bug in parse_rps for HEVC. +- takdec: ensure chan2 is a valid channel index +- avcodec/h264_slice: Use AVFrame dimensions for grayscale handling + version 2.7: - FFT video filter @@ -573,7 +594,7 @@ all the stream in the first input file, except for the second audio stream'. * There is a new option -c (or -codec) for choosing the decoder/encoder to - use, which allows to precisely specify target stream(s) consistently with + use, which makes it possible to precisely specify target stream(s) consistently with other options. E.g. -c:v lib264 sets the codec for all video streams, -c:a:0 libvorbis sets the codec for the first audio stream and -c copy copies all the streams without reencoding. Old -vcodec/-acodec/-scodec options are now diff -Nru ffmpeg-2.7/configure ffmpeg-2.7.1/configure --- ffmpeg-2.7/configure 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/configure 2015-06-19 20:47:55.000000000 +0000 @@ -4607,6 +4607,9 @@ EOF od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian +if ! enabled ppc64 || enabled bigendian; then + disable vsx +fi check_gas() { log "check_gas using '$as' as AS" @@ -5236,8 +5239,8 @@ enable securetransport; } makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo -enabled makeinfo && (makeinfo --version | \ - grep -q 'makeinfo (GNU texinfo) 5' > /dev/null 2>&1) \ +enabled makeinfo \ + && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \ && enable makeinfo_html || disable makeinfo_html disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html perl -v > /dev/null 2>&1 && enable perl || disable perl diff -Nru ffmpeg-2.7/debian/changelog ffmpeg-2.7.1/debian/changelog --- ffmpeg-2.7/debian/changelog 2015-06-10 22:47:50.000000000 +0000 +++ ffmpeg-2.7.1/debian/changelog 2015-06-23 03:14:16.000000000 +0000 @@ -1,3 +1,16 @@ +ffmpeg (7:2.7.1-1) unstable; urgency=medium + + * Import new upstream bugfix release 2.7.1. + * Use DEB_LDFLAGS_MAINT_STRIP for removing the Bsymbolic-functions flag. + * Use lissh-gcrypt-dev to avoid linking against libssl. + * Disable DH_VERBOSE in debian/rules. + * Add libavresample-ffmpeg2 and qt-faststart dependencies to ffmpeg-dbg. + * Enable opencv and zvbi on m68k, disable opencv on alpha. + * Remove unused, optional and private avpriv_emms_yasm from symbols file. + * Build an altivec flavor on powerpc. + + -- Andreas Cadhalpun Sun, 21 Jun 2015 23:38:07 +0200 + ffmpeg (7:2.7-1) unstable; urgency=medium * Import new major upstream release 2.7. diff -Nru ffmpeg-2.7/debian/control ffmpeg-2.7.1/debian/control --- ffmpeg-2.7/debian/control 2015-06-10 22:47:50.000000000 +0000 +++ ffmpeg-2.7.1/debian/control 2015-06-23 03:14:16.000000000 +0000 @@ -69,7 +69,7 @@ # --enable-openal libopenal-dev [!sparc64], # --enable-libopencv - libopencv-dev [!m68k !sh4 !sparc64 !x32], + libopencv-dev [!alpha !sh4 !sparc64 !x32], # --enable-libopenjpeg libopenjpeg-dev, # --enable-libopus @@ -94,7 +94,7 @@ # --enable-libspeex libspeex-dev, # --enable-libssh - libssh-dev, + libssh-gcrypt-dev, # --enable-libtheora libtheora-dev, # --enable-libtwolame @@ -127,7 +127,7 @@ # --enable-libzmq libzmq3-dev [!hurd-any], # --enable-libzvbi - libzvbi-dev [!m68k], + libzvbi-dev, # The opencl API is considered experimental. # # --enable-opencl # ocl-icd-opencl-dev [!hurd-any] | opencl-dev [!hurd-any], @@ -199,8 +199,10 @@ libavformat-ffmpeg56 (= ${binary:Version}), libavutil-ffmpeg54 (= ${binary:Version}), libpostproc-ffmpeg53 (= ${binary:Version}), + libavresample-ffmpeg2 (= ${binary:Version}), libswresample-ffmpeg1 (= ${binary:Version}), libswscale-ffmpeg3 (= ${binary:Version}), + qt-faststart (= ${binary:Version}), ${misc:Depends} Description: Debug symbols for the FFmpeg multimedia framework FFmpeg is the leading multimedia framework, able to decode, encode, transcode, diff -Nru ffmpeg-2.7/debian/libavcodec-ffmpeg56.install.powerpc ffmpeg-2.7.1/debian/libavcodec-ffmpeg56.install.powerpc --- ffmpeg-2.7/debian/libavcodec-ffmpeg56.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavcodec-ffmpeg56.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libavcodec-ffmpeg.so.* +usr/lib/*/*/libavcodec-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libavdevice-ffmpeg56.install.powerpc ffmpeg-2.7.1/debian/libavdevice-ffmpeg56.install.powerpc --- ffmpeg-2.7/debian/libavdevice-ffmpeg56.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavdevice-ffmpeg56.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libavdevice-ffmpeg.so.* +usr/lib/*/*/libavdevice-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libavfilter-ffmpeg5.install.powerpc ffmpeg-2.7.1/debian/libavfilter-ffmpeg5.install.powerpc --- ffmpeg-2.7/debian/libavfilter-ffmpeg5.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavfilter-ffmpeg5.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libavfilter-ffmpeg.so.* +usr/lib/*/*/libavfilter-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libavformat-ffmpeg56.install.powerpc ffmpeg-2.7.1/debian/libavformat-ffmpeg56.install.powerpc --- ffmpeg-2.7/debian/libavformat-ffmpeg56.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavformat-ffmpeg56.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libavformat-ffmpeg.so.* +usr/lib/*/*/libavformat-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libavresample-ffmpeg2.install.powerpc ffmpeg-2.7.1/debian/libavresample-ffmpeg2.install.powerpc --- ffmpeg-2.7/debian/libavresample-ffmpeg2.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavresample-ffmpeg2.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libavresample-ffmpeg.so.* +usr/lib/*/*/libavresample-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libavutil-ffmpeg54.install.powerpc ffmpeg-2.7.1/debian/libavutil-ffmpeg54.install.powerpc --- ffmpeg-2.7/debian/libavutil-ffmpeg54.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavutil-ffmpeg54.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libavutil-ffmpeg.so.* +usr/lib/*/*/libavutil-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libavutil-ffmpeg54.symbols ffmpeg-2.7.1/debian/libavutil-ffmpeg54.symbols --- ffmpeg-2.7/debian/libavutil-ffmpeg54.symbols 2015-06-10 22:47:50.000000000 +0000 +++ ffmpeg-2.7.1/debian/libavutil-ffmpeg54.symbols 2015-06-23 03:14:16.000000000 +0000 @@ -431,7 +431,6 @@ av_xtea_init@LIBAVUTIL_FFMPEG_54 7:2.4 avpriv_alloc_fixed_dsp@LIBAVUTIL_FFMPEG_54 7:2.4 avpriv_cga_font@LIBAVUTIL_FFMPEG_54 7:2.4 - (optional)avpriv_emms_yasm@LIBAVUTIL_FFMPEG_54 7:2.4 avpriv_float_dsp_alloc@LIBAVUTIL_FFMPEG_54 7:2.5 avpriv_float_dsp_init@LIBAVUTIL_FFMPEG_54 7:2.4 avpriv_frame_get_metadatap@LIBAVUTIL_FFMPEG_54 7:2.4 diff -Nru ffmpeg-2.7/debian/libpostproc-ffmpeg53.install.powerpc ffmpeg-2.7.1/debian/libpostproc-ffmpeg53.install.powerpc --- ffmpeg-2.7/debian/libpostproc-ffmpeg53.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libpostproc-ffmpeg53.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libpostproc-ffmpeg.so.* +usr/lib/*/*/libpostproc-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libswresample-ffmpeg1.install.powerpc ffmpeg-2.7.1/debian/libswresample-ffmpeg1.install.powerpc --- ffmpeg-2.7/debian/libswresample-ffmpeg1.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libswresample-ffmpeg1.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libswresample-ffmpeg.so.* +usr/lib/*/*/libswresample-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/libswscale-ffmpeg3.install.powerpc ffmpeg-2.7.1/debian/libswscale-ffmpeg3.install.powerpc --- ffmpeg-2.7/debian/libswscale-ffmpeg3.install.powerpc 1970-01-01 00:00:00.000000000 +0000 +++ ffmpeg-2.7.1/debian/libswscale-ffmpeg3.install.powerpc 2015-06-23 03:14:16.000000000 +0000 @@ -0,0 +1,2 @@ +usr/lib/*/libswscale-ffmpeg.so.* +usr/lib/*/*/libswscale-ffmpeg.so.* diff -Nru ffmpeg-2.7/debian/rules ffmpeg-2.7.1/debian/rules --- ffmpeg-2.7/debian/rules 2015-06-10 22:47:50.000000000 +0000 +++ ffmpeg-2.7.1/debian/rules 2015-06-23 03:14:16.000000000 +0000 @@ -1,7 +1,7 @@ #!/usr/bin/make -f # This enables verbose mode. -export DH_VERBOSE=1 +#export DH_VERBOSE=1 export V=1 # Determine the debian directory, which is the directory of this makefile. @@ -20,7 +20,7 @@ DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) # Ubuntu ld adds -Bsymbolic-functions by default, but that prevents FFmpeg from building. -LDFLAGS := $(filter-out %-Bsymbolic-functions,$(shell dpkg-buildflags --get LDFLAGS)) +export DEB_LDFLAGS_MAINT_STRIP=-Wl,-Bsymbolic-functions # Enable as many features as possible, as long as the result is still GPLv2+ (and not only GPLv3+). # Therefore the following flags (and build-dependencies) are not added: @@ -94,6 +94,7 @@ --enable-libwavpack \ --enable-libwebp \ --enable-libxvid \ + --enable-libzvbi \ --enable-opengl \ --enable-x11grab @@ -108,11 +109,6 @@ --enable-libiec61883 endif -# libzvbi is not available on m68k -ifneq ($(DEB_HOST_ARCH),m68k) - CONFIG += --enable-libzvbi -endif - # Some libraries are not build on hurd. ifneq ($(DEB_HOST_ARCH_OS),hurd) CONFIG += --enable-libzmq @@ -134,7 +130,7 @@ endif # OpenCV is not available on some architectures. -ifeq (,$(filter $(DEB_HOST_ARCH),m68k sh4 sparc64 x32)) +ifeq (,$(filter $(DEB_HOST_ARCH),alpha sh4 sparc64 x32)) CONFIG += --enable-libopencv endif @@ -151,6 +147,11 @@ # Disable altivec optimizations on powerpc, because they are not always available on this architecture. ifeq ($(DEB_HOST_ARCH),powerpc) CONFIG += --disable-altivec + # Build an altivec flavor of the libraries on powerpc. + # This works around the problem that runtime cpu detection on powerpc currently does not work, + # because, if altivec is enabled, all files are build with '-maltivec' so that the compiler inserts altivec instructions, wherever it likes. + CONFIG_altivec = --enable-altivec --disable-doc + FLAVORS += altivec endif # Disable assembly optimizations on x32, because they don't work (yet). @@ -176,6 +177,11 @@ # Add configuration options: override_dh_auto_configure: $(info DEB_BUILD_OPTIONS = $(DEB_BUILD_OPTIONS)) + $(foreach flavor,$(FLAVORS),mkdir -p debian/$(flavor);) +ifeq ($(wildcard config.h),) + $(foreach flavor,$(FLAVORS), echo " *** $(flavor) ***"; cd debian/$(flavor); ../../configure $(CONFIG) $(CONFIG_$(flavor)) || (cat config.log && exit 1); cd ../.. ;) +endif + echo " *** standard ***" ./configure $(CONFIG) || (cat config.log && exit 1) # Building the source package fails without this override, because config.mak does not exist in the source. @@ -184,6 +190,7 @@ override_dh_auto_clean: [ ! -f config.mak ] || make distclean [ ! -d doc/examples/pc-uninstalled ] || rm -r doc/examples/pc-uninstalled + $(foreach flavor,$(FLAVORS),[ ! -d debian/$(flavor) ] || rm -r debian/$(flavor);) # Restore backed up CSS files [ ! -f debian/bootstrap.min.css.bak ] || mv debian/bootstrap.min.css.bak doc/bootstrap.min.css [ ! -f debian/style.min.css.bak ] || mv debian/style.min.css.bak doc/style.min.css @@ -200,8 +207,13 @@ override_dh_auto_build-arch: # Build qt-faststart here, to make it possible to build with 'nocheck'. + echo " *** standard ***" make tools/qt-faststart dh_auto_build -a || (cat config.log && exit 1) + for flavor in $(FLAVORS); do \ + echo " *** $$flavor ***"; \ + dh_auto_build -a --sourcedirectory=debian/"$$flavor" || (cat debian/"$$flavor"/config.log && exit 1); \ + done # Set the library path for the dynamic linker, because the test otherwise don't find the libraries. override_dh_auto_test: @@ -209,6 +221,10 @@ override_dh_auto_install: dh_auto_install +ifeq ($(DEB_HOST_ARCH),powerpc) + install -d debian/tmp/usr/lib/powerpc-linux-gnu/altivec + install -m 644 debian/altivec/*/*.so.* debian/tmp/usr/lib/powerpc-linux-gnu/altivec +endif # Create symbolic links from the standard library lib*.so symlinks, pkg-config files and static libraries to the suffixed ones. for lib in `find debian/ -name lib*-ffmpeg.so; find debian/ -name lib*.pc; find debian/ -name lib*.a`; do \ dir=`dirname $$lib`; \ diff -Nru ffmpeg-2.7/doc/decoders.texi ffmpeg-2.7.1/doc/decoders.texi --- ffmpeg-2.7/doc/decoders.texi 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/doc/decoders.texi 2015-06-19 20:47:55.000000000 +0000 @@ -95,7 +95,7 @@ @item -use_buggy_lpc The lavc FLAC encoder used to produce buggy streams with high lpc values -(like the default value). This option allows to decode such streams +(like the default value). This option makes it possible to decode such streams correctly by using lavc's old buggy lpc logic for decoding. @end table diff -Nru ffmpeg-2.7/doc/Doxyfile ffmpeg-2.7.1/doc/Doxyfile --- ffmpeg-2.7/doc/Doxyfile 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/doc/Doxyfile 2015-06-19 20:47:55.000000000 +0000 @@ -31,7 +31,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 2.7 +PROJECT_NUMBER = 2.7.1 # With the PROJECT_LOGO tag one can specify a logo or icon that is included # in the documentation. The maximum height of the logo should not exceed 55 diff -Nru ffmpeg-2.7/doc/examples/demuxing_decoding.c ffmpeg-2.7.1/doc/examples/demuxing_decoding.c --- ffmpeg-2.7/doc/examples/demuxing_decoding.c 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/doc/examples/demuxing_decoding.c 2015-06-19 20:47:55.000000000 +0000 @@ -81,22 +81,24 @@ fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret)); return ret; } - if (video_dec_ctx->width != width || video_dec_ctx->height != height || - video_dec_ctx->pix_fmt != pix_fmt) { - /* To handle this change, one could call av_image_alloc again and - * decode the following frames into another rawvideo file. */ - fprintf(stderr, "Error: Width, height and pixel format have to be " - "constant in a rawvideo file, but the width, height or " - "pixel format of the input video changed:\n" - "old: width = %d, height = %d, format = %s\n" - "new: width = %d, height = %d, format = %s\n", - width, height, av_get_pix_fmt_name(pix_fmt), - video_dec_ctx->width, video_dec_ctx->height, - av_get_pix_fmt_name(video_dec_ctx->pix_fmt)); - return -1; - } if (*got_frame) { + + if (frame->width != width || frame->height != height || + frame->format != pix_fmt) { + /* To handle this change, one could call av_image_alloc again and + * decode the following frames into another rawvideo file. */ + fprintf(stderr, "Error: Width, height and pixel format have to be " + "constant in a rawvideo file, but the width, height or " + "pixel format of the input video changed:\n" + "old: width = %d, height = %d, format = %s\n" + "new: width = %d, height = %d, format = %s\n", + width, height, av_get_pix_fmt_name(pix_fmt), + frame->width, frame->height, + av_get_pix_fmt_name(frame->format)); + return -1; + } + printf("video_frame%s n:%d coded_n:%d pts:%s\n", cached ? "(cached)" : "", video_frame_count++, frame->coded_picture_number, diff -Nru ffmpeg-2.7/doc/examples/transcoding.c ffmpeg-2.7.1/doc/examples/transcoding.c --- ffmpeg-2.7/doc/examples/transcoding.c 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/doc/examples/transcoding.c 2015-06-19 20:47:55.000000000 +0000 @@ -117,7 +117,7 @@ /* in this example, we choose transcoding to same codec */ encoder = avcodec_find_encoder(dec_ctx->codec_id); if (!encoder) { - av_log(NULL, AV_LOG_FATAL, "Neccessary encoder not found\n"); + av_log(NULL, AV_LOG_FATAL, "Necessary encoder not found\n"); return AVERROR_INVALIDDATA; } diff -Nru ffmpeg-2.7/ffmpeg.c ffmpeg-2.7.1/ffmpeg.c --- ffmpeg-2.7/ffmpeg.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/ffmpeg.c 2015-06-19 20:47:55.000000000 +0000 @@ -1178,6 +1178,8 @@ av_frame_unref(ost->last_frame); if (next_picture) av_frame_ref(ost->last_frame, next_picture); + else + av_frame_free(&ost->last_frame); } static double psnr(double d) diff -Nru ffmpeg-2.7/ffmpeg_opt.c ffmpeg-2.7.1/ffmpeg_opt.c --- ffmpeg-2.7/ffmpeg_opt.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/ffmpeg_opt.c 2015-06-19 20:47:55.000000000 +0000 @@ -2438,6 +2438,9 @@ time_t today2 = time(NULL); struct tm *today = localtime(&today2); + if (!today) + return AVERROR(errno); + snprintf(filename, sizeof(filename), "vstats_%02d%02d%02d.log", today->tm_hour, today->tm_min, today->tm_sec); return opt_vstats_file(NULL, opt, filename); diff -Nru ffmpeg-2.7/libavcodec/ass_split.h ffmpeg-2.7.1/libavcodec/ass_split.h --- ffmpeg-2.7/libavcodec/ass_split.h 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/ass_split.h 2015-06-19 20:47:55.000000000 +0000 @@ -103,7 +103,7 @@ * Split a full ASS file or a ASS header from a string buffer and store * the split structure in a newly allocated context. * - * @param buf String containing the ASS formated data. + * @param buf String containing the ASS formatted data. * @return Newly allocated struct containing split data. */ ASSSplitContext *ff_ass_split(const char *buf); diff -Nru ffmpeg-2.7/libavcodec/bitstream.c ffmpeg-2.7.1/libavcodec/bitstream.c --- ffmpeg-2.7/libavcodec/bitstream.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/bitstream.c 2015-06-19 20:47:55.000000000 +0000 @@ -247,7 +247,7 @@ /* Build VLC decoding tables suitable for use with get_vlc(). - 'nb_bits' set thee decoding table size (2^nb_bits) entries. The + 'nb_bits' set the decoding table size (2^nb_bits) entries. The bigger it is, the faster is the decoding. But it should not be too big to save memory and L1 cache. '9' is a good compromise. @@ -265,7 +265,7 @@ 'xxx_size' : gives the number of bytes of each entry of the 'bits' or 'codes' tables. - 'wrap' and 'size' allows to use any memory configuration and types + 'wrap' and 'size' make it possible to use any memory configuration and types (byte/word/long) to store the 'bits', 'codes', and 'symbols' tables. 'use_static' should be set to 1 for tables, which should be freed diff -Nru ffmpeg-2.7/libavcodec/dpxenc.c ffmpeg-2.7.1/libavcodec/dpxenc.c --- ffmpeg-2.7/libavcodec/dpxenc.c 2015-05-17 01:26:30.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/dpxenc.c 2015-06-19 20:47:55.000000000 +0000 @@ -75,17 +75,20 @@ return 0; } -#define write16(p, value) \ -do { \ - if (s->big_endian) AV_WB16(p, value); \ - else AV_WL16(p, value); \ -} while(0) +static av_always_inline void write16_internal(int big_endian, void *p, int value) +{ + if (big_endian) AV_WB16(p, value); + else AV_WL16(p, value); +} + +static av_always_inline void write32_internal(int big_endian, void *p, int value) +{ + if (big_endian) AV_WB32(p, value); + else AV_WL32(p, value); +} -#define write32(p, value) \ -do { \ - if (s->big_endian) AV_WB32(p, value); \ - else AV_WL32(p, value); \ -} while(0) +#define write16(p, value) write16_internal(s->big_endian, p, value) +#define write32(p, value) write32_internal(s->big_endian, p, value) static void encode_rgb48_10bit(AVCodecContext *avctx, const AVPicture *pic, uint8_t *dst) { diff -Nru ffmpeg-2.7/libavcodec/ffv1enc.c ffmpeg-2.7.1/libavcodec/ffv1enc.c --- ffmpeg-2.7/libavcodec/ffv1enc.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/ffv1enc.c 2015-06-19 20:47:55.000000000 +0000 @@ -753,7 +753,7 @@ s->chroma_planes = desc->nb_components < 3 ? 0 : 1; s->colorspace = 0; s->transparency = desc->nb_components == 4; - if (!avctx->bits_per_raw_sample) + if (!avctx->bits_per_raw_sample && !s->bits_per_raw_sample) s->bits_per_raw_sample = 8; break; case AV_PIX_FMT_RGB32: diff -Nru ffmpeg-2.7/libavcodec/flacenc.c ffmpeg-2.7.1/libavcodec/flacenc.c --- ffmpeg-2.7/libavcodec/flacenc.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/flacenc.c 2015-06-19 20:47:55.000000000 +0000 @@ -705,7 +705,7 @@ bits[pmin] = UINT32_MAX; for (i = pmax; ; ) { bits[i] = calc_optimal_rice_params(&tmp_rc, i, sums, n, pred_order, kmax, exact); - if (bits[i] < bits[opt_porder]) { + if (bits[i] < bits[opt_porder] || pmax == pmin) { opt_porder = i; *rc = tmp_rc; } diff -Nru ffmpeg-2.7/libavcodec/h264_slice.c ffmpeg-2.7.1/libavcodec/h264_slice.c --- ffmpeg-2.7/libavcodec/h264_slice.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/h264_slice.c 2015-06-19 20:47:55.000000000 +0000 @@ -251,11 +251,11 @@ av_pix_fmt_get_chroma_sub_sample(pic->f->format, &h_chroma_shift, &v_chroma_shift); - for(i=0; iavctx->height, v_chroma_shift); i++) { + for(i=0; if->height, v_chroma_shift); i++) { memset(pic->f->data[1] + pic->f->linesize[1]*i, - 0x80, FF_CEIL_RSHIFT(h->avctx->width, h_chroma_shift)); + 0x80, FF_CEIL_RSHIFT(pic->f->width, h_chroma_shift)); memset(pic->f->data[2] + pic->f->linesize[2]*i, - 0x80, FF_CEIL_RSHIFT(h->avctx->width, h_chroma_shift)); + 0x80, FF_CEIL_RSHIFT(pic->f->width, h_chroma_shift)); } } @@ -1549,12 +1549,15 @@ * vectors. Given we are concealing a lost frame, this probably * is not noticeable by comparison, but it should be fixed. */ if (h->short_ref_count) { - if (prev) { + if (prev && + h->short_ref[0]->f->width == prev->f->width && + h->short_ref[0]->f->height == prev->f->height && + h->short_ref[0]->f->format == prev->f->format) { av_image_copy(h->short_ref[0]->f->data, h->short_ref[0]->f->linesize, (const uint8_t **)prev->f->data, prev->f->linesize, - h->avctx->pix_fmt, + prev->f->format, h->mb_width * 16, h->mb_height * 16); h->short_ref[0]->poc = prev->poc + 2; diff -Nru ffmpeg-2.7/libavcodec/hevc_ps.c ffmpeg-2.7.1/libavcodec/hevc_ps.c --- ffmpeg-2.7/libavcodec/hevc_ps.c 2015-06-09 23:27:50.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/hevc_ps.c 2015-06-19 20:47:55.000000000 +0000 @@ -499,7 +499,8 @@ if (get_bits_left(gb) < 0) { av_log(s->avctx, AV_LOG_ERROR, "Overread VPS by %d bits\n", -get_bits_left(gb)); - goto err; + if (s->vps_list[vps_id]) + goto err; } if (s->vps_list[vps_id] && diff -Nru ffmpeg-2.7/libavcodec/libspeexenc.c ffmpeg-2.7.1/libavcodec/libspeexenc.c --- ffmpeg-2.7/libavcodec/libspeexenc.c 2015-06-09 23:27:51.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/libspeexenc.c 2015-06-19 20:47:55.000000000 +0000 @@ -76,7 +76,7 @@ * encodes them with just enough bits to reproduce the background noise. * * Discontinuous Transmission (DTX) - * DTX is an addition to VAD/VBR operation, that allows to stop transmitting + * DTX is an addition to VAD/VBR operation, that makes it possible to stop transmitting * completely when the background noise is stationary. * In file-based operation only 5 bits are used for such frames. */ diff -Nru ffmpeg-2.7/libavcodec/libx264.c ffmpeg-2.7.1/libavcodec/libx264.c --- ffmpeg-2.7/libavcodec/libx264.c 2015-06-09 23:27:51.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/libx264.c 2015-06-19 20:47:55.000000000 +0000 @@ -191,8 +191,7 @@ x4->params.b_tff = frame->top_field_first; x264_encoder_reconfig(x4->enc, &x4->params); } - if (x4->params.vui.i_sar_height != ctx->sample_aspect_ratio.den || - x4->params.vui.i_sar_width != ctx->sample_aspect_ratio.num) { + if (x4->params.vui.i_sar_height*ctx->sample_aspect_ratio.num != ctx->sample_aspect_ratio.den * x4->params.vui.i_sar_width) { x4->params.vui.i_sar_height = ctx->sample_aspect_ratio.den; x4->params.vui.i_sar_width = ctx->sample_aspect_ratio.num; x264_encoder_reconfig(x4->enc, &x4->params); diff -Nru ffmpeg-2.7/libavcodec/ppc/me_cmp.c ffmpeg-2.7.1/libavcodec/ppc/me_cmp.c --- ffmpeg-2.7/libavcodec/ppc/me_cmp.c 2015-06-09 23:27:51.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/ppc/me_cmp.c 2015-06-19 20:47:55.000000000 +0000 @@ -504,7 +504,7 @@ } /* - * 16x8 works with 16 elements; it allows to avoid replicating loads, and + * 16x8 works with 16 elements; it can avoid replicating loads, and * gives the compiler more room for scheduling. It's only used from * inside hadamard8_diff16_altivec. * diff -Nru ffmpeg-2.7/libavcodec/takdec.c ffmpeg-2.7.1/libavcodec/takdec.c --- ffmpeg-2.7/libavcodec/takdec.c 2015-06-09 23:27:51.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/takdec.c 2015-06-19 20:47:55.000000000 +0000 @@ -801,6 +801,12 @@ if (s->mcdparams[i].present) { s->mcdparams[i].index = get_bits(gb, 2); s->mcdparams[i].chan2 = get_bits(gb, 4); + if (s->mcdparams[i].chan2 >= avctx->channels) { + av_log(avctx, AV_LOG_ERROR, + "invalid channel 2 (%d) for %d channel(s)\n", + s->mcdparams[i].chan2, avctx->channels); + return AVERROR_INVALIDDATA; + } if (s->mcdparams[i].index == 1) { if ((nbit == s->mcdparams[i].chan2) || (ch_mask & 1 << s->mcdparams[i].chan2)) diff -Nru ffmpeg-2.7/libavcodec/vp9.c ffmpeg-2.7.1/libavcodec/vp9.c --- ffmpeg-2.7/libavcodec/vp9.c 2015-06-09 23:27:51.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/vp9.c 2015-06-19 20:47:55.000000000 +0000 @@ -3286,7 +3286,7 @@ } // emulated overhangs if the stride of the target buffer can't hold. This - // allows to support emu-edge and so on even if we have large block + // makes it possible to support emu-edge and so on even if we have large block // overhangs emu[0] = (col + w4) * 8 > f->linesize[0] || (row + h4) > s->rows; @@ -3988,7 +3988,8 @@ int size = pkt->size; VP9Context *s = ctx->priv_data; int res, tile_row, tile_col, i, ref, row, col; - int retain_segmap_ref = s->segmentation.enabled && !s->segmentation.update_map; + int retain_segmap_ref = s->segmentation.enabled && !s->segmentation.update_map + && s->frames[REF_FRAME_SEGMAP].segmentation_map; ptrdiff_t yoff, uvoff, ls_y, ls_uv; AVFrame *f; int bytesperpixel; diff -Nru ffmpeg-2.7/libavcodec/x86/vc1dsp_mmx.c ffmpeg-2.7.1/libavcodec/x86/vc1dsp_mmx.c --- ffmpeg-2.7/libavcodec/x86/vc1dsp_mmx.c 2015-06-09 23:27:51.000000000 +0000 +++ ffmpeg-2.7.1/libavcodec/x86/vc1dsp_mmx.c 2015-06-19 20:47:55.000000000 +0000 @@ -80,7 +80,7 @@ "movq %%mm"#R1", "#OFF"(%1) \n\t" \ "add %2, %0 \n\t" -/** Sacrifying mm6 allows to pipeline loads from src */ +/** Sacrificing mm6 makes it possible to pipeline loads from src */ static void vc1_put_ver_16b_shift2_mmx(int16_t *dst, const uint8_t *src, x86_reg stride, int rnd, int64_t shift) diff -Nru ffmpeg-2.7/libavdevice/alsa_dec.c ffmpeg-2.7.1/libavdevice/alsa_dec.c --- ffmpeg-2.7/libavdevice/alsa_dec.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavdevice/alsa_dec.c 2015-06-19 20:47:55.000000000 +0000 @@ -27,7 +27,7 @@ * @author Benoit Fouet ( benoit fouet free fr ) * @author Nicolas George ( nicolas george normalesup org ) * - * This avdevice decoder allows to capture audio from an ALSA (Advanced + * This avdevice decoder can capture audio from an ALSA (Advanced * Linux Sound Architecture) device. * * The filename parameter is the name of an ALSA PCM device capable of diff -Nru ffmpeg-2.7/libavdevice/alsa_enc.c ffmpeg-2.7.1/libavdevice/alsa_enc.c --- ffmpeg-2.7/libavdevice/alsa_enc.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavdevice/alsa_enc.c 2015-06-19 20:47:55.000000000 +0000 @@ -26,7 +26,7 @@ * @author Luca Abeni ( lucabe72 email it ) * @author Benoit Fouet ( benoit fouet free fr ) * - * This avdevice encoder allows to play audio to an ALSA (Advanced Linux + * This avdevice encoder can play audio to an ALSA (Advanced Linux * Sound Architecture) device. * * The filename parameter is the name of an ALSA PCM device capable of diff -Nru ffmpeg-2.7/libavdevice/avdevice.h ffmpeg-2.7.1/libavdevice/avdevice.h --- ffmpeg-2.7/libavdevice/avdevice.h 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavdevice/avdevice.h 2015-06-19 20:47:55.000000000 +0000 @@ -324,7 +324,7 @@ * Following API allows user to probe device capabilities (supported codecs, * pixel formats, sample formats, resolutions, channel counts, etc). * It is build on top op AVOption API. - * Queried capabilities allows to set up converters of video or audio + * Queried capabilities make it possible to set up converters of video or audio * parameters that fit to the device. * * List of capabilities that can be queried: diff -Nru ffmpeg-2.7/libavformat/avformat.h ffmpeg-2.7.1/libavformat/avformat.h --- ffmpeg-2.7/libavformat/avformat.h 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/avformat.h 2015-06-19 20:47:55.000000000 +0000 @@ -67,7 +67,7 @@ * with an AVFMT_NOFILE format). * * @section lavf_options Passing options to (de)muxers - * Lavf allows to configure muxers and demuxers using the @ref avoptions + * It is possible to configure lavf muxers and demuxers using the @ref avoptions * mechanism. Generic (format-independent) libavformat options are provided by * AVFormatContext, they can be examined from a user program by calling * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass @@ -234,7 +234,7 @@ * @defgroup lavf_io I/O Read/Write * @{ * @section lavf_io_dirlist Directory listing - * The directory listing API allows to list files on remote servers. + * The directory listing API makes it possible to list files on remote servers. * * Some of possible use cases: * - an "open file" dialog to choose files from a remote location, @@ -2361,7 +2361,7 @@ /** * Write a uncoded frame to an output media file. * - * If the muxer supports it, this function allows to write an AVFrame + * If the muxer supports it, this function makes it possible to write an AVFrame * structure directly, without encoding it into a packet. * It is mostly useful for devices and similar special muxers that use raw * video or PCM data and will not serialize it into a byte stream. diff -Nru ffmpeg-2.7/libavformat/aviobuf.c ffmpeg-2.7.1/libavformat/aviobuf.c --- ffmpeg-2.7/libavformat/aviobuf.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/aviobuf.c 2015-06-19 20:47:55.000000000 +0000 @@ -812,6 +812,7 @@ int max_buffer_size = s->max_packet_size ? s->max_packet_size : IO_BUFFER_SIZE; int filled = s->buf_end - s->buffer; + ptrdiff_t checksum_ptr_offset = s->checksum_ptr ? s->checksum_ptr - s->buffer : -1; buf_size += s->buf_ptr - s->buffer + max_buffer_size; @@ -829,6 +830,8 @@ s->buf_end = buffer + (s->buf_end - s->buffer); s->buffer = buffer; s->buffer_size = buf_size; + if (checksum_ptr_offset >= 0) + s->checksum_ptr = s->buffer + checksum_ptr_offset; return 0; } diff -Nru ffmpeg-2.7/libavformat/avio.c ffmpeg-2.7.1/libavformat/avio.c --- ffmpeg-2.7/libavformat/avio.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/avio.c 2015-06-19 20:47:55.000000000 +0000 @@ -263,7 +263,7 @@ *puc = NULL; if (av_strstart(filename, "https:", NULL)) - av_log(NULL, AV_LOG_WARNING, "https protocol not found, recompile with " + av_log(NULL, AV_LOG_WARNING, "https protocol not found, recompile FFmpeg with " "openssl, gnutls,\n" "or securetransport enabled.\n"); return AVERROR_PROTOCOL_NOT_FOUND; diff -Nru ffmpeg-2.7/libavformat/avio.h ffmpeg-2.7.1/libavformat/avio.h --- ffmpeg-2.7/libavformat/avio.h 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/avio.h 2015-06-19 20:47:55.000000000 +0000 @@ -79,7 +79,7 @@ char *name; /**< Filename */ int type; /**< Type of the entry */ int utf8; /**< Set to 1 when name is encoded with UTF-8, 0 otherwise. - Name can be encoded with UTF-8 eventhough 0 is set. */ + Name can be encoded with UTF-8 even though 0 is set. */ int64_t size; /**< File size in bytes, -1 if unknown. */ int64_t modification_timestamp; /**< Time of last modification in microseconds since unix epoch, -1 if unknown. */ diff -Nru ffmpeg-2.7/libavformat/flvenc.c ffmpeg-2.7.1/libavformat/flvenc.c --- ffmpeg-2.7/libavformat/flvenc.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/flvenc.c 2015-06-19 20:47:55.000000000 +0000 @@ -562,7 +562,7 @@ } if (enc->codec_id == AV_CODEC_ID_H264 || enc->codec_id == AV_CODEC_ID_MPEG4) { - /* check if extradata looks like mp4 formated */ + /* check if extradata looks like mp4 formatted */ if (enc->extradata_size > 0 && *(uint8_t*)enc->extradata != 1) if ((ret = ff_avc_parse_nal_units_buf(pkt->data, &data, &size)) < 0) return ret; diff -Nru ffmpeg-2.7/libavformat/hevc.c ffmpeg-2.7.1/libavformat/hevc.c --- ffmpeg-2.7/libavformat/hevc.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/hevc.c 2015-06-19 20:47:55.000000000 +0000 @@ -449,7 +449,7 @@ * * NumDeltaPocs[RefRpsIdx]: num_delta_pocs[rps_idx - 1] */ - for (i = 0; i < num_delta_pocs[rps_idx - 1]; i++) { + for (i = 0; i <= num_delta_pocs[rps_idx - 1]; i++) { uint8_t use_delta_flag = 0; uint8_t used_by_curr_pic_flag = get_bits1(gb); if (!used_by_curr_pic_flag) diff -Nru ffmpeg-2.7/libavformat/matroskadec.c ffmpeg-2.7.1/libavformat/matroskadec.c --- ffmpeg-2.7/libavformat/matroskadec.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/matroskadec.c 2015-06-19 20:47:55.000000000 +0000 @@ -1668,6 +1668,14 @@ if (!track->codec_id) continue; + if (track->audio.samplerate < 0 || track->audio.samplerate > INT_MAX || + isnan(track->audio.samplerate)) { + av_log(matroska->ctx, AV_LOG_WARNING, + "Invalid sample rate %f, defaulting to 8000 instead.\n", + track->audio.samplerate); + track->audio.samplerate = 8000; + } + if (track->type == MATROSKA_TRACK_TYPE_VIDEO) { if (!track->default_duration && track->video.frame_rate > 0) track->default_duration = 1000000000 / track->video.frame_rate; @@ -1869,6 +1877,18 @@ NULL, NULL, NULL, NULL); avio_write(&b, "TTA1", 4); avio_wl16(&b, 1); + if (track->audio.channels > UINT16_MAX || + track->audio.bitdepth > UINT16_MAX) { + av_log(matroska->ctx, AV_LOG_WARNING, + "Too large audio channel number %"PRIu64 + " or bitdepth %"PRIu64". Skipping track.\n", + track->audio.channels, track->audio.bitdepth); + av_freep(&extradata); + if (matroska->ctx->error_recognition & AV_EF_EXPLODE) + return AVERROR_INVALIDDATA; + else + continue; + } avio_wl16(&b, track->audio.channels); avio_wl16(&b, track->audio.bitdepth); if (track->audio.out_samplerate < 0 || track->audio.out_samplerate > INT_MAX) diff -Nru ffmpeg-2.7/libavformat/rawenc.c ffmpeg-2.7.1/libavformat/rawenc.c --- ffmpeg-2.7/libavformat/rawenc.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/rawenc.c 2015-06-19 20:47:55.000000000 +0000 @@ -250,7 +250,9 @@ .write_packet = ff_raw_write_packet, .flags = AVFMT_NOTIMESTAMPS, }; +#endif +#if CONFIG_SINGLEJPEG_MUXER AVOutputFormat ff_singlejpeg_muxer = { .name = "singlejpeg", .long_name = NULL_IF_CONFIG_SMALL("JPEG single image"), diff -Nru ffmpeg-2.7/libavformat/tls_gnutls.c ffmpeg-2.7.1/libavformat/tls_gnutls.c --- ffmpeg-2.7/libavformat/tls_gnutls.c 2015-06-09 23:27:52.000000000 +0000 +++ ffmpeg-2.7.1/libavformat/tls_gnutls.c 2015-06-19 20:47:55.000000000 +0000 @@ -87,7 +87,7 @@ { TLSContext *c = h->priv_data; if (c->need_shutdown) - gnutls_bye(c->session, GNUTLS_SHUT_RDWR); + gnutls_bye(c->session, GNUTLS_SHUT_WR); if (c->session) gnutls_deinit(c->session); if (c->cred) diff -Nru ffmpeg-2.7/libavutil/avstring.c ffmpeg-2.7.1/libavutil/avstring.c --- ffmpeg-2.7/libavutil/avstring.c 2015-06-09 23:27:53.000000000 +0000 +++ ffmpeg-2.7.1/libavutil/avstring.c 2015-06-19 20:47:55.000000000 +0000 @@ -502,7 +502,7 @@ printf("Testing av_append_path_component()\n"); #define TEST_APPEND_PATH_COMPONENT(path, component, expected) \ fullpath = av_append_path_component((path), (component)); \ - printf("%s = %s\n", fullpath, expected); \ + printf("%s = %s\n", fullpath ? fullpath : "(null)", expected); \ av_free(fullpath); TEST_APPEND_PATH_COMPONENT(NULL, NULL, "(null)") TEST_APPEND_PATH_COMPONENT("path", NULL, "path"); diff -Nru ffmpeg-2.7/libavutil/log.h ffmpeg-2.7.1/libavutil/log.h --- ffmpeg-2.7/libavutil/log.h 2015-06-09 23:27:53.000000000 +0000 +++ ffmpeg-2.7.1/libavutil/log.h 2015-06-19 20:47:55.000000000 +0000 @@ -309,7 +309,7 @@ /** * Format a line of log the same way as the default callback. - * @param line buffer to receive the formated line + * @param line buffer to receive the formatted line * @param line_size size of the buffer * @param print_prefix used to store whether the prefix must be printed; * must point to a persistent integer initially set to 1 diff -Nru ffmpeg-2.7/libavutil/opt.h ffmpeg-2.7.1/libavutil/opt.h --- ffmpeg-2.7/libavutil/opt.h 2015-06-09 23:27:53.000000000 +0000 +++ ffmpeg-2.7.1/libavutil/opt.h 2015-06-19 20:47:55.000000000 +0000 @@ -213,7 +213,7 @@ * In some cases it may be more convenient to put all options into an * AVDictionary and call av_opt_set_dict() on it. A specific case of this * are the format/codec open functions in lavf/lavc which take a dictionary - * filled with option as a parameter. This allows to set some options + * filled with option as a parameter. This makes it possible to set some options * that cannot be set otherwise, since e.g. the input file format is not known * before the file is actually opened. */ diff -Nru ffmpeg-2.7/libavutil/pixfmt.h ffmpeg-2.7.1/libavutil/pixfmt.h --- ffmpeg-2.7/libavutil/pixfmt.h 2015-06-09 23:27:53.000000000 +0000 +++ ffmpeg-2.7.1/libavutil/pixfmt.h 2015-06-19 20:47:55.000000000 +0000 @@ -530,7 +530,7 @@ * Illustration showing the location of the first (top left) chroma sample of the * image, the left shows only luma, the right * shows the location of the chroma sample, the 2 could be imagined to overlay - * each other but are drawn seperately due to limitations of ASCII + * each other but are drawn separately due to limitations of ASCII * * 1st 2nd 1st 2nd horizontal luma sample positions * v v v v diff -Nru ffmpeg-2.7/libpostproc/postprocess.c ffmpeg-2.7.1/libpostproc/postprocess.c --- ffmpeg-2.7/libpostproc/postprocess.c 2015-06-09 23:27:53.000000000 +0000 +++ ffmpeg-2.7.1/libpostproc/postprocess.c 2015-06-19 20:47:55.000000000 +0000 @@ -76,6 +76,7 @@ #include "config.h" #include "libavutil/avutil.h" #include "libavutil/avassert.h" +#include "libavutil/intreadwrite.h" #include #include #include @@ -997,7 +998,7 @@ int i; const int count= FFMAX(mbHeight * QPStride, mbWidth); for(i=0; i<(count>>2); i++){ - ((uint32_t*)c->nonBQPTable)[i] = ((const uint32_t*)QP_store)[i] & 0x3F3F3F3F; + AV_WN32(c->nonBQPTable + (i<<2), AV_RN32(QP_store + (i<<2)) & 0x3F3F3F3F); } for(i<<=2; inonBQPTable[i] = QP_store[i] & 0x3F; diff -Nru ffmpeg-2.7/RELEASE ffmpeg-2.7.1/RELEASE --- ffmpeg-2.7/RELEASE 2015-06-09 23:27:49.000000000 +0000 +++ ffmpeg-2.7.1/RELEASE 2015-06-19 20:47:55.000000000 +0000 @@ -1 +1 @@ -2.7 +2.7.1 diff -Nru ffmpeg-2.7/VERSION ffmpeg-2.7.1/VERSION --- ffmpeg-2.7/VERSION 2015-06-09 23:27:57.000000000 +0000 +++ ffmpeg-2.7.1/VERSION 2015-06-19 20:47:55.000000000 +0000 @@ -1 +1 @@ -2.7 +2.7.1