~ubuntu-branches/debian/experimental/ffmpeg/experimental

« back to all changes in this revision

Viewing changes to debian/patches/neon/0009-ARM-actually-add-VP3-loop-filter.patch

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler, Loïc Minier, Fabian Greffrath, Andres Mejia, Reinhard Tartler
  • Date: 2010-01-06 16:27:40 UTC
  • Revision ID: james.westby@ubuntu.com-20100106162740-w0c7o1bxg8xf9psx
Tags: 4:0.5+svn20090706-3
[ 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

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
From 2ca1dc1b533f6916ac593d435e1af8a299944d2c Mon Sep 17 00:00:00 2001
 
2
From: conrad <conrad@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
 
3
Date: Sat, 23 May 2009 18:47:26 +0000
 
4
Subject: [PATCH 09/27] ARM: actually add VP3 loop filter
 
5
 
 
6
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18917 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
 
7
---
 
8
 libavcodec/arm/vp3dsp_neon.S |   94 ++++++++++++++++++++++++++++++++++++++++++
 
9
 1 files changed, 94 insertions(+), 0 deletions(-)
 
10
 create mode 100644 libavcodec/arm/vp3dsp_neon.S
 
11
 
 
12
diff --git a/libavcodec/arm/vp3dsp_neon.S b/libavcodec/arm/vp3dsp_neon.S
 
13
new file mode 100644
 
14
index 0000000..cce80dd
 
15
--- /dev/null
 
16
+++ b/libavcodec/arm/vp3dsp_neon.S
 
17
@@ -0,0 +1,94 @@
 
18
+/*
 
19
+ * Copyright (c) 2009 David Conrad
 
20
+ *
 
21
+ * This file is part of FFmpeg.
 
22
+ *
 
23
+ * FFmpeg is free software; you can redistribute it and/or
 
24
+ * modify it under the terms of the GNU Lesser General Public
 
25
+ * License as published by the Free Software Foundation; either
 
26
+ * version 2.1 of the License, or (at your option) any later version.
 
27
+ *
 
28
+ * FFmpeg is distributed in the hope that it will be useful,
 
29
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
30
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
31
+ * Lesser General Public License for more details.
 
32
+ *
 
33
+ * You should have received a copy of the GNU Lesser General Public
 
34
+ * License along with FFmpeg; if not, write to the Free Software
 
35
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
36
+ */
 
37
+
 
38
+#include "asm.S"
 
39
+
 
40
+.macro vp3_loop_filter
 
41
+    vsubl.u8        q3,  d18, d17
 
42
+    vsubl.u8        q2,  d16, d19
 
43
+    vadd.i16        q1,  q3,  q3
 
44
+    vadd.i16        q2,  q2,  q3
 
45
+    vadd.i16        q0,  q1,  q2
 
46
+    vrshr.s16       q0,  q0,  #3
 
47
+    vmovl.u8        q9,  d18
 
48
+    vdup.u16        q15, r2
 
49
+
 
50
+    vabs.s16        q1,  q0
 
51
+    vshr.s16        q0,  q0,  #15
 
52
+    vqsub.u16       q2,  q15, q1
 
53
+    vqsub.u16       q3,  q2,  q1
 
54
+    vsub.i16        q1,  q2,  q3
 
55
+    veor            q1,  q1,  q0
 
56
+    vsub.i16        q0,  q1,  q0
 
57
+
 
58
+    vaddw.u8        q2,  q0,  d17
 
59
+    vsub.i16        q3,  q9,  q0
 
60
+    vqmovun.s16     d0,  q2
 
61
+    vqmovun.s16     d1,  q3
 
62
+.endm
 
63
+
 
64
+function ff_vp3_v_loop_filter_neon, export=1
 
65
+    sub             ip,  r0,  r1
 
66
+    sub             r0,  r0,  r1,  lsl #1
 
67
+    vld1.64         {d16}, [r0,:64], r1
 
68
+    vld1.64         {d17}, [r0,:64], r1
 
69
+    vld1.64         {d18}, [r0,:64], r1
 
70
+    vld1.64         {d19}, [r0,:64], r1
 
71
+    ldrb            r2,    [r2, #129*4]
 
72
+
 
73
+    vp3_loop_filter
 
74
+
 
75
+    vst1.64         {d0},  [ip,:64], r1
 
76
+    vst1.64         {d1},  [ip,:64], r1
 
77
+    bx              lr
 
78
+.endfunc
 
79
+
 
80
+function ff_vp3_h_loop_filter_neon, export=1
 
81
+    sub             ip,  r0,  #1
 
82
+    sub             r0,  r0,  #2
 
83
+    vld1.32         {d16[]},  [r0], r1
 
84
+    vld1.32         {d17[]},  [r0], r1
 
85
+    vld1.32         {d18[]},  [r0], r1
 
86
+    vld1.32         {d19[]},  [r0], r1
 
87
+    vld1.32         {d16[1]}, [r0], r1
 
88
+    vld1.32         {d17[1]}, [r0], r1
 
89
+    vld1.32         {d18[1]}, [r0], r1
 
90
+    vld1.32         {d19[1]}, [r0], r1
 
91
+    ldrb            r2,  [r2, #129*4]
 
92
+
 
93
+    vtrn.8          d16, d17
 
94
+    vtrn.8          d18, d19
 
95
+    vtrn.16         d16, d18
 
96
+    vtrn.16         d17, d19
 
97
+
 
98
+    vp3_loop_filter
 
99
+
 
100
+    vtrn.8          d0,  d1
 
101
+
 
102
+    vst1.16         {d0[0]}, [ip], r1
 
103
+    vst1.16         {d1[0]}, [ip], r1
 
104
+    vst1.16         {d0[1]}, [ip], r1
 
105
+    vst1.16         {d1[1]}, [ip], r1
 
106
+    vst1.16         {d0[2]}, [ip], r1
 
107
+    vst1.16         {d1[2]}, [ip], r1
 
108
+    vst1.16         {d0[3]}, [ip], r1
 
109
+    vst1.16         {d1[3]}, [ip], r1
 
110
+    bx              lr
 
111
+.endfunc
 
112
-- 
 
113
1.6.3.3
 
114