summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-07-13 10:56:45 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-07-13 10:56:45 +0000
commit72dedf790444dbbd093e10066e4a7e699689502c (patch)
treee81f49f3815c24636cae7f34fb6297b410dddf76
parent856a1e45eed1c576313f39485d59cee510bdf8ef (diff)
downloadgst-plugins-bad-72dedf790444dbbd093e10066e4a7e699689502c.tar.gz
gst-plugins-bad-72dedf790444dbbd093e10066e4a7e699689502c.tar.bz2
gst-plugins-bad-72dedf790444dbbd093e10066e4a7e699689502c.zip
gst/deinterlace2/tvtime/greedyh.asm: Always use the C implementation if width is not a multiple of 4. The assembly op...
Original commit message from CVS: * gst/deinterlace2/tvtime/greedyh.asm: Always use the C implementation if width is not a multiple of 4. The assembly optimized version only handle this and calling the C implementation for the remaining part doesn't work because it needs previous calculations.
-rw-r--r--ChangeLog8
-rw-r--r--gst/deinterlace2/tvtime/greedyh.asm10
2 files changed, 13 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 25f0a935..00b69802 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,14 @@
2008-07-13 Sebastian Dröge <sebastian.droege@collabora.co.uk>
* gst/deinterlace2/tvtime/greedyh.asm:
+ Always use the C implementation if width is not a multiple of 4. The
+ assembly optimized version only handle this and calling the C
+ implementation for the remaining part doesn't work because it needs
+ previous calculations.
+
+2008-07-13 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * gst/deinterlace2/tvtime/greedyh.asm:
* gst/deinterlace2/tvtime/greedyh.c:
* gst/deinterlace2/tvtime/greedyhmacros.h:
Some cleanup, use 3DNOW instead of TDNOW in macros.
diff --git a/gst/deinterlace2/tvtime/greedyh.asm b/gst/deinterlace2/tvtime/greedyh.asm
index 9272bc30..aa99e55f 100644
--- a/gst/deinterlace2/tvtime/greedyh.asm
+++ b/gst/deinterlace2/tvtime/greedyh.asm
@@ -48,6 +48,11 @@ FUNCT_NAME (GstDeinterlaceMethodGreedyH *self, uint8_t * L1, uint8_t * L2, uint8
int64_t QW256B;
int64_t LastAvg = 0; //interp value from left qword
+
+ // FIXME: Use C implementation if the width is not a multiple of 4
+ // Do something more optimal later
+ if (size % 8 != 0)
+ greedyDScaler_C (self, L1, L2, L3, L2P, Dest, size);
// Set up our two parms that are actually evaluated for each pixel
i = self->max_comb;
@@ -241,9 +246,4 @@ FUNCT_NAME (GstDeinterlaceMethodGreedyH *self, uint8_t * L1, uint8_t * L2, uint8
/* FIXME: breaks unless compiling with -mmmx
"mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7", */
"memory", "cc");
-
- if (size % 8 != 0) {
- int offset = GST_ROUND_DOWN_8 (size);
- greedyDScaler_C (self, L1 + offset, L2 + offset, L3 + offset, L2P + offset, Dest + offset, size % 8);
- }
}