Ronald S. Bultje
c435653627
swscale: write yuv2plane1 MMX/SSE2/SSE4/AVX functions.
13 years ago
Michael Niedermayer
e484b64ce3
sws: fallback to mmx2 when yuv2yuvX_sse3() cannot be used.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
b616600516
sws: replace long by x86_reg in x86 asm
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
9eb867e117
sws: add yuv2yuvX_sse3()
...
Code is about 2x as fast as previous
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
8b4b2ddf8d
sws: x86_32 fix
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
76a3490672
sws: add yuv2yuvX() back and updated to the just 1 plane API
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
4d31f42020
sws: port to thw new 1 plane API and add back yuv2yuv1_ar().
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
f15359727d
sws: better MOVNTQ macro
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Ronald S. Bultje
9e66b892e8
swscale: add missing colons to x86 assembly yuv2planeX.
...
This fixes assembling using "nasm".
13 years ago
Michael Niedermayer
1ac5b51203
swscale: disable functions that do not yet work
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Ronald S. Bultje
6cacecdca3
swscale: make yuv2yuvX_10_sse2/avx 8/9/16-bits aware.
...
Also implement MMX/MMX2 versions and SSE4 versions.
13 years ago
Kieran Kunhya
7fbbf95293
yuv2planeX10 SIMD
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
13 years ago
Kieran Kunhya
34e8d147b3
Split out yuv2yuv1 luma and chroma in order to make them generic DSP functions
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
13 years ago
Ronald S. Bultje
6aa3cac6bf
swscale: use aligned move for storage into temporary buffer.
...
The intermediate buffer is always aligned.
13 years ago
Michael Niedermayer
bd141af460
swscale: Fix prototypes of *toyv12 so they can be used with planar rgb input.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Reimar Döffinger
424bcc46b5
Compile x86/swscale_template with -mno-red-zone.
...
Replaces a very hackish hack to fix the same issue (call instruction
overwriting stack variables).
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
13 years ago
Reimar Döffinger
c928e91729
Hack around gcc 4.6 breaking asm using call.
...
gcc 4.6 no longer decrements esp to account for local variables.
Thus using call will end up overwriting some local variable.
So add an extra one it can safely clobber.
This is a huge hack because it's basically pure chance it works,
no idea how this is supposed to be done.
Fixes trac ticket #397 .
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
13 years ago
Michael Niedermayer
d06c5b44cc
swscale: drop redundant code.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Michael Niedermayer
1eb8014b49
swscale: add 14bit support to the "MMX/SSE2/SSSE3/SSE4 versions for horizontal scaling"
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Ronald S. Bultje
e0c3e07387
sws: implement MMX/SSE2/SSSE3/SSE4 versions for horizontal scaling.
...
Speed: from 3.9x to 9.6x speed improvement over C, and some small
(up to 15%) speed improvements over existing MMX code (particularly
for bigger filters).
13 years ago
Michael Niedermayer
27bf599350
swscale: Fix unused asm and enable it
...
Author of the fix is ronald, the enabling & commit message are mine.
This fixes
commit 4e3e333a79
Author: Ronald S. Bultje <rsbultje@gmail.com>
Date: Tue Jul 5 12:49:11 2011 -0700
swscale: error dithering for 16/9/10-bit to 8-bit.
Based on a somewhat similar idea in FFmpeg's swscale copy.
The Fix was originally commited in: (and i missed it due to the commit message)
commit 5c391a161a
Author: Ronald S. Bultje <rsbultje@gmail.com>
Date: Fri Jul 8 14:39:04 2011 -0700
swscale: rename uv_off/uv_off2 to uv_off_px/byte.
13 years ago
Reimar Döffinger
746f1f14de
Remove unused variables.
...
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
13 years ago
Ronald S. Bultje
3f04ab4fcd
swscale: split hScale() function pointer into h[cy]Scale().
...
This allows using more specific implementations for chroma/luma, e.g.
we can make assumptions on filterSize being constant, thus avoiding
that test at runtime.
13 years ago
Ronald S. Bultje
28c1115a91
swscale: use 15-bit intermediates for 9/10-bit scaling.
13 years ago
Ronald S. Bultje
c59f9a68e2
swscale: error dithering for 16/9/10-bit to 8-bit.
...
Based on a somewhat similar idea in FFmpeg's swscale copy.
14 years ago
Ronald S. Bultje
ac9ac45aca
swscale: fix 16-bit scaling when output is 8-bits.
...
We would use the second half of the U plane buffer, rather than the
V plane buffer, to output the V plane pixels.
14 years ago
Michael Niedermayer
ca78fa24b7
sws: disable scale16 when int32 is used
14 years ago
Michael Niedermayer
987e4c1787
sws: fix rgb -> 16bit
14 years ago
Ronald S. Bultje
948ccdadf4
swscale: for >8bit scaling, read in native bit-depth.
...
For 9/10bit, it means we don't have to upscale to 16bit before
actual scaling or pixel format conversion, and thus a performance
gain.
14 years ago
Ronald S. Bultje
5c391a161a
swscale: rename uv_off/uv_off2 to uv_off_px/byte.
14 years ago
Ronald S. Bultje
4e3e333a79
swscale: error dithering for 16/9/10-bit to 8-bit.
...
Based on a somewhat similar idea in FFmpeg's swscale copy.
14 years ago
Ronald S. Bultje
42d622fab3
swscale: fix 16-bit scaling when output is 8-bits.
...
We would use the second half of the U plane buffer, rather than the
V plane buffer, to output the V plane pixels.
14 years ago
Ronald S. Bultje
8a8d0ce208
swscale: for >8bit scaling, read in native bit-depth.
...
For 9/10bit, it means we don't have to upscale to 16bit before
actual scaling or pixel format conversion, and thus a performance
gain.
14 years ago
Ronald S. Bultje
45f6ffe5e9
swscale: implement >8bit scaling support.
...
This means that precision is retained when scaling between sample
formats with >8 bits per component (48bit RGB, 16bit grayscale,
9/10/16bit YUV).
14 years ago
Ronald S. Bultje
ef1ee362b3
swscale: implement >8bit scaling support.
...
This means that precision is retained when scaling between sample
formats with >8 bits per component (48bit RGB, 16bit grayscale,
9/10/16bit YUV).
14 years ago
Ronald S. Bultje
13a099799e
swscale: change prototypes of scaled YUV output functions.
...
Remove unused variables "flags" and "dstFormat" in yuv2packed1,
merge source rows per plane for yuv2packed[12], and make every
source argument int16_t (some where invalidly set to uint16_t).
This prevents stack pollution and is part of the Great Evil Plan
to simplify swscale.
14 years ago
Ronald S. Bultje
0d994b2f45
swscale: don't use planar output functions to write to NV12/21.
...
This prevents a crash when converting to NV12/21 without the bitexact
flags enabled.
14 years ago
Ronald S. Bultje
97535ffb97
swscale: remove unused xInc/srcW arguments from hScale().
14 years ago
Diego Biurrun
a60466dbc3
swscale: Remove HAVE_MMX from files that are only compiled with MMX enabled.
14 years ago
Diego Biurrun
97e057ff81
swscale: Fix compilation with --disable-mmx2.
...
Some MMX2 functions were being referenced without proper #ifdefs.
14 years ago
Ronald S. Bultje
a27db4c349
swscale: fix function declaration keywords in x86/swscale_template.c.
...
Remove inline keyword for functions that are only called through
their function pointers (and thus cannot be inlined); add av_cold
keyword to init function, and use av_always_inline instead of
inline for functions that must be inlined for performance reasons.
14 years ago
Ronald S. Bultje
9bcbb250e2
swscale: fix types of assembly arguments.
...
This prevents the following compiler warnings: "warning:
initialization from incompatible pointer type". Since the
variables are only ever used in inline assembly, their type
is actually irrelevant (so the part where it was wrong did
not invoke any buggy behaviour).
14 years ago
Ronald S. Bultje
496d95c34c
swscale: move two macros that are only used once into caller.
...
This way, they look like regular code, which is easier to
understand.
14 years ago
Ronald S. Bultje
0fb5193156
swscale: reindent x86 init code.
14 years ago
Ronald S. Bultje
ca364a5b43
swscale: extract SWS_FULL_CHR_H_INT conditional into init code.
14 years ago
Ronald S. Bultje
bda9b20fa4
swscale: un-special-case yuv2yuvX16_c().
...
Make yuv2yuvX16_c a function pointer for yuv2yuvX(), so that the
function pointer becomes bitdepth-independent.
14 years ago
Michael Niedermayer
ba91bf58cd
swscale: override the lack of the accurate rounding flag when needed for dither.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
14 years ago
Ronald S. Bultje
983260b0a4
swscale: split out x86/swscale_template.c from swscale.c.
14 years ago
Baptiste Coudurier
5aa70309ad
In libswscale, use all lines when converting from 422p to rgb with mmx, improve quality.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
14 years ago
Michael Niedermayer
6713989c23
swscale: dither for planar yuv outputs
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
14 years ago