--- ffmpeg-extra-0.5.9.orig/debian/libavdevice-dev.install +++ ffmpeg-extra-0.5.9/debian/libavdevice-dev.install @@ -0,0 +1,4 @@ +usr/include/libavdevice +usr/lib/libavdevice.a +usr/lib/{,*/,*/*/}libavdevice.so +usr/lib/pkgconfig/libavdevice.pc --- ffmpeg-extra-0.5.9.orig/debian/recordshow.sh +++ ffmpeg-extra-0.5.9/debian/recordshow.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Copyright 2008, Daniel Dickinson +# +# This script script (which depends on xawtv for the v4lctl command to +# select channel) and crontab show how one can record tv shows using +# ffmpeg. + +STATION="$1" +TODAY=$(date +"%A %B %d %Y") +SHOWLENGTH="$2" +SHOWDIR="$3" +SHOWNAME="$4" + +function err_exit { + EXITCODE=$1 + shift + echo $* 1>&2 + exit $EXITCODE +} + +BADPARAM=FALSE + +if [ -z "STATION" ]; then + BADPARAM=TRUE +fi + +if [ -z "$SHOWDIR" ]; then + BADPARAM=TRUE +fi + +if [ -z "$SHOWLENGTH" ]; then + BADPARAM=TRUE +fi + +if [ "$BADPARAM" != "FALSE" ]; then + err_exit 2 "Usage: recordshow.sh station show-length show-dir [show-name]" +fi + +if [ -z "$SHOWNAME" ]; then + BASEFILENAME="$SHOWDIR/$TODAY" +else + BASEFILENAME="$SHOWDIR/$SHOWNAME-$TODAY" +fi + +SECONDS=$(echo $SHOWLENGTH | cut -f3 -d:) +MINUTES=$(echo $SHOWLENGTH | cut -f2 -d:) +HOURS=$(echo $SHOWLENGTH | cut -f1 -d:) + +TOTALSECONDS=0 + +TOTALSECONDS=$(expr $(expr $(expr $HOURS '*' 3600) + $(expr $MINUTES '*' 60)) + $SECONDS) + +/usr/bin/v4lctl setstation $1 >/dev/null || err_exit 1 "Unable to set station (channel) $STATION" +/usr/bin/v4lctl volume mute off >/dev/null || err_exit 4 "Unable to unmute audio" +/usr/bin/ffmpeg -y -tvstd ntsc -t "$TOTALSECONDS" -s 480x352 -re -deinterlace -f video4linux2 -i /dev/video0 -f audio_device -i /dev/dsp -ac 2 -s 768x576 -f mpegts -acodec mp2 -vcodec mpeg1video "$BASEFILENAME.mpegts" >/dev/null 2>&1 || err_exit 3 "Error recording show $BASEFILENAME to mpeg2 transport stream" +/usr/bin/v4lctl volume mute on >/dev/null || err_exit 5 "Unable to mute audio" + --- ffmpeg-extra-0.5.9.orig/debian/libswscale0.install +++ ffmpeg-extra-0.5.9/debian/libswscale0.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libswscale.so.* --- ffmpeg-extra-0.5.9.orig/debian/confflags +++ ffmpeg-extra-0.5.9/debian/confflags @@ -0,0 +1,208 @@ +# -*- mode: makefile -*- +# vim:syntax=make + +# build a static version on every architecture in the 'debian' ffmpeg package +FLAVORS := static + +# shared is generic, i.e. without arch specific opcodes +FLAVORS += shared + +export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +export DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) + +SVNREVISION=$(shell cat .svnrevision 2>/dev/null || echo "UNKNOWN") + +# this is only used for the check_asm macro +ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + CC := gcc +else + CC := $(DEB_HOST_GNU_TYPE)-gcc +endif + +# this outputs 0 or 1 depending on whether a piece of assembly can be compiled +# with the *default* gcc flags; this is used to test the toolchain *default* +# configuration +check_asm = $(shell echo 'void foo(void) { __asm__ volatile("$(1)"); }' | $(CC) -x c -c - -o /dev/null 2>/dev/null && echo 1 || echo 0) + +# the other flavors always build dynamic versions +# Also, disable architecture-specific optimizations for default shared build +ifeq ($(DEB_HOST_ARCH),armel) + # whether the toolchain *default* configuration includes vfp and neon + vfp_asm := fadds s0, s0, s0 + has_vfp := $(call check_asm, $(vfp_asm)) + neon_asm := vadd.i16 q0, q0, q0 + has_neon := $(call check_asm, $(neon_asm)) + + # only build + ifneq ($(has_vfp),1) + FLAVORS += vfp + endif + ifneq ($(has_neon),1) + FLAVORS += neon + endif +else ifeq ($(DEB_HOST_ARCH),i386) + FLAVORS += cmov +else ifeq ($(DEB_HOST_ARCH),powerpc) + FLAVORS += altivec + nooptflags += --disable-altivec +else ifeq ($(DEB_HOST_ARCH),sparc) + FLAVORS += vis + nooptflags += --disable-vis +endif + +$(info Building FLAVORS=$(FLAVORS)) + +define cond_enable + $(shell test -r $(1) && echo --enable-$(2) ) +endef + +# variant that also require --enable-version3 +define cond_enable_v3 + $(shell test -r $(1) && echo --enable-$(2) --enable-version3 ) +endef + +# variant that also require --enable-nonfree +define cond_enable_nf + $(shell test -r $(1) && echo --enable-$(2) --enable-nonfree ) +endef + +# Configuration flags causing the libs to be GPL tainted +gpl_confflags += --enable-gpl +gpl_confflags += --enable-postproc +gpl_confflags += --enable-swscale +gpl_confflags += --enable-x11grab + +# there is no libfaad in ubuntu/main, on in ubuntu/multiverse +gpl_confflags += $(call cond_enable,/usr/include/faad.h,libfaad) + +# Common configuration flags +confflags += --extra-version='$(DEB_VERSION)' +confflags += --prefix=/usr +confflags += --enable-avfilter +confflags += --enable-avfilter-lavf +confflags += --enable-vdpau +confflags += --enable-bzlib +confflags += --enable-libdirac +confflags += --enable-libgsm +confflags += --enable-libopenjpeg +confflags += --enable-libschroedinger +confflags += --enable-libspeex +confflags += --enable-libtheora +confflags += --enable-libvorbis +confflags += --enable-pthreads +confflags += --enable-zlib +confflags += --disable-stripping +confflags += --disable-vhook +confflags += --enable-runtime-cpudetect +ifeq ($(DEB_HOST_ARCH),armel) +# this is required on Ubuntu lucid as it defaults to thumb2 and ffmpeg has +# plenty of incompatible assembly; not sure how to detect that properly +confflags += --extra-cflags="-marm -fPIC -DPIC" +endif +confflags += $(extra_common_confflags) + +# this part below is intended for the 'ffmpeg' package in ubuntu/multiverse +gpl_confflags += $(call cond_enable,/usr/include/xvid.h,libxvid) +confflags += $(call cond_enable,/usr/include/lame/lame.h,libmp3lame) +gpl_confflags += $(call cond_enable,/usr/include/x264.h,libx264) + +confflags += $(call cond_enable,/usr/include/lame/lame.h,libmp3lame) +confflags += $(call cond_enable_nf,/usr/include/amrnb/sp_dec.h,libamr-nb) +confflags += $(call cond_enable_nf,/usr/include/amrwb/dec.h,libamr-wb) + +# Opencore-amr requires GPL v3 +v3_confflags += $(call cond_enable_v3,/usr/include/opencore-amrnb/interf_dec.h,libopencore-amrnb) +v3_confflags += $(call cond_enable_v3,/usr/include/opencore-amrwb/dec_if.h,libopencore-amrwb) + +# AAC is considered non-free upstream +confflags += $(call cond_enable_nf,/usr/include/faac.h,libfaac) + +# comment out following line for LGPL versions of the libraries +confflags += $(gpl_confflags) +confflags += $(v3_confflags) + +# Enable IEEE 1394 (FireWire) support on Linux only +ifneq (,$(findstring linux,$(DEB_HOST_GNU_TYPE))) + confflags += --enable-libdc1394 + lib1394-dev += libraw1394-dev, libdc1394-22-dev +endif + +# XXX this probably needs fixing +CFLAGS := + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) +# Various parts of ffmpeg (and swscale) FTBFS when compiling with -fPIC +# and with mmx code enabled. + confflags += --disable-optimizations + confflags += --disable-mmx +endif + +# Configuration flags for the static libraries +static_build_confflags += $(confflags) + +# Configuration flags for the non-optimized shared libraries +shared_build_confflags += $(confflags) +# amd64 has no problems with optimized shared libs. i386 and arm do. +ifneq ($(DEB_HOST_ARCH),amd64) +shared_build_confflags += $(nooptflags) +endif +shared_build_confflags += --enable-shared +shared_build_confflags += --disable-static + +## armel architecture specific +# Configuration flags for the optimised shared libraries +vfp_build_confflags += $(confflags) +vfp_build_confflags += --shlibdir=/usr/lib/vfp +vfp_build_confflags += --enable-shared +vfp_build_confflags += --disable-static +vfp_build_confflags += --extra-cflags="-mfpu=vfp -mfloat-abi=softfp" +vfp_build_confflags += --disable-ffmpeg +vfp_build_confflags += --disable-ffplay +# NB: NEON always implies v7+ and ffmpeg's NEON implementation requires VFP +neon_build_confflags += $(confflags) +neon_build_confflags += --shlibdir=/usr/lib/neon/vfp +neon_build_confflags += --extra-cflags="-mfpu=neon -mfloat-abi=softfp -fPIC -DPIC" +neon_build_confflags += --enable-shared +neon_build_confflags += --disable-static +neon_build_confflags += --disable-ffmpeg +neon_build_confflags += --disable-ffplay + +## i386 architecture specific +# Configuration flags for the optimized shared libraries +cmov_build_confflags += $(confflags) +cmov_build_confflags += $(nooptflags) +cmov_build_confflags += --shlibdir=/usr/lib/i686/cmov +cmov_build_confflags += --cpu='i686' +cmov_build_confflags += --enable-shared +cmov_build_confflags += --disable-static +cmov_build_confflags += --disable-ffmpeg +cmov_build_confflags += --disable-ffplay + +## powerpc architecture specific +# Configuration flags for the optimized shared libraries +altivec_build_confflags += $(confflags) +altivec_build_confflags += --shlibdir=/usr/lib/altivec +altivec_build_confflags += --cpu='g4' +altivec_build_confflags += --enable-shared +altivec_build_confflags += --disable-static +altivec_build_confflags += --enable-altivec +altivec_build_confflags += --disable-ffmpeg +altivec_build_confflags += --disable-ffplay + +## sparc architecture specific +# Configuration flags for the optimized shared libraries +vis_build_confflags += $(confflags) +vis_build_confflags += --shlibdir=/usr/lib/v9 +vis_build_confflags += --cpu='sparc64' +vis_build_confflags += --enable-shared +vis_build_confflags += --disable-static +vis_build_confflags += --extra-cflags="-fPIC -DPIC" +vis_build_confflags += --disable-ffmpeg +vis_build_confflags += --disable-ffplay + +# Additional documentation for PowerPC +ifneq (,$(findstring powerpc,$(DEB_BUILD_GNU_TYPE))) + extradoc := doc/ffmpeg_powerpc_performance_evaluation_howto.txt +endif + --- ffmpeg-extra-0.5.9.orig/debian/changelog +++ ffmpeg-extra-0.5.9/debian/changelog @@ -0,0 +1,1857 @@ +ffmpeg-extra (4:0.5.9-0ubuntu0.10.04.3) lucid-security; urgency=low + + * SECURITY UPDATE: unspecified security issue in vp56.c (LP: #1104019) + - debian/patches/CVE-2012-2783.patch: release frames on error in + libavcodec/vp56.c. + - CVE-2012-2783 + * SECURITY UPDATE: double free vulnerability in mpeg_decode_frame + - debian/patches/CVE-2012-2803.patch: do not decode extradata more than + once in libavcodec/mpeg12.c. + - CVE-2012-2803 + + -- Marc Deslauriers Thu, 24 Jan 2013 13:48:47 -0500 + +ffmpeg-extra (4:0.5.9-0ubuntu0.10.04.2) lucid-security; urgency=low + + * SECURITY UPDATE: security issues in decode_pic + - debian/patches/CVE-2012-2777-2784.patch: prevent changing w/h in + libavcodec/cavsdec.c. + - CVE-2012-2777 + - CVE-2012-2784 + * SECURITY UPDATE: out of array read in avi_read_packet function + - debian/patches/CVE-2012-2788.patch: use accurate size in + libavformat/avidec.c. + - CVE-2012-2788 + * SECURITY UPDATE: out of array writes in avs.c + - debian/patches/CVE-2012-2801.patch: force dimensions in + libavcodec/avs.c. + - CVE-2012-2801 + + -- Marc Deslauriers Wed, 19 Dec 2012 08:55:26 -0500 + +ffmpeg-extra (4:0.5.9-0ubuntu0.10.04.1) lucid-security; urgency=low + + * SECURITY UPDATE: Updated to libav 0.5.9 to fix multiple security + issues. (LP: #1012132) + - CVE-2011-3929 + - CVE-2011-3936 + - CVE-2011-3940 + - CVE-2011-3947 + - CVE-2011-3951 + - CVE-2011-3952 + - CVE-2012-0851 + - CVE-2012-0852 + - CVE-2012-0853 + - CVE-2012-0858 + - CVE-2012-0859 + - CVE-2012-0947 + * Removed upstreamed patches: + - CVE-2010-3429.patch + - CVE-2010-3908.patch + - CVE-2010-4704.patch + - CVE-2011-0480.patch + - CVE-2011-0722.patch + - CVE-2011-0723.patch + - CVE-2011-2161.patch + - CVE-2011-3362.patch + - CVE-2011-3504.patch + - CVE-2011-4351.patch + - CVE-2011-4353.patch + - CVE-2011-4364.patch + - CVE-2011-4579.patch + + -- Marc Deslauriers Tue, 12 Jun 2012 11:45:36 -0400 + +ffmpeg-extra (4:0.5.1-1ubuntu1.3) lucid-security; urgency=low + + * SECURITY UPDATE: denial of service and possible code execution via + malformed Matroska file + - debian/patches/CVE-2011-3504.patch: verify memory allocation failures + in libavformat/matroskadec.c. + - CVE-2011-3504 + * SECURITY UPDATE: denial of service and possible code execution via + malformed file containing QDM2 stream + - debian/patches/CVE-2011-4351.patch: check boundaries in + libavcodec/qdm2.c. + - CVE-2011-4351 + * SECURITY UPDATE: denial of service and possible code execution via + malformed file containing VP5 or VP6 streams + - debian/patches/CVE-2011-4353.patch: check indexes in libavcodec/vp5.c + and libavcodec/vp6.c. + - CVE-2011-4353 + * SECURITY UPDATE: denial of service and possible code execution via + malformed VMD file + - debian/patches/CVE-2011-4364.patch: properly check lengths in + libavcodec/vmdav.c. + - CVE-2011-4364 + * SECURITY UPDATE: denial of service and possible code execution via + malformed file containing svq1 stream + - debian/patches/CVE-2011-4579.patch: set dimensions after they have + changed in libavcodec/svq1dec.c. + - CVE-2011-4579 + + -- Marc Deslauriers Wed, 21 Dec 2011 13:21:39 -0500 + +ffmpeg-extra (4:0.5.1-1ubuntu1.2) lucid-security; urgency=low + + * SECURITY UPDATE: denial of service via malformed APE file + - debian/patches/CVE-2011-2161.patch: make sure there are frames in + libavformat/ape.c. + - CVE-2011-2161 + * SECURITY UPDATE: arbitrary code execution via malformed CAVS file + - debian/patches/CVE-2011-3362.patch: validate values in + libavcodec/cavsdec.c. + - CVE-2011-3362 + + -- Marc Deslauriers Mon, 19 Sep 2011 09:27:11 -0400 + +ffmpeg-extra (4:0.5.1-1ubuntu1.1) lucid-security; urgency=low + + * SECURITY UPDATE: arbitrary code execution via crafted flic file + - debian/patches/CVE-2010-3429.patch: add checks to + libavcodec/flicvideo.c. + - CVE-2010-3429 + * SECURITY UPDATE: arbitrary code execution via crafted wmv file + (LP: #690169) + - debian/patches/CVE-2010-3908.patch: properly calculate size in + libavcodec/utils.c. + - CVE-2010-3908 + * SECURITY UPDATE: denial of service via crafted .ogg file + - debian/patches/CVE-2010-4704.patch: validate codebook in + libavcodec/vorbis_dec.c. + - CVE-2010-4704 + * SECURITY UPDATE: denial of service and possible code execution via + crafted WebM file + - debian/patches/CVE-2011-0480.patch: check rangebits in + libavcodec/vorbis_dec.c. + - CVE-2011-0480 + * SECURITY UPDATE: arbitrary code execution via crafted RealMedia file + (LP: #690169) + - debian/patches/CVE-2011-0722.patch: set dimensions in + libavcodec/rv34.c. + - CVE-2011-0722 + * SECURITY UPDATE: denial of service and possible code execution via + crafted VC1 file (LP: #690169) + - debian/patches/CVE-2011-0723.patch: fix invalid reads in + libavcodec/vc1dec.c. + - CVE-2011-0723 + + -- Marc Deslauriers Wed, 06 Apr 2011 08:38:14 -0400 + +ffmpeg-extra (4:0.5.1-1ubuntu1) lucid; urgency=low + + * merge from 'main' package. Changes + - build against faad, dirac, libopenjpeg, x264, mp3lame and xvidcore + + -- Reinhard Tartler Thu, 04 Mar 2010 13:08:25 +0100 + +ffmpeg (4:0.5.1-1ubuntu1) lucid; urgency=low + + * merge from debian. remaining changes: + - don't disable encoders + - don't build against libfaad, libdirac and libopenjpeg (all in universe) + + -- Reinhard Tartler Thu, 04 Mar 2010 10:34:37 +0100 + +ffmpeg (4:0.5.1-1) unstable; urgency=low + + * new upstream release: + - clarifies documentation on metadata, Closes: #570050, LP: #501729 + - further security backports, Closes: #570713 + * adapt to new versioning scheme + * use '<<' instead of '<' relationship for internal shlib file + * merge changes from ubuntu packaging + * drop wmapro backport again as discussed with upstream. The unrelated + changes seem too risky for a stable release. + + -- Reinhard Tartler Wed, 03 Mar 2010 22:28:24 +0100 + +ffmpeg (4:0.5+svn20090706-6) unstable; urgency=low + + [ Fabian Greffrath ] + * debian/patches/901-fix-misc-typos.patch: New patch taken from + upstream GIT (slightly modified) to fix some spelling errors. + * Document our calling of debhelper programs in an odd order in + debian/rules. + + [ Reinhard Tartler ] + * document some unattributed patches + * enable cpu autodetection in libswscale, Closes: #567725, LP: #386397 + + [ Christopher Martin ] + * backport wmapro codec from ffmpeg trunk + + -- Reinhard Tartler Sun, 31 Jan 2010 16:53:47 +0100 + +ffmpeg-extra (4:0.5+svn20090706-5ubuntu4) lucid; urgency=low + + * tighten build dependency on new x264 package + * add libx264 wrapper backport for ffmpeg 0.5 + * install presets in 'libavcodec package' instead of 'ffmpeg' binary, + see git history for rationale of this change + + -- Reinhard Tartler Wed, 17 Feb 2010 08:37:17 +0100 + +ffmpeg-extra (4:0.5+svn20090706-5ubuntu3) lucid; urgency=low + + * rebuild for ffmpeg versioned symbols + + -- Reinhard Tartler Tue, 19 Jan 2010 20:55:30 +0100 + +ffmpeg-extra (4:0.5+svn20090706-5ubuntu2) lucid; urgency=low + + * No-change rebuild against new dirac package synced from Debian + + -- Iain Lane Sun, 17 Jan 2010 17:41:48 +0000 + +ffmpeg-extra (4:0.5+svn20090706-5ubuntu1) lucid; urgency=low + + * merge from 'ubuntu' branch + + -- Reinhard Tartler Sun, 17 Jan 2010 09:34:54 +0100 + +ffmpeg (4:0.5+svn20090706-5ubuntu1) lucid; urgency=low + + * merge from debian, remaining changes: + - dont disable internal encoders + - disabled extra depedencies (come with ffmpeg-extra) + - libdirac + - libopenjpeg + + -- Reinhard Tartler Sat, 16 Jan 2010 10:12:15 +0100 + +ffmpeg (4:0.5+svn20090706-5) unstable; urgency=medium + + * Upload to unstable + * Urgency medium because of fixed RC bugs (security issues) + + -- Reinhard Tartler Fri, 22 Jan 2010 16:04:39 +0000 + +ffmpeg (4:0.5+svn20090706-4) experimental; urgency=low + + [ Loïc Minier ] + * Use default toolchain setup on ARM flavors for noopt and only add FPU + CFLAGS in the VFP and NEON flavors; this is ok since internally, cpu will + be set to "generic" but -march=generic or -mcpu=generic will NOT be added + to the build flags. + * Build all armel flavours with -marm since ffmpeg has a lot of hand crafted + assembly which doesn't build in the new lucid default mode (Thumb 2); + LP: #488267 + * Build all armel flavours with -fPIC -DPIC instead of just the neon flavour + as the new flags/toolchain require this in Ubuntu lucid. + * Build some assembly test code -- just like configure -- to decide whether + the *default* toolchain uses vfp or neon to decided whether to build the + vfp and neon flavors. + * Drop --disable/--enable opt flags such as --disable-neon or + --enable-armvfp on ARM since the upstream configure script will do the + right thing when the proper flags are set. + + -- Loïc Minier Wed, 13 Jan 2010 12:57:32 +0100 + +ffmpeg (4:0.5+svn20090706-3) experimental; urgency=low + + [ Loïc Minier ] + * Disable more autodetecter ARM arch features + * Enable neon flavour + * Update NEON confflags to assume v7 and VFP + * Add backported NEON patches from ffmpeg trunk + * Pass proper --cpu and --extra-flags on armel + * Pass -fPIC -DPIC to neon pass + + [ Fabian Greffrath ] + * Initialize the FLAVORS variable to static instead of appending to + it. Also, we do not support the internalencoders variable anymore. + + [ Andres Mejia ] + * Remove unused patches from packaging. + * Update Vcs-* entries to new location. + * Bump Standards-Version to 3.8.3. + + [ Reinhard Tartler ] + * change shlibs file to make applications depend on the -extra- packages + * loosen dependencies further, so that the -dev packages remain + installable even if ffmpeg-extra is 'out-of-date' + * add patch for issue1245: Make arguments of av_set_pts_info() unsigned. + * Support constant-quant encoding for libtheora, LP: #356322 + * increase swscale compile time width (VOF/VOFW), LP: #443264 + * Backports of various security patches, Closes: #550442, including: + - backport fixes for vorbis_dec + - backport oggparsevorbis fix + - backport vp3 fixes + - backport ffv1 fix + - libavcodec/mpegaudiodec.c backports + - h264 security backports + - backported libavformat/mov.c security fixes + - backported libavformat/oggdec.c security fixes + - backport svn r18016 aka 'MOV-Support-stz2-Compact-Sample-Size-Box' + to fix FTBFS + * enable symbol versioning + * bump shlibs version + * add README.source describing how this source package manages patches + * make sure the ${misc:Depends} substvar is used for each binary package + + -- Reinhard Tartler Wed, 06 Jan 2010 16:27:40 +0100 + +ffmpeg (4:0.5+svn20090706-2ubuntu5~ppa2) lucid; urgency=low + + * export *all* symbols of libswscale, fixes FTBFS in mplayer + + -- Reinhard Tartler Sat, 02 Jan 2010 23:37:21 +0100 + +ffmpeg (4:0.5+svn20090706-2ubuntu5~ppa1) lucid; urgency=low + + * Imported Debian patch 0.5+svn20090706-2ubuntu4 + * revert gbp.conf to point to lucid branch + * enable symbol versioning + * bump shlibs version + + -- Reinhard Tartler Sat, 02 Jan 2010 15:03:09 +0100 + +ffmpeg (4:0.5+svn20090706-2ubuntu4) lucid; urgency=low + + * add build dependency on 'yasm', since it is now moved to main. + + -- Reinhard Tartler Mon, 21 Dec 2009 23:57:34 +0100 + +ffmpeg-extra (4:0.5+svn20090706-2ubuntu4) lucid; urgency=low + + * merge from 'ffmpeg' package + + -- Reinhard Tartler Tue, 10 Nov 2009 13:18:24 +0100 + +ffmpeg (4:0.5+svn20090706-2ubuntu3) lucid; urgency=low + + * security backports from ffmpeg trunk (Closes: #550442) + - libavcodec/mpegaudiodec + - libavcodec/vorbis_dec + - libavcodec/ffv1 + - libavcodec/vp3 + - libavcodec/h264 + - libavformat/mov + - libavformat/oggdec + - libavformat/oggparsevorbis + + -- Reinhard Tartler Thu, 05 Nov 2009 20:31:29 +0100 + +ffmpeg-extra (4:0.5+svn20090706-2ubuntu3) karmic; urgency=low + + * make the conflicts/replaces on the former -unstripped- variants + versioned so the -unstripped- and -extra- variants can actually be + coinstalled. + * remove references to obsolete 'cvs' packages. these have never existed + in ubuntu after all. + + -- Reinhard Tartler Fri, 16 Oct 2009 10:29:16 +0200 + +ffmpeg-extra (4:0.5+svn20090706-2ubuntu2) karmic; urgency=low + + [ Reinhard Tartler ] + * merge from the 'ffmpeg' package + * Make arguments of av_set_pts_info() unsigned. + * update debian/changelog + * use patch for issue1245 from git.ffmpeg.org + * Support constant-quant encoding for libtheora, LP: #356322 + * increase swscale compile time width (VOF/VOFW), LP: #443264 + * Add missing Conflicts/Replaces to ensure a working upgrade patch from + intrepid/jaunty. LP: #418785 + + [ Loïc Minier ] + * Update config for karmic's armel toolchain. + * Enable neon flavour; LP: #383240. + * Update NEON confflags to assume v7 and VFP. + * Add backported NEON patches from ffmpeg trunk; see debian/patches/neon/. + * Pass proper --cpu and --extra-flags on armel. + * Pass -fPIC -DPIC to neon pass. + + -- Reinhard Tartler Wed, 14 Oct 2009 09:15:50 +0200 + +ffmpeg-extra (4:0.5+svn20090706-2ubuntu1) karmic; urgency=low + + * merge from the 'ffmpeg' package + * enable dirac, libopenjpeg + * reintroduce the formats.txt file + * reintroduce "missing" codecs: LP: #419103 + * is co-installable with the -dev packages LP: #416436, #418168 + * should now have the proper replaces lines: LP: #418789, #418799, #418807, #323789 + * don't build doxygen documentation, it is not installed anyway + + -- Reinhard Tartler Wed, 26 Aug 2009 11:50:32 +0200 + +ffmpeg (4:0.5+svn20090706-2ubuntu1) karmic; urgency=low + + * merge from debian. Remaining changes: + - disabled output decoders: faad, openjpeg, dirac (all not in main) + - build arm vfp variant + - don't build depend on yasm. + * fix dependencies on -extra packages: LP: #418705, #416348 + * no need to remove mpeg encoders in the ubuntu package, unless we hear + otherwise from some patent owner. This brings back the mpeg2video + encoder is available. cf. formats.txt.gz LP: #416585 + + -- Reinhard Tartler Wed, 26 Aug 2009 11:20:03 +0200 + +ffmpeg (4:0.5+svn20090706-2) unstable; urgency=low + + [ Fabian Greffrath ] + * Enable support for libdirac, now that it has entered Debian. + + [ Andres Mejia ] + * Fix ordering of FLAVORS that are installed. (Closes: #543595) + + [ Reinhard Tartler ] + * prepare new upload + * simply debian/confflags by removing the case of renaming the source + package + + -- Reinhard Tartler Wed, 26 Aug 2009 09:12:49 +0200 + +ffmpeg (4:0.5+svn20090706-1ubuntu3) karmic; urgency=low + + * update the dependencies of the -dev packages for the + unstripped -> extra renaming + + -- Reinhard Tartler Tue, 25 Aug 2009 16:37:23 +0200 + +ffmpeg (4:0.5+svn20090706-1ubuntu2) karmic; urgency=low + + * really drop libopenjpeg from build depends. + + -- Reinhard Tartler Tue, 25 Aug 2009 08:17:17 +0200 + +ffmpeg (4:0.5+svn20090706-1ubuntu1) karmic; urgency=low + + * merge from debian. Remaining changes: + - don't build-depend on libfaad-dev, disabling faad decoder. + - build arm vfp variant + - don't build libopenjpeg support (not in main) + * change shlibs file to make applications depend on the -extra- packages. + * don't build depend on yasm. + + -- Reinhard Tartler Sat, 15 Aug 2009 18:18:23 +0200 + +ffmpeg (4:0.5+svn20090706-1) unstable; urgency=low + + * preparing new upstream version, 0.5 release branch, rev 19352 + - this version is capable of compiling swscale in LGPL mode + * rename source package back + - The replacement package with the 'missing bits' will be called + 'ffmpeg-extra' + - simplify README.upstream-upgrade + - rename the source package from 'ffmpeg-debian' -> 'ffmpeg' + * fix aac playback regression, thanks to Matthew Wakeling for reporting + (Closes: #540729) + * fix seeking in DIF (DV) movies + Thanks to Dan Dennedy for identifying the patch! (Closes: #540424) + * debian/rules: + - merge cond_enable_nf macro from master.extra branch + - don't disable ffserver in various optimized variants + - don't disable building of statically linked helper binaries + - simply by removing the case of renaming the source package + - change the shlibs file: s/-unstripped-/-extra-/ + + -- Reinhard Tartler Thu, 13 Aug 2009 12:48:27 +0200 + +ffmpeg-debian (4:0.5+svn20090609-2) unstable; urgency=low + + [ Fabian Greffrath ] + * Remove .install files for unstripped packages that we do not build + from this branch anyway. + * Remove debian/fixup-config.sh which was only a hack needed to repair + the crippled config.h + * Finally remove strip.sh. + + [ Andres Mejia ] + * Add vdpau support by including vdpau headers in deb packaging. + (Closes: #511544) + * Don't disable encoders if internalencoders is set in + DEB_BUILD_OPTIONS. + * Enable yasm for i386 and amd64. + + [ Reinhard Tartler ] + * clarifications suggested by upstream in README.Source + * refresh patches + + [ Fabian Greffrath ] + * Document the copyright notice and license for the VDPAU headers in + debian/copyright. + * Remove parallel make support from debian/confflags, it's overridden + in debian/rules anyway. + * Quote opts in debian/watch. + * Bump debhelper compat to 7. + * Clean up clean target in debian/rules in favour of debian/clean. + * Replace "dh_clean -k" by dh_prep. + + [ Reinhard Tartler ] + * remove duplicated libxvmc-dev build dependency + * sort build dependencies alphabetically + * remove section numbering from README.Debian + * add note about the lintian override + + -- Reinhard Tartler Thu, 13 Aug 2009 12:46:46 +0200 + +ffmpeg-debian (4:0.5+svn20090609-1ubuntu3) karmic; urgency=low + + * do not forcefully enable objenjpeg, it is not avaiable in this build + anyway + * don't build against faac in any case, it is deemed non-free + + -- Reinhard Tartler Sat, 25 Jul 2009 09:15:12 +0200 + +ffmpeg-debian (4:0.5+svn20090609-1ubuntu2) karmic; urgency=low + + * remove libopenjpeg-dev from build depends (fixes FTBFS) + * remove duplicate libxvmc-dev build-dependency + + -- Reinhard Tartler Fri, 24 Jul 2009 21:53:47 +0200 + +ffmpeg (4:0.5+svn20090609-1ubuntu1+unstripped1) karmic; urgency=low + + * prepare new upload + * update gbp.conf + * move gbp.conf to debian/ + * regroup build dependencies to minimize the diff + + -- Reinhard Tartler Fri, 24 Jul 2009 19:45:26 +0200 + +ffmpeg-debian (4:0.5+svn20090609-1ubuntu1) karmic; urgency=low + + * merge from debian. Remaining changes: + - don't build-depend on libfaad-dev, disabling faad decoder. + - build arm vfp variant + * update gbp.conf + * move gbp.conf to debian/ + + -- Reinhard Tartler Sat, 18 Jul 2009 10:55:24 +0200 + +ffmpeg-debian (4:0.5+svn20090609-1) unstable; urgency=low + + [ Andres Mejia ] + * Add myself to Uploaders list. + * Reorder when dh_strip is done so qt-faststart is also + stripped. + * Update to control files. + * Add new confflags for new build dependencies. + * Use .docs files to add ffmpeg and ffmpeg-doc documentation. + * Use .docs files for installing documentation. + * Add comment to 900_doxyfile patch. + * Add man page for qt-faststart. + * Bump version in changelog to prepare new release + * Fix FTBFS for ffmpeg source package with -dev packages (Closes: #527761) + * Use dh_lintian to install lintian overrides + * Update comment on fpic-* patches + * Build-Depend on debhelper (>= 6.0.7~) for dh_lintian. + * Add lintian overrides for remaining fpic lintian errors. + * Shorten comment on lintian-overrides. + * Allow passing in extra confflags, removes the need for fix-fpic + DEB_BUILD_OPTIONS. + * Fix FTBFS on kfreebsd. (Closes: #528591) + * Include patches to allow us to use opencore-amr libraries. + + [ Reinhard Tartler ] + * remove debian/control.* mechanism + * improve patch description for debian/patches/100_kfreebsd + + [ Andres Mejia ] + * Add lintian overrides for ffmpeg-debian source warnings. + * Only use .svnrevision if it's readable. + * Update source lintian-overrides for modifications to debian/rules. + * Add fix for FTBFS for GNU Hurd OS. Thanks Marc Dequènes. + (Closes: #530436) + + [ Felipe Sateler ] + * Don't add -unstripped to the unstripped variant version number + in debian/README.upstream-upgrade. + * In the same file, pass explicit version to git-import-orig + + [ Fabian Greffrath ] + * Cleaned up debian/watch file. + * Add notes why we no longer strip the orig.tar.gz. + + [ Andres Mejia ] + * Fix watch file to ignore daily snapshots. + * Make get-orig-source.sh executable. + + [ Reinhard Tartler ] + * add patch for qtrle encoding (Closes: #530016) + * Enable xvmc support by adding libxvmc-dev to build dependencies + * really add libopenjpeg-dev to build depends, actually enabling + the openjpeg decoder. + * reorganise README.Debian for the new plan [tm] + * no longer strip the source on upstream upgrades + * Imported Upstream version 0.5+svn20090609 + * adjust notes in README.upstream-upgrade for the now unstripped + debian source package + * remove hack to build with stripped sources + * bump standards version, no changes needed + + -- Reinhard Tartler Sun, 05 Jul 2009 22:52:43 +0200 + +ffmpeg-debian (4:0.5+svn20090420-2) unstable; urgency=low + + * debian/control: fix dependencies for libavutil-dev and libavfilter-dev + so that they can be used with the unstripped variants properly. + * debian/rules: set nooptflags only for relevant architectures. + * explicitly disable 'dangerous' encoders on the --configure line. + * fix SHLIBS_VERSION in debian/rules (Closes: #527350). + + -- Reinhard Tartler Mon, 04 May 2009 07:41:19 +0200 + +ffmpeg-debian (4:0.5+svn20090420-1) unstable; urgency=low + + [ Fabian Greffrath ] + * Merge the contents of patents.txt into README.Debian and change some + paragraphs to (hopefully) add some more clarity on the removed encoders + and the package naming scheme. Based on suggestions by Xavier Douville + , thank you very much for the review. (Closes: #519025) + * Reorder some confflags to account for GPL licensed libraries. + * Remove patents.txt + * Explicitely mention that no decoders are disabled in our packages. + + [ Loïc Minier ] + * Disable more autodetecter ARM arch features + * Add neon and vfp flavors to armel disabled for now + * vfp CFLAGS: add "-mfpu=vfp -mfloat-abi=softfp" + + [ Reinhard Tartler ] + * New Upstream Version (svn revision 18630) + * bump epoch as 0.5 was released. Future version will use '+' to indicate + that the package is based on a release branch and '~' to indicate that + the package is based on the 'trunk' branch. + * update from the upstream release branch to generate a new upstream + tarball. + * add a git-buildpackage config file at debian/gbp.conf + * beautify identification string + * debian/rules: bump epoch to '4' + * update section names in control file + * update upstream svn server url + * fixup get-orig-source rules in debian/rules + * create right filenames for the orig.tar.gz files + * update README.upstream-upgrate for new versioning scheme + * remove debian/005_release_branch_changes.diff + * remove reference to 020_visibility_patch + * install the upstream license file and release notes + * allow -dev packages be installed with the unstripped variants + Closes: #526007, LP: #312898 + * be more careful with svn:externals in debian/get-orig-source.sh. + (Closes: #525348) + + -- Reinhard Tartler Sat, 02 May 2009 09:09:54 +0200 + +ffmpeg-debian (3:0.svn20090303-1ubuntu6) jaunty; urgency=low + + * vfp CFLAGS: add "-mfpu=vfp -mfloat-abi=softfp". + + -- Loic Minier Fri, 10 Apr 2009 21:34:29 +0200 + +ffmpeg-debian (3:0.svn20090303-1ubuntu5) jaunty; urgency=low + + * Disable more autodetected ARM arch features. + * Add neon and vfp flavors to armel disabled for now. + * Enable vfp pass on armel; leave the neon disabled. + + -- Loïc Minier Fri, 10 Apr 2009 17:58:52 +0200 + +ffmpeg-debian (3:0.svn20090303-1ubuntu4) jaunty; urgency=low + + * brown paperbag upload. Actually include the patch intended for the + last upload. + + -- Reinhard Tartler Sat, 21 Mar 2009 14:55:46 +0100 + +ffmpeg-debian (3:0.svn20090303-1ubuntu3) jaunty; urgency=low + + * don't disable ffserver in specialised flavors. Fixes LP: #345370 + + -- Reinhard Tartler Sat, 21 Mar 2009 14:52:25 +0100 + +ffmpeg-debian (3:0.svn20090303-1ubuntu2) jaunty; urgency=low + + * No-change rebuild to fix lpia shared library dependencies. + + -- Colin Watson Thu, 19 Mar 2009 17:26:36 +0000 + +ffmpeg-debian (3:0.svn20090303-1ubuntu1) jaunty; urgency=low + + * FFE granted in LP: #340303. + + * merge from debian/unstable. + * remaining changes to debian: + - don't build-depend on libfaad-dev, disabling faad decoder. + + -- Reinhard Tartler Fri, 13 Mar 2009 08:54:33 +0100 + +ffmpeg-debian (3:0.svn20090303-1) unstable; urgency=low + + * New Upstream Version (svn revision 17737 libswscale revision 28799) + - Electronic Arts TQI decoder + - OpenJPEG based JPEG 2000 decoder + - NC (NC4600) camera file demuxer + - Gopher client support + - MXF D-10 muxer + - generic metadata API + * debian/get-orig-source.sh: Track the version 0.5 release branch. The + version number does not really reflect this, but this package is + actually very close to the 0.5 release branch. + * various cleanups to improve get-orig-source.sh + * Remove liba52 from the suggests field in debian/control.ffmpeg, as + ffmpeg does no longer use it since upload 0.svn20080206-10. + * Fix the Vcs-Git urls to the correct locations. + * The libavformat52 now links against libavcodec52, which breaks + applications that *ALSO* link against libavcodec51. Adding a + Breaks: libavcodec51 should prevent this and (hopefully) Closes: #516885. + * improve parallel builds on SMP/multicores by supporting the parallel + flag in DEB_BUILD_OPTIONS, and default to the number of available CPUs + on i386 and amd64. + * Drop unapplied patches from debian/patches. + * bump shlibs version. + + -- Reinhard Tartler Tue, 03 Mar 2009 21:01:25 +0100 + +ffmpeg-debian (3:0.svn20090204-3) unstable; urgency=low + + [ Fabian Greffrath ] + * remove libasound2-dev from build-depends on non-Linux archs + + [ Reinhard Tartler ] + * fix postinst generation by calling dh_installdeb after dh_makeshlibs + * upload to unstable + + -- Reinhard Tartler Sun, 22 Feb 2009 09:32:49 +0100 + +ffmpeg (3:0.svn20090204-2ubuntu1+unstripped3) jaunty; urgency=low + + * add conflicts replaces for libavfilter0, LP: #322570 + + -- Reinhard Tartler Mon, 09 Mar 2009 18:24:56 +0100 + +ffmpeg (3:0.svn20090204-2ubuntu1+unstripped2) jaunty; urgency=low + + * add correct epoch in the "internal" shlibs generation + + -- Reinhard Tartler Fri, 06 Feb 2009 15:24:58 +0100 + +ffmpeg (3:0.svn20090204-2ubuntu1+unstripped1) jaunty; urgency=low + + * rebuild using a clean, uncrippled ffmpeg tarball + + -- Reinhard Tartler Thu, 05 Feb 2009 21:45:05 +0100 + +ffmpeg-debian (3:0.svn20090204-2ubuntu1) jaunty; urgency=low + + * merge from debian. Remaining changes: + - don't build depend on libfaad-dev + + -- Reinhard Tartler Thu, 05 Feb 2009 21:22:01 +0100 + +ffmpeg-debian (3:0.svn20090204-2) experimental; urgency=low + + * add libxvmc-dev to build-depends in the 'ffmpeg' variant + * add libasound2-dev to build-depends. This means that ffplay is now able to + actually play using alsa directly instead only via libsdl + * add epochs for the "internal" shlibs dependencies + + -- Reinhard Tartler Thu, 05 Feb 2009 20:30:05 +0100 + +ffmpeg-debian (3:0.svn20090204-1) experimental; urgency=low + + [ Reinhard Tartler ] + * New Upstream Version (svn revision 16978 libswscale revision 28461) + + Upstream Changes: + - R3D REDCODE demuxer + - ALSA support for playback and record + + * strighten internal dependencies by using a shlibs.local file + Closes: #512844, #512466 + * New upstream version reintroduces a compatibility symbol ff_gcd + Closes: #512946 + * Bump shlibs because of changes of the Metadata API in libavformat. + Actually no other package should use them yet, but let's better play safe + here... + * no longer install dsputil.h. It exposes lots of function that are private + to ffmpeg and may change on any new upstream revision. Please get in touch + with the ffmpeg maintainers if you maintain packages that rely on that + ffmpeg internal headers like this. + * simplify debian/confflags by doing autodetection of headers: + - xvid.h + - lame/lame.h + - faac.h + - x264.h + - vdpau/vdpau.h + Also remove the setting externalcodecs from DEB_BUILD_OPTIONS. The codecs + will be enabled as soon as the headers are installed on the filesystem, + so there is no need in enabling that separately. + * install ffpresets in /usr/share/ffmpeg/. Currently only presets for + x264 are avaiable, so a libx264 enabled libavcodec (like + libavcodec-unstripped-52) is needed to actually use them. + + [ Fabian Greffrath ] + * Enabled Speex decoding via libspeex. + * Use an alternative approach to achieve strict internal dependencies + by calling dh_makeshlibs twice in debian/rules instead of a + debian/shlibs.local file. + + -- Reinhard Tartler Sun, 01 Feb 2009 19:54:27 +0100 + +ffmpeg (3:0.svn20090119-1ubuntu1+unstripped2) jaunty; urgency=low + + * add conflicts/replaces on libavfilter0. LP: #323789 + + -- Reinhard Tartler Sun, 01 Feb 2009 18:45:46 +0100 + +ffmpeg (3:0.svn20090119-1ubuntu1+unstripped1) jaunty; urgency=low + + * merge with the ubuntu.jaunty branch + * reenable x264 LP: #303537 + * build against vdpau + * enable xvmc support + + -- Reinhard Tartler Tue, 20 Jan 2009 17:51:19 +0100 + +ffmpeg-debian (3:0.svn20090119-1ubuntu1) jaunty; urgency=low + + * merge from debian. LP: #318501 + * new version fixes CVE-2008-3230, LP: #253767 + + -- Reinhard Tartler Tue, 20 Jan 2009 09:20:53 +0100 + +ffmpeg-debian (3:0.svn20090119-1) experimental; urgency=low + + * New Upstream Version (svn revision 16681 libswscale revision 28341) + * update Vcs-Git tags. Packaging has now moved to git + * updates to packaging that faciliate building the unstripped and ubuntu + variants of this package + * enable xvmc support + + Upstream Changes: + - SVQ3 watermark decoding support + - hybrid WavPack support + + -- Reinhard Tartler Tue, 20 Jan 2009 00:55:26 +0100 + +ffmpeg-debian (3:0.svn20090110-1) experimental; urgency=low + + * new upstream svn snapshot (svn revision 16508, libswscale revision 28286) + + Upstream Changes: + - RV30 and RV40 decoder + - QCELP / PureVoice decoder + + * removed patch 050_fix_pkgconfig_files.patch. Merged upstream + * disabled patch 020_visibility_patch. It needs to be adapted to the new + upstream changes. Hopefully it will get merged into ffmpeg properly. + * install formats.txt in the libavcodec52 package to document what + formats this version of ffmpeg has enabled. + + -- Reinhard Tartler Sun, 11 Jan 2009 20:55:48 +0100 + +ffmpeg (3:0.svn20081115-1ubuntu1+unstripped1) jaunty; urgency=low + + * build unstripped version for multiverse. + * enable additional external libraries: + - libmp3lame-dev + - libfaac-dev + - libxvidcore-dev + + -- Reinhard Tartler Sat, 15 Nov 2008 19:50:42 +0100 + +ffmpeg-debian (3:0.svn20081115-1ubuntu1) jaunty; urgency=low + + * merge from debian. + * keep myself in the maintainer field. If you are touching this or the + 'ffmpeg' package in multiverse, please get in touch with me. Both + source packages come from the same packaging branch. + * drop dependency on faad. + + -- Reinhard Tartler Sat, 15 Nov 2008 19:44:29 +0100 + +ffmpeg-debian (3:0.svn20081115-1) experimental; urgency=low + + * new upstream svn snapshot (svn revision 15824, libswscale revision 27910) + * bump standards version to version 3.8.0, no changes needed + * Adjust pkg-files to no longer put unnecessary dependencies in the generated + .pc files. Closes: #504220 + + -- Reinhard Tartler Mon, 10 Nov 2008 21:37:16 +0100 + +ffmpeg-debian (3:0.svn20081108-1ubuntu3) jaunty; urgency=low + + * really disable faad support completely. + + -- Reinhard Tartler Mon, 10 Nov 2008 10:58:01 +0100 + +ffmpeg-debian (3:0.svn20081108-1ubuntu2) jaunty; urgency=low + + * drop the patch to dlopen faad at runtime for now. it needs more + polishing, and we can have that functionality easier with the 'ffmpeg' + source package that will appear in multiverse. + + -- Reinhard Tartler Mon, 10 Nov 2008 10:31:47 +0100 + +ffmpeg-debian (3:0.svn20081108-1ubuntu1) jaunty; urgency=low + + * merge from debian. + * keep myself in the maintainer field. If you are touching this or the + 'ffmpeg' package in multiverse, please get in touch with me. Both + source packages come from the same packaging branch. + * drop dependency on faad. + * import patches from old packaging to dlopen libfaad at runtime. + + -- Reinhard Tartler Mon, 10 Nov 2008 07:31:16 +0100 + +ffmpeg-debian (3:0.svn20081108-1) experimental; urgency=low + + * upstream svn snapshot (svn revision 15786, libswscale revision 27900). + * apply visibility patch from ffmpeg-devel mailing list. This reduces the + number of symbols that are exposed to other applications. Please file + bugs if applications fail to link against ffmpeg because of that. + * remove 001_fixup_version.diff patch and use upstream --extra-version + configure flag instead. + * now really remove 015_img_convert.patch from source package. + + -- Reinhard Tartler Sat, 08 Nov 2008 16:38:23 +0100 + +ffmpeg-debian (3:0.svn20080925-1) experimental; urgency=low + + [ Loic Minier ] + * Tweak sed versions regexps to deal with epochs and upstream revisions with + dashes and be generally stricter. + * Large cleanup to rules logic: drop some cruft, rewrite some small chunks + in a slightly more readable manner, whitespaces, .PHONY fixes, + internalencoders handling, shlibs logic... + * Rename SRC_VERSION to UPSTREAM_VERSION in rules. + * Use DEB_SOURCE from the Source: field of dpkg-parsechangelog's output + instead of hardcoding the name of the source. + + [ Reinhard Tartler ] + * new svn snapshot (svn revision 15404, libswscale revision 27636). + * SONAME change: libavcodec51 -> libavcodec52 + * drop old scaler (imgres/imgconvert). Upstream is about to remove it + completely. + - reporter claims that a newer snapshot fixes a crash in the dca decoder. + Thanks to "Alexander E. Patrakov" (Closes: #496612) + * reenable h261 encoder (Closes: #459073) + + [ Fabian Greffrath ] + * debian/{ffmpeg,lib*-dev}.install: + + Simplified, e.g. install the whole /usr/include/ sub-directory for each + particular library instead of single header files one by one. + * debian/control, debian/confflags: + + Enabled Dirac support via libschroedinger. (Closes: #499785) + * debian/changelog: + + Added an epoch needed for Ubuntu. + * debian/control: + + Removed Conflicts and Replaces against packages that either aren't even + in Debian 4.0 "Etch" anymore or that use the deprecated naming scheme + from . + + Since ffmpeg-config has been removed from our packages, all inter-package + Conflicts and Replaces may be removed, too. + + Removed Build-Conflicts against libdc1394-13-dev, because + libdc1394-22-dev already does this for us. + + Updated inter-package dependencies and demoted Depends on external + library packages to Suggests, since we shouldn't encourage package + maintainers to link statically against libav*. + * debian/confflags, debian/control, debian/rules, debian/libavfilter*: + + Built libavfilter and disabled vhook in turn (Closes: #499787). + + [ Loic Minier ] + * Remove debug echo which broke shlibs, sorry. + * Fix Vcs-* control fields; thanks Gerfried Fuchs. + * Mention upstream SVN in debian/copyright; thanks Gerfried Fuchs; + closes: #499914. + + -- Reinhard Tartler Sat, 06 Sep 2008 20:07:01 +0200 + +ffmpeg-debian (0.svn20080206-12) unstable; urgency=low + + * enable vhook in all flavors. (Closes: #490272, LP: #260296) + * make ffmpeg output a proper version number. (Closes: #496133, #483923) + + -- Reinhard Tartler Sat, 23 Aug 2008 10:49:10 +0200 + +ffmpeg-debian (0.svn20080206-11) unstable; urgency=low + + [ Reinhard Tartler ] + * new patch: patches/010_fix_ftbfs_hppa.diff: On hppa shared objects + do required object files to be build "-fPIC -DPIC". Patch taken + from upstream svn. + * bugfix: libraries linked with libX11 on GNU/kFreeBSD. Thanks to + Aurelien Jarno for the patch. (Closes: #487252) + + [ Fabian Greffrath ] + * debian/confflags, debian/control: + + Build-Depend on libdc1394-22-dev explicitely and add + Build-Conflicts on libdc1394-13-dev (Closes: #490319). + + -- Reinhard Tartler Wed, 16 Jul 2008 10:41:49 +0200 + +ffmpeg-debian (0.svn20080206-10) unstable; urgency=high + + * enable mmx and sse3 in builds. These CPU features are autodetected + at runtime on amd64 and i386 using the 'cpuid' instrcution. + (Closes: #489732) + * disable support for liba52-dev. ffmpeg has its own implementation. + * don't add -fPIC -DPIC forcefully to ./configure. upstream claim that + the configure script gets this right on all architectures itself. + * Add patch 020_bug489965_bufferoverflow_str_demuxer.diff. Fixes a + buffer overflow in the STR demuxer. Thanks to Moritz Muehlenhoff for + reporting the issue. (Closes: #489965) + * Raising severity to high because of security issue. + * rework the shlibs file. Make applications linking against libraries + produced by this source package generate an alternate dependency on + the 'unstripped' variants of this package. They actually do not exist + yet at this point, but this way reverse dependencies are enabled to + use them when they eventually appear. + + -- Reinhard Tartler Wed, 09 Jul 2008 14:04:06 +0200 + +ffmpeg-debian (0.svn20080206-9) unstable; urgency=low + + [ Reinhard Tartler ] + * cleanup 010_proper_rpath.diff: remove spurious linker search paths. + * debian/strip.sh: no need to remove the glue code for x264 and xvid. + However, since that code is not built in debian anyway, the orig.tar.gz + was not rebuilt with this change. + * provide mmx-enabled shared objects on amd64. AFAIK all amd64 machines + do support MMX. + * Provide optimized versions of the libraries along the unoptimized + ones. They are installed in machines and architecture specific + directories. Optimized for further target will be added per request, + please file bugs to request them. + * rename the source package (again), this time on upstream's request. + The former name was considered insulting by upstream, because it + somewhat indicated the original source was somehow 'non-free', which is + not the case. The new name now represents that we modified the package + so that it becomes acceptable for debian. + * Cleanups in debian/rules file. + * Add verbose explanations about the renaming in README.Debian. + + [ Fabian Greffrath ] + * debian/control: + + Added Conflicts and Replaces against obsolete library packages from + wearing the 'cvs' suffix in their names + (Closes: #484585, #484586, #484587, #484776, #484778). + + Added doxygen to Build-Depends. + + Introduced new package 'ffmpeg-doc' that contains html doxygen + documentation of the ffmpeg API (Closes: #438369). + + Changed Build-Depends from libdc1394-13-dev to libdc1394-22-dev, + which is supported upstream since r11501. + * debian/ffmpeg-doc.install: + + Added. + * debian/rules: + + Build and install html doxygen documentation. + + Avoid dependency of build-stamp rule on phony targets. + * debian/libavutil-dev.install, debian/rules, + debian/patches/010_ffmpeg-config.diff: + + Removed ffmpeg-config, use pkg-config instead (maintainers of affected + packages have been informed, see #487917 to #487922). + + [ Darren Salt ] + * Added patch 900_doxyfile: tell doxyfile to ignore debian* directories. + * debian/rules: + - Reworked building so that separate source & build directories are + used. This makes cleanup simpler and speeds up maintenance by avoiding + complete rebuilds when using "debuild binary". + - Removed some file installation 'cp' commands, made unnecessary due to + the build reworking. + - Unpatching is now done *after* cleaning. + + -- Reinhard Tartler Mon, 30 Jun 2008 15:27:50 +0200 + +ffmpeg-free (0.svn20080206-8) unstable; urgency=low + + [ Fabian Greffrath ] + + * debian/control: + + Added Conflicts and Replaces on libavutil-dev (<< 0.svn20080206-7) + to libavcodec-dev (Closes: #483548). + + [ Reinhard Tartler ] + + * remove patches from the debian package as disussed with upstream: + - 005_runtime_cpudetect.diff: it is supposed to fix runtime cpu detection + on i386. The code (and the define) has undergone large refactoring wrt. + the define RUNTIME_CPUDETECT. It is very likely to have undisired + side-effects with this version of ffmpeg. It therefore seem more safe + to me to actually remove this patch for now, and reinvestigate the + problems that occur, if they do. (Related to: #482717) + - 005_m68k_workaround.diff: works around bugs in gcc for m68k. + - 006_mips_pthreads.diff: was an workaround for (now fixed) #428741. + - 020_fix_sws_scale_crash: patch has been rejected upstream: + http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-May/047846.html + - 054_h264_mmx_chroma_mc_crash.diff. According to upstream, this has + been fixed in a different way and is not reproducible. Verified that + the file referenced in bug #404176 does not crash anymore even + without this patch. + * new patch: 015_reenable-img_convert.diff. Unlike previous version of this + patch, this uses a more lightweight approach. With building imgresample, a + few symbol clashes occur with libswscale. We therefore strip off symbols + that are already provided by libswscale. (Closes: #483960). + * remove 011_link_plugins.diff. It is completely unnecessary now. + * refactor quilt usage: use /usr/share/quilt/quilt.make. + * support building in paralell. make snippet taken from the qemu package. + * cleanups in debian/rules. + * Move ffmpeg-config back to libavutil. This way we can avoid a circular + dependency between libavutil-dev and libavcodec-dev. (Closes: #484132). + libavcodec uses libavutil internally, so this dependency cannot be avoided. + * disable altivec, at least for now. (Closes: #482717) + * always compile with --disable-strip. We strip the binaries afterwards using + dh_strip anyways. + * Remove depdency substitutions ${shlibs:Depends} and ${misc:Depends} from the + -dev packages. + + -- Reinhard Tartler Wed, 04 Jun 2008 00:04:08 +0200 + +ffmpeg-free (0.svn20080206-7) unstable; urgency=low + + * debian/control: + + Removed unnecessary Conflicts and Replaces from libswscale0 + (Closes: #481908), thanks Guillem Jover. + + Made libavutil-dev depend on libavcodec-dev. + * debian/libavcodec.install, debian/libavutil.install: + + Moved ffmpeg-config (script and manpage) from libavutil-dev to + libavcodec-dev (really Closes: #482213, #482214). + + -- Fabian Greffrath Tue, 28 May 2008 16:02:03 +0200 + +ffmpeg-free (0.svn20080206-6) unstable; urgency=low + + * Bug fix: "libavg: FTBFS: ld: cannot find -ldts", thanks to Lucas + Nussbaum (Closes: #482213, 482214). Fixed by removing -ldts from + ffmpeg-config. + + -- Reinhard Tartler Tue, 27 May 2008 12:45:10 +0200 + +ffmpeg-free (0.svn20080206-5) unstable; urgency=low + + [ Fabian Greffrath ] + * debian/control: + + Fixed dependency typo, libswscale0 conflicts with libswsacle1d but not + libswscale1d (Closes: #481908). + + [ Reinhard Tartler ] + * disable 015_build_imgresample.diff. Please port all applications + needing the symbols sws_{scale,getContext}, + sws_{getCachedContext,freeContext} to use libswscale instead. + * downgrade debhelper depencency to level 5. We don't use any of the + level 6 features, and level 5 faciliates backporting to earlier + releases massively. + * remove unapplied patches from source to reduce the size of the + .diff.gz. The old patches can be retrieved from branches in our svn. + + -- Reinhard Tartler Thu, 22 May 2008 09:26:06 +0200 + +ffmpeg-free (0.svn20080206-4) unstable; urgency=low + + * debian/rules: + + Moved confflags, that result in GPL versions of the libraries, into a + dedicated variable gpl_confflags. Add this to the common confflags. + + Moved --prefix=/usr to the common confflags. + + Added some comments and whitespace (nothing special). + + Renamed the "risky" keyword to "internalencoders". Set this in + DEB_BUILD_OPTIONS in order to create and build from an unstripped tarball + in the get-orig-source and build rules (Closes: #478010). + + Introduced the "externalcodecs" keyword. Set this in DEB_BUILD_OPTIONS to + enable support for additional codecs via external libraries. + + Commented out the amr?b codecs among the external codecs, because the + resulting packages will be unredistributable. + + -- Fabian Greffrath Tue, 29 Apr 2008 09:07:11 +0100 + +ffmpeg-free (0.svn20080206-3) experimental; urgency=low + + * install qt-faststart. Thanks Stefan Hermann for the patch from ubuntu. + (Closes: #470484) + * Reenable 020_fix_libswscale_pic_code, fixes FTBFS on amd64. + * Reenable altivec, fixes FTBFS on powerpc. + * Add some notes about the removed mpeg encoders (Closes: #440702) + + -- Reinhard Tartler Fri, 18 Apr 2008 23:02:24 +0200 + +ffmpeg-free (0.svn20080206-2) experimental; urgency=low + + [ Reinhard Tartler ] + * patches/020_fix_sws_scale_crash: if sws_scale is given an invalid context + (e.g. a null pointer), the function will crash because of a null pointer + dereference. Add a check for that here. + * add Conflicts/Replaces for libswscale1d. + * Due to the fact that we no longer build the shared version of ffmpeg with + mmx optimisations, the following patches have been dropped: + - 020_mmx_optims.diff + - 020_mmx_pic_code.diff + - 020_disable_snow_mmx_in_pic.diff + - 020_fix_libswscale_pic_code + + [ Fabian Greffrath ] + * debian/control: + + Added libx11-dev and libxext-dev to Build-Depends. + * debian/rules: + + Build with --enable-x11grab (Closes: #441983). + + Build ffmpeg and shared libraries with --extra-cflags="-fPIC -DPIC" + (feeling confident that this closes: #472613) and "drop the surgery + regarding Makefile.pic and config.mak.pic". + + In this context, cleaned up build rule: Run '$(MAKE)' and '$(MAKE) clean' + from the top source directory instead of diving into the library + directories; force move during backup and recovery of the static + libraries; let the build rule itself depend on config-extra-includes.h + (instead of build-stamp) to avoid being run again from the binary rule; + some more minor changes of cosmetic type. + + Renamed config-extra-includes rule to config-extra-includes.h to + reflect the file name of the created file (also changed to override it + instead of appending) and to avoid the rule to be run twice. + + Disabled all architecture-specific optimizations for the time being. + + -- Fabian Greffrath Fri, 1 Apr 2008 17:22:00 +0100 + +ffmpeg-free (0.svn20080206-1) experimental; urgency=low + + [ Reinhard Tartler ] + * new upstream release (Closes: #471136) + * refreshed patches + * libogg was dropped upstream + * no longer install integer.h, as it is not part of the public API (see + upstream r11642). + * no longer install rtp.h, as it is not part of the public API (see + upstream r11505). + * install crc.h and sha1.h to libavutil-dev, since it is part of the + public API now. + * introduce new package: libavdevice52 and libavdevice-dev. + * Implemented debian/get-orig-source.sh and adjusted the get-orig-source + target in debian/rules to use that. + * fix invocation of the testsuite. + * bump standards version to 3.7.3 (no changes needed). + * add script recordshow.sh (Closes: 461434). Thanks to + Daniel Dickinson + * Introdcue binary package ffmpeg-dbg, which contains debugging symbols + of the shared library packages. + + [ Fabian Greffrath ] + * debian/changelog: + + Source is exported from SVN, not CVS. Reflect this in the versioning + scheme (Closes: #468319). + * debian/control: + + Changed Build-Depends to liba52-0.7.4-dev | liba52-dev. + + Improved descriptions and dependencies for libavdevice packages. + * debian/control, debian/compat: + + Bumped debhelper Build-Depends to (>= 6.0.0). + * debian/control, debian/*.install: + + Adopted shared library package names to upstream SONAMEs. + * debian/README.Debian: + + Updated, since AAC decoding (through FAAD) is now enabled. + + Updated URL for unofficial ffmpeg packages. + * debian/rules: + + Reordered confflags to optionally build LGPL versions of the libraries. + + Removed trailing whitespace. + + Removed unused strip rule. + + Added libxvidcore4-dev to weak-build-deps and fixed confflags + in DEB_BUILD_OPTIONS=risky accordingly. + + Added a get-orig-source rule to reproduce the source tarball. Produce an + unstripped tarball if DEB_BUILD_OPTIONS=risky. + + Do not run debian/fixup-config.sh if DEB_BUILD_OPTIONS=risky. + * debian/patches/011_link_plugins.diff: + + Updated to link all plugins against libavutil since they all use symbols + from this library. Resolves "symbols found in none of the libraries" + warnings from dpkg-shlibdeps. + + -- Reinhard Tartler Thu, 20 Mar 2008 17:57:21 +0100 + +ffmpeg-free (0.cvs20071007-4) experimental; urgency=low + + [ Fabian Greffrath ] + * debian/control: + + Wrapped Uploaders, Build-Depends and Depends, + Conflicts and Replaces fields. + + Added libfaad-dev to Build-Depends. + + Added Homepage field. + + Added ${misc:Depends} to all Depends. + * debian/rules: + + Enabled faad support via libfaad + (Closes: #400094, #418230, #447089, #448068, #449387). + + Added libmp3lame-dev to weak-build-deps in DEB_BUILD_OPTIONS=risky. + + Added support for amrnb, amrwb and x264 (Closes: #432170) in + DEB_BUILD_OPTIONS=risky. + + [ Reinhard Tartler ] + * added Fabian Greffrath to Uploaders + + -- Reinhard Tartler Thu, 20 Mar 2008 15:55:11 +0100 + +ffmpeg-free (0.cvs20071007-3) experimental; urgency=low + + * disable armv6 code generation. Thanks to Joey Hess for the patch + (Closes: #438923). + + -- Reinhard Tartler Sun, 13 Jan 2008 23:28:25 +0100 + +ffmpeg-free (0.cvs20071007-2) experimental; urgency=low + + * restore soname on libavutil. got dropped on previous upload. + * Bug fix: "needs libavutil-dev headers but doesn't depend on it", + thanks to rmh@aybabtu.com (Closes: #434494). This was actually already + fixed in a previous upload. + * build dependencies in debian/control are now multiline. + * Drop the XS- from the Vcs-Browser and Vcs-Svn field. + + -- Reinhard Tartler Sun, 16 Dec 2007 21:36:49 +0100 + +ffmpeg-free (0.cvs20071007-1) experimental; urgency=low + + * new upstream snapshot, using the same day as the mplayer release + * Refreshing patches: + -005_altivec_flags.diff: dropped, merged upstream + -005_m68k_workaround.diff: refreshed + -005_runtime_cpudetect.diff: refreshed + -006_mips_pthreads.diff: refreshed + -010_proper_rpath.diff: refreshed + -010_shared_library_versioning.diff: refreshed + -011_link_plugins.diff: refreshed (moved to top level makefile) + -015_build_imgresample.diff: refreshed + -020_disable_snow_mmx_in_pic.diff: refreshed + -020_fix_libswscale_pic_code.diff: refreshed + -020_mmx_optims.diff: refreshed + -020_mmx_pic_code.diff: refreshed + -040_early_altivec_detection.diff: disabled, doesn't apply anymore + -040_only_use_maltivec_when_needed.diff disabled, (causes ftbfs, needs revising) + -040_only_use_maltivec_when_needed.diff: refresh + -051_mjpeg_gray_support.diff, removed applied upstream + -053_rm_demux_crash.diff removed, applied upstream. + -060_fix_avi_skip.diff removed, does not apply anymore + * remove --enable-libdts. ffmpeg now has an internal dts decoder since + r9051 (2007-05-17). It seems that at least some packages link to libdts and + rely on the transitive dependency via ffmpeg. Please add explicit dependencies + on libdts instead! + * Don't ignore errors in upstream Makefile. Bug found via lintian. + + -- Reinhard Tartler Wed, 05 Dec 2007 17:33:34 +0100 + +ffmpeg-free (0.cvs20070307-7) UNRELEASED; urgency=low + + * debian/patches/051_mjpeg_gray_support.diff: + + Support grayscale MJPEG streams as sent by Axis cameras. + + -- Sam Hocevar (Debian packages) Tue, 31 Jul 2007 18:55:31 +0200 + +ffmpeg-free (0.cvs20070307-6) unstable; urgency=low + + * Rename the source package. We are (again) no longer shipping the + 'real' upstream source of ffmpeg. + * Add debian/strip.sh to strip ffmpeg upstream source disabling mpeg + based encoders as discussed with ftp-master at debconf7 + * update XS-Vcs tags in debian/control. + * make ffmpeg binNMU-able by using ${binary:Version} rather than + ${Source-Version} + + -- Reinhard Tartler Sat, 23 Jun 2007 15:11:21 +0100 + +ffmpeg (0.cvs20070307-5) unstable; urgency=low + + * upload to unstable + * remove x264 support, as it has been removed from unstable + + -- Reinhard Tartler Wed, 30 May 2007 15:19:20 +0200 + +ffmpeg (0.cvs20070307-4) experimental; urgency=low + + * added myself to uploaders + + * 020_fix_libswscale_pic_code: + + added, avoid some MMX code to avoid PIC code + + [ Sam Hocevar ] + + * fixed path in library installation. + + -- Reinhard Tartler Wed, 11 Apr 2007 23:17:47 +0200 + +ffmpeg (0.cvs20070307-3) experimental; urgency=low + + * debian/patches/015_build_imgresample.diff: + + Build imgresample functions even with swscaler activated, or legacy + applications will stop working. + + * debian/patches/053_rm_demux_crash.diff: + + New patch: fix a double free with corrupted rm files (Closes: #379922). + + * debian/patches/054_h264_mmx_chroma_mc_crash.diff: + + New patch: workaround for a buffer overflow in the MMX H264 chroma + motion compensation until upstream fixes it properly (Closes: #404176). + + * debian/patches/300_c++_compliant_headers.diff: + + Define INT64_C() when the system headers don't provide it, for instance + when building C++ code. + + * debian/control: + + Set pkg-multimedia-maintainers as main maintainer. + + Updated VCS fields. + * debian/rules: + + Huge cleanup. + + -- Sam Hocevar (Debian packages) Wed, 14 Mar 2007 19:40:42 +0100 + +ffmpeg (0.cvs20070307-2) experimental; urgency=low + + * debian/rules: + + Activate x264 support now that it is in unstable. + * debian/control: + + Build-depend on libx264-dev. + + -- Sam Hocevar (Debian packages) Mon, 12 Mar 2007 21:10:45 +0100 + +ffmpeg (0.cvs20070307-1) experimental; urgency=low + + [ Sam Hocevar ] + + * New upstream snapshot (Closes: #403330, #404788). + * This snapshot fixes numerous file parsing crashes (Closes: #404176, + Closes: #407003, #396282, #365006, #403398). + + * debian/patches/010_proper_rpath.diff: + + New patch. Link objects with the libraries that we generate, not the + ones installed on the system. + + * debian/patches/010_shared_library_versioning.diff: + + Strip unneeded prefix from .pc files (Closes: #404758). + + * debian/patches/011_link_plugins.diff: + + New patch. Link vhook plugins with the appropriate libraries. + + * debian/patches/013_strip_unneeded_linker_flags.diff: + + Remove unneeded -l flags from .pc files (Closes: #373986). + + * debian/patches/020_mmx_optims.diff: + * debian/patches/020_disable_snow_mmx_in_pic.diff: + + Sync patches. + + * debian/patches/020_really_use_liba52.diff: + * debian/patches/050_h264-misc-security-fixes.diff: + * debian/patches/051_asf-misc-security-fixes.diff: + + Drop patches, applied upstream or no longer relevant. + + * debian/patches/040_only_use_maltivec_when_needed.diff: + + Upgraded patch to cover libswscale. + + * debian/libavcodec-dev.install: + + Ship lzo.h and random.h. + + * debian/rules: + + Fix syntax for a few --enable flags. + + Only ship ffmpeg_powerpc_performance_evaluation_howto.txt.gz on + powerpc machines (Closes: #385079). + + Readded --enable-libtheora, it's here again. + + Activate --enable-swscaler (Closes: #399141, #398442). + + [ Reinhard Tartler ] + + * debian/rules: + + Ignore libswscale.pc and rgb2rgb.h. + + * debian/libavcodec-dev.install: + + Ship fifo.h and opt.h. + + * debian/patches/005_altivec_flags.diff: + * debian/patches/005_m68k_workaround.diff: + * debian/patches/005_runtime_cpudetect.diff: + * debian/patches/006_mips_pthreads.diff: + * debian/patches/020_really_use_liba52.diff: + + Sync patches. + + * debian/patches/007_disable_ffmpeg_option.diff: + * debian/patches/030_arm_cpu_detect.diff: + * debian/patches/030_arm_workaround.diff: + + Drop patches, applied upstream or no longer relevant. + + -- Sam Hocevar (Debian packages) Fri, 9 Mar 2007 15:13:16 +0100 + +ffmpeg (0.cvs20060823-7) unstable; urgency=high + + * debian/patches/040_only_use_maltivec_when_needed.diff: + + Fix a static function prototype that prevented programs using libpostproc + from working on PowerPC (Closes: #412214). + + * debian/control: + + Added Xs-Vcs-Browser and XS-Vcs-Svn fields. + + -- Sam Hocevar (Debian packages) Thu, 8 Mar 2007 17:51:37 +0100 + +ffmpeg (0.cvs20060823-6) unstable; urgency=high + + * Upload to unstable. + + -- Loic Minier Thu, 1 Feb 2007 21:36:47 +0100 + +ffmpeg (0.cvs20060823-5) testing-proposed-updates; urgency=high + + [ Loïc Minier ] + * Add myself to Uploaders. + * Exclude firewire libs from ffmpeg-config under kFreeBSD; based on a patch + by Petr Salinger; closes: #399701. + * Fix handling of debug in DEB_BUILD_OPTIONS; thanks Andreas Henriksson; + closes: #406474. + * SECURITY: New patch, 050_h264-misc-security-fixes, to properly check the + sps and pps ids before use and to check more bitstram values and fix + potential security holes; from upstream SVN r7585, r7586, and r7591. + * SECURITY: New patch, 051_asf-misc-security-fixes, to properly check + packet sizes, chunk sizes, and fragment positions; from upstream SVN r7640 + and r7650. + + [ Sam Hocevar ] + * debian/copyright: + + Fix typo and clarify licensing terms (Closes: #398235). + * debian/README.Debian: + + Removed mention of ffmpeg-config now that we ship .pc files. + * debian/patches/020_mmx_optims.diff: + + New patch, fix FTBFS with DEB_BUILD_OPTIONS=debug. + * debian/patches/040_early_altivec_detection.diff: + + New patch, detect AltiVec earlier on and only once so that we don't + risk using signal handlers in a multithreaded environment or when + the caller already installed a SIGILL handler. + * debian/patches/040_only_use_maltivec_when_needed.diff: + + New patch, only use -maltivec with files that use AltiVec intrinsics, + and make sure no codepath leads to these files on a non-AltiVec + machine (Closes: #405926). + * debian/patches/060_fix_avi_skip.diff: + + New patch, courtesy of Ben Hutchings: do not attempt to skip the ODML + if the current seek offset is already beyond it (Closes: #383734). + + -- Sam Hocevar (Debian packages) Mon, 29 Jan 2007 16:58:44 +0100 + +ffmpeg (0.cvs20060823-4) unstable; urgency=high + + * Maintainer upload. + * Acknowledging NMU (Closes: #386458). + + * High urgency because of FTBFS fix. + + * debian/patches/030_arm_workaround.diff: + + New patch courtesy of Aurélien Jarno: disable the broken ARM assembly + code in libavcodec/mpegaudiodec.c. + + * debian/patches/030_arm_cpu_detect.diff: + + New patch courtesy of Aurélien Jarno: correctly detect the newer ARM + CPUs. + + -- Sam Hocevar (Debian packages) Sun, 24 Sep 2006 23:38:29 +0200 + +ffmpeg (0.cvs20060823-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * Fix variable substitution trick in debian/rules (Closes: #386458). + + -- Luk Claes Fri, 15 Sep 2006 21:29:07 +0200 + +ffmpeg (0.cvs20060823-3) unstable; urgency=low + + * debian/rules: + + Take local packages into account when computing shlibs dependencies, so + that ffplay/ffserver depend on the proper libraries (Closes: #386029). + + -- Sam Hocevar (Debian packages) Tue, 5 Sep 2006 17:44:00 +0200 + +ffmpeg (0.cvs20060823-2) unstable; urgency=low + + * debian/patches/020_really_use_liba52.diff: + + New patch: link with the shared liba52 instead of the built-in one. + + * debian/patches/006_mips_pthreads.diff: + + New patch: link libraries with -lpthreads on Linux MIPS because of a + known ld bug. + + * debian/patches/007_disable_ffmpeg_option.diff: + + New patch: add a --disable-ffmpeg option. + + -- Sam Hocevar (Debian packages) Wed, 30 Aug 2006 18:36:52 +0200 + +ffmpeg (0.cvs20060823-1) unstable; urgency=low + + * New SVN snapshot (Closes: #368904). + * debian/control: + + Set policy to 3.7.2. + + Do not build 1394 support on GNU/kFreeBSD or Hurd. Patch courtesy of + Petr Salinger (Closes: #372290). + * debian/rules: + + Minor cleanup. + + Removed --enable-theora, upstream dropped that option. + + * debian/patches/020_mmx_intrinsics.diff: + + Disabled intrinsics workaround because it is no longer necessary and it + causes trouble with some codecs such as H264 (Closes: #373765). + + -- Sam Hocevar (Debian packages) Wed, 23 Aug 2006 12:09:58 +0200 + +ffmpeg (0.cvs20060329-4) unstable; urgency=low + + * debian/control: + + Make each -dev package depend on the corresponding shared library + package (Closes: #361348). + + Moved libavutil files from libavformat-dev to libavcodec-dev which is + the real common dependency (Closes: #361269). + + -- Sam Hocevar (Debian packages) Sun, 9 Apr 2006 15:23:37 +0200 + +ffmpeg (0.cvs20060329-3) unstable; urgency=low + + * debian/rules: that build system is hopeless. We now run configure and + make twice, backup static libraries inbetween, then update timestamps + to fool make. That should fix the FTBFS (Closes: #361215). + + -- Sam Hocevar (Debian packages) Fri, 7 Apr 2006 11:33:15 +0200 + +ffmpeg (0.cvs20060329-2) unstable; urgency=low + + * debian/rules: fixed Makefile.pic generation. + + -- Sam Hocevar (Debian packages) Thu, 6 Apr 2006 16:37:05 +0200 + +ffmpeg (0.cvs20060329-1) unstable; urgency=low + + * New CVS snapshot. + * Upstream fixed a double free in img.c (Closes: #351455). + * Upstream fixed the libvorbisenc dependency in libavcodec.pc + (Closes: #357352). + + * debian/rules: + + Activated threading support (Closes: #335677). + + Manually reinstall dsputil.h. + + * debian/README.Debian: + + Removed mention of --plugin-libs. + + Added a note about the unofficial packages (Closes: #306752). + + * 020_disable_snow_mmx_in_pic.diff: (new patch) disable MMX acceleration in + the Snow encoder in PIC mode. + + -- Sam Hocevar (Debian packages) Thu, 30 Mar 2006 10:41:17 +0200 + +ffmpeg (0.cvs20060306-3) unstable; urgency=low + + * Switched patch system to quilt. + * debian/control: + + Build-depend on quilt. + + * 005_altivec_flags.diff: (new patch from old diff.gz) proper gcc flags to + only generate AltiVec code when explicitely asked. + + * 005_m68k_workaround.diff: (new patch from old diff.gz) use -O2 instead of + -O3 on m68k. + + * 005_runtime_cpudetect.diff: (new patch from old diff.gz) fix runtime CPU + detection on m68k and x86. + + * 010_ffmpeg-config.diff: (new patch from old diff.gz) the ffmpeg-config + script and associated manpage (legacy). + + * 010_shared_library_versioning.diff: (new patch from old diff.gz) use a + Debian-specific scheme for shared library versioning to avoid spreading + libraries incompatible with every other version. + + * 020_mmx_intrinsics.diff: (new patch from old diff.gz) use MMX intrinsics + in dsputil_mmx.c because gcc is unable to compute some register constraints + in PIC mode. + + * 020_mmx_pic_code.diff: (new patch from old diff.gz) ported some MMX code + to be PIC. + + -- Sam Hocevar (Debian packages) Wed, 29 Mar 2006 18:53:35 +0200 + +ffmpeg (0.cvs20060306-2) unstable; urgency=low + + * ffmpeg-config.in: removed references to _pic libraries. + + -- Sam Hocevar (Debian packages) Fri, 17 Mar 2006 20:08:29 +0100 + +ffmpeg (0.cvs20060306-1) unstable; urgency=low + + * New CVS snapshot. + * Upstream now properly installs dsputil.h (Closes: #354391). + * debian/control: + + Distribute shared versions of the libraries with a Debian-specific + soname. + * debian/rules: + + Removed all custom PIC rules. + + Moved ffmpeg-config to libavformat-dev instead of libavcodec-dev so that + it is present by default (Closes: #350750). + + Include apiexample.c in libavcodec-dev (Closes: #350027). + + -- Sam Hocevar (Debian packages) Mon, 6 Mar 2006 11:05:26 +0100 + +ffmpeg (0.cvs20050918-6) unstable; urgency=low + + * Developer upload. + * Acknowledge NMU. Thanks to Samuel Mimram (Closes: #342207). + * configure: + + Set RUNTIME_CPUDETECT (except on m68k where it ICEs and on x86 where it + fails to build some asm constructs) (Closes: #337846). + * debian/rules: + + Make the build process aware of DEB_BUILD_OPTIONS, thanks to Timo + Lindfors (Closes: #338895). + + -- Sam Hocevar (Debian packages) Sat, 21 Jan 2006 16:51:26 +0100 + +ffmpeg (0.cvs20050918-5.1) unstable; urgency=low + + * NMU. + * Fix exploitable heap overflow in libavcodec's handling of images with + PIX_FMT_PAL8 pixel formats (CVE-2005-4048), closes: #342207. + + -- Samuel Mimram Sun, 15 Jan 2006 14:44:36 +0100 + +ffmpeg (0.cvs20050918-5) unstable; urgency=low + + * ffmpeg-config.1: fixed the examples and added a note that static libraries + should be put after the objects that refer to them (Closes: #339803). + + -- Sam Hocevar (Debian packages) Fri, 18 Nov 2005 23:58:16 +0100 + +ffmpeg (0.cvs20050918-4) unstable; urgency=low + + * configure: + + Tell the configure script about m68k, ia64 and others. + + -- Sam Hocevar (Debian packages) Thu, 22 Sep 2005 14:43:59 +0200 + +ffmpeg (0.cvs20050918-3) unstable; urgency=low + + * configure: + + Use -O2 instead of -O3 on m68k to avoid ICEs. + + -- Sam Hocevar (Debian packages) Tue, 20 Sep 2005 17:33:14 +0200 + +ffmpeg (0.cvs20050918-2) unstable; urgency=low + + * libavcodec/i386/dsputil_mmx.c: + + Reworked the MMX intrinsics. + * tests/libav.regression.ref: + + Minor cosmetic fix to use double-digit numbers in test sequences. + * debian/control: + + PowerPC no longer needs to use gcc-3.4, since 4.x is the default. + * libavcodec/Makefile: + + Removed special compilation case for HPPA now that we use 4.x. + + -- Sam Hocevar (Debian packages) Sun, 18 Sep 2005 17:43:48 +0200 + +ffmpeg (0.cvs20050918-1) unstable; urgency=low + + * New CVS snapshot. + * Upstream applied most Debian patches. + * configure: + + Do not use -mabi=altivec (-maltivec is enough for our AltiVec code) so + that our code still runs on a G3 computer (Closes: #319151). + * debian/rules: + + When not cross-compiling, run the regression tests (Closes: #292102). + * debian/changelog: + + Updated the FSF address. + * ffmpeg-config.in: + + Fixed avcodec linkage (Closes: #328505). + * libavcodec/i386/mpegvideo_mmx_template.c: + + Applied patch from Tobias Grimm to fix the PIC MMX code for MPEG + encoding (Closes: #318493). + * libavcodec/i386/dsputil_mmx.c: + + Applied patch from Joshua Kwan to fix the AMD64 build (Closes: #324026). + + Reworked that patch so that it still compiles on x86. + + -- Sam Hocevar (Debian packages) Fri, 16 Sep 2005 13:03:47 +0200 + +ffmpeg (0.cvs20050811-2) unstable; urgency=low + + * ffmpeg-config.in: added a missing -lgsm. + + -- Sam Hocevar (Debian packages) Mon, 22 Aug 2005 19:51:53 +0200 + +ffmpeg (0.cvs20050811-1) unstable; urgency=low + + * New CVS snapshot. + * Upstream fixed an integer overflow in the MPEG encoder (Closes: #320150). + * debian/rules: + + Activated libgsm support. + + Fixed theora support. + + Switched installation method to dh_install. + * Applied patch from Christian Aichinger and others to fix the clobbering + of the %ebx register during build (Closes: #319563). + + -- Sam Hocevar (Debian packages) Thu, 11 Aug 2005 14:22:03 +0200 + +ffmpeg (0.cvs20050626-2) unstable; urgency=low + + * ffmpeg-config.in: fixed the theora link that caused FTBFS. + + -- Sam Hocevar (Debian packages) Fri, 1 Jul 2005 17:20:59 +0200 + +ffmpeg (0.cvs20050626-1) unstable; urgency=low + + * New CVS snapshot. + * debian/control: + + Set policy to 3.6.2.1. + * debian/rules: + + Fixed Vorbis support (Closes: #306023). + + Patch by Jonas Smedegaard : conditionally enable these + unofficial libraries if DEB_BUILD_OPTIONS includes "risky": + o Mpeg2 layer 3 / MP3 (liblame-dev). + o FAAD (libfaad2-dev). + o FAAC (libfaac-dev). + o XviD (libxvidcore-dev). + + Activated theora support. + + Activated IEEE 1394 support (Closes: #296737). + + -- Sam Hocevar (Debian packages) Sun, 26 Jun 2005 15:46:54 +0200 + +ffmpeg (0.cvs20050313-2) unstable; urgency=low + + * libavcodec/libpostproc/postprocess_template.c + libavcodec/i386/mpegvideo_mmx_template.c: fixed my PIC MMX code (Closes: #299700). + * debian/rules: use gcc-3.4 on PowerPC (Closes: #300686). + + -- Sam Hocevar (Debian packages) Mon, 21 Mar 2005 23:38:46 +0100 + +ffmpeg (0.cvs20050313-1) unstable; urgency=low + + * New CVS snapshot. + * configure: fixed the builtin vector test (Closes: #293284), thanks + to Jacob L. Anawalt. + * libavcodec/libpostproc/postprocess_template.c + libavcodec/i386/mpegvideo_mmx_template.c: fixed MMX code so that it can + be compiled in PIC mode, and reactivated MMX (Closes: #290447, #290358). + + -- Sam Hocevar (Debian packages) Sat, 12 Mar 2005 18:34:29 +0100 + +ffmpeg (0.cvs20050121-1) unstable; urgency=low + + * New CVS snapshot. + * This snapshot fixes integer overflows that may lead to arbitrary code + execution (Closes: #291566). + + -- Sam Hocevar (Debian packages) Fri, 21 Jan 2005 17:41:47 +0100 + +ffmpeg (0.cvs20050108-1) unstable; urgency=low + + * Re-done tarball snapshot so that it does not contain binaries. + * ffmpeg-config.in: + + Added missing -lvorbisenc (Closes: #289030). + * debian/rules: + + Install missing headers that are not in the install rule: bwswap.h, + dsputil.h, os_support.h (Closes: #289033). + + -- Sam Hocevar (Debian packages) Sat, 8 Jan 2005 11:30:58 +0100 + +ffmpeg (0.cvs20050106-1) unstable; urgency=low + + * New upstream snapshot. + * The extern/static declaration conflict was fixed upstream (Closes: #288906). + + -- Sam Hocevar (Debian packages) Thu, 6 Jan 2005 15:44:49 +0100 + +ffmpeg (0.cvs20040716-2) unstable; urgency=low + + * debian/rules: + + Include missing rtp.h / rtsp.h in libavformat-dev. + * ffmpeg-config.in: + + Added -lz to the libavcodec linking flags. + + Added -ldts / -ldts_pic, -la52, -lvorbis to the libavcodec linking flags. + + -- Sam Hocevar (Debian packages) Tue, 17 Aug 2004 13:27:41 +0200 + +ffmpeg (0.cvs20040716-1) unstable; urgency=low + + * Initial release (Closes: #199266). + + -- Sam Hocevar (Debian packages) Fri, 16 Jul 2004 12:47:27 +0200 + --- ffmpeg-extra-0.5.9.orig/debian/libavutil49.install +++ ffmpeg-extra-0.5.9/debian/libavutil49.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavutil.so.* --- ffmpeg-extra-0.5.9.orig/debian/libavformat52.install +++ ffmpeg-extra-0.5.9/debian/libavformat52.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavformat.so.* --- ffmpeg-extra-0.5.9.orig/debian/libswscale0.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libswscale0.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libswscale0: shlib-with-non-pic-code usr/lib/i686/cmov/libswscale.so.0.7.1 +libswscale0: shlib-with-non-pic-code usr/lib/libswscale.so.0.7.1 --- ffmpeg-extra-0.5.9.orig/debian/ffmpeg.docs +++ ffmpeg-extra-0.5.9/debian/ffmpeg.docs @@ -0,0 +1 @@ +debian/tmp/usr/share/doc/ffmpeg/html --- ffmpeg-extra-0.5.9.orig/debian/libavfilter-extra-0.install +++ ffmpeg-extra-0.5.9/debian/libavfilter-extra-0.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavfilter.so.* --- ffmpeg-extra-0.5.9.orig/debian/libpostproc51.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libpostproc51.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libpostproc51: shlib-with-non-pic-code usr/lib/i686/cmov/libpostproc.so.51.2.0 +libpostproc51: shlib-with-non-pic-code usr/lib/libpostproc.so.51.2.0 --- ffmpeg-extra-0.5.9.orig/debian/libavutil-dev.install +++ ffmpeg-extra-0.5.9/debian/libavutil-dev.install @@ -0,0 +1,4 @@ +usr/include/libavutil +usr/lib/libavutil.a +usr/lib/{,*/,*/*/}libavutil.so +usr/lib/pkgconfig/libavutil.pc --- ffmpeg-extra-0.5.9.orig/debian/ffmpeg-doc.doc-base +++ ffmpeg-extra-0.5.9/debian/ffmpeg-doc.doc-base @@ -0,0 +1,9 @@ +Document: ffmpeg-doc +Title: ffmpeg API Documentation +Author: FFmpeg Developers +Abstract: This is the main documentation for the ffmpeg API. +Section: Programming + +Format: HTML +Index: /usr/share/doc/ffmpeg-doc/html/index.html +Files: /usr/share/doc/ffmpeg-doc/html/*.html --- ffmpeg-extra-0.5.9.orig/debian/source.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/source.lintian-overrides @@ -0,0 +1,4 @@ +# The dependencies for packages within ffmpeg are different than the +# dependencies for packages that depend on the ffmpeg libraries. +ffmpeg-debian source: debian-rules-calls-debhelper-in-odd-order dh_makeshlibs (line 174) +ffmpeg-debian source: debian-rules-calls-debhelper-in-odd-order dh_makeshlibs (line 178) --- ffmpeg-extra-0.5.9.orig/debian/compat +++ ffmpeg-extra-0.5.9/debian/compat @@ -0,0 +1 @@ +7 --- ffmpeg-extra-0.5.9.orig/debian/clean +++ ffmpeg-extra-0.5.9/debian/clean @@ -0,0 +1,3 @@ +config-extra-includes.h +EXTRA +formats.txt --- ffmpeg-extra-0.5.9.orig/debian/libavformat52.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libavformat52.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libavformat52: shlib-with-non-pic-code usr/lib/i686/cmov/libavformat.so.52.31.0 +libavformat52: shlib-with-non-pic-code usr/lib/libavformat.so.52.31.0 --- ffmpeg-extra-0.5.9.orig/debian/rules +++ ffmpeg-extra-0.5.9/debian/rules @@ -0,0 +1,146 @@ +#!/usr/bin/make -f + +include /usr/share/quilt/quilt.make + +EPOCH=4: +DEB_SOURCE := $(shell dpkg-parsechangelog | sed -n 's/^Source: //p') +DEB_VERSION := $(shell dpkg-parsechangelog | sed -n 's/^Version: //p') +UPSTREAM_VERSION := $(shell echo $(DEB_VERSION) | sed -r 's/[^:]+://; s/-[^-]+$$//') +SHLIBS_VERSION := 4:0.5.1-1 + + +LIB_PKGS := $(shell sed -nr 's/^Package:[[:space:]]*(lib(avutil|avcodec|avdevice|avformat|avfilter|postproc|swscale)(-extra-)?[0-9]+)[[:space:]]*$$/\1/p' debian/control) + +# Support multiple makes at once +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +NUMJOBS = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) +else +# on i386 and amd64, we query the system unless overriden by DEB_BUILD_OPTIONS +ifeq ($(DEB_HOST_ARCH),i386) +NUMJOBS := -j$(shell getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1) +else ifeq ($(DEB_HOST_ARCH),amd64) +NUMJOBS := -j$(shell getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1) +endif +endif + +include debian/confflags + +$(info FLAVORS = $(FLAVORS)) +$(info DEB_BUILD_OPTIONS = $(DEB_BUILD_OPTIONS)) +$(info CFLAGS = $(CFLAGS)) + +configure-%: configure-stamp-% +configure-stamp-%: $(QUILT_STAMPFN) + dh_testdir + mkdir -p debian-$* + echo $(UPSTREAM_VERSION) > debian-$*/snapshot_version + cd debian-$* && CFLAGS="$(CFLAGS)" $(CURDIR)/configure \ + $($*_build_confflags) $(extra_$*_build_confflags) + touch $@ + +build-%: build-stamp-% +build-stamp-%: configure-stamp-% + dh_testdir + $(MAKE) -C debian-$* $(NUMJOBS) + touch $@ + +debian-shared/tools/qt-faststart: build-stamp-shared + $(MAKE) -C debian-shared tools/qt-faststart + +build-doxy: build-doxy-stamp +build-doxy-stamp: $(QUILT_STAMPFN) + dh_testdir + doxygen + touch $@ + +build: build-stamp +build-stamp: $(addprefix build-stamp-, $(FLAVORS)) debian-shared/tools/qt-faststart + touch $@ + +clean: clean-real unpatch +clean-real: + dh_testdir + dh_testroot + rm -f build-stamp $(addprefix build-stamp-, $(FLAVORS)) \ + $(addprefix configure-stamp-, $(FLAVORS)) patch-stamp \ + build-doxy-stamp + rm -rf $(addprefix debian-, $(FLAVORS)) doxy + dh_clean + +# The trailing newline is important! +define install_flavor + $(MAKE) -C debian-$(1) install DESTDIR=$(CURDIR)/debian/tmp \ + mandir=$(CURDIR)/debian/tmp/usr/share/man + +endef + +install: build + dh_testdir + dh_testroot + dh_prep + dh_installdirs -ptmp usr/share/doc/ffmpeg/html etc + dh_installdirs -ptmp usr/share/doc/ffmpeg-doc/html + $(foreach flavor,$(FLAVORS),$(call install_flavor,$(flavor))) + install -m 644 -D debian-shared/doc/*.html debian/tmp/usr/share/doc/ffmpeg/html/ + # don't fail on binary-indep only builds. + [ ! -d doxy ] || cp doxy/html/* debian/tmp/usr/share/doc/ffmpeg-doc/html + install -m 644 -D doc/ffserver.conf debian/tmp/etc/ + install -m 644 -D debian-shared/tools/qt-faststart debian/tmp/usr/bin/qt-faststart + dh_install -Xusr/share/doc/ffmpeg-doc -Xusr/share/doc/ffmpeg \ + --list-missing --sourcedir=debian/tmp + +formats.txt: install + env LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(CURDIR)/debian/tmp/usr/lib" \ + debian/tmp/usr/bin/ffmpeg -formats | tee $@ + +binary-indep: install + +binary-arch: build install formats.txt + dh_testdir + dh_testroot + dh_installman -pffmpeg debian/qt-faststart.1 + dh_installdocs $(extradoc) doc/optimization.txt + dh_installdocs -A MAINTAINERS CREDITS doc/TODO + dh_installdocs -A debian/README.Debian + dh_installdocs RELEASE + dh_installdocs -p libavcodec-extra-52 formats.txt + dh_installexamples -pffmpeg doc/ffserver.conf debian/recordshow.sh + dh_installexamples -plibavcodec-dev libavcodec/apiexample.c + dh_installchangelogs Changelog + dh_lintian + dh_link + dh_compress + dh_fixperms + dh_strip + +# We generate the shlibs file twice: First time for the internal +# dependencies, and then we regenerate them for inclusion in the +# packages. The point of this excercice is to have the 'internal' +# dependencies more strict than 'external' ones. We have implemented this +# so that mixing ffmpeg libraries with the unofficial ones from +# debian-multimedia.org will be harder. + +# strict internal dependencies + for pkg in $(LIB_PKGS); do \ + dh_makeshlibs -p"$$pkg" -V"$$pkg (>= $(EPOCH)$(UPSTREAM_VERSION)), $$pkg (<< $(EPOCH)$(UPSTREAM_VERSION)-99)"; \ + done + env LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$(CURDIR)/debian/tmp/usr/lib" \ + dh_shlibdeps +# target dependencies for external packages + for pkg in $(LIB_PKGS); do \ + dh_makeshlibs -p"$$pkg" -V"$$pkg (>= $(SHLIBS_VERSION))"; \ + done + + dh_installdeb + dh_gencontrol -- -Vlib1394-dev="$(lib1394-dev)" + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch + +.PHONY: build $(addprefix build-, $(FLAVORS)) build-doxy \ + clean clean-real \ + configure $(addprefix configure-, $(FLAVORS)) \ + binary binary-indep binary-arch \ + install \ + get-orig-source --- ffmpeg-extra-0.5.9.orig/debian/watch +++ ffmpeg-extra-0.5.9/debian/watch @@ -0,0 +1,3 @@ +version=3 +opts="uversionmangle=s/.*-snapshot//i" \ +http://www.ffmpeg.org/releases/ffmpeg-(.*)\.tar\.bz2 --- ffmpeg-extra-0.5.9.orig/debian/libavcodec52.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libavcodec52.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libavcodec52: shlib-with-non-pic-code usr/lib/i686/cmov/libavcodec.so.52.20.0 +libavcodec52: shlib-with-non-pic-code usr/lib/libavcodec.so.52.20.0 --- ffmpeg-extra-0.5.9.orig/debian/get-orig-source.sh +++ ffmpeg-extra-0.5.9/debian/get-orig-source.sh @@ -0,0 +1,88 @@ +#!/bin/sh +# +# Script to create a 'pristine' tarball for the debian ffmpeg source package +# Copyright (C) 2008, 2009, 2010 Reinhard Tartler +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +set -eu + +usage() { + cat >&2 <&2 +} + +error () { + echo "$1" >&2 + exit 1; +} + +set +e +PARAMS=`getopt hd: "$@"` +if test $? -ne 0; then usage; exit 1; fi; +set -e + +eval set -- "$PARAMS" + +DEBUG=false +SVNDATE= + +while test $# -gt 0 +do + case $1 in + -h) usage; exit 1 ;; + -d) SVNDATE=$2; shift ;; + --) shift ; break ;; + *) echo "Internal error!" ; exit 1 ;; + esac + shift +done + +# sanity checks now +dh_testdir + +if [ -z $SVNDATE ]; then + error "you need to specify an svn date. e.g. 20081230 for Dec 29. 2008" +fi + +TARBALL=../ffmpeg_0.5+svn${SVNDATE}.orig.tar.gz +PACKAGENAME=ffmpeg + +TMPDIR=`mktemp -d` +trap 'rm -rf ${TMPDIR}' EXIT + +baseurl="svn://svn.ffmpeg.org/ffmpeg/branches/0.5" + +svn export -r{${SVNDATE}} \ + --ignore-externals \ + ${baseurl} \ + ${TMPDIR}/${PACKAGENAME} + +svn info -r{${SVNDATE}} \ + ${baseurl} \ + | awk '/^Revision/ {print $2}' \ + > ${TMPDIR}/${PACKAGENAME}/.svnrevision + +tar czf ${TARBALL} -C ${TMPDIR} ${PACKAGENAME} + --- ffmpeg-extra-0.5.9.orig/debian/libavformat-dev.install +++ ffmpeg-extra-0.5.9/debian/libavformat-dev.install @@ -0,0 +1,4 @@ +usr/include/libavformat +usr/lib/libavformat.a +usr/lib/{,*/,*/*/}libavformat.so +usr/lib/pkgconfig/libavformat.pc --- ffmpeg-extra-0.5.9.orig/debian/ffmpeg.install +++ ffmpeg-extra-0.5.9/debian/ffmpeg.install @@ -0,0 +1,3 @@ +etc +usr/bin +usr/share/man --- ffmpeg-extra-0.5.9.orig/debian/libavformat-extra-52.install +++ ffmpeg-extra-0.5.9/debian/libavformat-extra-52.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavformat.so.* --- ffmpeg-extra-0.5.9.orig/debian/qt-faststart.1 +++ ffmpeg-extra-0.5.9/debian/qt-faststart.1 @@ -0,0 +1,36 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH QT-FASTSTART 1 "May 10, 2009" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +qt-faststart \- utility for Quicktime files +.SH SYNOPSIS +.B qt-faststart +.br +.SH DESCRIPTION +\fBqt-faststart\fP is a utility that rearranges a Quicktime file such that the +moov atom is in front of the data, thus facilitating network streaming. +.SH OPTIONS +Options processed by the executable: +.TP +\fB\\fR +The source Quicktime file. +.TP +\fB\\fR +The destination Quicktime file. +.SH AUTHOR +This manual page was written by Andres Mejia +for the Debian GNU/Linux system, but may be used by others. --- ffmpeg-extra-0.5.9.orig/debian/libavdevice-extra-52.install +++ ffmpeg-extra-0.5.9/debian/libavdevice-extra-52.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavdevice.so.* --- ffmpeg-extra-0.5.9.orig/debian/libavfilter-dev.install +++ ffmpeg-extra-0.5.9/debian/libavfilter-dev.install @@ -0,0 +1,4 @@ +usr/include/libavfilter +usr/lib/libavfilter.a +usr/lib/{,*/,*/*/}libavfilter.so +usr/lib/pkgconfig/libavfilter.pc --- ffmpeg-extra-0.5.9.orig/debian/copyright +++ ffmpeg-extra-0.5.9/debian/copyright @@ -0,0 +1,96 @@ +SVN snapshots are downloaded with subversion from the ffmpeg SVN at: + + +Upstream Authors: Fabrice Bellard + Alex Beregszaszi + BERO + Mario Brito + Ronald Bultje + Tim Ferguson + Brian Foley + Arpad Gereoffy + Philip Gladstone + Vladimir Gneushev + Wolfgang Hesseler + Falk Hueffner + Zdenek Kabelac + Robin Kay + Todd Kirby + Nick Kurshev + Mike Melanson + Michael Niedermayer + François Revol + Roman Shaposhnik + Dieter Shirley + Juan J. Sierralta + Ewald Snel + Leon van Stuivenberg + Roberto Togni + Lionel Ulmer + +Copyright (c) 2000-2004 Fabrice Bellard et al. + +The following files are licensed under the GNU GPL, as clarified below: + + * ffmpeg.c + * libavcodec: + + dtsdec.c + + i386/idct_mmx.c + + liba52/*.[ch] + * libavformat: + + x11grab.c + + gxfenc.c + * libpostproc: + + postprocess_internal.h + + postprocess_altivec_template.c + + postprocess.h + + postprocess_template.c + + postprocess.c + + mangle.h + * libswscale: + + swscale.c + + swscale-example.c + + yuv2rgb_template.c + + swscale_altivec_template.c + + yuv2rgb_altivec.c + + swscale_template.c + + rgb2rgb_template.c + + rgb2rgb.c + + cs_test.c + + yuv2rgb_mlib.c + + yuv2rgb.c + + | This library is free software; you can redistribute it and/or + | modify it under the terms of the GNU General Public License as + | published by the Free Software Foundation; either version 2 of + | the License, or (at your option) any later version. + | + | This library is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + | Lesser General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with this program; if not, write to the Free Software + | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +The rest of the code is licensed under the GNU LGPL: + + | This library is free software; you can redistribute it and/or + | modify it under the terms of the GNU Lesser General Public License as + | published by the Free Software Foundation; either version 2.1 of + | the License, or (at your option) any later version. + | + | This library is distributed in the hope that it will be useful, + | but WITHOUT ANY WARRANTY; without even the implied warranty of + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + | Lesser General Public License for more details. + | + | You should have received a copy of the GNU General Public License + | along with this program; if not, write to the Free Software + | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian GNU/Linux systems, the complete text of the GNU General Public +License can be found in `/usr/share/common-licenses/GPL' and the text of the +GNU Lesser General Public License is in `/usr/share/common-licenses/LGPL'. + --- ffmpeg-extra-0.5.9.orig/debian/libpostproc51.install +++ ffmpeg-extra-0.5.9/debian/libpostproc51.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libpostproc.so.* --- ffmpeg-extra-0.5.9.orig/debian/libswscale-dev.install +++ ffmpeg-extra-0.5.9/debian/libswscale-dev.install @@ -0,0 +1,4 @@ +usr/include/libswscale +usr/lib/libswscale.a +usr/lib/{,*/,*/*/}libswscale.so +usr/lib/pkgconfig/libswscale.pc --- ffmpeg-extra-0.5.9.orig/debian/libswscale-extra-0.install +++ ffmpeg-extra-0.5.9/debian/libswscale-extra-0.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libswscale.so.* --- ffmpeg-extra-0.5.9.orig/debian/libpostproc-extra-51.install +++ ffmpeg-extra-0.5.9/debian/libpostproc-extra-51.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libpostproc.so.* --- ffmpeg-extra-0.5.9.orig/debian/libavcodec52.install +++ ffmpeg-extra-0.5.9/debian/libavcodec52.install @@ -0,0 +1,2 @@ +usr/lib/{,*/,*/*/}libavcodec.so.* +usr/share/ffmpeg/*.ffpreset --- ffmpeg-extra-0.5.9.orig/debian/libavfilter0.install +++ ffmpeg-extra-0.5.9/debian/libavfilter0.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavfilter.so.* --- ffmpeg-extra-0.5.9.orig/debian/libavcodec-dev.install +++ ffmpeg-extra-0.5.9/debian/libavcodec-dev.install @@ -0,0 +1,4 @@ +usr/include/libavcodec +usr/lib/libavcodec.a +usr/lib/{,*/,*/*/}libavcodec.so +usr/lib/pkgconfig/libavcodec.pc --- ffmpeg-extra-0.5.9.orig/debian/README.source +++ ffmpeg-extra-0.5.9/debian/README.source @@ -0,0 +1,5 @@ +This package uses quilt to manage all modifications to the upstream +source. Changes are stored in the source package as diffs in +debian/patches and applied during the build. + +For more information about quilt, see /usr/share/doc/quilt/README.source --- ffmpeg-extra-0.5.9.orig/debian/README.upstream-upgrade +++ ffmpeg-extra-0.5.9/debian/README.upstream-upgrade @@ -0,0 +1,42 @@ + +Checklist and howto for ffmpeg upstream upgrades: + +Needed packages: + + apt-get install devscripts git-buildpackage pristine-tar + +Stage in a tmp directory: + + mkdir /tmp/f ; cd /tmp/f + git clone git://git.debian.org/git/pkg-multimedia/ffmpeg-debian.git + cd ffmpeg-debian + branches="master.unstripped pristine-tar upstream upstream.unstripped" + for b in $branches; do git checkout -b $b origin/$b ; done + +Prepare the environment: + + SVNDATE=`date +%Y%m%d` + git checkout master + +Fetch and commit the new upstream version: + + debian/rules get-orig-source SVN_VERSION=${SVNDATE} + git-import-orig \ + --no-dch \ + --upstream-tag=upstream/0.5+svn${SVNDATE} \ + --upstream-version=0.5+svn${SVNDATE} \ + ../ffmpeg_0.5+svn${SVNDATE}.orig.tar.gz + +Check and note the svn revision numbers from +ffmpeg/{libswscale,}.svnrevision in debian/changelog + + git diff upstream^ Changelog libavcodec/allcodecs.c libavformat/allformats.c + +Document new formats additions in debian/changelog + +Build, test, and compare against the the version already in the archive: + - headers in the -dev packages with + - soname in the libraries + - formats.txt in the libavcodecs package + +Finialize debian/changelog, package should be upload ready now --- ffmpeg-extra-0.5.9.orig/debian/ffmpeg-doc.docs +++ ffmpeg-extra-0.5.9/debian/ffmpeg-doc.docs @@ -0,0 +1 @@ +debian/tmp/usr/share/doc/ffmpeg-doc/html --- ffmpeg-extra-0.5.9.orig/debian/libavcodec-extra-52.install +++ ffmpeg-extra-0.5.9/debian/libavcodec-extra-52.install @@ -0,0 +1,2 @@ +usr/lib/{,*/,*/*/}libavcodec.so.* +usr/share/ffmpeg/*.ffpreset --- ffmpeg-extra-0.5.9.orig/debian/libavdevice52.install +++ ffmpeg-extra-0.5.9/debian/libavdevice52.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavdevice.so.* --- ffmpeg-extra-0.5.9.orig/debian/README.Source +++ ffmpeg-extra-0.5.9/debian/README.Source @@ -0,0 +1,48 @@ + +In the past, Debian used to ship "stripped" ffmpeg packages, i.e. the +source code of the ffmpeg-debian package has been modified to disable +specific codecs (mostly encoders like H263, H264, MPEG2 video, MPEG4 and +MS-MPEG4) whose usage may represent patent infringement in certain +jurisdictions. To serve the purpose to remain free of patented encoding +technologies, the modifications to the ffmpeg source code have been done +in a "non-reversible" way by removing several lines from the source code +before packaging the release tarball. To reflect this divergence from +upstream ffmpeg, the Debian package has been renamed to ffmpeg-debian. +However, please note that only the code calling the affected codecs was +removed in previous versions to make them unavailable to the resulting +ffmpeg libraries. No encoder code was actually ever removed from the +Debian packages! + +Several complications have come along with the aforementioned measures: +* Further packaging hacks (e.g. debian/fixup-config.sh) have become + necessary in order to build the source code without the stripped + encoders. +* It was impossible to rebuild unstripped packages for private usage + from the ffmpeg-debian source code +* Ffmpeg upstream was not very happy about Debian redistributing a + stripped fork of their code, to say the least. + +Nowadays, while the situation remains pretty unchanged with regard to +the patent threat, the ffmpeg build system has seen a lot of +improvements. It now provides the possibility to explicitly disable +specific codecs from the libraries at configure time, allowing disabling +some patent encumbered codecs without the need to strip the source code. +The effect on the resulting binary packages would remain the same as +before. + +Regarding the source code, however, this would mean some significant +improvements: +* There is no more need to strip the source code in order to disable the + codecs and to apply further Debian-specific hacks to still make it + compile cleanly. +* In order to rebuild unstripped ffmpeg libraries for private usage, it + would be sufficient to comment out a few configure flags. +* Debian would not need to fork the ffmpeg source code anymore and call + their packages by a different name. + +Therefore, the pkg-multimedia-maintainers (the maintainers of the ffmpeg +packages in Debian) decided to not strip the ffmpeg source code in +further releases anymore but disable the patent encumbered codecs during +the configure phase of the packages as intended upstream. We are sure +this is the right thing to do with regard to the aforementioned +advantages for both our users and ourselves as maintainers. --- ffmpeg-extra-0.5.9.orig/debian/libavutil-extra-49.install +++ ffmpeg-extra-0.5.9/debian/libavutil-extra-49.install @@ -0,0 +1 @@ +usr/lib/{,*/,*/*/}libavutil.so.* --- ffmpeg-extra-0.5.9.orig/debian/libavutil49.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libavutil49.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libavutil49: shlib-with-non-pic-code usr/lib/i686/cmov/libavutil.so.49.15.0 +libavutil49: shlib-with-non-pic-code usr/lib/libavutil.so.49.15.0 --- ffmpeg-extra-0.5.9.orig/debian/libavdevice52.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libavdevice52.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libavdevice52: shlib-with-non-pic-code usr/lib/i686/cmov/libavdevice.so.52.1.0 +libavdevice52: shlib-with-non-pic-code usr/lib/libavdevice.so.52.1.0 --- ffmpeg-extra-0.5.9.orig/debian/libpostproc-dev.install +++ ffmpeg-extra-0.5.9/debian/libpostproc-dev.install @@ -0,0 +1,4 @@ +usr/include/libpostproc +usr/lib/libpostproc.a +usr/lib/{,*/,*/*/}libpostproc.so +usr/lib/pkgconfig/libpostproc.pc --- ffmpeg-extra-0.5.9.orig/debian/README.Debian +++ ffmpeg-extra-0.5.9/debian/README.Debian @@ -0,0 +1,235 @@ +lintian override shlib-with-non-pic-codeshlib-with-non-pic-code +================================================================== + +The lintian overrides for the non-pic shared libs error messages is not +really a matter of silencing lintian. The general idea is that the +override would serve as an indication that we know about the error +message and we're avoiding any bug reports or complaints by others about +the errors. + +We are aware that this override is too strict. It should only cover the +i386 architecture, as we know that the upstream build system will +produce PIC libraries where necessary. Only architectures like i386 will +be built non-PIC, mainly for performance reasons. + + -- Reinhard Tartler , Mon, 27 Jul 2009 12:08:55 +0200 + +FFmpeg package names +==================== + +The ffmpeg packaging has seen many renames in the course of its history. +Looking for more stable names, the ffmpeg maintainers agreed on moving to +a naming scheme which would fit known use cases and avoid confusion. + +Some of the constraints and proposed solutions on the new names follow: + + 1. Distributions such as Debian and Ubuntu want to carry multiple version of + the package to fit component divisions and please users; e.g. an + Ubuntu/universe and an Ubuntu/multiverse version, or a Debian/main and a + Debian/non-free version. It is conceived that there are usually two + variants of the ffmpeg package in these distributions: a) the vanilla + version shipped in the most permissible component if possible and b) a + 'stripped' package suitable for the most constrained component. + + For details why such a stripping is necessary in the first place, please + look further below in this document ("Disabled MPEG encoders"). + + 2. Packages from distributions and third party repositories such as the popular + debian-multimedia.org shouldn't interfere but coexist nicely. If these + repositories want to provide an alternate version of the source package, + they could do so with their own source and binary package names. It is + hoped that providing the vanilla source in one of the source packages will + remove the need to fork ffmpeg in these third party repositories. + + 3. The libraries built by various source packages shall be ABI compatible as + to allow packages built against the most constrained component to run + against the more permissible components; for instance vlc if built against + ffmpeg in main shall be able to run against the ffmpeg libraries from + non-free. The plan here is to use shlibs tricks to allow to install one + lib or the other. The shlibs would look like: + lib-name-in-main-99 (>= 1.2.3) | lib-name-in-non-free-99 (>= 1.2.3) + This scheme can be extended for third party repositories if it still needs + to be. + +For consistency at this date, Debian is missing a ffmpeg-extra source +package and Ubuntu had two source packages in the same component for a +short time. The binary package names are not unified and shlibs do not +allow to install one or the other library. + +To avoid gratuitous package renames, the proposed changes against the above +packages are: + + * For Debian and Ubuntu the binary packages in the 'main' component will + keep their original names without any additional marker. + + * The extra (unstripped) replacement packages in the 'non-free' + (Debian) and 'multiverse' (ubuntu) component will be built from a + source package named 'ffmpeg-extra'. The resulting binary packages + carry an '-extra-' marker in the name right between the library name + and its SONAME. + + * Ubuntu will track the ffmpeg packages in Debian and tries to minimize the + diff for maintenance reason. + + * If you disagree with the naming, please speak up on + pkg-multimedia-maintainers@lists.alioth.debian.org + + -- Reinhard Tartler , Sun, 26 Jul 2009 10:38:10 +0200 + + +Disabled MPEG encoders +====================== + +On Debconf 7, the ffmpeg maintainers had a conversation with James Troup +from the ftpteam about mpeg encoders in the ffmpeg package. The ftpteam +was pretty surprised about the accepted encoders, and admitted that they +were accepted by accident. We therefore had no choice but removing +them. We agreed on a plan that rather disables than removes the +encoders, for details see debian/strip.sh, rendering those encoders +unusable. + +Currently the following video encoders are disabled in the ffmpeg +package: H263, H264, MPEG2 video, MPEG4 and MS-MPEG4. No *decoders* are +disabled in any the ffmpeg package! + +The plan is to provide a source package called 'ffmpeg-extra', which builds +drop-in replacement binary package with the mpeg encoders enabled. Ideally, we +would be allowed to include those mpeg encoders enabled in non-free, but we +haven't heared back from the ftpteam about that idea. + + + -- Reinhard Tartler , Sun, 20 Apr 2008 08:43:23 +0200 + + +Further patent issues with ffmpeg +================================= + +In addition to the aforementioned MPEG encoders, some patents related to +ffmpeg which seem to be enforced against open source software cover the +following codec technologies and file formats: + + * MP3 encoding + * AAC encoding + * the ASF file format + + I did not activate MP3 encoding (through LAME) in libavcodec, nor AAC +encoding (through FAAC). However, since I have found no real enforcement +of the mysterious ASF file format patents, I did not deactivate ASF support in +libavformat. More details on these three issues are given in the following +paragraphs: + + +The MP3 audio coding format +=========================== + + Much has already been said about MP3 and the huge patent portfolio of +the MPEG members, especially the Fraunhofer institute. Eric Scheirer's +MPEG, Patents, and Audio Coding FAQ [1.1] is an attempt to "inject +some sanity in what is becoming an increasingly heated discussion +about patent rights surrounding MPEG technology, especially for audio +compression". It also has a few words about other patented products +covered in this document. + +[1.1] http://web.media.mit.edu/~eds/mpeg-patents-faq + + +The AAC audio coding format +=========================== + + Dolby's AAC (Advanced Audio Coding) is covered by patents owned by +Dolby Laboratories, AT&T Laboratories, Fraunhofer Institute and Sony +Corp. + + The FAAC project was threatened by the AAC license consortium. Press +report about how "an opensource project was closed down due to pressures +from the AAC license consortium which requires a lumpsum payment of +10,000 USD plus a per-copy payment of 1.35 USD, thus effectively banning +free software implementations. The policies surrounding AAC also harm +interoperability [2.2]." This was related by Heise [2.3] and FFII has +a page about the Dolby threat [2.1] as well as additional information +about MPEG-related patents [2.4]. + + The author stopped distributing the FAAC binaries, but still provides +full source code and CVS access. To my knowledge he has not been +threatened again. I also read on a web forum [2.5] that Cisco's lawyers +claim that their LGPL distribution of AAC software in MPEG4IP is +completely legal and that Dolby cannot forbid such distribution. + +[2.1] http://swpat.ffii.org/patents/effects/dolby/index.en.html +[2.2] http://www.xiph.org/archives/vorbis-dev/200011/0286.html +[2.3] http://www.heise.de/newsticker/data/vza-20.11.00-000/ +[2.4] http://swpat.ffii.org/patents/effects/mpeg/index.en.html +[2.5] http://www.hydrogenaudio.org/index.php?showtopic=310& + + +The ASF file encapsulation format +================================= + + Microsoft obtained a patent on the ASF (Active Stream Format) audio +file format on March 21, 2000: + + | United States Patent 6,041,345 Levi , et al. March 21, 2000 + | + | Active stream format for holding multiple media streams + | + | Abstract An active stream format is defined and adopted for a + | logical structure that encapsulates multiple data streams. The data + | streams may be of different media. The data of the data streams + | is partitioned into packets that are suitable for transmission + | over a transport medium. The packets may include error correcting + | information. The packets may also include clock licenses for + | dictating the advancement of a clock when the data streams are + | rendered. The format of ASF facilitates flexibility and choice + | of packet size and in specifying maximum bit rate at which data + | may be rendered. Error concealment strategies may be employed in + | the packetization of data to distribute portions of samples to + | multiple packets. Property information may be replicated and stored + | in separate packets to enhance its error tolerance. The format + | facilitates dynamic definition of media types and the packetization + | of data in such dynamically defined data types within the format. + + This patent is rumoured to have been enforced at least once, though +only through what I'd call non-hostile intimidation. Avery Lee, the +VirtualDub author, removed ASF support from his software after a phone +call from a Microsoft employee that he relates in his 5/12/2000 news +[3.1]. + + However I could not find evidence of an official threat: all I could +find on the web seemed to be interpretations of the VirtualDub author's +article, for instance on Advogato [3.2], CPT [3.3] or FFII [3.4]. Avery +Lee states that the phone call was from a programmer, not from the +legal department. There does not seem to be an official statement from +Microsoft. + +[3.1] http://web.archive.org/web/20000817222620/http://www.geocities.com/virtualdub/virtualdub_news.html +[3.2] http://www.advogato.com/article/101.html +[3.3] http://www.cptech.org/ip/business/software/audio.html +[3.4] http://swpat.ffii.org/patents/effects/asf/index.en.html + + +License of the Debian ffmpeg packages +===================================== + +The license for the whole work is the GPL, not the LGPL, because GPL-only +parts of ffmpeg were activated -- namely libpostproc, libswscale, x11grab and +(optionally) libfaad2. If you need LGPL versions of the libraries, please +comment out the appropriate line in debian/confflags. + + +Differences with unofficial ffmpeg packages +=========================================== + + There are popular unofficial ffmpeg packages at the following URL: + + http://www.debian-multimedia.org/ + + I have nothing to do with these packages and it would be very tedious +for me to track their changes. Given that my official packages use a +Debian-specific naming scheme for libraries, you should be able to +install at least the shared library packages together. + + Before submitting a bug report, please make sure it is related to the +Debian packages and not those unofficial packages. + + + -- Sam Hocevar Thu, 30 Mar 2006 10:23:16 +0200 --- ffmpeg-extra-0.5.9.orig/debian/gbp.conf +++ ffmpeg-extra-0.5.9/debian/gbp.conf @@ -0,0 +1,6 @@ +[DEFAULT] +upstream-branch = upstream-0.5 +debian-branch = ubuntu.extra +upstream-tag = upstream/%(version)s +debian-tag = extra/debian/%(version)s +pristine-tar = True --- ffmpeg-extra-0.5.9.orig/debian/libavfilter0.lintian-overrides +++ ffmpeg-extra-0.5.9/debian/libavfilter0.lintian-overrides @@ -0,0 +1,3 @@ +# Overriding these fpic lintian errors. Please see bug #528080. +libavfilter0: shlib-with-non-pic-code usr/lib/i686/cmov/libavfilter.so.0.4.0 +libavfilter0: shlib-with-non-pic-code usr/lib/libavfilter.so.0.4.0 --- ffmpeg-extra-0.5.9.orig/debian/control +++ ffmpeg-extra-0.5.9/debian/control @@ -0,0 +1,182 @@ +Source: ffmpeg-extra +Section: libs +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian multimedia packages maintainers +Uploaders: Sam Hocevar (Debian packages) , + Loic Minier , + Reinhard Tartler , + Fabian Greffrath , + Andres Mejia +DM-Upload-Allowed: yes +Standards-Version: 3.8.3 +Vcs-Git: git://git.debian.org/git/pkg-multimedia/ffmpeg.git +Vcs-Browser: http://git.debian.org/?p=pkg-multimedia/ffmpeg.git;a=summary +Homepage: http://ffmpeg.org/ +Build-Depends-Indep: doxygen +Build-Depends: debhelper (>= 7), + libasound2-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], + libavcodec-dev, + libavfilter-dev, + libavformat-dev, + libavutil-dev, + libbz2-dev, + libdc1394-22-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], + libdirac-dev, + libfaad-dev | libfaad2-dev, + libfreetype6-dev, + libgsm1-dev, + libopenjpeg-dev, + libimlib2-dev, + libmp3lame-dev, + libopenjpeg-dev, + libpostproc-dev, + libraw1394-dev [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], + libschroedinger-dev, + libsdl1.2-dev, + libspeex-dev, + libtheora-dev (>> 0.0.0.alpha4), + libvorbis-dev, + libx11-dev, + libx264-dev (>> 1:0.svn20100213+gitfcf70c), + libxext-dev, + libxvidcore-dev | libxvidcore4-dev, + libvdpau-dev, + libxvmc-dev, + quilt, + texi2html, + yasm [i386 amd64], + zlib1g-dev + +Package: libavutil-extra-49 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Conflicts: libavutil49, libavutil-unstripped-49 (<< ${binary:Version}) +Replaces: libavutil49, libavutil-unstripped-49 (<< ${binary:Version}) +Description: ffmpeg utility library + This is the common utility library from the ffmpeg project. It is required + by all other ffmpeg libraries. + . + This package contains a unrestricted version of the libavutil shared + object that should only be used by Debian packages. + +Package: libavutil-unstripped-49 +Architecture: any +Depends: libavutil-extra-49 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this + +Package: libavcodec-extra-52 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Suggests: libfaad0 +Conflicts: libavcodec52, libavcodec-unstripped-52 (<< ${binary:Version}) +Replaces: libavcodec52, libavcodec-unstripped-52 (<< ${binary:Version}), ffmpeg (<< 4:0.5.1-1) +Description: ffmpeg codec library + This is the codec library from the ffmpeg project. It supports most existing + encoding formats (MPEG, DivX, MPEG4, AC3, DV...). + . + This package contains a unrestricted version of the libavcodec shared + object that should only be used by Debian packages. + +Package: libavcodec-unstripped-52 +Architecture: any +Depends: libavcodec-extra-52 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this + +Package: libavdevice-extra-52 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Conflicts: libavdevice52, libavdevice-unstripped-52 (<< ${binary:Version}) +Replaces: libavdevice52, libavdevice-unstripped-52 (<< ${binary:Version}) +Description: ffmpeg device handling library + This is the device handling library from the ffmpeg project. + . + This package contains a unrestricted version of the libavdevice shared + object that should only be used by Debian packages. + +Package: libavdevice-unstripped-52 +Architecture: any +Depends: libavdevice-extra-52 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this + +Package: libavfilter-extra-0 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Conflicts: libavfilter0, libavfilter-unstripped-0 (<< ${binary:Version}) +Replaces: libavfilter0, libavfilter-unstripped-0 (<< ${binary:Version}) +Description: ffmpeg video filtering library + This is the video filtering library from the ffmpeg project. + . + This package contains a unrestricted version of the libavfilter shared + object that should only be used by Debian packages. + +Package: libavfilter-unstripped-0 +Architecture: any +Conflicts: libavfilter0 +Replaces: libavfilter0 +Depends: libavfilter-extra-0 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this + +Package: libpostproc-extra-51 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Conflicts: libpostproc51, libpostproc-unstripped-51 (<< ${binary:Version}) +Replaces: libpostproc51, libpostproc-unstripped-51 (<< ${binary:Version}) +Description: ffmpeg video postprocessing library + This is the video postprocessing library from the ffmpeg project. + . + This package contains a unrestricted version of the libpostproc shared + object that should only be used by Debian packages. + +Package: libpostproc-unstripped-51 +Architecture: any +Depends: libpostproc-extra-51 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this + +Package: libavformat-extra-52 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Conflicts: libavformat52, libavformat-unstripped-52 (<< ${binary:Version}) +Replaces: libavformat52, libavformat-unstripped-52 (<< ${binary:Version}) +Breaks: libavcodec51 +Description: ffmpeg file format library + This is the demuxer library from the ffmpeg project. It supports most + existing file formats (AVI, MPEG, OGG, Matroska, ASF...). + . + This package contains a unrestricted version of the libavformat shared + object that should only be used by Debian packages. + +Package: libavformat-unstripped-52 +Architecture: any +Depends: libavformat-extra-52 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this + +Package: libswscale-extra-0 +Architecture: any +Depends: ${shlibs:Depends}, + ${misc:Depends} +Conflicts: libswscale0, libswscale-unstripped-0 (<< ${binary:Version}) +Replaces: libswscale0, libswscale-unstripped-0 (<< ${binary:Version}) +Description: ffmpeg video scaling library + This is the video scaling library from the ffmpeg project. + . + This package contains a unrestricted version of the libswscale shared + object that should only be used by Debian packages. + +Package: libswscale-unstripped-0 +Architecture: any +Depends: libswscale-extra-0 (= ${binary:Version}) +Description: ffmpeg utility library - transitional package + This package can be safely removed if no other packages depend on this --- ffmpeg-extra-0.5.9.orig/debian/patches/CVE-2012-2777-2784.patch +++ ffmpeg-extra-0.5.9/debian/patches/CVE-2012-2777-2784.patch @@ -0,0 +1,45 @@ +From c20a69630619d14ae92c5541d52c579d7c8f3e94 Mon Sep 17 00:00:00 2001 +From: Michael Niedermayer +Date: Sat, 24 Mar 2012 02:40:24 +0100 +Backported from: + +Subject: [PATCH] cavsdec: check for changing w/h. + +Our decoder does not support changing w/h. + +Fixes CVE-2012-2777 and CVE-2012-2784. + +Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind +Signed-off-by: Anton Khirnov +--- + libavcodec/cavsdec.c | 13 +++++++++++-- + 1 files changed, 11 insertions(+), 2 deletions(-) + +Index: ffmpeg-0.5.9/libavcodec/cavsdec.c +=================================================================== +--- ffmpeg-0.5.9.orig/libavcodec/cavsdec.c 2012-06-09 06:15:33.000000000 -0400 ++++ ffmpeg-0.5.9/libavcodec/cavsdec.c 2012-12-18 10:45:35.101911304 -0500 +@@ -599,12 +599,21 @@ + static int decode_seq_header(AVSContext *h) { + MpegEncContext *s = &h->s; + int frame_rate_code; ++ int width, height; + + h->profile = get_bits(&s->gb,8); + h->level = get_bits(&s->gb,8); + skip_bits1(&s->gb); //progressive sequence +- s->width = get_bits(&s->gb,14); +- s->height = get_bits(&s->gb,14); ++ ++ width = get_bits(&s->gb, 14); ++ height = get_bits(&s->gb, 14); ++ if ((s->width || s->height) && (s->width != width || s->height != height)) { ++ av_log(s, AV_LOG_WARNING, "Width/height changing in CAVS is"); ++ return AVERROR_PATCHWELCOME; ++ } ++ s->width = width; ++ s->height = height; ++ + skip_bits(&s->gb,2); //chroma format + skip_bits(&s->gb,3); //sample_precision + h->aspect_ratio = get_bits(&s->gb,4); --- ffmpeg-extra-0.5.9.orig/debian/patches/900_doxyfile +++ ffmpeg-extra-0.5.9/debian/patches/900_doxyfile @@ -0,0 +1,16 @@ +Author: Reinhard Tartler + +Exclude some directories we use for packaging. + +========================================================================== +--- a/Doxyfile ++++ b/Doxyfile +@@ -359,7 +359,7 @@ + # excluded from the INPUT source files. This way you can easily exclude a + # subdirectory from a directory tree whose root is specified with the INPUT tag. + +-EXCLUDE = ++EXCLUDE = debian debian-shared debian-static debian-cmov .pc .git + + # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories + # that are symbolic links (a Unix filesystem feature) are excluded from the input. --- ffmpeg-extra-0.5.9.orig/debian/patches/CVE-2012-2803.patch +++ ffmpeg-extra-0.5.9/debian/patches/CVE-2012-2803.patch @@ -0,0 +1,43 @@ +From 56c1e18a5225f2737f91e6028f114f56d7ca802a Mon Sep 17 00:00:00 2001 +From: Anton Khirnov +Date: Thu, 13 Dec 2012 17:53:31 +0100 +Subject: [PATCH] mpeg12: do not decode extradata more than once. + +Fixes CVE-2012-2803. + +CC: libav-stable@libav.org +(cherry picked from commit 582368626188c070d4300913c6da5efa4c24cfb2) + +Conflicts: + + libavcodec/mpeg12.c +--- + libavcodec/mpeg12.c | 3 ++- + libavcodec/mpeg12.h | 1 + + 2 files changed, 3 insertions(+), 1 deletions(-) + +Index: ffmpeg-0.5.9/libavcodec/mpeg12.c +=================================================================== +--- ffmpeg-0.5.9.orig/libavcodec/mpeg12.c 2012-06-09 06:15:33.000000000 -0400 ++++ ffmpeg-0.5.9/libavcodec/mpeg12.c 2013-01-24 13:46:10.955232392 -0500 +@@ -1162,7 +1162,7 @@ + int save_aspect_info; + int save_width, save_height; + AVRational frame_rate_ext; ///< MPEG-2 specific framerate modificator +- ++ int extradata_decoded; + } Mpeg1Context; + + static av_cold int mpeg_decode_init(AVCodecContext *avctx) +@@ -2299,8 +2299,10 @@ + + s->slice_count= 0; + +- if(avctx->extradata && !avctx->frame_number) ++ if(avctx->extradata && !s->extradata_decoded) { + decode_chunks(avctx, picture, data_size, avctx->extradata, avctx->extradata_size); ++ s->extradata_decoded = 1; ++ } + + return decode_chunks(avctx, picture, data_size, buf, buf_size); + } --- ffmpeg-extra-0.5.9.orig/debian/patches/fix-qtrle-encoding-when-previous-frame-linesize.patch +++ ffmpeg-extra-0.5.9/debian/patches/fix-qtrle-encoding-when-previous-frame-linesize.patch @@ -0,0 +1,72 @@ +From: Peter Fritzsche +Date: Sat, 23 May 2009 05:55:29 +0000 +Subject: [PATCH] fix qtrle encoding when previous frame linesize differs + +Applied upstream as revision 18908: + +------------------------------------------------------------------------ +r18908 | bcoudurier | 2009-05-23 07:55:29 +0200 (Sa, 23. Mai 2009) | 1 line + +fix qtrle encoding when previous frame linesize differs, fix #998 + + +diff --git a/libavcodec/qtrleenc.c b/libavcodec/qtrleenc.c +index 171ac25..46bb573 100644 +--- a/libavcodec/qtrleenc.c ++++ b/libavcodec/qtrleenc.c +@@ -121,18 +121,20 @@ static void qtrle_encode_line(QtrleEncContext *s, AVFrame *p, int line, uint8_t + /* The cost of the three different possibilities */ + int total_bulk_cost; + int total_skip_cost; + int total_repeat_cost; + + int temp_cost; + int j; + +- uint8_t *this_line = p-> data[0] + line*p->linesize[0] + (width - 1)*s->pixel_size; +- uint8_t *prev_line = s->previous_frame.data[0] + line*p->linesize[0] + (width - 1)*s->pixel_size; ++ uint8_t *this_line = p-> data[0] + line*p-> linesize[0] + ++ (width - 1)*s->pixel_size; ++ uint8_t *prev_line = s->previous_frame.data[0] + line*s->previous_frame.linesize[0] + ++ (width - 1)*s->pixel_size; + + s->length_table[width] = 0; + skipcount = 0; + + for (i = width - 1; i >= 0; i--) { + + if (!s->frame.key_frame && !memcmp(this_line, prev_line, s->pixel_size)) + skipcount = FFMIN(skipcount + 1, MAX_RLE_SKIP); +@@ -235,26 +237,27 @@ static void qtrle_encode_line(QtrleEncContext *s, AVFrame *p, int line, uint8_t + static int encode_frame(QtrleEncContext *s, AVFrame *p, uint8_t *buf) + { + int i; + int start_line = 0; + int end_line = s->avctx->height; + uint8_t *orig_buf = buf; + + if (!s->frame.key_frame) { ++ unsigned line_size = s->avctx->width * s->pixel_size; + for (start_line = 0; start_line < s->avctx->height; start_line++) + if (memcmp(p->data[0] + start_line*p->linesize[0], +- s->previous_frame.data[0] + start_line*p->linesize[0], +- p->linesize[0])) ++ s->previous_frame.data[0] + start_line*s->previous_frame.linesize[0], ++ line_size)) + break; + + for (end_line=s->avctx->height; end_line > start_line; end_line--) + if (memcmp(p->data[0] + (end_line - 1)*p->linesize[0], +- s->previous_frame.data[0] + (end_line - 1)*p->linesize[0], +- p->linesize[0])) ++ s->previous_frame.data[0] + (end_line - 1)*s->previous_frame.linesize[0], ++ line_size)) + break; + } + + bytestream_put_be32(&buf, 0); // CHUNK SIZE, patched later + + if ((start_line == 0 && end_line == s->avctx->height) || start_line == s->avctx->height) + bytestream_put_be16(&buf, 0); // header + else { + --- ffmpeg-extra-0.5.9.orig/debian/patches/fix-constant-quant-encoding.patch +++ ffmpeg-extra-0.5.9/debian/patches/fix-constant-quant-encoding.patch @@ -0,0 +1,47 @@ +From: conrad +Date: Wed, 30 Sep 2009 22:25:49 +0000 (+0000) +Subject: Support constant-quant encoding for libtheora +X-Git-Url: http://git.ffmpeg.org/?p=ffmpeg;a=commitdiff_plain;h=a5ac197b1e60ca44cbc1ea0f64e25af977f7dae5 + +Support constant-quant encoding for libtheora +Based on a patch by j f (gonzaz-z # operamail (d) com) + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@20109 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + +diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c +index 9da0d19..f028595 100644 +--- a/libavcodec/libtheoraenc.c ++++ b/libavcodec/libtheoraenc.c +@@ -106,11 +106,9 @@ static av_cold int encode_init(AVCodecContext* avc_context) + } + t_info.colorspace = OC_CS_UNSPECIFIED; + t_info.pixelformat = OC_PF_420; +- t_info.target_bitrate = avc_context->bit_rate; + t_info.keyframe_frequency = avc_context->gop_size; + t_info.keyframe_frequency_force = avc_context->gop_size; + t_info.keyframe_mindistance = avc_context->keyint_min; +- t_info.quality = 0; + + t_info.quick_p = 1; + t_info.dropframes_p = 0; +@@ -120,6 +118,19 @@ static av_cold int encode_init(AVCodecContext* avc_context) + t_info.noise_sensitivity = 1; + t_info.sharpness = 0; + ++ if (avc_context->flags & CODEC_FLAG_QSCALE) { ++ /* to be constant with the libvorbis implementation, clip global_quality to 0 - 10 ++ Theora accepts a quality parameter p, which is: ++ * 0 <= p <=63 ++ * an int value ++ */ ++ t_info.quality = av_clip(avc_context->global_quality / (float)FF_QP2LAMBDA, 0, 10) * 6.3; ++ t_info.target_bitrate = 0; ++ } else { ++ t_info.target_bitrate = avc_context->bit_rate; ++ t_info.quality = 0; ++ } ++ + /* Now initialise libtheora */ + if (theora_encode_init( &(h->t_state), &t_info ) != 0) { + av_log(avc_context, AV_LOG_ERROR, "theora_encode_init failed\n"); --- ffmpeg-extra-0.5.9.orig/debian/patches/CVE-2012-2783.patch +++ ffmpeg-extra-0.5.9/debian/patches/CVE-2012-2783.patch @@ -0,0 +1,36 @@ +From 211badf0689d3972c08790c6776d99a1b12cb935 Mon Sep 17 00:00:00 2001 +From: Luca Barbato +Date: Fri, 14 Dec 2012 09:55:04 +0100 +Subject: [PATCH] vp56: release frames on error + +Fixes CVE-2012-2783 + +CC: libav-stable@libav.org + +(cherry picked from commit f33b5ba63eee96c9d1c7f0e568169cb0c3694238) + +Signed-off-by: Reinhard Tartler +--- + libavcodec/vp56.c | 8 +++++++- + 1 files changed, 7 insertions(+), 1 deletions(-) + +Index: ffmpeg-0.5.9/libavcodec/vp56.c +=================================================================== +--- ffmpeg-0.5.9.orig/libavcodec/vp56.c 2012-06-09 06:15:33.000000000 -0400 ++++ ffmpeg-0.5.9/libavcodec/vp56.c 2013-01-24 13:43:39.475228513 -0500 +@@ -516,8 +516,14 @@ + s->modelp = &s->models[is_alpha]; + + res = s->parse_header(s, buf, remaining_buf_size, &golden_frame); +- if (!res) ++ if (!res) { ++ int i; ++ for (i = 0; i < 4; i++) { ++ if (s->frames[i].data[0]) ++ avctx->release_buffer(avctx, &s->frames[i]); ++ } + return -1; ++ } + + if (!is_alpha) { + p->reference = 1; --- ffmpeg-extra-0.5.9.orig/debian/patches/fix-dv-seeking.patch +++ ffmpeg-extra-0.5.9/debian/patches/fix-dv-seeking.patch @@ -0,0 +1,67 @@ +Author: Reinhard Tartler + +fix seeking in DIF (DV) movies, closes Bug: #540424 + +Thanks to Dan Dennedy for identifying the patch! + +------------------------------------------------------------------------ +r19192 | bcoudurier | 2009-06-15 00:34:28 +0200 (Mo, 15. Jun 2009) | 1 line + +check if frame size matches old sys and assumes corrupted input, fixes #1192 +------------------------------------------------------------------------ + +--- a/libavcodec/dv.c ++++ b/libavcodec/dv.c +@@ -1115,7 +1115,7 @@ static int dvvideo_decode_frame(AVCodecC + { + DVVideoContext *s = avctx->priv_data; + +- s->sys = dv_frame_profile(buf); ++ s->sys = dv_frame_profile(s->sys, buf, buf_size); + if (!s->sys || buf_size < s->sys->frame_size || dv_init_dynamic_tables(s->sys)) + return -1; /* NOTE: we only accept several full frames */ + +--- a/libavcodec/dvdata.h ++++ b/libavcodec/dvdata.h +@@ -698,7 +698,9 @@ enum dv_pack_type { + */ + #define DV_MAX_BPM 8 + +-static inline const DVprofile* dv_frame_profile(const uint8_t* frame) ++static inline ++const DVprofile* dv_frame_profile(const DVprofile *sys, ++ const uint8_t* frame, unsigned buf_size) + { + int i; + +@@ -715,6 +717,10 @@ static inline const DVprofile* dv_frame_ + if (dsf == dv_profiles[i].dsf && stype == dv_profiles[i].video_stype) + return &dv_profiles[i]; + ++ /* check if old sys matches and assumes corrupted input */ ++ if (sys && buf_size == sys->frame_size) ++ return sys; ++ + return NULL; + } + +--- a/libavformat/dv.c ++++ b/libavformat/dv.c +@@ -322,7 +322,7 @@ int dv_produce_packet(DVDemuxContext *c, + uint8_t *ppcm[4] = {0}; + + if (buf_size < DV_PROFILE_BYTES || +- !(c->sys = dv_frame_profile(buf)) || ++ !(c->sys = dv_frame_profile(c->sys, buf, buf_size)) || + buf_size < c->sys->frame_size) { + return -1; /* Broken frame, or not enough data */ + } +@@ -421,7 +421,7 @@ static int dv_read_header(AVFormatContex + url_fseek(s->pb, -DV_PROFILE_BYTES, SEEK_CUR) < 0) + return AVERROR(EIO); + +- c->dv_demux->sys = dv_frame_profile(c->buf); ++ c->dv_demux->sys = dv_frame_profile(c->dv_demux->sys, c->buf, DV_PROFILE_BYTES); + if (!c->dv_demux->sys) { + av_log(s, AV_LOG_ERROR, "Can't determine profile of DV input stream.\n"); + return -1; --- ffmpeg-extra-0.5.9.orig/debian/patches/use-normal-check_func-test-for-math-functions.patch +++ ffmpeg-extra-0.5.9/debian/patches/use-normal-check_func-test-for-math-functions.patch @@ -0,0 +1,48 @@ +From: mru +Date: Wed, 15 Jul 2009 08:22:06 +0000 (+0000) +Subject: Use normal check_func test for math functions +X-Git-Url: http://git.ffmpeg.org/?p=ffmpeg;a=commitdiff_plain;h=9899a2f3353c19bebf6d1e94eaa526a2a1fece95 + +Use normal check_func test for math functions + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19434 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b + +This patch avoid a funny FTBFS on armel machines that do not have a FPU: +The check_exec function tries to execute the binary to check for their +functioning. On armel, llrint (and only that function) is implemented +using FPU instruction, which makes this test fail and causes HAVE_LLRINT +to be not defined. Since it is defined in math.h anyways, the build fails with: + +gcc -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I. -I"/tmp/buildd/ffmpeg-0.5+svn20090706" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -I/tmp/buildd/ffmpeg-0.5+svn20090706/debian/include -mfpu=neon -mfloat-abi=softfp -fPIC -DPIC -std=c99 -fomit-frame-pointer -march=armv7-a -pthread -I/usr/include/dirac -I/usr/include/schroedinger-1.0 -I/usr/include/liboil-0.3 -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wtype-limits -Wundef -O3 -fno-math-errno -fno-signed-zeros -c -o libavfilter/allfilters.o /tmp/buildd/ffmpeg-0.5+svn20090706/libavfilter/allfilters.c +In file included from /tmp/buildd/ffmpeg-0.5+svn20090706/libavutil/common.h:283, + from /tmp/buildd/ffmpeg-0.5+svn20090706/libavutil/avutil.h:56, + from /tmp/buildd/ffmpeg-0.5+svn20090706/libavcodec/avcodec.h:30, + from /tmp/buildd/ffmpeg-0.5+svn20090706/libavfilter/avfilter.h:38, + from /tmp/buildd/ffmpeg-0.5+svn20090706/libavfilter/allfilters.c:22: +/tmp/buildd/ffmpeg-0.5+svn20090706/libavutil/internal.h:276: error: static declaration of 'llrint' follows non-static declaration +make[1]: *** [libavfilter/allfilters.o] Error 1 + +--- + +--- a/configure ++++ b/configure +@@ -1984,13 +1984,12 @@ done + + check_lib math.h sin -lm + +-# test for C99 functions in math.h +-for func in llrint lrint lrintf round roundf truncf; do +- check_exec < +-int main(void) { return ($func(3.999f) > 0)?0:1; } +-EOF +-done ++check_func llrint ++check_func lrint ++check_func lrintf ++check_func round ++check_func roundf ++check_func truncf + + # these are off by default, so fail if requested and not available + enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32 --- ffmpeg-extra-0.5.9.orig/debian/patches/901-fix-misc-typos.patch +++ ffmpeg-extra-0.5.9/debian/patches/901-fix-misc-typos.patch @@ -0,0 +1,45 @@ +From: stefano +Date: Wed, 27 Jan 2010 00:31:52 +0000 (+0000) +Subject: Fix misc typos, patch by +X-Git-Url: http://git.ffmpeg.org/?p=ffmpeg;a=commitdiff_plain;h=ba4f92903641af2f11d47d1ee845a62abfd5dd38 + +Fix misc typos, patch by +Fabian Greffrath base64_decode(PGZhYmlhbkBncmVmZnJhdGguY29tPg==). + + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@21473 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + +--- ffmpeg.orig/libavcodec/mjpegdec.c ++++ ffmpeg/libavcodec/mjpegdec.c +@@ -967,7 +967,7 @@ + } + + if(s->avctx->debug & FF_DEBUG_PICT_INFO) +- av_log(s->avctx, AV_LOG_DEBUG, "%s %s p:%d >>:%d ilv:%d bits:%d %s\n", s->lossless ? "lossless" : "sequencial DCT", s->rgb ? "RGB" : "", ++ av_log(s->avctx, AV_LOG_DEBUG, "%s %s p:%d >>:%d ilv:%d bits:%d %s\n", s->lossless ? "lossless" : "sequential DCT", s->rgb ? "RGB" : "", + predictor, point_transform, ilv, s->bits, + s->pegasus_rct ? "PRCT" : (s->rct ? "RCT" : "")); + +--- ffmpeg.orig/libavcodec/opt.c ++++ ffmpeg/libavcodec/opt.c +@@ -424,7 +424,7 @@ + break; + case FF_OPT_TYPE_INT64: + if((double)(opt->default_val+0.6) == opt->default_val) +- av_log(s, AV_LOG_DEBUG, "loss of precission in default of %s\n", opt->name); ++ av_log(s, AV_LOG_DEBUG, "loss of precision in default of %s\n", opt->name); + av_set_int(s, opt->name, opt->default_val); + break; + case FF_OPT_TYPE_FLOAT: { +--- ffmpeg.orig/libavcodec/options.c ++++ ffmpeg/libavcodec/options.c +@@ -156,7 +156,7 @@ + {"very", "strictly conform to a older more strict version of the spec or reference software", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_VERY_STRICT, INT_MIN, INT_MAX, V|D|E, "strict"}, + {"strict", "strictly conform to all the things in the spec no matter what consequences", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_STRICT, INT_MIN, INT_MAX, V|D|E, "strict"}, + {"normal", NULL, 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_NORMAL, INT_MIN, INT_MAX, V|D|E, "strict"}, +-{"inofficial", "allow inofficial extensions", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_INOFFICIAL, INT_MIN, INT_MAX, V|D|E, "strict"}, ++{"inofficial", "allow unofficial extensions", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_INOFFICIAL, INT_MIN, INT_MAX, V|D|E, "strict"}, + {"experimental", "allow non standardized experimental things", 0, FF_OPT_TYPE_CONST, FF_COMPLIANCE_EXPERIMENTAL, INT_MIN, INT_MAX, V|D|E, "strict"}, + {"b_qoffset", "qp offset between P and B frames", OFFSET(b_quant_offset), FF_OPT_TYPE_FLOAT, 1.25, -FLT_MAX, FLT_MAX, V|E}, + {"er", "set error detection aggressivity", OFFSET(error_recognition), FF_OPT_TYPE_INT, FF_ER_CAREFUL, INT_MIN, INT_MAX, A|V|D, "er"}, --- ffmpeg-extra-0.5.9.orig/debian/patches/increase-VOFW-on-x86.patch +++ ffmpeg-extra-0.5.9/debian/patches/increase-VOFW-on-x86.patch @@ -0,0 +1,30 @@ +From: michael +Date: Tue, 5 May 2009 01:34:16 +0000 (+0000) +Subject: Change VOFW for x86 to 5120, it allows larger images to be scaled and was +X-Git-Url: http://git.ffmpeg.org/?p=libswscale;a=commitdiff_plain;h=c9d08ac2f27b3c7a18db9d2ef417673f77be405f + +Change VOFW for x86 to 5120, it allows larger images to be scaled and was +not slower. Other archs are not changed as the larger VOFW was slower on PPC. + + +git-svn-id: file:///var/local/repositories/mplayer/trunk/libswscale@29256 b3059339-0415-0410-9bf9-f77b7e298cf2 +--- + +diff --git a/swscale_internal.h b/swscale_internal.h +index 3995887..eb11166 100644 +--- a/libswscale/swscale_internal.h ++++ b/libswscale/swscale_internal.h +@@ -33,7 +33,12 @@ + + #define MAX_FILTER_SIZE 256 + +-#define VOFW 2048 ++#if ARCH_X86 ++#define VOFW 5120 ++#else ++#define VOFW 2048 // faster on PPC and not tested on others ++#endif ++ + #define VOF (VOFW*2) + + #ifdef WORDS_BIGENDIAN --- ffmpeg-extra-0.5.9.orig/debian/patches/CVE-2012-2801.patch +++ ffmpeg-extra-0.5.9/debian/patches/CVE-2012-2801.patch @@ -0,0 +1,29 @@ +From 85f477935cd6b34e6ec2716b20e15ce748277a89 Mon Sep 17 00:00:00 2001 +From: Michael Niedermayer +Date: Fri, 20 Apr 2012 17:42:18 +0200 +Subject: [PATCH] avsdec: Set dimensions instead of relying on the demuxer. + +The decode function assumes that the video will have those dimensions. + +Fixes CVE-2012-2801 + +CC:libav-stable@libav.org + +Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind +Signed-off-by: Anton Khirnov +--- + libavcodec/avs.c | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +Index: ffmpeg-0.5.9/libavcodec/avs.c +=================================================================== +--- ffmpeg-0.5.9.orig/libavcodec/avs.c 2012-06-09 06:15:33.000000000 -0400 ++++ ffmpeg-0.5.9/libavcodec/avs.c 2012-12-18 11:58:26.354023237 -0500 +@@ -145,6 +145,7 @@ + static av_cold int avs_decode_init(AVCodecContext * avctx) + { + avctx->pix_fmt = PIX_FMT_PAL8; ++ avcodec_set_dimensions(avctx, 318, 198); + return 0; + } + --- ffmpeg-extra-0.5.9.orig/debian/patches/series +++ ffmpeg-extra-0.5.9/debian/patches/series @@ -0,0 +1,38 @@ +fix-qtrle-encoding-when-previous-frame-linesize.patch +fix-dv-seeking.patch +fix-constant-quant-encoding.patch +increase-VOFW-on-x86.patch +use-normal-check_func-test-for-math-functions.patch +900_doxyfile +901-fix-misc-typos.patch +# fpic-ftbfs-fix.patch +# fpic-libpostproc-fix.patch +# fpic-libswscale-fix.patch + +# NEON backport +neon/0001-ARM-NEON-optimised-add_pixels_clamped.patch +neon/0002-ARM-NEON-optimized-put_signed_pixels_clamped.patch +neon/0003-Add-guaranteed-alignment-for-loading-dest-pixels-in-.patch +neon/0004-Reorganise-intreadwrite.h.patch +neon/0005-ARM-asm-for-AV_RN.patch +neon/0006-ARM-NEON-put_pixels_clamped.patch +neon/0007-ARM-Use-fewer-register-in-NEON-put_pixels-_y2-and-_x.patch +neon/0008-ARM-NEON-VP3-Loop-Filter.patch +neon/0009-ARM-actually-add-VP3-loop-filter.patch +neon/0010-ARM-add-some-PLD-in-NEON-IDCT.patch +neon/0011-ARM-slightly-faster-NEON-H264-horizontal-loop-filter.patch +neon/0012-ARM-enable-fast_unaligned-when-cpu-armv-67-is-specif.patch +neon/0013-ARM-NEON-VP3-IDCT.patch +neon/0014-ARM-NEON-optimised-vorbis_inverse_coupling.patch +neon/0015-ARM-handle-VFP-register-arguments-in-ff_vector_fmul_.patch +neon/0016-ARM-NEON-optimised-FFT-and-MDCT.patch +neon/0017-ARM-faster-NEON-IMDCT.patch +neon/0018-Prepare-for-optimised-forward-MDCT-implementations.patch +neon/0019-ARM-NEON-optimised-MDCT.patch +neon/0020-ARM-remove-unnecessary-.fpu-neon-directives.patch +neon/0021-ARM-check-for-VFP-register-arguments.patch +CVE-2012-2777-2784.patch +CVE-2012-2788.patch +CVE-2012-2801.patch +CVE-2012-2783.patch +CVE-2012-2803.patch --- ffmpeg-extra-0.5.9.orig/debian/patches/CVE-2012-2788.patch +++ ffmpeg-extra-0.5.9/debian/patches/CVE-2012-2788.patch @@ -0,0 +1,23 @@ +From 0af49a63c7f87876486ab09482d5b26b95abce60 Mon Sep 17 00:00:00 2001 +From: Anton Khirnov +Date: Fri, 28 Sep 2012 15:42:29 +0200 +Subject: [PATCH] avidec: use actually read size instead of requested size + +Fixes CVE-2012-2788 +--- + libavformat/avidec.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: ffmpeg-0.5.9/libavformat/avidec.c +=================================================================== +--- ffmpeg-0.5.9.orig/libavformat/avidec.c 2012-06-09 06:15:33.000000000 -0400 ++++ ffmpeg-0.5.9/libavformat/avidec.c 2012-12-18 10:48:29.577915776 -0500 +@@ -780,7 +780,7 @@ + else + ast->frame_offset++; + } +- ast->remaining -= size; ++ ast->remaining -= err; + if(!ast->remaining){ + avi->stream_index= -1; + ast->packet_size= 0; --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0006-ARM-NEON-put_pixels_clamped.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0006-ARM-NEON-put_pixels_clamped.patch @@ -0,0 +1,69 @@ +From 9744978dd7b9ca9dda0846fa82faf6fa264a52a7 Mon Sep 17 00:00:00 2001 +From: conrad +Date: Wed, 29 Apr 2009 11:31:43 +0000 +Subject: [PATCH 06/27] ARM: NEON put_pixels_clamped + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18712 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon.c | 2 ++ + libavcodec/arm/dsputil_neon_s.S | 24 ++++++++++++++++++++++++ + 2 files changed, 26 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c +index 37425a3..9b95130 100644 +--- a/libavcodec/arm/dsputil_neon.c ++++ b/libavcodec/arm/dsputil_neon.c +@@ -42,6 +42,7 @@ void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); + void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int); + + void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); ++void ff_put_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); + void ff_put_signed_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); + + void ff_put_h264_qpel16_mc00_neon(uint8_t *, uint8_t *, int); +@@ -180,6 +181,7 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) + c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon; + + c->add_pixels_clamped = ff_add_pixels_clamped_neon; ++ c->put_pixels_clamped = ff_put_pixels_clamped_neon; + c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_neon; + + c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon; +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index f16293d..a55e05f 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -273,6 +273,30 @@ function ff_put_h264_qpel8_mc00_neon, export=1 + pixfunc2 put_ pixels8_y2, _no_rnd, vhadd.u8 + pixfunc2 put_ pixels8_xy2, _no_rnd, vshrn.u16, 1 + ++function ff_put_pixels_clamped_neon, export=1 ++ vld1.64 {d16-d19}, [r0,:128]! ++ vqmovun.s16 d0, q8 ++ vld1.64 {d20-d23}, [r0,:128]! ++ vqmovun.s16 d1, q9 ++ vld1.64 {d24-d27}, [r0,:128]! ++ vqmovun.s16 d2, q10 ++ vld1.64 {d28-d31}, [r0,:128]! ++ vqmovun.s16 d3, q11 ++ vst1.64 {d0}, [r1,:64], r2 ++ vqmovun.s16 d4, q12 ++ vst1.64 {d1}, [r1,:64], r2 ++ vqmovun.s16 d5, q13 ++ vst1.64 {d2}, [r1,:64], r2 ++ vqmovun.s16 d6, q14 ++ vst1.64 {d3}, [r1,:64], r2 ++ vqmovun.s16 d7, q15 ++ vst1.64 {d4}, [r1,:64], r2 ++ vst1.64 {d5}, [r1,:64], r2 ++ vst1.64 {d6}, [r1,:64], r2 ++ vst1.64 {d7}, [r1,:64], r2 ++ bx lr ++ .endfunc ++ + function ff_put_signed_pixels_clamped_neon, export=1 + vmov.u8 d31, #128 + vld1.64 {d16-d17}, [r0,:128]! +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0019-ARM-NEON-optimised-MDCT.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0019-ARM-NEON-optimised-MDCT.patch @@ -0,0 +1,207 @@ +From 2b3356ebb1f7b4b69d922e0bdfc9f5e631cf4793 Mon Sep 17 00:00:00 2001 +From: mru +Date: Fri, 11 Sep 2009 02:24:22 +0000 +Subject: [PATCH 19/27] ARM: NEON optimised MDCT + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19819 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/mdct_neon.S | 160 ++++++++++++++++++++++++++++++++++++++++++++ + libavcodec/dsputil.h | 1 + + libavcodec/fft.c | 1 + + 3 files changed, 162 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/arm/mdct_neon.S b/libavcodec/arm/mdct_neon.S +index d84eccd..26ac199 100644 +--- a/libavcodec/arm/mdct_neon.S ++++ b/libavcodec/arm/mdct_neon.S +@@ -164,3 +164,163 @@ function ff_imdct_calc_neon, export=1 + + pop {r4-r6,pc} + .endfunc ++ ++function ff_mdct_calc_neon, export=1 ++ push {r4-r10,lr} ++ ++ mov r12, #1 ++ ldr lr, [r0, #4] @ nbits ++ ldr r4, [r0, #8] @ tcos ++ ldr r5, [r0, #12] @ tsin ++ ldr r3, [r0, #24] @ revtab ++ lsl lr, r12, lr @ n = 1 << nbits ++ add r7, r2, lr @ in4u ++ sub r9, r7, #16 @ in4d ++ add r2, r7, lr, lsl #1 @ in3u ++ add r8, r9, lr, lsl #1 @ in3d ++ mov r12, #-16 ++ ++ vld2.32 {d16,d18},[r9,:128],r12 @ x,x in4d1,in4d0 ++ vld2.32 {d17,d19},[r8,:128],r12 @ x,x in3d1,in3d0 ++ vld2.32 {d20,d21},[r7,:128]! @ in4u0,in4u1 x,x ++ vrev64.32 q9, q9 @ in4d0,in4d1 in3d0,in3d1 ++ vld2.32 {d0, d1}, [r2,:128]! @ in3u0,in3u1 x,x ++ vsub.f32 d20, d18, d20 @ in4d-in4u I ++ vld1.32 {d2}, [r4,:64]! @ c0,c1 ++ vadd.f32 d0, d0, d19 @ in3u+in3d -R ++ vld1.32 {d3}, [r5,:64]! @ s0,s1 ++1: ++ vmul.f32 d7, d20, d3 @ I*s ++ vmul.f32 d6, d0, d2 @ -R*c ++ ldr r6, [r3], #4 ++ vmul.f32 d4, d0, d3 @ -R*s ++ vmul.f32 d5, d20, d2 @ I*c ++ subs lr, lr, #16 ++ vsub.f32 d6, d6, d7 @ -R*c-I*s ++ vadd.f32 d7, d4, d5 @ -R*s+I*c ++ uxtah r10, r1, r6, ror #16 ++ uxtah r6, r1, r6 ++ beq 1f ++ vld2.32 {d16,d18},[r9,:128],r12 @ x,x in4d1,in4d0 ++ vld2.32 {d17,d19},[r8,:128],r12 @ x,x in3d1,in3d0 ++ vneg.f32 d7, d7 @ R*s-I*c ++ vld2.32 {d20,d21},[r7,:128]! @ in4u0,in4u1 x,x ++ vrev64.32 q9, q9 @ in4d0,in4d1 in3d0,in3d1 ++ vld2.32 {d0, d1}, [r2,:128]! @ in3u0,in3u1 x,x ++ vsub.f32 d20, d18, d20 @ in4d-in4u I ++ vld1.32 {d2}, [r4,:64]! @ c0,c1 ++ vadd.f32 d0, d0, d19 @ in3u+in3d -R ++ vld1.32 {d3}, [r5,:64]! @ s0,s1 ++ vst2.32 {d6[0],d7[0]}, [r6,:64] ++ vst2.32 {d6[1],d7[1]}, [r10,:64] ++ b 1b ++1: ++ vneg.f32 d7, d7 @ R*s-I*c ++ vst2.32 {d6[0],d7[0]}, [r6,:64] ++ vst2.32 {d6[1],d7[1]}, [r10,:64] ++ ++ mov r12, #1 ++ ldr lr, [r0, #4] @ nbits ++ lsl lr, r12, lr @ n = 1 << nbits ++ sub r8, r2, #16 @ in1d ++ add r2, r9, #16 @ in0u ++ sub r9, r7, #16 @ in2d ++ mov r12, #-16 ++ ++ vld2.32 {d16,d18},[r9,:128],r12 @ x,x in2d1,in2d0 ++ vld2.32 {d17,d19},[r8,:128],r12 @ x,x in1d1,in1d0 ++ vld2.32 {d20,d21},[r7,:128]! @ in2u0,in2u1 x,x ++ vrev64.32 q9, q9 @ in2d0,in2d1 in1d0,in1d1 ++ vld2.32 {d0, d1}, [r2,:128]! @ in0u0,in0u1 x,x ++ vsub.f32 d0, d0, d18 @ in0u-in2d R ++ vld1.32 {d2}, [r4,:64]! @ c0,c1 ++ vadd.f32 d20, d20, d19 @ in2u+in1d -I ++ vld1.32 {d3}, [r5,:64]! @ s0,s1 ++1: ++ vmul.f32 d6, d0, d2 @ R*c ++ vmul.f32 d7, d20, d3 @ -I*s ++ ldr r6, [r3], #4 ++ vmul.f32 d4, d0, d3 @ R*s ++ vmul.f32 d5, d20, d2 @ I*c ++ subs lr, lr, #16 ++ vsub.f32 d6, d7, d6 @ I*s-R*c ++ vadd.f32 d7, d4, d5 @ R*s-I*c ++ uxtah r10, r1, r6, ror #16 ++ uxtah r6, r1, r6 ++ beq 1f ++ vld2.32 {d16,d18},[r9,:128],r12 @ x,x in2d1,in2d0 ++ vld2.32 {d17,d19},[r8,:128],r12 @ x,x in1d1,in1d0 ++ vld2.32 {d20,d21},[r7,:128]! @ in2u0,in2u1 x,x ++ vrev64.32 q9, q9 @ in2d0,in2d1 in1d0,in1d1 ++ vld2.32 {d0, d1}, [r2,:128]! @ in0u0,in0u1 x,x ++ vsub.f32 d0, d0, d18 @ in0u-in2d R ++ vld1.32 {d2}, [r4,:64]! @ c0,c1 ++ vadd.f32 d20, d20, d19 @ in2u+in1d -I ++ vld1.32 {d3}, [r5,:64]! @ s0,s1 ++ vst2.32 {d6[0],d7[0]}, [r6,:64] ++ vst2.32 {d6[1],d7[1]}, [r10,:64] ++ b 1b ++1: ++ vst2.32 {d6[0],d7[0]}, [r6,:64] ++ vst2.32 {d6[1],d7[1]}, [r10,:64] ++ ++ mov r4, r0 ++ mov r6, r1 ++ add r0, r0, #16 ++ bl ff_fft_calc_neon ++ ++ mov r12, #1 ++ ldr lr, [r4, #4] @ nbits ++ ldr r5, [r4, #12] @ tsin ++ ldr r4, [r4, #8] @ tcos ++ lsl r12, r12, lr @ n = 1 << nbits ++ lsr lr, r12, #3 @ n8 = n >> 3 ++ ++ add r4, r4, lr, lsl #2 ++ add r5, r5, lr, lsl #2 ++ add r6, r6, lr, lsl #3 ++ sub r1, r4, #8 ++ sub r2, r5, #8 ++ sub r3, r6, #16 ++ ++ mov r7, #-16 ++ mov r12, #-8 ++ mov r8, r6 ++ mov r0, r3 ++ ++ vld2.32 {d0-d1}, [r3,:128], r7 @ d0 =r1,i1 d1 =r0,i0 ++ vld2.32 {d20-d21},[r6,:128]! @ d20=r2,i2 d21=r3,i3 ++ vld1.32 {d18}, [r2,:64], r12 @ d18=s1,s0 ++1: ++ subs lr, lr, #2 ++ vmul.f32 d7, d0, d18 @ r1*s1,r0*s0 ++ vld1.32 {d19}, [r5,:64]! @ s2,s3 ++ vmul.f32 d4, d1, d18 @ i1*s1,i0*s0 ++ vld1.32 {d16}, [r1,:64], r12 @ c1,c0 ++ vmul.f32 d5, d21, d19 @ i2*s2,i3*s3 ++ vld1.32 {d17}, [r4,:64]! @ c2,c3 ++ vmul.f32 d6, d20, d19 @ r2*s2,r3*s3 ++ vmul.f32 d24, d0, d16 @ r1*c1,r0*c0 ++ vmul.f32 d25, d20, d17 @ r2*c2,r3*c3 ++ vmul.f32 d22, d21, d17 @ i2*c2,i3*c3 ++ vmul.f32 d23, d1, d16 @ i1*c1,i0*c0 ++ vadd.f32 d4, d4, d24 @ i1*s1+r1*c1,i0*s0+r0*c0 ++ vadd.f32 d5, d5, d25 @ i2*s2+r2*c2,i3*s3+r3*c3 ++ vsub.f32 d6, d22, d6 @ i2*c2-r2*s2,i3*c3-r3*s3 ++ vsub.f32 d7, d23, d7 @ i1*c1-r1*s1,i0*c0-r0*s0 ++ vneg.f32 q2, q2 ++ beq 1f ++ vld2.32 {d0-d1}, [r3,:128], r7 ++ vld2.32 {d20-d21},[r6,:128]! ++ vld1.32 {d18}, [r2,:64], r12 ++ vrev64.32 q3, q3 ++ vst2.32 {d4,d6}, [r0,:128], r7 ++ vst2.32 {d5,d7}, [r8,:128]! ++ b 1b ++1: ++ vrev64.32 q3, q3 ++ vst2.32 {d4,d6}, [r0,:128] ++ vst2.32 {d5,d7}, [r8,:128] ++ ++ pop {r4-r10,pc} ++.endfunc +diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h +index e299ade..f89013c 100644 +--- a/libavcodec/dsputil.h ++++ b/libavcodec/dsputil.h +@@ -778,6 +778,7 @@ void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input + void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_calc_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_half_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); ++void ff_mdct_calc_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_mdct_end(MDCTContext *s); + + /* Real Discrete Fourier Transform */ +diff --git a/libavcodec/fft.c b/libavcodec/fft.c +index 655acd3..69feb44 100644 +--- a/libavcodec/fft.c ++++ b/libavcodec/fft.c +@@ -119,6 +119,7 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) + s->fft_calc = ff_fft_calc_neon; + s->imdct_calc = ff_imdct_calc_neon; + s->imdct_half = ff_imdct_half_neon; ++ s->mdct_calc = ff_mdct_calc_neon; + revtab_shift = 3; + #endif + +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0016-ARM-NEON-optimised-FFT-and-MDCT.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0016-ARM-NEON-optimised-FFT-and-MDCT.patch @@ -0,0 +1,664 @@ +From 2d316e271f8837e0888b664ae45f6174f827a982 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Lo=C3=AFc=20Minier?= +Date: Sat, 10 Oct 2009 12:58:17 +0200 +Subject: [PATCH 16/27] ARM: NEON optimised FFT and MDCT + +Vorbis and AC3 ~3x faster. + +Parts by Naotoshi Nojiri, naonoj gmail + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19806 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b + +Conflicts: + + libavcodec/Makefile +--- + libavcodec/Makefile | 5 + + libavcodec/arm/fft_neon.S | 369 ++++++++++++++++++++++++++++++++++++++++++++ + libavcodec/arm/mdct_neon.S | 178 +++++++++++++++++++++ + libavcodec/dsputil.h | 4 + + libavcodec/fft.c | 10 +- + 5 files changed, 565 insertions(+), 1 deletions(-) + create mode 100644 libavcodec/arm/fft_neon.S + create mode 100644 libavcodec/arm/mdct_neon.S + +diff --git a/libavcodec/Makefile b/libavcodec/Makefile +index a213309..02e0e8a 100644 +--- a/libavcodec/Makefile ++++ b/libavcodec/Makefile +@@ -480,6 +480,11 @@ OBJS-$(HAVE_IWMMXT) += arm/dsputil_iwmmxt.o \ + arm/mpegvideo_iwmmxt.o \ + + NEON-OBJS-$(CONFIG_THEORA_DECODER) += arm/vp3dsp_neon.o ++ ++NEON-OBJS-$(CONFIG_FFT) += arm/fft_neon.o \ ++ ++NEON-OBJS-$(CONFIG_MDCT) += arm/mdct_neon.o \ ++ + NEON-OBJS-$(CONFIG_VP3_DECODER) += arm/vp3dsp_neon.o + + OBJS-$(HAVE_NEON) += arm/dsputil_neon.o \ +diff --git a/libavcodec/arm/fft_neon.S b/libavcodec/arm/fft_neon.S +new file mode 100644 +index 0000000..6ed5789 +--- /dev/null ++++ b/libavcodec/arm/fft_neon.S +@@ -0,0 +1,369 @@ ++/* ++ * ARM NEON optimised FFT ++ * ++ * Copyright (c) 2009 Mans Rullgard ++ * Copyright (c) 2009 Naotoshi Nojiri ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "asm.S" ++ ++#define M_SQRT1_2 0.70710678118654752440 ++ ++ .text ++ ++function fft4_neon ++ vld1.32 {d0-d3}, [r0,:128] ++ ++ vext.32 q8, q1, q1, #1 @ i2,r3 d3=i3,r2 ++ vsub.f32 d6, d0, d1 @ r0-r1,i0-i1 ++ vsub.f32 d7, d16, d17 @ r3-r2,i2-i3 ++ vadd.f32 d4, d0, d1 @ r0+r1,i0+i1 ++ vadd.f32 d5, d2, d3 @ i2+i3,r2+r3 ++ vadd.f32 d1, d6, d7 ++ vsub.f32 d3, d6, d7 ++ vadd.f32 d0, d4, d5 ++ vsub.f32 d2, d4, d5 ++ ++ vst1.32 {d0-d3}, [r0,:128] ++ ++ bx lr ++.endfunc ++ ++function fft8_neon ++ mov r1, r0 ++ vld1.32 {d0-d3}, [r1,:128]! ++ vld1.32 {d16-d19}, [r1,:128] ++ ++ movw r2, #0x04f3 @ sqrt(1/2) ++ movt r2, #0x3f35 ++ eor r3, r2, #1<<31 ++ vdup.32 d31, r2 ++ ++ vext.32 q11, q1, q1, #1 @ i2,r3,i3,r2 ++ vadd.f32 d4, d16, d17 @ r4+r5,i4+i5 ++ vmov d28, r3, r2 ++ vadd.f32 d5, d18, d19 @ r6+r7,i6+i7 ++ vsub.f32 d17, d16, d17 @ r4-r5,i4-i5 ++ vsub.f32 d19, d18, d19 @ r6-r7,i6-i7 ++ vrev64.32 d29, d28 ++ vadd.f32 d20, d0, d1 @ r0+r1,i0+i1 ++ vadd.f32 d21, d2, d3 @ r2+r3,i2+i3 ++ vmul.f32 d26, d17, d28 @ -a2r*w,a2i*w ++ vext.32 q3, q2, q2, #1 ++ vmul.f32 d27, d19, d29 @ a3r*w,-a3i*w ++ vsub.f32 d23, d22, d23 @ i2-i3,r3-r2 ++ vsub.f32 d22, d0, d1 @ r0-r1,i0-i1 ++ vmul.f32 d24, d17, d31 @ a2r*w,a2i*w ++ vmul.f32 d25, d19, d31 @ a3r*w,a3i*w ++ vadd.f32 d0, d20, d21 ++ vsub.f32 d2, d20, d21 ++ vadd.f32 d1, d22, d23 ++ vrev64.32 q13, q13 ++ vsub.f32 d3, d22, d23 ++ vsub.f32 d6, d6, d7 ++ vadd.f32 d24, d24, d26 @ a2r+a2i,a2i-a2r t1,t2 ++ vadd.f32 d25, d25, d27 @ a3r-a3i,a3i+a3r t5,t6 ++ vadd.f32 d7, d4, d5 ++ vsub.f32 d18, d2, d6 ++ vext.32 q13, q12, q12, #1 ++ vadd.f32 d2, d2, d6 ++ vsub.f32 d16, d0, d7 ++ vadd.f32 d5, d25, d24 ++ vsub.f32 d4, d26, d27 ++ vadd.f32 d0, d0, d7 ++ vsub.f32 d17, d1, d5 ++ vsub.f32 d19, d3, d4 ++ vadd.f32 d3, d3, d4 ++ vadd.f32 d1, d1, d5 ++ ++ vst1.32 {d16-d19}, [r1,:128] ++ vst1.32 {d0-d3}, [r0,:128] ++ ++ bx lr ++.endfunc ++ ++function fft16_neon ++ movrel r1, mppm ++ vld1.32 {d16-d19}, [r0,:128]! @ q8{r0,i0,r1,i1} q9{r2,i2,r3,i3} ++ pld [r0, #32] ++ vld1.32 {d2-d3}, [r1,:128] ++ vext.32 q13, q9, q9, #1 ++ vld1.32 {d22-d25}, [r0,:128]! @ q11{r4,i4,r5,i5} q12{r6,i5,r7,i7} ++ vadd.f32 d4, d16, d17 ++ vsub.f32 d5, d16, d17 ++ vadd.f32 d18, d18, d19 ++ vsub.f32 d19, d26, d27 ++ ++ vadd.f32 d20, d22, d23 ++ vsub.f32 d22, d22, d23 ++ vsub.f32 d23, d24, d25 ++ vadd.f32 q8, q2, q9 @ {r0,i0,r1,i1} ++ vadd.f32 d21, d24, d25 ++ vmul.f32 d24, d22, d2 ++ vsub.f32 q9, q2, q9 @ {r2,i2,r3,i3} ++ vmul.f32 d25, d23, d3 ++ vuzp.32 d16, d17 @ {r0,r1,i0,i1} ++ vmul.f32 q1, q11, d2[1] ++ vuzp.32 d18, d19 @ {r2,r3,i2,i3} ++ vrev64.32 q12, q12 ++ vadd.f32 q11, q12, q1 @ {t1a,t2a,t5,t6} ++ vld1.32 {d24-d27}, [r0,:128]! @ q12{r8,i8,r9,i9} q13{r10,i10,r11,i11} ++ vzip.32 q10, q11 ++ vld1.32 {d28-d31}, [r0,:128] @ q14{r12,i12,r13,i13} q15{r14,i14,r15,i15} ++ vadd.f32 d0, d22, d20 ++ vadd.f32 d1, d21, d23 ++ vsub.f32 d2, d21, d23 ++ vsub.f32 d3, d22, d20 ++ sub r0, r0, #96 ++ vext.32 q13, q13, q13, #1 ++ vsub.f32 q10, q8, q0 @ {r4,r5,i4,i5} ++ vadd.f32 q8, q8, q0 @ {r0,r1,i0,i1} ++ vext.32 q15, q15, q15, #1 ++ vsub.f32 q11, q9, q1 @ {r6,r7,i6,i7} ++ vswp d25, d26 @ q12{r8,i8,i10,r11} q13{r9,i9,i11,r10} ++ vadd.f32 q9, q9, q1 @ {r2,r3,i2,i3} ++ vswp d29, d30 @ q14{r12,i12,i14,r15} q15{r13,i13,i15,r14} ++ vadd.f32 q0, q12, q13 @ {t1,t2,t5,t6} ++ vadd.f32 q1, q14, q15 @ {t1a,t2a,t5a,t6a} ++ movrel r2, ff_cos_16 ++ vsub.f32 q13, q12, q13 @ {t3,t4,t7,t8} ++ vrev64.32 d1, d1 ++ vsub.f32 q15, q14, q15 @ {t3a,t4a,t7a,t8a} ++ vrev64.32 d3, d3 ++ movrel r3, pmmp ++ vswp d1, d26 @ q0{t1,t2,t3,t4} q13{t6,t5,t7,t8} ++ vswp d3, d30 @ q1{t1a,t2a,t3a,t4a} q15{t6a,t5a,t7a,t8a} ++ vadd.f32 q12, q0, q13 @ {r8,i8,r9,i9} ++ vadd.f32 q14, q1, q15 @ {r12,i12,r13,i13} ++ vld1.32 {d4-d5}, [r2,:64] ++ vsub.f32 q13, q0, q13 @ {r10,i10,r11,i11} ++ vsub.f32 q15, q1, q15 @ {r14,i14,r15,i15} ++ vswp d25, d28 @ q12{r8,i8,r12,i12} q14{r9,i9,r13,i13} ++ vld1.32 {d6-d7}, [r3,:128] ++ vrev64.32 q1, q14 ++ vmul.f32 q14, q14, d4[1] ++ vmul.f32 q1, q1, q3 ++ vmla.f32 q14, q1, d5[1] @ {t1a,t2a,t5a,t6a} ++ vswp d27, d30 @ q13{r10,i10,r14,i14} q15{r11,i11,r15,i15} ++ vzip.32 q12, q14 ++ vadd.f32 d0, d28, d24 ++ vadd.f32 d1, d25, d29 ++ vsub.f32 d2, d25, d29 ++ vsub.f32 d3, d28, d24 ++ vsub.f32 q12, q8, q0 @ {r8,r9,i8,i9} ++ vadd.f32 q8, q8, q0 @ {r0,r1,i0,i1} ++ vsub.f32 q14, q10, q1 @ {r12,r13,i12,i13} ++ mov r1, #32 ++ vadd.f32 q10, q10, q1 @ {r4,r5,i4,i5} ++ vrev64.32 q0, q13 ++ vmul.f32 q13, q13, d5[0] ++ vrev64.32 q1, q15 ++ vmul.f32 q15, q15, d5[1] ++ vst2.32 {d16-d17},[r0,:128], r1 ++ vmul.f32 q0, q0, q3 ++ vst2.32 {d20-d21},[r0,:128], r1 ++ vmul.f32 q1, q1, q3 ++ vmla.f32 q13, q0, d5[0] @ {t1,t2,t5,t6} ++ vmla.f32 q15, q1, d4[1] @ {t1a,t2a,t5a,t6a} ++ vst2.32 {d24-d25},[r0,:128], r1 ++ vst2.32 {d28-d29},[r0,:128] ++ vzip.32 q13, q15 ++ sub r0, r0, #80 ++ vadd.f32 d0, d30, d26 ++ vadd.f32 d1, d27, d31 ++ vsub.f32 d2, d27, d31 ++ vsub.f32 d3, d30, d26 ++ vsub.f32 q13, q9, q0 @ {r10,r11,i10,i11} ++ vadd.f32 q9, q9, q0 @ {r2,r3,i2,i3} ++ vsub.f32 q15, q11, q1 @ {r14,r15,i14,i15} ++ vadd.f32 q11, q11, q1 @ {r6,r7,i6,i7} ++ vst2.32 {d18-d19},[r0,:128], r1 ++ vst2.32 {d22-d23},[r0,:128], r1 ++ vst2.32 {d26-d27},[r0,:128], r1 ++ vst2.32 {d30-d31},[r0,:128] ++ bx lr ++.endfunc ++ ++function fft_pass_neon ++ push {r4-r6,lr} ++ mov r6, r2 @ n ++ lsl r5, r2, #3 @ 2 * n * sizeof FFTSample ++ lsl r4, r2, #4 @ 2 * n * sizeof FFTComplex ++ lsl r2, r2, #5 @ 4 * n * sizeof FFTComplex ++ add r3, r2, r4 ++ add r4, r4, r0 @ &z[o1] ++ add r2, r2, r0 @ &z[o2] ++ add r3, r3, r0 @ &z[o3] ++ vld1.32 {d20-d21},[r2,:128] @ {z[o2],z[o2+1]} ++ movrel r12, pmmp ++ vld1.32 {d22-d23},[r3,:128] @ {z[o3],z[o3+1]} ++ add r5, r5, r1 @ wim ++ vld1.32 {d6-d7}, [r12,:128] @ pmmp ++ vswp d21, d22 ++ vld1.32 {d4}, [r1,:64]! @ {wre[0],wre[1]} ++ sub r5, r5, #4 @ wim-- ++ vrev64.32 q1, q11 ++ vmul.f32 q11, q11, d4[1] ++ vmul.f32 q1, q1, q3 ++ vld1.32 {d5[0]}, [r5,:32] @ d5[0] = wim[-1] ++ vmla.f32 q11, q1, d5[0] @ {t1a,t2a,t5a,t6a} ++ vld2.32 {d16-d17},[r0,:128] @ {z[0],z[1]} ++ sub r6, r6, #1 @ n-- ++ vld2.32 {d18-d19},[r4,:128] @ {z[o1],z[o1+1]} ++ vzip.32 q10, q11 ++ vadd.f32 d0, d22, d20 ++ vadd.f32 d1, d21, d23 ++ vsub.f32 d2, d21, d23 ++ vsub.f32 d3, d22, d20 ++ vsub.f32 q10, q8, q0 ++ vadd.f32 q8, q8, q0 ++ vsub.f32 q11, q9, q1 ++ vadd.f32 q9, q9, q1 ++ vst2.32 {d20-d21},[r2,:128]! @ {z[o2],z[o2+1]} ++ vst2.32 {d16-d17},[r0,:128]! @ {z[0],z[1]} ++ vst2.32 {d22-d23},[r3,:128]! @ {z[o3],z[o3+1]} ++ vst2.32 {d18-d19},[r4,:128]! @ {z[o1],z[o1+1]} ++ sub r5, r5, #8 @ wim -= 2 ++1: ++ vld1.32 {d20-d21},[r2,:128] @ {z[o2],z[o2+1]} ++ vld1.32 {d22-d23},[r3,:128] @ {z[o3],z[o3+1]} ++ vswp d21, d22 ++ vld1.32 {d4}, [r1]! @ {wre[0],wre[1]} ++ vrev64.32 q0, q10 ++ vmul.f32 q10, q10, d4[0] ++ vrev64.32 q1, q11 ++ vmul.f32 q11, q11, d4[1] ++ vld1.32 {d5}, [r5] @ {wim[-1],wim[0]} ++ vmul.f32 q0, q0, q3 ++ sub r5, r5, #8 @ wim -= 2 ++ vmul.f32 q1, q1, q3 ++ vmla.f32 q10, q0, d5[1] @ {t1,t2,t5,t6} ++ vmla.f32 q11, q1, d5[0] @ {t1a,t2a,t5a,t6a} ++ vld2.32 {d16-d17},[r0,:128] @ {z[0],z[1]} ++ subs r6, r6, #1 @ n-- ++ vld2.32 {d18-d19},[r4,:128] @ {z[o1],z[o1+1]} ++ vzip.32 q10, q11 ++ vadd.f32 d0, d22, d20 ++ vadd.f32 d1, d21, d23 ++ vsub.f32 d2, d21, d23 ++ vsub.f32 d3, d22, d20 ++ vsub.f32 q10, q8, q0 ++ vadd.f32 q8, q8, q0 ++ vsub.f32 q11, q9, q1 ++ vadd.f32 q9, q9, q1 ++ vst2.32 {d20-d21}, [r2,:128]! @ {z[o2],z[o2+1]} ++ vst2.32 {d16-d17}, [r0,:128]! @ {z[0],z[1]} ++ vst2.32 {d22-d23}, [r3,:128]! @ {z[o3],z[o3+1]} ++ vst2.32 {d18-d19}, [r4,:128]! @ {z[o1],z[o1+1]} ++ bne 1b ++ ++ pop {r4-r6,pc} ++.endfunc ++ ++.macro def_fft n, n2, n4 ++ .align 6 ++function fft\n\()_neon ++ push {r4, lr} ++ mov r4, r0 ++ bl fft\n2\()_neon ++ add r0, r4, #\n4*2*8 ++ bl fft\n4\()_neon ++ add r0, r4, #\n4*3*8 ++ bl fft\n4\()_neon ++ mov r0, r4 ++ pop {r4, lr} ++ movrel r1, ff_cos_\n ++ mov r2, #\n4/2 ++ b fft_pass_neon ++.endfunc ++.endm ++ ++ def_fft 32, 16, 8 ++ def_fft 64, 32, 16 ++ def_fft 128, 64, 32 ++ def_fft 256, 128, 64 ++ def_fft 512, 256, 128 ++ def_fft 1024, 512, 256 ++ def_fft 2048, 1024, 512 ++ def_fft 4096, 2048, 1024 ++ def_fft 8192, 4096, 2048 ++ def_fft 16384, 8192, 4096 ++ def_fft 32768, 16384, 8192 ++ def_fft 65536, 32768, 16384 ++ ++function ff_fft_calc_neon, export=1 ++ ldr r2, [r0] ++ sub r2, r2, #2 ++ movrel r3, fft_tab_neon ++ ldr r3, [r3, r2, lsl #2] ++ mov r0, r1 ++ bx r3 ++.endfunc ++ ++function ff_fft_permute_neon, export=1 ++ push {r4,lr} ++ mov r12, #1 ++ ldr r2, [r0] @ nbits ++ ldr r3, [r0, #20] @ tmp_buf ++ ldr r0, [r0, #8] @ revtab ++ lsl r12, r12, r2 ++ mov r2, r12 ++1: ++ vld1.32 {d0-d1}, [r1,:128]! ++ ldr r4, [r0], #4 ++ uxtah lr, r3, r4 ++ uxtah r4, r3, r4, ror #16 ++ vst1.32 {d0}, [lr,:64] ++ vst1.32 {d1}, [r4,:64] ++ subs r12, r12, #2 ++ bgt 1b ++ ++ sub r1, r1, r2, lsl #3 ++1: ++ vld1.32 {d0-d3}, [r3,:128]! ++ vst1.32 {d0-d3}, [r1,:128]! ++ subs r2, r2, #4 ++ bgt 1b ++ ++ pop {r4,pc} ++.endfunc ++ ++ .section .rodata ++ .align 4 ++fft_tab_neon: ++ .word fft4_neon ++ .word fft8_neon ++ .word fft16_neon ++ .word fft32_neon ++ .word fft64_neon ++ .word fft128_neon ++ .word fft256_neon ++ .word fft512_neon ++ .word fft1024_neon ++ .word fft2048_neon ++ .word fft4096_neon ++ .word fft8192_neon ++ .word fft16384_neon ++ .word fft32768_neon ++ .word fft65536_neon ++ .size fft_tab_neon, . - fft_tab_neon ++ ++ .align 4 ++pmmp: .float +1.0, -1.0, -1.0, +1.0 ++mppm: .float -M_SQRT1_2, M_SQRT1_2, M_SQRT1_2, -M_SQRT1_2 +diff --git a/libavcodec/arm/mdct_neon.S b/libavcodec/arm/mdct_neon.S +new file mode 100644 +index 0000000..6d1dcfd +--- /dev/null ++++ b/libavcodec/arm/mdct_neon.S +@@ -0,0 +1,178 @@ ++/* ++ * ARM NEON optimised MDCT ++ * Copyright (c) 2009 Mans Rullgard ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "asm.S" ++ ++ .fpu neon ++ .text ++ ++function ff_imdct_half_neon, export=1 ++ push {r4-r8,lr} ++ ++ mov r12, #1 ++ ldr lr, [r0, #4] @ nbits ++ ldr r4, [r0, #8] @ tcos ++ ldr r5, [r0, #12] @ tsin ++ ldr r3, [r0, #24] @ revtab ++ lsl r12, r12, lr @ n = 1 << nbits ++ lsr lr, r12, #2 @ n4 = n >> 2 ++ add r7, r2, r12, lsl #1 ++ mov r12, #-16 ++ sub r7, r7, #16 ++ ++ vld1.32 {d16-d17},[r7,:128],r12 @ d16=x,n1 d17=x,n0 ++ vld1.32 {d0-d1}, [r2,:128]! @ d0 =m0,x d1 =m1,x ++ vld1.32 {d2}, [r4,:64]! @ d2=c0,c1 ++ vld1.32 {d3}, [r5,:64]! @ d3=s0,s1 ++ vuzp.32 d17, d16 ++ vuzp.32 d0, d1 ++ vmul.f32 d6, d16, d2 ++ vmul.f32 d7, d0, d2 ++1: ++ subs lr, lr, #2 ++ ldr r6, [r3], #4 ++ vmul.f32 d4, d0, d3 ++ vmul.f32 d5, d16, d3 ++ vsub.f32 d4, d6, d4 ++ vadd.f32 d5, d5, d7 ++ uxtah r8, r1, r6, ror #16 ++ uxtah r6, r1, r6 ++ beq 1f ++ vld1.32 {d16-d17},[r7,:128],r12 ++ vld1.32 {d0-d1}, [r2,:128]! ++ vuzp.32 d17, d16 ++ vld1.32 {d2}, [r4,:64]! ++ vuzp.32 d0, d1 ++ vmul.f32 d6, d16, d2 ++ vld1.32 {d3}, [r5,:64]! ++ vmul.f32 d7, d0, d2 ++ vst2.32 {d4[0],d5[0]}, [r6,:64] ++ vst2.32 {d4[1],d5[1]}, [r8,:64] ++ b 1b ++1: ++ vst2.32 {d4[0],d5[0]}, [r6,:64] ++ vst2.32 {d4[1],d5[1]}, [r8,:64] ++ ++ mov r4, r0 ++ mov r6, r1 ++ add r0, r0, #16 ++ bl ff_fft_calc_neon ++ ++ mov r12, #1 ++ ldr lr, [r4, #4] @ nbits ++ ldr r5, [r4, #12] @ tsin ++ ldr r4, [r4, #8] @ tcos ++ lsl r12, r12, lr @ n = 1 << nbits ++ lsr lr, r12, #3 @ n8 = n >> 3 ++ ++ add r4, r4, lr, lsl #2 ++ add r5, r5, lr, lsl #2 ++ add r6, r6, lr, lsl #3 ++ sub r1, r4, #8 ++ sub r2, r5, #8 ++ sub r3, r6, #16 ++ ++ mov r7, #-16 ++ mov r12, #-8 ++ mov r8, r6 ++ mov r0, r3 ++ ++ vld1.32 {d0-d1}, [r3,:128], r7 @ d0 =i1,r1 d1 =i0,r0 ++ vld1.32 {d20-d21},[r6,:128]! @ d20=i2,r2 d21=i3,r3 ++ vld1.32 {d18}, [r2,:64], r12 @ d18=s1,s0 ++ vuzp.32 d20, d21 ++ vuzp.32 d0, d1 ++1: ++ subs lr, lr, #2 ++ vmul.f32 d7, d0, d18 ++ vld1.32 {d19}, [r5,:64]! @ d19=s2,s3 ++ vmul.f32 d4, d1, d18 ++ vld1.32 {d16}, [r1,:64], r12 @ d16=c1,c0 ++ vmul.f32 d5, d21, d19 ++ vld1.32 {d17}, [r4,:64]! @ d17=c2,c3 ++ vmul.f32 d6, d20, d19 ++ vmul.f32 d22, d1, d16 ++ vmul.f32 d23, d21, d17 ++ vmul.f32 d24, d0, d16 ++ vmul.f32 d25, d20, d17 ++ vadd.f32 d7, d7, d22 ++ vadd.f32 d6, d6, d23 ++ vsub.f32 d4, d4, d24 ++ vsub.f32 d5, d5, d25 ++ beq 1f ++ vld1.32 {d0-d1}, [r3,:128], r7 ++ vld1.32 {d20-d21},[r6,:128]! ++ vld1.32 {d18}, [r2,:64], r12 ++ vuzp.32 d20, d21 ++ vuzp.32 d0, d1 ++ vrev64.32 q3, q3 ++ vtrn.32 d4, d6 ++ vtrn.32 d5, d7 ++ vswp d5, d6 ++ vst1.32 {d4-d5}, [r0,:128], r7 ++ vst1.32 {d6-d7}, [r8,:128]! ++ b 1b ++1: ++ vrev64.32 q3, q3 ++ vtrn.32 d4, d6 ++ vtrn.32 d5, d7 ++ vswp d5, d6 ++ vst1.32 {d4-d5}, [r0,:128] ++ vst1.32 {d6-d7}, [r8,:128] ++ ++ pop {r4-r8,pc} ++.endfunc ++ ++function ff_imdct_calc_neon, export=1 ++ push {r4-r6,lr} ++ ++ ldr r3, [r0, #4] ++ mov r4, #1 ++ mov r5, r1 ++ lsl r4, r4, r3 ++ add r1, r1, r4 ++ ++ bl ff_imdct_half_neon ++ ++ add r0, r5, r4, lsl #2 ++ add r1, r5, r4, lsl #1 ++ sub r0, r0, #8 ++ sub r2, r1, #16 ++ mov r3, #-16 ++ mov r6, #-8 ++ vmov.i32 d30, #1<<31 ++1: ++ vld1.32 {d0-d1}, [r2,:128], r3 ++ pld [r0, #-16] ++ vrev64.32 q0, q0 ++ vld1.32 {d2-d3}, [r1,:128]! ++ veor d4, d1, d30 ++ pld [r2, #-16] ++ vrev64.32 q1, q1 ++ veor d5, d0, d30 ++ vst1.32 {d2}, [r0,:64], r6 ++ vst1.32 {d3}, [r0,:64], r6 ++ vst1.32 {d4-d5}, [r5,:128]! ++ subs r4, r4, #16 ++ bgt 1b ++ ++ pop {r4-r6,pc} ++.endfunc +diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h +index e9c2bfc..c4abd14 100644 +--- a/libavcodec/dsputil.h ++++ b/libavcodec/dsputil.h +@@ -692,11 +692,13 @@ extern FFTSample* ff_cos_tabs[13]; + int ff_fft_init(FFTContext *s, int nbits, int inverse); + void ff_fft_permute_c(FFTContext *s, FFTComplex *z); + void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); ++void ff_fft_permute_neon(FFTContext *s, FFTComplex *z); + void ff_fft_calc_c(FFTContext *s, FFTComplex *z); + void ff_fft_calc_sse(FFTContext *s, FFTComplex *z); + void ff_fft_calc_3dn(FFTContext *s, FFTComplex *z); + void ff_fft_calc_3dn2(FFTContext *s, FFTComplex *z); + void ff_fft_calc_altivec(FFTContext *s, FFTComplex *z); ++void ff_fft_calc_neon(FFTContext *s, FFTComplex *z); + + /** + * Do the permutation needed BEFORE calling ff_fft_calc(). +@@ -766,6 +768,8 @@ void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *inpu + void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); ++void ff_imdct_calc_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); ++void ff_imdct_half_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input); + void ff_mdct_end(MDCTContext *s); + +diff --git a/libavcodec/fft.c b/libavcodec/fft.c +index 296f634..b05ddda 100644 +--- a/libavcodec/fft.c ++++ b/libavcodec/fft.c +@@ -64,6 +64,7 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) + float alpha, c1, s1, s2; + int split_radix = 1; + int av_unused has_vectors; ++ int revtab_shift = 0; + + if (nbits < 2 || nbits > 16) + goto fail; +@@ -112,6 +113,12 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) + s->fft_calc = ff_fft_calc_altivec; + split_radix = 0; + } ++#elif HAVE_NEON ++ s->fft_permute = ff_fft_permute_neon; ++ s->fft_calc = ff_fft_calc_neon; ++ s->imdct_calc = ff_imdct_calc_neon; ++ s->imdct_half = ff_imdct_half_neon; ++ revtab_shift = 3; + #endif + + if (split_radix) { +@@ -125,7 +132,8 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) + tab[m/2-i] = tab[i]; + } + for(i=0; irevtab[-split_radix_permutation(i, n, s->inverse) & (n-1)] = i; ++ s->revtab[-split_radix_permutation(i, n, s->inverse) & (n-1)] = ++ i << revtab_shift; + s->tmp_buf = av_malloc(n * sizeof(FFTComplex)); + } else { + int np, nblocks, np2, l; +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0015-ARM-handle-VFP-register-arguments-in-ff_vector_fmul_.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0015-ARM-handle-VFP-register-arguments-in-ff_vector_fmul_.patch @@ -0,0 +1,31 @@ +From e965241fea3348a8205bd38f91efbfcd13e8cd31 Mon Sep 17 00:00:00 2001 +From: mru +Date: Mon, 20 Jul 2009 22:30:27 +0000 +Subject: [PATCH 15/27] ARM: handle VFP register arguments in ff_vector_fmul_window_neon() + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19475 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon_s.S | 6 ++++-- + 1 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index 2bc07fa..71d09c6 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -746,9 +746,11 @@ function ff_vector_fmul_neon, export=1 + .endfunc + + function ff_vector_fmul_window_neon, export=1 +- vld1.32 {d16[],d17[]}, [sp,:32] ++VFP vdup.32 q8, d0[0] ++NOVFP vld1.32 {d16[],d17[]}, [sp,:32] + push {r4,r5,lr} +- ldr lr, [sp, #16] ++VFP ldr lr, [sp, #12] ++NOVFP ldr lr, [sp, #16] + sub r2, r2, #8 + sub r5, lr, #2 + add r2, r2, r5, lsl #2 +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0014-ARM-NEON-optimised-vorbis_inverse_coupling.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0014-ARM-NEON-optimised-vorbis_inverse_coupling.patch @@ -0,0 +1,116 @@ +From d32e115cb8c43fe4531567b1c668dba6dc76274d Mon Sep 17 00:00:00 2001 +From: mru +Date: Fri, 14 Aug 2009 01:02:06 +0000 +Subject: [PATCH 14/27] ARM: NEON optimised vorbis_inverse_coupling + +12% faster Vorbis decoding on Cortex-A8. + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19637 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon.c | 5 +++ + libavcodec/arm/dsputil_neon_s.S | 64 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 69 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c +index 20425c1..eb9aba1 100644 +--- a/libavcodec/arm/dsputil_neon.c ++++ b/libavcodec/arm/dsputil_neon.c +@@ -161,6 +161,8 @@ void ff_vector_fmul_window_neon(float *dst, const float *src0, + void ff_float_to_int16_neon(int16_t *, const float *, long); + void ff_float_to_int16_interleave_neon(int16_t *, const float **, long, int); + ++void ff_vorbis_inverse_coupling_neon(float *mag, float *ang, int blocksize); ++ + void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) + { + c->put_pixels_tab[0][0] = ff_put_pixels16_neon; +@@ -270,4 +272,7 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) + c->float_to_int16 = ff_float_to_int16_neon; + c->float_to_int16_interleave = ff_float_to_int16_interleave_neon; + } ++ ++ if (CONFIG_VORBIS_DECODER) ++ c->vorbis_inverse_coupling = ff_vorbis_inverse_coupling_neon; + } +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index 303b11c..2bc07fa 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -19,6 +19,7 @@ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include "config.h" + #include "asm.S" + + preserve8 +@@ -793,3 +794,66 @@ function ff_vector_fmul_window_neon, export=1 + vst1.64 {d22,d23},[ip,:128], r5 + pop {r4,r5,pc} + .endfunc ++ ++#if CONFIG_VORBIS_DECODER ++function ff_vorbis_inverse_coupling_neon, export=1 ++ vmov.i32 q10, #1<<31 ++ subs r2, r2, #4 ++ tst r2, #4 ++ mov r3, r0 ++ mov r12, r1 ++ beq 3f ++ ++ vld1.32 {d24-d25},[r1,:128]! ++ vld1.32 {d22-d23},[r0,:128]! ++ vcle.s32 q8, q12, #0 ++ vand q9, q11, q10 ++ veor q12, q12, q9 ++ vand q2, q12, q8 ++ vbic q3, q12, q8 ++ vadd.f32 q12, q11, q2 ++ vsub.f32 q11, q11, q3 ++1: vld1.32 {d2-d3}, [r1,:128]! ++ vld1.32 {d0-d1}, [r0,:128]! ++ vcle.s32 q8, q1, #0 ++ vand q9, q0, q10 ++ veor q1, q1, q9 ++ vst1.32 {d24-d25},[r3, :128]! ++ vst1.32 {d22-d23},[r12,:128]! ++ vand q2, q1, q8 ++ vbic q3, q1, q8 ++ vadd.f32 q1, q0, q2 ++ vsub.f32 q0, q0, q3 ++ subs r2, r2, #8 ++ ble 2f ++ vld1.32 {d24-d25},[r1,:128]! ++ vld1.32 {d22-d23},[r0,:128]! ++ vcle.s32 q8, q12, #0 ++ vand q9, q11, q10 ++ veor q12, q12, q9 ++ vst1.32 {d2-d3}, [r3, :128]! ++ vst1.32 {d0-d1}, [r12,:128]! ++ vand q2, q12, q8 ++ vbic q3, q12, q8 ++ vadd.f32 q12, q11, q2 ++ vsub.f32 q11, q11, q3 ++ b 1b ++ ++2: vst1.32 {d2-d3}, [r3, :128]! ++ vst1.32 {d0-d1}, [r12,:128]! ++ bxlt lr ++ ++3: vld1.32 {d2-d3}, [r1,:128] ++ vld1.32 {d0-d1}, [r0,:128] ++ vcle.s32 q8, q1, #0 ++ vand q9, q0, q10 ++ veor q1, q1, q9 ++ vand q2, q1, q8 ++ vbic q3, q1, q8 ++ vadd.f32 q1, q0, q2 ++ vsub.f32 q0, q0, q3 ++ vst1.32 {d2-d3}, [r0,:128]! ++ vst1.32 {d0-d1}, [r1,:128]! ++ bx lr ++ .endfunc ++#endif +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0012-ARM-enable-fast_unaligned-when-cpu-armv-67-is-specif.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0012-ARM-enable-fast_unaligned-when-cpu-armv-67-is-specif.patch @@ -0,0 +1,28 @@ +From 8f934d1aa05a5db078dc732b37f2d46faa92e866 Mon Sep 17 00:00:00 2001 +From: mru +Date: Tue, 30 Jun 2009 12:46:09 +0000 +Subject: [PATCH 12/27] ARM: enable fast_unaligned when --cpu=armv[67] is specified + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19308 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + configure | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/configure b/configure +index fd11501..7459215 100755 +--- a/configure ++++ b/configure +@@ -1792,6 +1792,10 @@ if test $cpu != "generic"; then + add_cflags -mcpu=$cpu + enable fast_unaligned + ;; ++ armv[67]*) ++ add_cflags -march=$cpu ++ enable fast_unaligned ++ ;; + armv*) + add_cflags -march=$cpu + ;; +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0004-Reorganise-intreadwrite.h.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0004-Reorganise-intreadwrite.h.patch @@ -0,0 +1,312 @@ +From f4bfca647b7228833d0e102f68d0726594c502b1 Mon Sep 17 00:00:00 2001 +From: mru +Date: Sat, 18 Apr 2009 00:00:22 +0000 +Subject: [PATCH 04/27] Reorganise intreadwrite.h + +This changes intreadwrite.h to support per-arch implementations of the +various macros allowing us to take advantage of special instructions +or other properties the compiler does not know about. + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18600 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavutil/intreadwrite.h | 213 ++++++++++++++++++++++++++++++---------------- + 1 files changed, 141 insertions(+), 72 deletions(-) + +diff --git a/libavutil/intreadwrite.h b/libavutil/intreadwrite.h +index 7c5909e..b1c5c2a 100644 +--- a/libavutil/intreadwrite.h ++++ b/libavutil/intreadwrite.h +@@ -23,119 +23,88 @@ + #include "config.h" + #include "bswap.h" + +-#ifdef __GNUC__ ++/* ++ * Arch-specific headers can provide any combination of ++ * AV_[RW][BLN](16|32|64) macros. Preprocessor symbols must be ++ * defined, even if these are implemented as inline functions. ++ */ ++ ++ ++/* ++ * Define AV_[RW]N helper macros to simplify definitions not provided ++ * by per-arch headers. ++ */ ++ ++#if defined(__GNUC__) + + struct unaligned_64 { uint64_t l; } __attribute__((packed)); + struct unaligned_32 { uint32_t l; } __attribute__((packed)); + struct unaligned_16 { uint16_t l; } __attribute__((packed)); + +-#define AV_RN16(a) (((const struct unaligned_16 *) (a))->l) +-#define AV_RN32(a) (((const struct unaligned_32 *) (a))->l) +-#define AV_RN64(a) (((const struct unaligned_64 *) (a))->l) +- +-#define AV_WN16(a, b) (((struct unaligned_16 *) (a))->l) = (b) +-#define AV_WN32(a, b) (((struct unaligned_32 *) (a))->l) = (b) +-#define AV_WN64(a, b) (((struct unaligned_64 *) (a))->l) = (b) ++# define AV_RN(s, p) (((const struct unaligned_##s *) (p))->l) ++# define AV_WN(s, p, v) (((struct unaligned_##s *) (p))->l) = (v) + + #elif defined(__DECC) + +-#define AV_RN16(a) (*((const __unaligned uint16_t*)(a))) +-#define AV_RN32(a) (*((const __unaligned uint32_t*)(a))) +-#define AV_RN64(a) (*((const __unaligned uint64_t*)(a))) +- +-#define AV_WN16(a, b) *((__unaligned uint16_t*)(a)) = (b) +-#define AV_WN32(a, b) *((__unaligned uint32_t*)(a)) = (b) +-#define AV_WN64(a, b) *((__unaligned uint64_t*)(a)) = (b) +- +-#else +- +-#define AV_RN16(a) (*((const uint16_t*)(a))) +-#define AV_RN32(a) (*((const uint32_t*)(a))) +-#define AV_RN64(a) (*((const uint64_t*)(a))) +- +-#define AV_WN16(a, b) *((uint16_t*)(a)) = (b) +-#define AV_WN32(a, b) *((uint32_t*)(a)) = (b) +-#define AV_WN64(a, b) *((uint64_t*)(a)) = (b) +- +-#endif /* !__GNUC__ */ +- +-/* endian macros */ +-#define AV_RB8(x) (((const uint8_t*)(x))[0]) +-#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) +- +-#define AV_RL8(x) AV_RB8(x) +-#define AV_WL8(p, d) AV_WB8(p, d) +- +-#if HAVE_FAST_UNALIGNED +-# ifdef WORDS_BIGENDIAN +-# define AV_RB16(x) AV_RN16(x) +-# define AV_WB16(p, d) AV_WN16(p, d) +- +-# define AV_RL16(x) bswap_16(AV_RN16(x)) +-# define AV_WL16(p, d) AV_WN16(p, bswap_16(d)) +- +-# define AV_RB32(x) AV_RN32(x) +-# define AV_WB32(p, d) AV_WN32(p, d) ++# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) ++# define AV_WN(s, p, v) *((__unaligned uint##s##_t*)(p)) = (v) + +-# define AV_RL32(x) bswap_32(AV_RN32(x)) +-# define AV_WL32(p, d) AV_WN32(p, bswap_32(d)) ++#elif HAVE_FAST_UNALIGNED + +-# define AV_RB64(x) AV_RN64(x) +-# define AV_WB64(p, d) AV_WN64(p, d) ++# define AV_RN(s, p) (*((const uint##s##_t*)(p))) ++# define AV_WN(s, p, v) *((uint##s##_t*)(p)) = (v) + +-# define AV_RL64(x) bswap_64(AV_RN64(x)) +-# define AV_WL64(p, d) AV_WN64(p, bswap_64(d)) +-# else /* WORDS_BIGENDIAN */ +-# define AV_RB16(x) bswap_16(AV_RN16(x)) +-# define AV_WB16(p, d) AV_WN16(p, bswap_16(d)) +- +-# define AV_RL16(x) AV_RN16(x) +-# define AV_WL16(p, d) AV_WN16(p, d) +- +-# define AV_RB32(x) bswap_32(AV_RN32(x)) +-# define AV_WB32(p, d) AV_WN32(p, bswap_32(d)) +- +-# define AV_RL32(x) AV_RN32(x) +-# define AV_WL32(p, d) AV_WN32(p, d) +- +-# define AV_RB64(x) bswap_64(AV_RN64(x)) +-# define AV_WB64(p, d) AV_WN64(p, bswap_64(d)) ++#else + +-# define AV_RL64(x) AV_RN64(x) +-# define AV_WL64(p, d) AV_WN64(p, d) +-# endif +-#else /* HAVE_FAST_UNALIGNED */ +-#define AV_RB16(x) ((((const uint8_t*)(x))[0] << 8) | ((const uint8_t*)(x))[1]) ++#ifndef AV_RB16 ++#define AV_RB16(x) ((((const uint8_t*)(x))[0] << 8) | \ ++ ((const uint8_t*)(x))[1]) ++#endif ++#ifndef AV_WB16 + #define AV_WB16(p, d) do { \ + ((uint8_t*)(p))[1] = (d); \ + ((uint8_t*)(p))[0] = (d)>>8; } while(0) ++#endif + ++#ifndef AV_RL16 + #define AV_RL16(x) ((((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) ++#endif ++#ifndef AV_WL16 + #define AV_WL16(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; } while(0) ++#endif + ++#ifndef AV_RB32 + #define AV_RB32(x) ((((const uint8_t*)(x))[0] << 24) | \ + (((const uint8_t*)(x))[1] << 16) | \ + (((const uint8_t*)(x))[2] << 8) | \ + ((const uint8_t*)(x))[3]) ++#endif ++#ifndef AV_WB32 + #define AV_WB32(p, d) do { \ + ((uint8_t*)(p))[3] = (d); \ + ((uint8_t*)(p))[2] = (d)>>8; \ + ((uint8_t*)(p))[1] = (d)>>16; \ + ((uint8_t*)(p))[0] = (d)>>24; } while(0) ++#endif + ++#ifndef AV_RL32 + #define AV_RL32(x) ((((const uint8_t*)(x))[3] << 24) | \ + (((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) ++#endif ++#ifndef AV_WL32 + #define AV_WL32(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; } while(0) ++#endif + ++#ifndef AV_RB64 + #define AV_RB64(x) (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ +@@ -144,6 +113,8 @@ struct unaligned_16 { uint16_t l; } __attribute__((packed)); + ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ + (uint64_t)((const uint8_t*)(x))[7]) ++#endif ++#ifndef AV_WB64 + #define AV_WB64(p, d) do { \ + ((uint8_t*)(p))[7] = (d); \ + ((uint8_t*)(p))[6] = (d)>>8; \ +@@ -153,7 +124,9 @@ struct unaligned_16 { uint16_t l; } __attribute__((packed)); + ((uint8_t*)(p))[2] = (d)>>40; \ + ((uint8_t*)(p))[1] = (d)>>48; \ + ((uint8_t*)(p))[0] = (d)>>56; } while(0) ++#endif + ++#ifndef AV_RL64 + #define AV_RL64(x) (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ +@@ -162,6 +135,8 @@ struct unaligned_16 { uint16_t l; } __attribute__((packed)); + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0]) ++#endif ++#ifndef AV_WL64 + #define AV_WL64(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ +@@ -171,7 +146,101 @@ struct unaligned_16 { uint16_t l; } __attribute__((packed)); + ((uint8_t*)(p))[5] = (d)>>40; \ + ((uint8_t*)(p))[6] = (d)>>48; \ + ((uint8_t*)(p))[7] = (d)>>56; } while(0) +-#endif /* HAVE_FAST_UNALIGNED */ ++#endif ++ ++#ifdef WORDS_BIGENDIAN ++# define AV_RN(s, p) AV_RB##s(p) ++# define AV_WN(s, p, v) AV_WB##s(p, v) ++#else ++# define AV_RN(s, p) AV_RL##s(p) ++# define AV_WN(s, p, v) AV_WL##s(p, v) ++#endif ++ ++#endif /* HAVE_FAST_UNALIGNED */ ++ ++#ifndef AV_RN16 ++# define AV_RN16(p) AV_RN(16, p) ++#endif ++ ++#ifndef AV_RN32 ++# define AV_RN32(p) AV_RN(32, p) ++#endif ++ ++#ifndef AV_RN64 ++# define AV_RN64(p) AV_RN(64, p) ++#endif ++ ++#ifndef AV_WN16 ++# define AV_WN16(p, v) AV_WN(16, p, v) ++#endif ++ ++#ifndef AV_WN32 ++# define AV_WN32(p, v) AV_WN(32, p, v) ++#endif ++ ++#ifndef AV_WN64 ++# define AV_WN64(p, v) AV_WN(64, p, v) ++#endif ++ ++#ifdef WORDS_BIGENDIAN ++# define AV_RB(s, p) AV_RN(s, p) ++# define AV_WB(s, p, v) AV_WN(s, p, v) ++# define AV_RL(s, p) bswap_##s(AV_RN(s, p)) ++# define AV_WL(s, p, v) AV_WN(s, p, bswap_##s(v)) ++#else ++# define AV_RB(s, p) bswap_##s(AV_RN(s, p)) ++# define AV_WB(s, p, v) AV_WN(s, p, bswap_##s(v)) ++# define AV_RL(s, p) AV_RN(s, p) ++# define AV_WL(s, p, v) AV_WN(s, p, v) ++#endif ++ ++#define AV_RB8(x) (((const uint8_t*)(x))[0]) ++#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) ++ ++#define AV_RL8(x) AV_RB8(x) ++#define AV_WL8(p, d) AV_WB8(p, d) ++ ++#ifndef AV_RB16 ++# define AV_RB16(p) AV_RB(16, p) ++#endif ++#ifndef AV_WB16 ++# define AV_WB16(p, v) AV_WB(16, p, v) ++#endif ++ ++#ifndef AV_RL16 ++# define AV_RL16(p) AV_RL(16, p) ++#endif ++#ifndef AV_WL16 ++# define AV_WL16(p, v) AV_WL(16, p, v) ++#endif ++ ++#ifndef AV_RB32 ++# define AV_RB32(p) AV_RB(32, p) ++#endif ++#ifndef AV_WB32 ++# define AV_WB32(p, v) AV_WB(32, p, v) ++#endif ++ ++#ifndef AV_RL32 ++# define AV_RL32(p) AV_RL(32, p) ++#endif ++#ifndef AV_WL32 ++# define AV_WL32(p, v) AV_WL(32, p, v) ++#endif ++ ++#ifndef AV_RB64 ++# define AV_RB64(p) AV_RB(64, p) ++#endif ++#ifndef AV_WB64 ++# define AV_WB64(p, v) AV_WB(64, p, v) ++#endif ++ ++#ifndef AV_RL64 ++# define AV_RL64(p) AV_RL(64, p) ++#endif ++#ifndef AV_WL64 ++# define AV_WL64(p, v) AV_WL(64, p, v) ++#endif + + #define AV_RB24(x) ((((const uint8_t*)(x))[0] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0001-ARM-NEON-optimised-add_pixels_clamped.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0001-ARM-NEON-optimised-add_pixels_clamped.patch @@ -0,0 +1,94 @@ +From 75eadd829625f3ef75fad613846ff98773e547ca Mon Sep 17 00:00:00 2001 +From: mru +Date: Sat, 4 Apr 2009 20:18:58 +0000 +Subject: [PATCH 01/27] ARM: NEON optimised add_pixels_clamped + +Based on patch by David Conrad. + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18332 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon.c | 4 +++ + libavcodec/arm/dsputil_neon_s.S | 45 +++++++++++++++++++++++++++++++++++++++ + 2 files changed, 49 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c +index e18a487..2e56308 100644 +--- a/libavcodec/arm/dsputil_neon.c ++++ b/libavcodec/arm/dsputil_neon.c +@@ -41,6 +41,8 @@ void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); + + void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int); + ++void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); ++ + void ff_put_h264_qpel16_mc00_neon(uint8_t *, uint8_t *, int); + void ff_put_h264_qpel16_mc10_neon(uint8_t *, uint8_t *, int); + void ff_put_h264_qpel16_mc20_neon(uint8_t *, uint8_t *, int); +@@ -176,6 +178,8 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) + + c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon; + ++ c->add_pixels_clamped = ff_add_pixels_clamped_neon; ++ + c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon; + c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_neon; + +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index 3b39d2e..c305210 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -273,6 +273,51 @@ function ff_put_h264_qpel8_mc00_neon, export=1 + pixfunc2 put_ pixels8_y2, _no_rnd, vhadd.u8 + pixfunc2 put_ pixels8_xy2, _no_rnd, vshrn.u16, 1 + ++function ff_add_pixels_clamped_neon, export=1 ++ mov r3, r1 ++ vld1.64 {d16}, [r1,:64], r2 ++ vld1.64 {d0-d1}, [r0,:128]! ++ vaddw.u8 q0, q0, d16 ++ vld1.64 {d17}, [r1,:64], r2 ++ vld1.64 {d2-d3}, [r0,:128]! ++ vqmovun.s16 d0, q0 ++ vld1.64 {d18}, [r1,:64], r2 ++ vaddw.u8 q1, q1, d17 ++ vld1.64 {d4-d5}, [r0,:128]! ++ vaddw.u8 q2, q2, d18 ++ vst1.64 {d0}, [r3,:64], r2 ++ vqmovun.s16 d2, q1 ++ vld1.64 {d19}, [r1,:64], r2 ++ vld1.64 {d6-d7}, [r0,:128]! ++ vaddw.u8 q3, q3, d19 ++ vqmovun.s16 d4, q2 ++ vst1.64 {d2}, [r3,:64], r2 ++ vld1.64 {d16}, [r1,:64], r2 ++ vqmovun.s16 d6, q3 ++ vld1.64 {d0-d1}, [r0,:128]! ++ vaddw.u8 q0, q0, d16 ++ vst1.64 {d4}, [r3,:64], r2 ++ vld1.64 {d17}, [r1,:64], r2 ++ vld1.64 {d2-d3}, [r0,:128]! ++ vaddw.u8 q1, q1, d17 ++ vst1.64 {d6}, [r3,:64], r2 ++ vqmovun.s16 d0, q0 ++ vld1.64 {d18}, [r1,:64], r2 ++ vld1.64 {d4-d5}, [r0,:128]! ++ vaddw.u8 q2, q2, d18 ++ vst1.64 {d0}, [r3,:64], r2 ++ vqmovun.s16 d2, q1 ++ vld1.64 {d19}, [r1,:64], r2 ++ vqmovun.s16 d4, q2 ++ vld1.64 {d6-d7}, [r0,:128]! ++ vaddw.u8 q3, q3, d19 ++ vst1.64 {d2}, [r3,:64], r2 ++ vqmovun.s16 d6, q3 ++ vst1.64 {d4}, [r3,:64], r2 ++ vst1.64 {d6}, [r3,:64], r2 ++ bx lr ++ .endfunc ++ + function ff_float_to_int16_neon, export=1 + subs r2, r2, #8 + vld1.64 {d0-d1}, [r1,:128]! +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0002-ARM-NEON-optimized-put_signed_pixels_clamped.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0002-ARM-NEON-optimized-put_signed_pixels_clamped.patch @@ -0,0 +1,82 @@ +From 5bf2745fa3bdc996f2201c06eeff1d242d81cc2a Mon Sep 17 00:00:00 2001 +From: conrad +Date: Sat, 4 Apr 2009 21:02:48 +0000 +Subject: [PATCH 02/27] ARM: NEON optimized put_signed_pixels_clamped + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18333 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon.c | 2 ++ + libavcodec/arm/dsputil_neon_s.S | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c +index 2e56308..37425a3 100644 +--- a/libavcodec/arm/dsputil_neon.c ++++ b/libavcodec/arm/dsputil_neon.c +@@ -42,6 +42,7 @@ void ff_put_pixels8_xy2_no_rnd_neon(uint8_t *, const uint8_t *, int, int); + void ff_avg_pixels16_neon(uint8_t *, const uint8_t *, int, int); + + void ff_add_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); ++void ff_put_signed_pixels_clamped_neon(const DCTELEM *, uint8_t *, int); + + void ff_put_h264_qpel16_mc00_neon(uint8_t *, uint8_t *, int); + void ff_put_h264_qpel16_mc10_neon(uint8_t *, uint8_t *, int); +@@ -179,6 +180,7 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) + c->avg_pixels_tab[0][0] = ff_avg_pixels16_neon; + + c->add_pixels_clamped = ff_add_pixels_clamped_neon; ++ c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_neon; + + c->put_h264_chroma_pixels_tab[0] = ff_put_h264_chroma_mc8_neon; + c->put_h264_chroma_pixels_tab[1] = ff_put_h264_chroma_mc4_neon; +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index c305210..5b95717 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -273,6 +273,43 @@ function ff_put_h264_qpel8_mc00_neon, export=1 + pixfunc2 put_ pixels8_y2, _no_rnd, vhadd.u8 + pixfunc2 put_ pixels8_xy2, _no_rnd, vshrn.u16, 1 + ++function ff_put_signed_pixels_clamped_neon, export=1 ++ vmov.u8 d31, #128 ++ vld1.64 {d16-d17}, [r0,:128]! ++ vqmovn.s16 d0, q8 ++ vld1.64 {d18-d19}, [r0,:128]! ++ vqmovn.s16 d1, q9 ++ vld1.64 {d16-d17}, [r0,:128]! ++ vqmovn.s16 d2, q8 ++ vld1.64 {d18-d19}, [r0,:128]! ++ vadd.u8 d0, d0, d31 ++ vld1.64 {d20-d21}, [r0,:128]! ++ vadd.u8 d1, d1, d31 ++ vld1.64 {d22-d23}, [r0,:128]! ++ vadd.u8 d2, d2, d31 ++ vst1.64 {d0}, [r1,:64], r2 ++ vqmovn.s16 d3, q9 ++ vst1.64 {d1}, [r1,:64], r2 ++ vqmovn.s16 d4, q10 ++ vst1.64 {d2}, [r1,:64], r2 ++ vqmovn.s16 d5, q11 ++ vld1.64 {d24-d25}, [r0,:128]! ++ vadd.u8 d3, d3, d31 ++ vld1.64 {d26-d27}, [r0,:128]! ++ vadd.u8 d4, d4, d31 ++ vadd.u8 d5, d5, d31 ++ vst1.64 {d3}, [r1,:64], r2 ++ vqmovn.s16 d6, q12 ++ vst1.64 {d4}, [r1,:64], r2 ++ vqmovn.s16 d7, q13 ++ vst1.64 {d5}, [r1,:64], r2 ++ vadd.u8 d6, d6, d31 ++ vadd.u8 d7, d7, d31 ++ vst1.64 {d6}, [r1,:64], r2 ++ vst1.64 {d7}, [r1,:64], r2 ++ bx lr ++ .endfunc ++ + function ff_add_pixels_clamped_neon, export=1 + mov r3, r1 + vld1.64 {d16}, [r1,:64], r2 +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0010-ARM-add-some-PLD-in-NEON-IDCT.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0010-ARM-add-some-PLD-in-NEON-IDCT.patch @@ -0,0 +1,55 @@ +From 8d8bd2247af043b8b61af8bbc4c131524182531a Mon Sep 17 00:00:00 2001 +From: mru +Date: Thu, 28 May 2009 17:19:28 +0000 +Subject: [PATCH 10/27] ARM: add some PLD in NEON IDCT + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18972 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/simple_idct_neon.S | 17 +++++++++++++++-- + 1 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/libavcodec/arm/simple_idct_neon.S b/libavcodec/arm/simple_idct_neon.S +index e7099a2..0882481 100644 +--- a/libavcodec/arm/simple_idct_neon.S ++++ b/libavcodec/arm/simple_idct_neon.S +@@ -68,6 +68,19 @@ + .text + .align 6 + ++function idct_row4_pld_neon ++ pld [r0] ++ add r3, r0, r1, lsl #2 ++ pld [r0, r1] ++ pld [r0, r1, lsl #1] ++ pld [r3, -r1] ++ pld [r3] ++ pld [r3, r1] ++ add r3, r3, r1, lsl #1 ++ pld [r3] ++ pld [r3, r1] ++ .endfunc ++ + function idct_row4_neon + vmov.i32 q15, #(1<<(ROW_SHIFT-1)) + vld1.64 {d2-d5}, [r2,:128]! +@@ -252,7 +265,7 @@ idct_coeff_neon: + function ff_simple_idct_put_neon, export=1 + idct_start r2 + +- bl idct_row4_neon ++ bl idct_row4_pld_neon + bl idct_row4_neon + add r2, r2, #-128 + bl idct_col4_neon +@@ -307,7 +320,7 @@ function idct_col4_add8_neon + function ff_simple_idct_add_neon, export=1 + idct_start r2 + +- bl idct_row4_neon ++ bl idct_row4_pld_neon + bl idct_row4_neon + add r2, r2, #-128 + bl idct_col4_neon +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0003-Add-guaranteed-alignment-for-loading-dest-pixels-in-.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0003-Add-guaranteed-alignment-for-loading-dest-pixels-in-.patch @@ -0,0 +1,35 @@ +From ce7bbcc96ff94b2fdfbcff35f517f03512bc147b Mon Sep 17 00:00:00 2001 +From: conrad +Date: Thu, 16 Apr 2009 08:39:13 +0000 +Subject: [PATCH 03/27] Add guaranteed alignment for loading dest pixels in avg_pixels16_neon + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18535 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon_s.S | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index 5b95717..f16293d 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -38,13 +38,13 @@ + pld [r1, r2] + pld [r1, r2, lsl #1] + .if \avg +- vld1.64 {d16,d17}, [ip], r2 ++ vld1.64 {d16,d17}, [ip,:128], r2 + vrhadd.u8 q0, q0, q8 +- vld1.64 {d18,d19}, [ip], r2 ++ vld1.64 {d18,d19}, [ip,:128], r2 + vrhadd.u8 q1, q1, q9 +- vld1.64 {d20,d21}, [ip], r2 ++ vld1.64 {d20,d21}, [ip,:128], r2 + vrhadd.u8 q2, q2, q10 +- vld1.64 {d22,d23}, [ip], r2 ++ vld1.64 {d22,d23}, [ip,:128], r2 + vrhadd.u8 q3, q3, q11 + .endif + subs r3, r3, #4 +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0008-ARM-NEON-VP3-Loop-Filter.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0008-ARM-NEON-VP3-Loop-Filter.patch @@ -0,0 +1,60 @@ +From 91dafadca2744957e6cc3ae13688c9033ec3c330 Mon Sep 17 00:00:00 2001 +From: conrad +Date: Sat, 23 May 2009 18:36:20 +0000 +Subject: [PATCH 08/27] ARM: NEON VP3 Loop Filter + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18916 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/Makefile | 4 ++++ + libavcodec/arm/dsputil_neon.c | 8 ++++++++ + 2 files changed, 12 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/Makefile b/libavcodec/Makefile +index cf742d1..a213309 100644 +--- a/libavcodec/Makefile ++++ b/libavcodec/Makefile +@@ -479,11 +479,15 @@ OBJS-$(HAVE_ARMVFP) += arm/dsputil_vfp.o \ + OBJS-$(HAVE_IWMMXT) += arm/dsputil_iwmmxt.o \ + arm/mpegvideo_iwmmxt.o \ + ++NEON-OBJS-$(CONFIG_THEORA_DECODER) += arm/vp3dsp_neon.o ++NEON-OBJS-$(CONFIG_VP3_DECODER) += arm/vp3dsp_neon.o ++ + OBJS-$(HAVE_NEON) += arm/dsputil_neon.o \ + arm/dsputil_neon_s.o \ + arm/h264dsp_neon.o \ + arm/h264idct_neon.o \ + arm/simple_idct_neon.o \ ++ $(NEON-OBJS-yes) + + OBJS-$(ARCH_BFIN) += bfin/dsputil_bfin.o \ + bfin/fdct_bfin.o \ +diff --git a/libavcodec/arm/dsputil_neon.c b/libavcodec/arm/dsputil_neon.c +index 9b95130..20425c1 100644 +--- a/libavcodec/arm/dsputil_neon.c ++++ b/libavcodec/arm/dsputil_neon.c +@@ -150,6 +150,9 @@ void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset, + DCTELEM *block, int stride, + const uint8_t nnzc[6*8]); + ++void ff_vp3_v_loop_filter_neon(uint8_t *, int, int *); ++void ff_vp3_h_loop_filter_neon(uint8_t *, int, int *); ++ + void ff_vector_fmul_neon(float *dst, const float *src, int len); + void ff_vector_fmul_window_neon(float *dst, const float *src0, + const float *src1, const float *win, +@@ -255,6 +258,11 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx) + c->h264_idct_add16intra = ff_h264_idct_add16intra_neon; + c->h264_idct_add8 = ff_h264_idct_add8_neon; + ++ if (CONFIG_VP3_DECODER || CONFIG_THEORA_DECODER) { ++ c->vp3_v_loop_filter = ff_vp3_v_loop_filter_neon; ++ c->vp3_h_loop_filter = ff_vp3_h_loop_filter_neon; ++ } ++ + c->vector_fmul = ff_vector_fmul_neon; + c->vector_fmul_window = ff_vector_fmul_window_neon; + +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0013-ARM-NEON-VP3-IDCT.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0013-ARM-NEON-VP3-IDCT.patch @@ -0,0 +1,340 @@ +From 2056fee95d5b017aad91df30e68d1cec96ddfeb6 Mon Sep 17 00:00:00 2001 +From: conrad +Date: Sat, 4 Jul 2009 20:41:11 +0000 +Subject: [PATCH 13/27] ARM: NEON VP3 IDCT + 15% faster VP3/Theora, 10% faster VP6 + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19345 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_arm.c | 10 ++ + libavcodec/arm/vp3dsp_neon.S | 282 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 292 insertions(+), 0 deletions(-) + +diff --git a/libavcodec/arm/dsputil_arm.c b/libavcodec/arm/dsputil_arm.c +index c8a277e..c0ab0c9 100644 +--- a/libavcodec/arm/dsputil_arm.c ++++ b/libavcodec/arm/dsputil_arm.c +@@ -43,6 +43,10 @@ void ff_simple_idct_neon(DCTELEM *data); + void ff_simple_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); + void ff_simple_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data); + ++void ff_vp3_idct_neon(DCTELEM *data); ++void ff_vp3_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data); ++void ff_vp3_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data); ++ + /* XXX: local hack */ + static void (*ff_put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); + static void (*ff_add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size); +@@ -180,6 +184,12 @@ void dsputil_init_arm(DSPContext* c, AVCodecContext *avctx) + c->idct_add= ff_simple_idct_add_neon; + c->idct = ff_simple_idct_neon; + c->idct_permutation_type = FF_PARTTRANS_IDCT_PERM; ++ } else if ((CONFIG_VP3_DECODER || CONFIG_VP5_DECODER || CONFIG_VP6_DECODER || CONFIG_THEORA_DECODER) && ++ idct_algo==FF_IDCT_VP3){ ++ c->idct_put= ff_vp3_idct_put_neon; ++ c->idct_add= ff_vp3_idct_add_neon; ++ c->idct = ff_vp3_idct_neon; ++ c->idct_permutation_type = FF_TRANSPOSE_IDCT_PERM; + #endif + } + } +diff --git a/libavcodec/arm/vp3dsp_neon.S b/libavcodec/arm/vp3dsp_neon.S +index cce80dd..b2e16f4 100644 +--- a/libavcodec/arm/vp3dsp_neon.S ++++ b/libavcodec/arm/vp3dsp_neon.S +@@ -20,6 +20,22 @@ + + #include "asm.S" + ++.section .rodata ++.align 4 ++ ++vp3_idct_constants: ++.short 64277, 60547, 54491, 46341, 36410, 25080, 12785 ++ ++#define xC1S7 d0[0] ++#define xC2S6 d0[1] ++#define xC3S5 d0[2] ++#define xC4S4 d0[3] ++#define xC5S3 d1[0] ++#define xC6S2 d1[1] ++#define xC7S1 d1[2] ++ ++.text ++ + .macro vp3_loop_filter + vsubl.u8 q3, d18, d17 + vsubl.u8 q2, d16, d19 +@@ -92,3 +108,269 @@ function ff_vp3_h_loop_filter_neon, export=1 + vst1.16 {d1[3]}, [ip], r1 + bx lr + .endfunc ++ ++ ++function vp3_idct_start_neon ++ vpush {d8-d15} ++ movrel r3, vp3_idct_constants ++ vld1.64 {d0-d1}, [r3,:128] ++ vld1.64 {d16-d19}, [r2,:128]! ++ vld1.64 {d20-d23}, [r2,:128]! ++ vld1.64 {d24-d27}, [r2,:128]! ++ vadd.s16 q1, q8, q12 ++ vsub.s16 q8, q8, q12 ++ vld1.64 {d28-d31}, [r2,:128]! ++.endfunc ++ ++function vp3_idct_core_neon ++ vmull.s16 q2, d18, xC1S7 // (ip[1] * C1) << 16 ++ vmull.s16 q3, d19, xC1S7 ++ vmull.s16 q4, d2, xC4S4 // ((ip[0] + ip[4]) * C4) << 16 ++ vmull.s16 q5, d3, xC4S4 ++ vmull.s16 q6, d16, xC4S4 // ((ip[0] - ip[4]) * C4) << 16 ++ vmull.s16 q7, d17, xC4S4 ++ vshrn.s32 d4, q2, #16 ++ vshrn.s32 d5, q3, #16 ++ vshrn.s32 d6, q4, #16 ++ vshrn.s32 d7, q5, #16 ++ vshrn.s32 d8, q6, #16 ++ vshrn.s32 d9, q7, #16 ++ vadd.s16 q12, q1, q3 // E = (ip[0] + ip[4]) * C4 ++ vadd.s16 q8, q8, q4 // F = (ip[0] - ip[4]) * C4 ++ vadd.s16 q1, q2, q9 // ip[1] * C1 ++ ++ vmull.s16 q2, d30, xC1S7 // (ip[7] * C1) << 16 ++ vmull.s16 q3, d31, xC1S7 ++ vmull.s16 q4, d30, xC7S1 // (ip[7] * C7) << 16 ++ vmull.s16 q5, d31, xC7S1 ++ vmull.s16 q6, d18, xC7S1 // (ip[1] * C7) << 16 ++ vmull.s16 q7, d19, xC7S1 ++ vshrn.s32 d4, q2, #16 ++ vshrn.s32 d5, q3, #16 ++ vshrn.s32 d6, q4, #16 // ip[7] * C7 ++ vshrn.s32 d7, q5, #16 ++ vshrn.s32 d8, q6, #16 // ip[1] * C7 ++ vshrn.s32 d9, q7, #16 ++ vadd.s16 q2, q2, q15 // ip[7] * C1 ++ vadd.s16 q9, q1, q3 // A = ip[1] * C1 + ip[7] * C7 ++ vsub.s16 q15, q4, q2 // B = ip[1] * C7 - ip[7] * C1 ++ ++ vmull.s16 q2, d22, xC5S3 // (ip[3] * C5) << 16 ++ vmull.s16 q3, d23, xC5S3 ++ vmull.s16 q4, d22, xC3S5 // (ip[3] * C3) << 16 ++ vmull.s16 q5, d23, xC3S5 ++ vmull.s16 q6, d26, xC5S3 // (ip[5] * C5) << 16 ++ vmull.s16 q7, d27, xC5S3 ++ vshrn.s32 d4, q2, #16 ++ vshrn.s32 d5, q3, #16 ++ vshrn.s32 d6, q4, #16 ++ vshrn.s32 d7, q5, #16 ++ vshrn.s32 d8, q6, #16 ++ vshrn.s32 d9, q7, #16 ++ vadd.s16 q3, q3, q11 // ip[3] * C3 ++ vadd.s16 q4, q4, q13 // ip[5] * C5 ++ vadd.s16 q1, q2, q11 // ip[3] * C5 ++ vadd.s16 q11, q3, q4 // C = ip[3] * C3 + ip[5] * C5 ++ ++ vmull.s16 q2, d26, xC3S5 // (ip[5] * C3) << 16 ++ vmull.s16 q3, d27, xC3S5 ++ vmull.s16 q4, d20, xC2S6 // (ip[2] * C2) << 16 ++ vmull.s16 q5, d21, xC2S6 ++ vmull.s16 q6, d28, xC6S2 // (ip[6] * C6) << 16 ++ vmull.s16 q7, d29, xC6S2 ++ vshrn.s32 d4, q2, #16 ++ vshrn.s32 d5, q3, #16 ++ vshrn.s32 d6, q4, #16 ++ vshrn.s32 d7, q5, #16 ++ vshrn.s32 d8, q6, #16 // ip[6] * C6 ++ vshrn.s32 d9, q7, #16 ++ vadd.s16 q2, q2, q13 // ip[5] * C3 ++ vadd.s16 q3, q3, q10 // ip[2] * C2 ++ vsub.s16 q13, q2, q1 // D = ip[5] * C3 - ip[3] * C5 ++ vsub.s16 q1, q9, q11 // (A - C) ++ vadd.s16 q11, q9, q11 // Cd = A + C ++ vsub.s16 q9, q15, q13 // (B - D) ++ vadd.s16 q13, q15, q13 // Dd = B + D ++ vadd.s16 q15, q3, q4 // G = ip[2] * C2 + ip[6] * C6 ++ ++ vmull.s16 q2, d2, xC4S4 // ((A - C) * C4) << 16 ++ vmull.s16 q3, d3, xC4S4 ++ vmull.s16 q4, d28, xC2S6 // (ip[6] * C2) << 16 ++ vmull.s16 q5, d29, xC2S6 ++ vmull.s16 q6, d20, xC6S2 // (ip[2] * C6) << 16 ++ vmull.s16 q7, d21, xC6S2 ++ vshrn.s32 d4, q2, #16 ++ vshrn.s32 d5, q3, #16 ++ vshrn.s32 d6, q4, #16 ++ vshrn.s32 d7, q5, #16 ++ vshrn.s32 d8, q6, #16 // ip[2] * C6 ++ vmull.s16 q5, d18, xC4S4 // ((B - D) * C4) << 16 ++ vmull.s16 q6, d19, xC4S4 ++ vshrn.s32 d9, q7, #16 ++ vadd.s16 q3, q3, q14 // ip[6] * C2 ++ vadd.s16 q10, q1, q2 // Ad = (A - C) * C4 ++ vsub.s16 q14, q4, q3 // H = ip[2] * C6 - ip[6] * C2 ++ bx lr ++.endfunc ++ ++.macro VP3_IDCT_END type ++function vp3_idct_end_\type\()_neon ++.ifc \type, col ++ vdup.16 q0, r3 ++ vadd.s16 q12, q12, q0 ++ vadd.s16 q8, q8, q0 ++.endif ++ ++ vshrn.s32 d2, q5, #16 ++ vshrn.s32 d3, q6, #16 ++ vadd.s16 q2, q12, q15 // Gd = E + G ++ vadd.s16 q9, q1, q9 // (B - D) * C4 ++ vsub.s16 q12, q12, q15 // Ed = E - G ++ vsub.s16 q3, q8, q10 // Fd = F - Ad ++ vadd.s16 q10, q8, q10 // Add = F + Ad ++ vadd.s16 q4, q9, q14 // Hd = Bd + H ++ vsub.s16 q14, q9, q14 // Bdd = Bd - H ++ vadd.s16 q8, q2, q11 // [0] = Gd + Cd ++ vsub.s16 q15, q2, q11 // [7] = Gd - Cd ++ vadd.s16 q9, q10, q4 // [1] = Add + Hd ++ vsub.s16 q10, q10, q4 // [2] = Add - Hd ++ vadd.s16 q11, q12, q13 // [3] = Ed + Dd ++ vsub.s16 q12, q12, q13 // [4] = Ed - Dd ++.ifc \type, row ++ vtrn.16 q8, q9 ++.endif ++ vadd.s16 q13, q3, q14 // [5] = Fd + Bdd ++ vsub.s16 q14, q3, q14 // [6] = Fd - Bdd ++ ++.ifc \type, row ++ // 8x8 transpose ++ vtrn.16 q10, q11 ++ vtrn.16 q12, q13 ++ vtrn.16 q14, q15 ++ vtrn.32 q8, q10 ++ vtrn.32 q9, q11 ++ vtrn.32 q12, q14 ++ vtrn.32 q13, q15 ++ vswp d17, d24 ++ vswp d19, d26 ++ vadd.s16 q1, q8, q12 ++ vswp d21, d28 ++ vsub.s16 q8, q8, q12 ++ vswp d23, d30 ++.endif ++ bx lr ++.endfunc ++.endm ++ ++VP3_IDCT_END row ++VP3_IDCT_END col ++ ++function ff_vp3_idct_neon, export=1 ++ mov ip, lr ++ mov r2, r0 ++ bl vp3_idct_start_neon ++ bl vp3_idct_end_row_neon ++ mov r3, #8 ++ bl vp3_idct_core_neon ++ bl vp3_idct_end_col_neon ++ mov lr, ip ++ vpop {d8-d15} ++ ++ vshr.s16 q8, q8, #4 ++ vshr.s16 q9, q9, #4 ++ vshr.s16 q10, q10, #4 ++ vshr.s16 q11, q11, #4 ++ vshr.s16 q12, q12, #4 ++ vst1.64 {d16-d19}, [r0,:128]! ++ vshr.s16 q13, q13, #4 ++ vshr.s16 q14, q14, #4 ++ vst1.64 {d20-d23}, [r0,:128]! ++ vshr.s16 q15, q15, #4 ++ vst1.64 {d24-d27}, [r0,:128]! ++ vst1.64 {d28-d31}, [r0,:128]! ++ bx lr ++.endfunc ++ ++function ff_vp3_idct_put_neon, export=1 ++ mov ip, lr ++ bl vp3_idct_start_neon ++ bl vp3_idct_end_row_neon ++ mov r3, #8 ++ add r3, r3, #2048 // convert signed pixel to unsigned ++ bl vp3_idct_core_neon ++ bl vp3_idct_end_col_neon ++ mov lr, ip ++ vpop {d8-d15} ++ ++ vqshrun.s16 d0, q8, #4 ++ vqshrun.s16 d1, q9, #4 ++ vqshrun.s16 d2, q10, #4 ++ vqshrun.s16 d3, q11, #4 ++ vst1.64 {d0}, [r0,:64], r1 ++ vqshrun.s16 d4, q12, #4 ++ vst1.64 {d1}, [r0,:64], r1 ++ vqshrun.s16 d5, q13, #4 ++ vst1.64 {d2}, [r0,:64], r1 ++ vqshrun.s16 d6, q14, #4 ++ vst1.64 {d3}, [r0,:64], r1 ++ vqshrun.s16 d7, q15, #4 ++ vst1.64 {d4}, [r0,:64], r1 ++ vst1.64 {d5}, [r0,:64], r1 ++ vst1.64 {d6}, [r0,:64], r1 ++ vst1.64 {d7}, [r0,:64], r1 ++ bx lr ++.endfunc ++ ++function ff_vp3_idct_add_neon, export=1 ++ mov ip, lr ++ bl vp3_idct_start_neon ++ bl vp3_idct_end_row_neon ++ mov r3, #8 ++ bl vp3_idct_core_neon ++ bl vp3_idct_end_col_neon ++ mov lr, ip ++ vpop {d8-d15} ++ mov r2, r0 ++ ++ vld1.64 {d0}, [r0,:64], r1 ++ vshr.s16 q8, q8, #4 ++ vld1.64 {d1}, [r0,:64], r1 ++ vshr.s16 q9, q9, #4 ++ vld1.64 {d2}, [r0,:64], r1 ++ vaddw.u8 q8, q8, d0 ++ vld1.64 {d3}, [r0,:64], r1 ++ vaddw.u8 q9, q9, d1 ++ vld1.64 {d4}, [r0,:64], r1 ++ vshr.s16 q10, q10, #4 ++ vld1.64 {d5}, [r0,:64], r1 ++ vshr.s16 q11, q11, #4 ++ vld1.64 {d6}, [r0,:64], r1 ++ vqmovun.s16 d0, q8 ++ vld1.64 {d7}, [r0,:64], r1 ++ vqmovun.s16 d1, q9 ++ vaddw.u8 q10, q10, d2 ++ vaddw.u8 q11, q11, d3 ++ vshr.s16 q12, q12, #4 ++ vshr.s16 q13, q13, #4 ++ vqmovun.s16 d2, q10 ++ vqmovun.s16 d3, q11 ++ vaddw.u8 q12, q12, d4 ++ vaddw.u8 q13, q13, d5 ++ vshr.s16 q14, q14, #4 ++ vshr.s16 q15, q15, #4 ++ vst1.64 {d0}, [r2,:64], r1 ++ vqmovun.s16 d4, q12 ++ vst1.64 {d1}, [r2,:64], r1 ++ vqmovun.s16 d5, q13 ++ vst1.64 {d2}, [r2,:64], r1 ++ vaddw.u8 q14, q14, d6 ++ vst1.64 {d3}, [r2,:64], r1 ++ vaddw.u8 q15, q15, d7 ++ vst1.64 {d4}, [r2,:64], r1 ++ vqmovun.s16 d6, q14 ++ vst1.64 {d5}, [r2,:64], r1 ++ vqmovun.s16 d7, q15 ++ vst1.64 {d6}, [r2,:64], r1 ++ vst1.64 {d7}, [r2,:64], r1 ++ bx lr ++.endfunc +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0009-ARM-actually-add-VP3-loop-filter.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0009-ARM-actually-add-VP3-loop-filter.patch @@ -0,0 +1,114 @@ +From 2ca1dc1b533f6916ac593d435e1af8a299944d2c Mon Sep 17 00:00:00 2001 +From: conrad +Date: Sat, 23 May 2009 18:47:26 +0000 +Subject: [PATCH 09/27] ARM: actually add VP3 loop filter + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18917 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/vp3dsp_neon.S | 94 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 94 insertions(+), 0 deletions(-) + create mode 100644 libavcodec/arm/vp3dsp_neon.S + +diff --git a/libavcodec/arm/vp3dsp_neon.S b/libavcodec/arm/vp3dsp_neon.S +new file mode 100644 +index 0000000..cce80dd +--- /dev/null ++++ b/libavcodec/arm/vp3dsp_neon.S +@@ -0,0 +1,94 @@ ++/* ++ * Copyright (c) 2009 David Conrad ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "asm.S" ++ ++.macro vp3_loop_filter ++ vsubl.u8 q3, d18, d17 ++ vsubl.u8 q2, d16, d19 ++ vadd.i16 q1, q3, q3 ++ vadd.i16 q2, q2, q3 ++ vadd.i16 q0, q1, q2 ++ vrshr.s16 q0, q0, #3 ++ vmovl.u8 q9, d18 ++ vdup.u16 q15, r2 ++ ++ vabs.s16 q1, q0 ++ vshr.s16 q0, q0, #15 ++ vqsub.u16 q2, q15, q1 ++ vqsub.u16 q3, q2, q1 ++ vsub.i16 q1, q2, q3 ++ veor q1, q1, q0 ++ vsub.i16 q0, q1, q0 ++ ++ vaddw.u8 q2, q0, d17 ++ vsub.i16 q3, q9, q0 ++ vqmovun.s16 d0, q2 ++ vqmovun.s16 d1, q3 ++.endm ++ ++function ff_vp3_v_loop_filter_neon, export=1 ++ sub ip, r0, r1 ++ sub r0, r0, r1, lsl #1 ++ vld1.64 {d16}, [r0,:64], r1 ++ vld1.64 {d17}, [r0,:64], r1 ++ vld1.64 {d18}, [r0,:64], r1 ++ vld1.64 {d19}, [r0,:64], r1 ++ ldrb r2, [r2, #129*4] ++ ++ vp3_loop_filter ++ ++ vst1.64 {d0}, [ip,:64], r1 ++ vst1.64 {d1}, [ip,:64], r1 ++ bx lr ++.endfunc ++ ++function ff_vp3_h_loop_filter_neon, export=1 ++ sub ip, r0, #1 ++ sub r0, r0, #2 ++ vld1.32 {d16[]}, [r0], r1 ++ vld1.32 {d17[]}, [r0], r1 ++ vld1.32 {d18[]}, [r0], r1 ++ vld1.32 {d19[]}, [r0], r1 ++ vld1.32 {d16[1]}, [r0], r1 ++ vld1.32 {d17[1]}, [r0], r1 ++ vld1.32 {d18[1]}, [r0], r1 ++ vld1.32 {d19[1]}, [r0], r1 ++ ldrb r2, [r2, #129*4] ++ ++ vtrn.8 d16, d17 ++ vtrn.8 d18, d19 ++ vtrn.16 d16, d18 ++ vtrn.16 d17, d19 ++ ++ vp3_loop_filter ++ ++ vtrn.8 d0, d1 ++ ++ vst1.16 {d0[0]}, [ip], r1 ++ vst1.16 {d1[0]}, [ip], r1 ++ vst1.16 {d0[1]}, [ip], r1 ++ vst1.16 {d1[1]}, [ip], r1 ++ vst1.16 {d0[2]}, [ip], r1 ++ vst1.16 {d1[2]}, [ip], r1 ++ vst1.16 {d0[3]}, [ip], r1 ++ vst1.16 {d1[3]}, [ip], r1 ++ bx lr ++.endfunc +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0005-ARM-asm-for-AV_RN.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0005-ARM-asm-for-AV_RN.patch @@ -0,0 +1,124 @@ +From 8e2336d4b05585ed3a533b388751bff4f3cfef05 Mon Sep 17 00:00:00 2001 +From: mru +Date: Sat, 18 Apr 2009 00:00:28 +0000 +Subject: [PATCH 05/27] ARM asm for AV_RN*() + +ARMv6 and later support unaligned loads and stores for single +word/halfword but not double/multiple. GCC is ignorant of this and +will always use bytewise accesses for unaligned data. Casting to an +int32_t pointer is dangerous since a load/store double or multiple +instruction might be used (this happens with some code in FFmpeg). +Implementing the AV_[RW]* macros with inline asm using only supported +instructions gives fast and safe unaligned accesses. ARM RVCT does +the right thing with generic code. + +This gives an overall speedup of up to 10%. + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18601 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavutil/arm/intreadwrite.h | 78 ++++++++++++++++++++++++++++++++++++++++++ + libavutil/intreadwrite.h | 3 ++ + 2 files changed, 81 insertions(+), 0 deletions(-) + create mode 100644 libavutil/arm/intreadwrite.h + +diff --git a/libavutil/arm/intreadwrite.h b/libavutil/arm/intreadwrite.h +new file mode 100644 +index 0000000..de2e553 +--- /dev/null ++++ b/libavutil/arm/intreadwrite.h +@@ -0,0 +1,78 @@ ++/* ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#ifndef AVUTIL_ARM_INTREADWRITE_H ++#define AVUTIL_ARM_INTREADWRITE_H ++ ++#include ++#include "config.h" ++ ++#if HAVE_FAST_UNALIGNED && HAVE_INLINE_ASM ++ ++#define AV_RN16 AV_RN16 ++static inline uint16_t AV_RN16(const void *p) ++{ ++ uint16_t v; ++ __asm__ ("ldrh %0, %1" : "=r"(v) : "m"(*(const uint16_t *)p)); ++ return v; ++} ++ ++#define AV_WN16 AV_WN16 ++static inline void AV_WN16(void *p, uint16_t v) ++{ ++ __asm__ ("strh %1, %0" : "=m"(*(uint16_t *)p) : "r"(v)); ++} ++ ++#define AV_RN32 AV_RN32 ++static inline uint32_t AV_RN32(const void *p) ++{ ++ uint32_t v; ++ __asm__ ("ldr %0, %1" : "=r"(v) : "m"(*(const uint32_t *)p)); ++ return v; ++} ++ ++#define AV_WN32 AV_WN32 ++static inline void AV_WN32(void *p, uint32_t v) ++{ ++ __asm__ ("str %1, %0" : "=m"(*(uint32_t *)p) : "r"(v)); ++} ++ ++#define AV_RN64 AV_RN64 ++static inline uint64_t AV_RN64(const void *p) ++{ ++ union { uint64_t v; uint32_t hl[2]; } v; ++ __asm__ ("ldr %0, %2 \n\t" ++ "ldr %1, %3 \n\t" ++ : "=r"(v.hl[0]), "=r"(v.hl[1]) ++ : "m"(*(const uint32_t*)p), "m"(*((const uint32_t*)p+1))); ++ return v.v; ++} ++ ++#define AV_WN64 AV_WN64 ++static inline void AV_WN64(void *p, uint64_t v) ++{ ++ union { uint64_t v; uint32_t hl[2]; } vv = { v }; ++ __asm__ ("str %2, %0 \n\t" ++ "str %3, %1 \n\t" ++ : "=m"(*(uint32_t*)p), "=m"(*((uint32_t*)p+1)) ++ : "r"(vv.hl[0]), "r"(vv.hl[1])); ++} ++ ++#endif /* HAVE_INLINE_ASM */ ++ ++#endif /* AVUTIL_ARM_INTREADWRITE_H */ +diff --git a/libavutil/intreadwrite.h b/libavutil/intreadwrite.h +index b1c5c2a..42fb890 100644 +--- a/libavutil/intreadwrite.h ++++ b/libavutil/intreadwrite.h +@@ -29,6 +29,9 @@ + * defined, even if these are implemented as inline functions. + */ + ++#if ARCH_ARM ++# include "arm/intreadwrite.h" ++#endif + + /* + * Define AV_[RW]N helper macros to simplify definitions not provided +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0011-ARM-slightly-faster-NEON-H264-horizontal-loop-filter.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0011-ARM-slightly-faster-NEON-H264-horizontal-loop-filter.patch @@ -0,0 +1,85 @@ +From 56f78a98e66f1bd2bc29b00a048421e2f1760785 Mon Sep 17 00:00:00 2001 +From: mru +Date: Wed, 17 Jun 2009 22:33:04 +0000 +Subject: [PATCH 11/27] ARM: slightly faster NEON H264 horizontal loop filter + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19216 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/h264dsp_neon.S | 49 +++++++++++++++++++++-------------------- + 1 files changed, 25 insertions(+), 24 deletions(-) + +diff --git a/libavcodec/arm/h264dsp_neon.S b/libavcodec/arm/h264dsp_neon.S +index 44a1373..03e21f1 100644 +--- a/libavcodec/arm/h264dsp_neon.S ++++ b/libavcodec/arm/h264dsp_neon.S +@@ -37,6 +37,13 @@ + vtrn.8 \r6, \r7 + .endm + ++ .macro transpose_4x4 r0 r1 r2 r3 ++ vtrn.16 \r0, \r2 ++ vtrn.16 \r1, \r3 ++ vtrn.8 \r0, \r1 ++ vtrn.8 \r2, \r3 ++ .endm ++ + .macro swap4 r0 r1 r2 r3 r4 r5 r6 r7 + vswp \r0, \r4 + vswp \r1, \r5 +@@ -469,35 +476,29 @@ function ff_h264_h_loop_filter_luma_neon, export=1 + transpose_8x8 q3, q10, q9, q8, q0, q1, q2, q13 + + align_push_regs +- sub sp, sp, #16 +- vst1.64 {d4, d5}, [sp,:128] +- sub sp, sp, #16 +- vst1.64 {d20,d21}, [sp,:128] + + h264_loop_filter_luma + +- vld1.64 {d20,d21}, [sp,:128]! +- vld1.64 {d4, d5}, [sp,:128]! +- +- transpose_8x8 q3, q10, q4, q8, q0, q5, q2, q13 ++ transpose_4x4 q4, q8, q0, q5 + + sub r0, r0, r1, lsl #4 +- vst1.64 {d6}, [r0], r1 +- vst1.64 {d20}, [r0], r1 +- vst1.64 {d8}, [r0], r1 +- vst1.64 {d16}, [r0], r1 +- vst1.64 {d0}, [r0], r1 +- vst1.64 {d10}, [r0], r1 +- vst1.64 {d4}, [r0], r1 +- vst1.64 {d26}, [r0], r1 +- vst1.64 {d7}, [r0], r1 +- vst1.64 {d21}, [r0], r1 +- vst1.64 {d9}, [r0], r1 +- vst1.64 {d17}, [r0], r1 +- vst1.64 {d1}, [r0], r1 +- vst1.64 {d11}, [r0], r1 +- vst1.64 {d5}, [r0], r1 +- vst1.64 {d27}, [r0], r1 ++ add r0, r0, #2 ++ vst1.32 {d8[0]}, [r0], r1 ++ vst1.32 {d16[0]}, [r0], r1 ++ vst1.32 {d0[0]}, [r0], r1 ++ vst1.32 {d10[0]}, [r0], r1 ++ vst1.32 {d8[1]}, [r0], r1 ++ vst1.32 {d16[1]}, [r0], r1 ++ vst1.32 {d0[1]}, [r0], r1 ++ vst1.32 {d10[1]}, [r0], r1 ++ vst1.32 {d9[0]}, [r0], r1 ++ vst1.32 {d17[0]}, [r0], r1 ++ vst1.32 {d1[0]}, [r0], r1 ++ vst1.32 {d11[0]}, [r0], r1 ++ vst1.32 {d9[1]}, [r0], r1 ++ vst1.32 {d17[1]}, [r0], r1 ++ vst1.32 {d1[1]}, [r0], r1 ++ vst1.32 {d11[1]}, [r0], r1 + + align_pop_regs + bx lr +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0020-ARM-remove-unnecessary-.fpu-neon-directives.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0020-ARM-remove-unnecessary-.fpu-neon-directives.patch @@ -0,0 +1,80 @@ +From cf79e9ce120293a3d8fd6887298283c27ee866d4 Mon Sep 17 00:00:00 2001 +From: mru +Date: Fri, 2 Oct 2009 19:35:12 +0000 +Subject: [PATCH 20/20] ARM: remove unnecessary .fpu neon directives + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@20151 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon_s.S | 1 - + libavcodec/arm/h264dsp_neon.S | 2 -- + libavcodec/arm/h264idct_neon.S | 2 -- + libavcodec/arm/mdct_neon.S | 1 - + libavcodec/arm/simple_idct_neon.S | 2 -- + 5 files changed, 0 insertions(+), 8 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index 71d09c6..f039349 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -23,7 +23,6 @@ + #include "asm.S" + + preserve8 +- .fpu neon + .text + + .macro pixels16 avg=0 +diff --git a/libavcodec/arm/h264dsp_neon.S b/libavcodec/arm/h264dsp_neon.S +index 03e21f1..78f312d 100644 +--- a/libavcodec/arm/h264dsp_neon.S ++++ b/libavcodec/arm/h264dsp_neon.S +@@ -20,8 +20,6 @@ + + #include "asm.S" + +- .fpu neon +- + .macro transpose_8x8 r0 r1 r2 r3 r4 r5 r6 r7 + vtrn.32 \r0, \r4 + vtrn.32 \r1, \r5 +diff --git a/libavcodec/arm/h264idct_neon.S b/libavcodec/arm/h264idct_neon.S +index 6527390..d30e703 100644 +--- a/libavcodec/arm/h264idct_neon.S ++++ b/libavcodec/arm/h264idct_neon.S +@@ -21,8 +21,6 @@ + #include "asm.S" + + preserve8 +- .fpu neon +- + .text + + function ff_h264_idct_add_neon, export=1 +diff --git a/libavcodec/arm/mdct_neon.S b/libavcodec/arm/mdct_neon.S +index 5cd4647..f089519 100644 +--- a/libavcodec/arm/mdct_neon.S ++++ b/libavcodec/arm/mdct_neon.S +@@ -21,7 +21,6 @@ + + #include "asm.S" + +- .fpu neon + .text + + function ff_imdct_half_neon, export=1 +diff --git a/libavcodec/arm/simple_idct_neon.S b/libavcodec/arm/simple_idct_neon.S +index 0882481..4c329d8 100644 +--- a/libavcodec/arm/simple_idct_neon.S ++++ b/libavcodec/arm/simple_idct_neon.S +@@ -45,8 +45,6 @@ + #define w7 d1[2] + #define w4c d1[3] + +- .fpu neon +- + .macro idct_col4_top + vmull.s16 q7, d6, w2 /* q9 = W2 * col[2] */ + vmull.s16 q8, d6, w6 /* q10 = W6 * col[2] */ +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0018-Prepare-for-optimised-forward-MDCT-implementations.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0018-Prepare-for-optimised-forward-MDCT-implementations.patch @@ -0,0 +1,86 @@ +From 696f65e4e5d92a8777d922269558cc9f03ca1145 Mon Sep 17 00:00:00 2001 +From: mru +Date: Fri, 11 Sep 2009 02:24:19 +0000 +Subject: [PATCH 18/27] Prepare for optimised forward MDCT implementations + +This adds a function pointer for forward MDCT to FFTContext and +initialises it with the existing C function. ff_calc_mdct() is +changed to an inline function calling the selected version as +done for other fft/mdct functions. + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19818 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/dsputil.h | 9 ++++++++- + libavcodec/fft.c | 1 + + libavcodec/mdct.c | 2 +- + 3 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/libavcodec/dsputil.h b/libavcodec/dsputil.h +index c4abd14..e299ade 100644 +--- a/libavcodec/dsputil.h ++++ b/libavcodec/dsputil.h +@@ -680,6 +680,7 @@ typedef struct FFTContext { + void (*fft_calc)(struct FFTContext *s, FFTComplex *z); + void (*imdct_calc)(struct MDCTContext *s, FFTSample *output, const FFTSample *input); + void (*imdct_half)(struct MDCTContext *s, FFTSample *output, const FFTSample *input); ++ void (*mdct_calc)(struct MDCTContext *s, FFTSample *output, const FFTSample *input); + } FFTContext; + + extern FFTSample* ff_cos_tabs[13]; +@@ -737,6 +738,12 @@ static inline void ff_imdct_half(MDCTContext *s, FFTSample *output, const FFTSam + s->fft.imdct_half(s, output, input); + } + ++static inline void ff_mdct_calc(MDCTContext *s, FFTSample *output, ++ const FFTSample *input) ++{ ++ s->fft.mdct_calc(s, output, input); ++} ++ + /** + * Generate a Kaiser-Bessel Derived Window. + * @param window pointer to half window +@@ -762,6 +769,7 @@ extern float *ff_sine_windows[6]; + int ff_mdct_init(MDCTContext *s, int nbits, int inverse); + void ff_imdct_calc_c(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_half_c(MDCTContext *s, FFTSample *output, const FFTSample *input); ++void ff_mdct_calc_c(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_calc_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_half_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); +@@ -770,7 +778,6 @@ void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input + void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_calc_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); + void ff_imdct_half_neon(MDCTContext *s, FFTSample *output, const FFTSample *input); +-void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input); + void ff_mdct_end(MDCTContext *s); + + /* Real Discrete Fourier Transform */ +diff --git a/libavcodec/fft.c b/libavcodec/fft.c +index b05ddda..655acd3 100644 +--- a/libavcodec/fft.c ++++ b/libavcodec/fft.c +@@ -86,6 +86,7 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) + s->fft_calc = ff_fft_calc_c; + s->imdct_calc = ff_imdct_calc_c; + s->imdct_half = ff_imdct_half_c; ++ s->mdct_calc = ff_mdct_calc_c; + s->exptab1 = NULL; + + #if HAVE_MMX && HAVE_YASM +diff --git a/libavcodec/mdct.c b/libavcodec/mdct.c +index cb3388f..b0816b0 100644 +--- a/libavcodec/mdct.c ++++ b/libavcodec/mdct.c +@@ -179,7 +179,7 @@ void ff_imdct_calc_c(MDCTContext *s, FFTSample *output, const FFTSample *input) + * @param input N samples + * @param out N/2 samples + */ +-void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input) ++void ff_mdct_calc_c(MDCTContext *s, FFTSample *out, const FFTSample *input) + { + int i, j, n, n8, n4, n2, n3; + FFTSample re, im; +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0017-ARM-faster-NEON-IMDCT.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0017-ARM-faster-NEON-IMDCT.patch @@ -0,0 +1,103 @@ +From d49bcbe5ba20f6130b2dcad078b0ee27b2660a8f Mon Sep 17 00:00:00 2001 +From: mru +Date: Fri, 11 Sep 2009 02:01:18 +0000 +Subject: [PATCH 17/27] ARM: faster NEON IMDCT + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19817 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/mdct_neon.S | 46 ++++++++++++++++--------------------------- + 1 files changed, 17 insertions(+), 29 deletions(-) + +diff --git a/libavcodec/arm/mdct_neon.S b/libavcodec/arm/mdct_neon.S +index 6d1dcfd..d84eccd 100644 +--- a/libavcodec/arm/mdct_neon.S ++++ b/libavcodec/arm/mdct_neon.S +@@ -38,30 +38,28 @@ function ff_imdct_half_neon, export=1 + mov r12, #-16 + sub r7, r7, #16 + +- vld1.32 {d16-d17},[r7,:128],r12 @ d16=x,n1 d17=x,n0 +- vld1.32 {d0-d1}, [r2,:128]! @ d0 =m0,x d1 =m1,x ++ vld2.32 {d16-d17},[r7,:128],r12 @ d16=x,n1 d17=x,n0 ++ vld2.32 {d0-d1}, [r2,:128]! @ d0 =m0,x d1 =m1,x ++ vrev64.32 d17, d17 + vld1.32 {d2}, [r4,:64]! @ d2=c0,c1 ++ vmul.f32 d6, d17, d2 + vld1.32 {d3}, [r5,:64]! @ d3=s0,s1 +- vuzp.32 d17, d16 +- vuzp.32 d0, d1 +- vmul.f32 d6, d16, d2 + vmul.f32 d7, d0, d2 + 1: + subs lr, lr, #2 + ldr r6, [r3], #4 + vmul.f32 d4, d0, d3 +- vmul.f32 d5, d16, d3 ++ vmul.f32 d5, d17, d3 + vsub.f32 d4, d6, d4 + vadd.f32 d5, d5, d7 + uxtah r8, r1, r6, ror #16 + uxtah r6, r1, r6 + beq 1f +- vld1.32 {d16-d17},[r7,:128],r12 +- vld1.32 {d0-d1}, [r2,:128]! +- vuzp.32 d17, d16 ++ vld2.32 {d16-d17},[r7,:128],r12 ++ vld2.32 {d0-d1}, [r2,:128]! ++ vrev64.32 d17, d17 + vld1.32 {d2}, [r4,:64]! +- vuzp.32 d0, d1 +- vmul.f32 d6, d16, d2 ++ vmul.f32 d6, d17, d2 + vld1.32 {d3}, [r5,:64]! + vmul.f32 d7, d0, d2 + vst2.32 {d4[0],d5[0]}, [r6,:64] +@@ -95,11 +93,9 @@ function ff_imdct_half_neon, export=1 + mov r8, r6 + mov r0, r3 + +- vld1.32 {d0-d1}, [r3,:128], r7 @ d0 =i1,r1 d1 =i0,r0 +- vld1.32 {d20-d21},[r6,:128]! @ d20=i2,r2 d21=i3,r3 ++ vld2.32 {d0-d1}, [r3,:128], r7 @ d0 =i1,r1 d1 =i0,r0 ++ vld2.32 {d20-d21},[r6,:128]! @ d20=i2,r2 d21=i3,r3 + vld1.32 {d18}, [r2,:64], r12 @ d18=s1,s0 +- vuzp.32 d20, d21 +- vuzp.32 d0, d1 + 1: + subs lr, lr, #2 + vmul.f32 d7, d0, d18 +@@ -118,25 +114,17 @@ function ff_imdct_half_neon, export=1 + vsub.f32 d4, d4, d24 + vsub.f32 d5, d5, d25 + beq 1f +- vld1.32 {d0-d1}, [r3,:128], r7 +- vld1.32 {d20-d21},[r6,:128]! ++ vld2.32 {d0-d1}, [r3,:128], r7 ++ vld2.32 {d20-d21},[r6,:128]! + vld1.32 {d18}, [r2,:64], r12 +- vuzp.32 d20, d21 +- vuzp.32 d0, d1 + vrev64.32 q3, q3 +- vtrn.32 d4, d6 +- vtrn.32 d5, d7 +- vswp d5, d6 +- vst1.32 {d4-d5}, [r0,:128], r7 +- vst1.32 {d6-d7}, [r8,:128]! ++ vst2.32 {d4,d6}, [r0,:128], r7 ++ vst2.32 {d5,d7}, [r8,:128]! + b 1b + 1: + vrev64.32 q3, q3 +- vtrn.32 d4, d6 +- vtrn.32 d5, d7 +- vswp d5, d6 +- vst1.32 {d4-d5}, [r0,:128] +- vst1.32 {d6-d7}, [r8,:128] ++ vst2.32 {d4,d6}, [r0,:128] ++ vst2.32 {d5,d7}, [r8,:128] + + pop {r4-r8,pc} + .endfunc +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0007-ARM-Use-fewer-register-in-NEON-put_pixels-_y2-and-_x.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0007-ARM-Use-fewer-register-in-NEON-put_pixels-_y2-and-_x.patch @@ -0,0 +1,168 @@ +From dcd9d80a563a1877e1e5f9182d1bf0ac08ccc7d4 Mon Sep 17 00:00:00 2001 +From: conrad +Date: Wed, 29 Apr 2009 11:38:09 +0000 +Subject: [PATCH 07/27] ARM: Use fewer register in NEON put_pixels _y2 and _xy2 + Approved by Mans on IRC + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18713 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + libavcodec/arm/dsputil_neon_s.S | 64 ++++++++++++++++----------------------- + 1 files changed, 26 insertions(+), 38 deletions(-) + +diff --git a/libavcodec/arm/dsputil_neon_s.S b/libavcodec/arm/dsputil_neon_s.S +index a55e05f..303b11c 100644 +--- a/libavcodec/arm/dsputil_neon_s.S ++++ b/libavcodec/arm/dsputil_neon_s.S +@@ -73,35 +73,29 @@ + .endm + + .macro pixels16_y2 vhadd=vrhadd.u8 +- push {lr} +- add ip, r1, r2 +- lsl lr, r2, #1 +- vld1.64 {d0, d1}, [r1], lr +- vld1.64 {d2, d3}, [ip], lr ++ vld1.64 {d0, d1}, [r1], r2 ++ vld1.64 {d2, d3}, [r1], r2 + 1: subs r3, r3, #2 + \vhadd q2, q0, q1 +- vld1.64 {d0, d1}, [r1], lr ++ vld1.64 {d0, d1}, [r1], r2 + \vhadd q3, q0, q1 +- vld1.64 {d2, d3}, [ip], lr ++ vld1.64 {d2, d3}, [r1], r2 + pld [r1] +- pld [ip] ++ pld [r1, r2] + vst1.64 {d4, d5}, [r0,:128], r2 + vst1.64 {d6, d7}, [r0,:128], r2 + bne 1b +- pop {pc} ++ bx lr + .endm + + .macro pixels16_xy2 vshrn=vrshrn.u16 no_rnd=0 +- push {lr} +- lsl lr, r2, #1 +- add ip, r1, r2 +- vld1.64 {d0-d2}, [r1], lr +- vld1.64 {d4-d6}, [ip], lr ++ vld1.64 {d0-d2}, [r1], r2 ++ vld1.64 {d4-d6}, [r1], r2 + .if \no_rnd + vmov.i16 q13, #1 + .endif + pld [r1] +- pld [ip] ++ pld [r1, r2] + vext.8 q1, q0, q1, #1 + vext.8 q3, q2, q3, #1 + vaddl.u8 q8, d0, d2 +@@ -109,7 +103,7 @@ + vaddl.u8 q9, d4, d6 + vaddl.u8 q11, d5, d7 + 1: subs r3, r3, #2 +- vld1.64 {d0-d2}, [r1], lr ++ vld1.64 {d0-d2}, [r1], r2 + vadd.u16 q12, q8, q9 + pld [r1] + .if \no_rnd +@@ -123,11 +117,11 @@ + .endif + \vshrn d29, q1, #2 + vaddl.u8 q8, d0, d30 +- vld1.64 {d2-d4}, [ip], lr ++ vld1.64 {d2-d4}, [r1], r2 + vaddl.u8 q10, d1, d31 + vst1.64 {d28,d29}, [r0,:128], r2 + vadd.u16 q12, q8, q9 +- pld [ip] ++ pld [r1, r2] + .if \no_rnd + vadd.u16 q12, q12, q13 + .endif +@@ -142,7 +136,7 @@ + vaddl.u8 q11, d3, d5 + vst1.64 {d30,d31}, [r0,:128], r2 + bgt 1b +- pop {pc} ++ bx lr + .endm + + .macro pixels8 +@@ -180,41 +174,35 @@ + .endm + + .macro pixels8_y2 vhadd=vrhadd.u8 +- push {lr} +- add ip, r1, r2 +- lsl lr, r2, #1 +- vld1.64 {d0}, [r1], lr +- vld1.64 {d1}, [ip], lr ++ vld1.64 {d0}, [r1], r2 ++ vld1.64 {d1}, [r1], r2 + 1: subs r3, r3, #2 + \vhadd d4, d0, d1 +- vld1.64 {d0}, [r1], lr ++ vld1.64 {d0}, [r1], r2 + \vhadd d5, d0, d1 +- vld1.64 {d1}, [ip], lr ++ vld1.64 {d1}, [r1], r2 + pld [r1] +- pld [ip] ++ pld [r1, r2] + vst1.64 {d4}, [r0,:64], r2 + vst1.64 {d5}, [r0,:64], r2 + bne 1b +- pop {pc} ++ bx lr + .endm + + .macro pixels8_xy2 vshrn=vrshrn.u16 no_rnd=0 +- push {lr} +- lsl lr, r2, #1 +- add ip, r1, r2 +- vld1.64 {d0, d1}, [r1], lr +- vld1.64 {d2, d3}, [ip], lr ++ vld1.64 {d0, d1}, [r1], r2 ++ vld1.64 {d2, d3}, [r1], r2 + .if \no_rnd + vmov.i16 q11, #1 + .endif + pld [r1] +- pld [ip] ++ pld [r1, r2] + vext.8 d4, d0, d1, #1 + vext.8 d6, d2, d3, #1 + vaddl.u8 q8, d0, d4 + vaddl.u8 q9, d2, d6 + 1: subs r3, r3, #2 +- vld1.64 {d0, d1}, [r1], lr ++ vld1.64 {d0, d1}, [r1], r2 + pld [r1] + vadd.u16 q10, q8, q9 + vext.8 d4, d0, d1, #1 +@@ -223,9 +211,9 @@ + .endif + vaddl.u8 q8, d0, d4 + \vshrn d5, q10, #2 +- vld1.64 {d2, d3}, [ip], lr ++ vld1.64 {d2, d3}, [r1], r2 + vadd.u16 q10, q8, q9 +- pld [ip] ++ pld [r1, r2] + .if \no_rnd + vadd.u16 q10, q10, q11 + .endif +@@ -235,7 +223,7 @@ + vaddl.u8 q9, d2, d6 + vst1.64 {d7}, [r0,:64], r2 + bgt 1b +- pop {pc} ++ bx lr + .endm + + .macro pixfunc pfx name suf rnd_op args:vararg +-- +1.6.3.3 + --- ffmpeg-extra-0.5.9.orig/debian/patches/neon/0021-ARM-check-for-VFP-register-arguments.patch +++ ffmpeg-extra-0.5.9/debian/patches/neon/0021-ARM-check-for-VFP-register-arguments.patch @@ -0,0 +1,55 @@ +From 2062a3d147ea6123eb0aa2b010be6c662e58f291 Mon Sep 17 00:00:00 2001 +From: mru +Date: Mon, 20 Jul 2009 22:30:24 +0000 +Subject: [PATCH] ARM: check for VFP register arguments + +git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19474 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b +--- + configure | 6 ++++++ + libavcodec/arm/asm.S | 9 +++++++++ + 2 files changed, 15 insertions(+), 0 deletions(-) + +diff --git a/configure b/configure +index 7459215..d0c7096 100755 +--- a/configure ++++ b/configure +@@ -917,6 +917,7 @@ HAVE_LIST=" + termios_h + threads + truncf ++ vfp_args + winsock2_h + yasm + " +@@ -1866,6 +1867,11 @@ fi + + # check for assembler specific support + ++enabled arm && check_ld <