Diego Biurrun
92fed11352
swscale: Remove unused variable alpMmxFilter.
2012-02-13 19:20:53 +01:00
Ronald S. Bultje
3cac475655
swscale: move YUV2PACKED16WRAPPER() macro down to where it is used.
2012-02-13 07:14:05 -08:00
Ronald S. Bultje
c0b87359b2
swscale: handle gray16 as a "planar" YUV format (Y-only, of course).
...
This allows removing any gray16-specific code, which is essentially
identical to the per-plane code in yuv2plane*().
2012-02-13 07:14:05 -08:00
Ronald S. Bultje
9d9c846491
swscale: use yuv2packed1() functions for unscaled chroma also.
2012-02-13 07:14:04 -08:00
Ronald S. Bultje
d63b7d8c37
swscale: fix incorrect chroma bias in yuv2rgb48_1_c().
2012-02-13 07:14:04 -08:00
Ronald S. Bultje
1ca7dc60d2
swscale: fix invalid memory accesses in yuvpacked1() functions.
2012-02-13 07:14:04 -08:00
Ronald S. Bultje
3e23badd83
swscale: convert yuv2yuvX() to using named arguments.
2012-02-12 08:27:51 -08:00
Ronald S. Bultje
8c433d8a03
swscale: rename "dstw" to "w" to prevent name collisions.
...
"dstw" can collide with the word-version of the "dst" argument, causing
all kind of weird stuff down the pipe.
2012-02-12 08:27:50 -08:00
Ronald S. Bultje
ef66a0ed2e
swscale: use named registers in yuv2yuv1_plane() place.
...
Most of the function had been converted before, but I forgot this
particular location.
2012-02-12 08:27:50 -08:00
Ronald S. Bultje
dae2ce361a
swscale: enforce a minimum filtersize.
...
At very small dimensions, this calculation could lead to zero-sized
filters, which leads to uninitialized output, zero-sized allocations,
loop overflows in SIMD that uses do{..}while(i++<filtersize); instead
of for(i=0;i<filtersize;i++){..} and several other similar failures.
Therefore, require a minimum filtersize of 1.
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2012-02-11 10:06:50 -08:00
Diego Biurrun
a2e40cd3e2
swscale: ppc: Add missing header #includes to pass 'make checkheaders'.
2012-02-09 12:26:46 +01:00
Anton Khirnov
38d5533228
pixdesc: mark pseudopaletted formats with a special flag.
...
This makes it possible to dintinguish them from PAL8.
Fixes an invalid write in avpicture_layout().
2012-02-08 21:01:31 +01:00
Ronald S. Bultje
783487ae44
swscale: sign-extend integer function argument to qword on x86-64.
2012-02-08 10:31:14 -08:00
Diego Biurrun
0144fe6995
Remove Sun medialib glue code.
...
It is obscure, most likely unused and not bit-exact compared to
libavcodec due to a different IDCT transform algorithm.
2012-02-08 08:52:30 +01:00
Ronald S. Bultje
ef1c785f11
swscale: make yuv2yuv1 use named registers.
2012-02-07 11:38:13 -08:00
Ronald S. Bultje
b7542dd3d7
swscale: fix V plane memory location in bilinear/unscaled RGB/YUYV case.
...
Fixes bug 221.
CC: libav-stable@libav.org
2012-02-07 11:33:20 -08:00
Diego Biurrun
06b320ad78
swscale: K&R formatting cosmetics for SPARC code
2012-02-07 19:49:49 +01:00
Ronald S. Bultje
2144941069
swscale: split C output functions into separate file.
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-02-07 12:03:51 +01:00
Ronald S. Bultje
2dd7a1c030
swscale: Split C input functions into separate file.
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2012-02-07 12:03:50 +01:00
Ronald S. Bultje
7e4d9d5d45
win64: add a XMM clobber test configure option.
...
This will be useful to test more aggressively for failures to mark XMM
registers as clobbered in Win64 builds, and prevent regressions thereof.
Based on a patch by Ramiro Polla <ramiro.polla@gmail.com>
2012-02-02 12:00:48 -08:00
Diego Biurrun
148bc235b0
swscale: K&R formatting cosmetics for Blackfin code
...
Also prettyprint some comments in Assembly code.
2012-02-02 18:50:12 +01:00
Ronald S. Bultje
de53b9068a
swscale: implement MMX, SSE2 and AVX functions for RGB32 input.
2012-02-01 21:55:32 -08:00
Ronald S. Bultje
378c5ef9ae
swscale: enable dithering in MMX functions.
...
This was accidently disabled.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-02-01 09:33:29 -08:00
Ronald S. Bultje
212f161caa
swscale: make rgb24 function macros slightly smaller.
2012-02-01 09:33:13 -08:00
Ronald S. Bultje
f5490fbe3b
swscale: remove obsolete comment.
2012-02-01 07:17:01 -08:00
Diego Biurrun
2e3fb9e372
swscale-test: Drop unused argc and argv arguments from main().
2012-02-01 14:24:25 +01:00
Paul B Mahol
08d8029ea8
swscale: more generic check for planar destination formats with alpha
...
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-30 07:37:13 -08:00
Alex Converse
7181c4edee
cosmetics: Remove extra newlines at EOF
2012-01-27 17:19:09 -08:00
Ronald S. Bultje
b5d08c27c3
swscale: convert rgb/bgr24ToY/UV_mmx functions from inline asm to yasm.
...
Also implement sse2/ssse3/avx versions.
2012-01-27 11:00:30 +08:00
Ronald S. Bultje
3b15a6d742
config.asm: change %ifdef directives to %if directives.
...
This allows combining multiple conditionals in a single statement.
2012-01-27 10:19:57 +08:00
Alex Converse
08628b6afb
Revert "sws/pixfmt/pixdesc: add support for yuva444p"
...
This reverts commit fc115c80b7
.
Tests are broken.
2012-01-26 18:06:57 -08:00
Paul B Mahol
fc115c80b7
sws/pixfmt/pixdesc: add support for yuva444p
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-27 09:24:08 +08:00
Diego Biurrun
33ad8c3cab
cosmetics: Remove some unnecessary block braces.
2012-01-25 13:14:49 +01:00
Diego Biurrun
e44c11e9fa
cosmetics: Move static and inline attributes to more standard places.
...
Fixes several "‘static’ is not at beginning of declaration" warnings.
2012-01-14 17:32:36 +01:00
Ronald S. Bultje
3c172a4106
swscale: change yuv2yuvX code to use cpuflag().
2012-01-13 16:57:01 -08:00
Paul B Mahol
0cc1a86dc3
rgb2rgb: rgb12to15()
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-12 16:43:17 -08:00
Ronald S. Bultje
06b0246da0
swscale-test: fix stack overread.
...
Fixes problems in swscale-test where it gives a 3-member array to a
function expecting a 4-member array.
2012-01-12 16:38:29 -08:00
Ronald S. Bultje
e7843db3df
swscale: fix invalid conversions and memory problems.
...
Fixes problems where rgbToRgbWrapper() is called even though it doesn't
support this particular conversion (e.g. converting from RGB444 to
anything). Thirdly, fixes issues where rgbToRgbWrapper() is called for
non-native endiannness conversions (e.g. RGB555BE on a LE system).
Fourthly, fixes crashes when converting from e.g. monowhite to
monowhite, which calls planarCopyWrapper() and overwrites/reads because
n_bytes != n_pixels.
2012-01-12 16:38:29 -08:00
Paul B Mahol
f7f3563214
rgb2rgb: rgb12tobgr12()
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-11 15:52:53 -08:00
Ronald S. Bultje
b14fa5572c
swscale: fix crash in fast_bilinear code when compiled with -mred-zone.
...
Additional comments from Måns Rullgard have been integrated
by Reinhard Tartler.
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2012-01-10 18:20:37 +01:00
Oka Motofumi
cd44521625
swscale: specify register type.
...
Fixes a compilation failure on win64.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-10 09:17:37 -08:00
Paul B Mahol
0b8b3387a9
rgb2rgb: allow conversion for <15 bpp
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-09 20:09:41 -08:00
Paul B Mahol
5cad970971
swscale: RGB4444 and BGR444 input
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2012-01-08 20:19:41 -08:00
Ronald S. Bultje
2170a0e6ad
swscale: convert yuy2/uyvy/nv12/nv21ToY/UV from inline asm to yasm.
...
Also implement SSE2/AVX variants.
2012-01-08 16:37:43 -08:00
Diego Biurrun
999484c9fb
swscale: K&R formatting cosmetics for code examples
2012-01-08 23:32:57 +01:00
Diego Biurrun
83890c66c4
swscale: K&R reformatting cosmetics for header files
2012-01-08 23:32:56 +01:00
Ronald S. Bultje
2ba65879b5
swscale: remove unused U/V arguments from yuv2rgb_write().
...
Also document the function somewhat.
2012-01-05 07:17:01 -08:00
Diego Biurrun
3d72a6f19e
swscale: Use standard multiple inclusion guards in ppc/ header files.
2012-01-04 16:39:37 +01:00
Ronald S. Bultje
6b3995ccd1
swscale: remove obsolete comment.
2012-01-03 20:02:17 -08:00
Ronald S. Bultje
6ea64339c5
swscale: split scale.asm.
...
scale.asm keeps horizontal scaling functions, whereas output.asm gets
the vertical scaling/output functions.
2012-01-03 20:02:07 -08:00
Ronald S. Bultje
9ea3501d87
swscale: don't show full-chroma-int warning for non-RGB output.
...
Non-RGB output always uses full chroma interpolation.
2012-01-03 20:01:21 -08:00
Ronald S. Bultje
f910dbcdb0
swscale: add MMX files to MMX-OBJS instead of OBJS.
2012-01-03 20:01:15 -08:00
Diego Biurrun
44b0edda3f
Drop some pointless void* return value casts from av_malloc() invocations.
2012-01-02 16:41:24 +01:00
Janne Grunau
6e9bb5aa3e
swscale: prevent invalid writes in packed_16bpc_bswap
...
Writes past the end of the destination buffer were occuring when its
stride was smaller than the stride of the source. Fixes Bug #183 .
2011-12-26 15:50:17 +01:00
Anton Khirnov
131609dc2a
sws: readd PAL8 to isPacked()
...
Fixes PAL8 to YUV conversion.
2011-12-22 11:01:28 +01:00
Nathan Adil Maxson
7b3894bee9
swscale: fix formatting and indentation of unscaled conversion routines.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-12-18 15:32:08 -08:00
Ronald S. Bultje
d49352c7cc
swscale: fix overflows in vertical scaling at top/bottom edges.
...
This fixes integer multiplication overflows in RGB48 output
(vertical) scaling as detected by IOC. What happens is that for
certain types of filters (lanczos, spline, bicubic), the
intermediate sum of coefficients in the middle of a filter can
be larger than the fixed-point equivalent of 1.0, even if the
final sum is 1.0. This is fine and we support that.
However, at frame edges, initFilter() will merge the coefficients
for the off-screen pixels into the top or bottom pixel, such as
to emulate edge extension. This means that suddenly, a single
coefficient can be larger than the fixed-point equivalent of
1.0, which the vertical scaling routines do not support.
Therefore, remove the merging of coefficients for edges for
the vertical scaling filter, and instead add edge detection
to the scaler itself so that it copies the pointers (not data)
for the edges (i.e. it uses line[0] for line[-1] as well), so
that a single coefficient is never larger than the fixed-point
equivalent of 1.0.
2011-12-18 08:27:43 -08:00
Ronald S. Bultje
72dafea0fc
swscale: fix overflow in gray16 vertical scaling.
...
This fixes the same overflow as in the RGB48/16-bit YUV scaling;
some filters can overflow both negatively and positively (e.g.
spline/lanczos), so we bias a signed integer so it's "half signed"
and "half unsigned", and can cover overflows in both directions
while maintaining full 31-bit depth.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-17 22:41:53 +00:00
Mans Rullgard
77d88b872d
swscale: fix integer overflows in RGB pixel writing.
...
We're shifting individual components (8-bit, unsigned) left by 24,
so making them unsigned should give the same results without the
overflow.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-12-17 18:59:24 +00:00
Janne Grunau
b4dc68803b
swscale: add endian conversion for RGB555 and RGB444 pixel formats
...
Add a macro to shorten the if condition.
2011-12-17 19:52:19 +01:00
Ronald S. Bultje
be1bafc303
swscale: fix overflows in output of RGB48 pixels.
...
For certain types of filters where the intermediate sum of coefficients
can go above the fixed-point equivalent of 1.0 in the middle of a filter,
the sum of a 31-bit calculation can overflow in both directions and can
thus not be represented in a 32-bit signed or unsigned integer. To work
around this, we subtract 0x40000000 from a signed integer base, so that
we're halfway signed/unsigned, which makes it fit even if it overflows.
After the filter finishes, we add the scaled bias back after a shift.
We use the same trick for 16-bit bpc YUV output routines.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-17 18:36:20 +00:00
Janne Grunau
ed46a3d842
swscale: add rgb565 endianess conversion
2011-12-17 19:35:16 +01:00
Ronald S. Bultje
4391805916
swscale: fix overflows in RGB rounding constants.
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-17 14:36:09 +00:00
Janne Grunau
72cb904453
swscale: add unscaled packed 16 bit per component endianess conversion
2011-12-16 01:41:33 +01:00
Diego Biurrun
3c62a71486
swscale_mmx: drop no longer required parameters from VSCALEX macros
2011-12-14 12:00:44 +01:00
Diego Biurrun
52de07e1f1
swscale: Mark yuv2planeX_8_mmx as MMX2; it contains MMX2 instructions.
2011-12-14 11:58:46 +01:00
Mans Rullgard
878dda5db1
build: move inclusion of subdir.mak to main subdir loop
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-13 14:26:49 +00:00
Diego Biurrun
58c42af722
doxygen: misc consistency, spelling and wording fixes
2011-12-12 23:06:23 +01:00
Mans Rullgard
373211d828
Remove extraneous semicolons
...
These semicolons cause invalid empty top-level declarations.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-12-11 17:23:24 +00:00
Reinhard Tartler
5089ce1b5a
swscale: #include "libavutil/mathematics.h"
...
this file uses the M_PI macro since
4e74187db2
, so include the correct header
directly.
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
2011-12-01 19:12:26 +01:00
Mans Rullgard
7c5ce99bd9
swscale: fix signed overflow in yuv2mono_X_c_template
...
As old bits are shifted out of the accumulator, they cause signed
overflows when they reach the end. Making the variable unsigned fixes
this.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-11-26 22:53:47 +00:00
Martin Storsjö
f32dfad9dc
swscale: Readd #define _SVID_SOURCE
...
This was removed erroneously in
046f081b46
. This define still is
necessary for getting MAP_ANONYMOUS defined on linux/glibc,
despite the define reshuffling done in that commit.
Without MAP_ANONYMOUS defined, the mprotect calls for setting the
generated mmx2 scaler code pages executable are left out, causing
crashes if that codepath is chosen.
This patch fixes scaling from 192x144 to 320x240 with
-sws_flags fast_bilinear, which crashes on linux at the
moment.
Signed-off-by: Martin Storsjö <martin@martin.st>
2011-11-25 19:59:15 +02:00
Ronald S. Bultje
f7f1835258
swscale: fix failing fate tests.
...
isGray() is left as a FIXME for later.
2011-11-24 12:21:03 -08:00
Ronald S. Bultje
185655c601
swscale: add support for planar RGB input.
2011-11-24 10:40:05 -08:00
Ronald S. Bultje
6b0768e202
Clean up swscale pixfmt macros using av_pix_fmt_descriptors[].
2011-11-24 08:24:55 -08:00
John Stebbins
09d243ddd0
swscale: Fix stack alignment for SSE
...
Although gcc guarantees 16 byte stack alignment, threads under WinXP
don't appear to be guaranteed to start stack aligned. So fix the
alignment.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-11-19 09:55:07 -08:00
Ronald S. Bultje
8283f90a52
swscale: handle unaligned buffers in yuv2plane1
...
The issue had been introduced in
c435653627
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2011-11-13 08:27:20 +01:00
Sean McGovern
124e56454d
swscale: add padding to conversion buffer.
...
Altivec does unaligned reads from this buffer in
hscale_altivec_real(), and can thus read up to 16 bytes beyond
the end of the buffer. Therefore, add an extra 16 bytes of
padding at the end of the conversion buffer.
This fixes fate-lavfi-pixfmts_scale on AltiVec-enabled builds
under valgrind.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-11-11 07:44:35 -08:00
Ronald S. Bultje
c435653627
swscale: write yuv2plane1 MMX/SSE2/SSE4/AVX functions.
2011-11-05 20:48:14 -07:00
Ronald S. Bultje
1deb08fcb6
swscale: align vertical filtersize by 2 on x86.
...
The vertical scaler handles 2 rows at a time and thus requires
alignment by 2, or else it'll read invalid memory and result in
corrupt output.
2011-11-05 07:06:38 -07:00
Ronald S. Bultje
9e66b892e8
swscale: add missing colons to x86 assembly yuv2planeX.
...
This fixes assembling using "nasm".
2011-10-23 09:44:03 -07:00
Ronald S. Bultje
f48b12e0a6
swscale: update altivec yuv2planeX asm to new per-plane API.
2011-10-22 10:35:14 -07:00
Ronald S. Bultje
6cacecdca3
swscale: make yuv2yuvX_10_sse2/avx 8/9/16-bits aware.
...
Also implement MMX/MMX2 versions and SSE4 versions.
2011-10-22 10:35:14 -07:00
Kieran Kunhya
7fbbf95293
yuv2planeX10 SIMD
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-10-22 10:35:14 -07:00
Ronald S. Bultje
109f62e8f8
swscale: decide whether to use yuv2plane1/X on a per-plane basis.
2011-10-22 10:35:14 -07:00
Ronald S. Bultje
f99654d470
swscale: reintroduce full precision in 16-bit output.
2011-10-22 10:35:14 -07:00
Kieran Kunhya
ff7913aef1
Split up yuv2yuvX functions
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-10-22 10:35:13 -07:00
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>
2011-10-22 10:35:13 -07:00
Mans Rullgard
41ac093f7e
swscale: fix signed shift overflows in ff_yuv2rgb_c_init_tables()
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-10-21 20:56:59 +01:00
Ronald S. Bultje
dc49bf1270
sws/pixfmt/pixdesc: add support for yuv420p9le/be.
2011-10-21 00:58:01 -07:00
Ronald S. Bultje
8305041e13
swscale: prevent overflow in coefficient calculation.
2011-10-21 00:14:11 -07:00
Ronald Bultje
d1d421cbc0
swscale: prevent overflow during initialization
...
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
2011-10-18 10:29:49 +02:00
Anton Khirnov
145f741e11
AVOptions: rename FF_OPT_TYPE_* => AV_OPT_TYPE_*
2011-10-12 16:51:16 +02:00
Anton Khirnov
04de1569cd
sws: support yuv444p9/10 output.
2011-10-12 08:27:30 +02:00
Ronald S. Bultje
6aa3cac6bf
swscale: use aligned move for storage into temporary buffer.
...
The intermediate buffer is always aligned.
2011-10-11 07:50:48 -07:00
Mans Rullgard
d853e571ad
ppc: fix some pointer to integer casts
...
Use uintptr_t instead of plain int. Without this change, the
comparisons will come out wrong for pointers in certain ranges.
Fixes random failures on ppc64. Also fixes some compiler warnings.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-09-25 18:33:38 +01:00
Kieran Kunhya
4d4d0e8176
Fix unnecessary shift with 9/10bit vertical scaling
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2011-09-23 02:13:30 +02:00
Ronald S. Bultje
ea540401d6
swscale: fix byte overreads in SSE-optimized hscale().
...
SSE-optimized hScale() scales up to 4 pixels at once, so we need to
allocate up to 3 padding pixels to prevent overreads. This fixes
valgrind errors in various swscale-tests on fate.
2011-09-15 07:30:46 -07:00
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).
2011-09-13 09:53:42 -07:00
Anton Khirnov
fb4ca26bdb
lavf,lavc,sws: add {avcodec,avformat,sws}_get_class() functions.
2011-09-03 20:53:35 +02:00
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.
2011-08-17 20:56:06 -07:00
Luca Barbato
3304a1e69a
swscale: add dithering to yuv2yuvX_altivec_real
...
It just does that part in scalar form, I doubt using a vector store
over 2 array would speed it up particularly.
The function should be written to not use a scratch buffer.
2011-08-13 00:06:04 +02:00
Ronald S. Bultje
28c1115a91
swscale: use 15-bit intermediates for 9/10-bit scaling.
2011-08-12 11:54:25 -07:00
Stefano Sabatini
6a92551234
lsws: remove optimization debug logs in sws_init_context()
...
The logged information is possibly false, and it tends to be outdated
after each change since the logging code needs to be manually updated.
Simplify and prevent confusing wrong debug messages.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2011-08-05 00:45:06 +02:00
Stefano Sabatini
347167ecf5
lsws: use array for storing the supported in/out information
...
Also remove the unnecessary isSupportedIn/Out macros.
Make the code more compact/readable, and simplify the access to
lsws-specific pixel format information.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2011-08-05 00:44:11 +02:00
Ronald S. Bultje
62ee0e6a97
Revert "swscale: use 15-bit intermediates for 9/10-bit scaling."
...
This reverts commit ac0fb59348
. It
causes valgrind errors which I'll want to investigate before
resubmitting this.
2011-08-02 12:27:43 -07:00
Ronald S. Bultje
ac0fb59348
swscale: use 15-bit intermediates for 9/10-bit scaling.
2011-08-02 10:34:02 -07:00
Kostya Shishkov
42ba12888b
Do not convert RGB buffer at once when stride does not fit exact samples.
...
When converting RGB format to RGB format with the same bits per sample,
unscaled path performs conversion on the whole buffer at once. For
non-multiple-of-16 BGR24 to RGB24 conversion it means that padding at the
end of line will be converted too. Since it may be of arbitrary length
(e.g. 8 bytes), operating on the whole buffer produces obviously wrong
results.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-07-30 09:51:23 -07:00
Joseph Artsimovich
eedb1f2034
swscale: mark YUV422P10(LE,BE) as supported for output
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-07-21 02:10:31 +01:00
Ronald S. Bultje
baba2eedac
swscale: extend mmx padding.
...
Fixes a crash when forcing libc to strictly adhere to malloc sizes.
2011-07-14 13:27:06 -07:00
Ronald S. Bultje
55eda370cb
swscale: clip unscaled colorspace conversion path.
...
Prevents overflows on very bright scenes when adding dither,
which may lead to black dots.
2011-07-14 13:27:06 -07:00
Diego Biurrun
96c1e6d40d
doxygen: Make sure parameter names match between .c and .h files.
2011-07-14 04:09:49 +02:00
Anton Mitrofanov
142e76f105
swscale: fix crash with dithering due incorrect offset calculation.
...
ptrdiff_t can be 4 bytes, which leads to the next element being 4-byte
aligned and thus at a different offset than intended. Forcing 8-byte
alignment forces equal offset of dither16/32 on x86-32 and x86-64.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-07-10 14:52:21 -07:00
Ronald S. Bultje
5c391a161a
swscale: rename uv_off/uv_off2 to uv_off_px/byte.
2011-07-08 15:15:31 -07:00
Ronald S. Bultje
1ce724ee39
swscale: implement error dithering in planarCopyWrapper.
...
Based on a somewhat similar idea in FFmpeg's swscale.
2011-07-08 15:15:31 -07:00
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.
2011-07-08 15:15:30 -07:00
Ronald S. Bultje
7d7bacf0f1
swscale: fix overflow in 16-bit vertical scaling.
...
We operated on 31-bits, but with e.g. lanczos scaling, values can
add up to beyond 0x80000000, thus leading to output of zeroes. Drop
one bit of precision fixes this.
2011-07-08 15:15:30 -07:00
Ronald S. Bultje
bf2cba4532
swscale: fix crash in 8-bpc bilinear output without alpha.
...
We accessed the alpha array even it wasn't used and didn't
exist, hence leading to a NULL pointer segfault.
2011-07-08 15:15:30 -07:00
Ronald S. Bultje
f44d50a94c
swscale: fix 16-bit horizontal scaling underflow.
...
When using e.g. lanczos scaling, values can drop below 0, so they
should never be unsigned.
2011-07-08 15:15:30 -07:00
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.
2011-07-08 15:15:30 -07:00
Ronald S. Bultje
f28aaae1c5
swscale: amend documentation to mention use of native depth for scaling.
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2011-07-06 03:33:36 +02:00
Diego Biurrun
e589e4b82d
Remove unused static tables and static inline functions.
2011-07-04 14:59:35 +02:00
Mans Rullgard
abc78a5a7c
Do not include log.h in avutil.h
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-07-03 21:42:07 +01:00
Mans Rullgard
d49ea4afb4
Do not include pixfmt.h in avutil.h
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-07-03 21:42:07 +01:00
Diego Biurrun
01c17c88ed
doxygen: Remove spurious documentation for non-existing function parameters.
2011-07-03 18:30:02 +02:00
Ronald S. Bultje
8f440223f6
swscale: disable full_chroma_int when converting to non-24/32bpp RGB.
...
This functionality is only implemented for RGB24/32 and causes crashes
otherwise.
2011-07-02 08:33:52 -07:00
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.
2011-07-01 09:08:26 -07:00
Ronald S. Bultje
81cc7d0bd1
swscale: fix another yuv range conversion overflow in 16bit scaling.
2011-06-30 07:05:52 -07:00
Mohamed Naufal
705b21a06e
swscale: Unbreak build with --enable-small
...
This fixes building with --enable-small, by using the correct
variable name.
Signed-off-by: Martin Storsjö <martin@martin.st>
2011-06-30 11:58:38 +03:00
Ronald S. Bultje
e0b8fff6c7
swscale: fix yuv range correction when using 16-bit scaling.
2011-06-29 21:04:45 -07:00
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).
2011-06-29 09:45:52 -07:00
Ronald S. Bultje
4578435f35
swscale: Add Doxygen for hyscale_fast/hScale.
2011-06-29 01:20:34 +02:00
Mans Rullgard
635930d466
PPC: swscale: disable altivec functions for unsupported formats
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-06-28 23:22:31 +01:00
Ronald S. Bultje
d6cc6ac6b8
swscale: Add Doxygen for yuv2planar*/yuv2packed* functions.
2011-06-28 20:18:58 +02:00
Mans Rullgard
57b4a3dd2b
build: include sub-makefiles using full path instead of symlinks
...
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-06-28 18:15:19 +01:00
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.
2011-06-27 21:24:44 -07:00
Ronald S. Bultje
dff5a83532
swscale: re-add support for non-native endianness.
...
This works through some non-obvious hacks in utils.c.
2011-06-27 18:10:41 -07:00
Ronald S. Bultje
3d3c814937
swscale: disentangle yuv2rgbX_c_full() into small functions.
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-27 18:10:24 -07:00
Ronald Bultje
6fba14eecb
swscale: split yuv2packed[12X]_c() remainders into small functions.
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-27 18:10:03 -07:00
Ronald S. Bultje
dc179ec819
swscale: split yuv2packedX_altivec in smaller functions.
...
This will likely lead to a considerable performance boost,
since it removes a branch from the inner loop. Part of the
Great Evil Plan to simplify swscale.
2011-06-27 18:05:16 -07:00
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.
2011-06-27 17:15:41 -07:00
Ronald S. Bultje
97535ffb97
swscale: remove unused xInc/srcW arguments from hScale().
2011-06-26 14:41:44 -07:00
Diego Biurrun
a6213f3dce
build: Remove redundant config.mak includes from subdirectory Makefiles.
...
Calling Make from subdirectories is not supported and config.mak has
multiple inclusion guards anyway, so the top-level include is enough.
2011-06-25 13:02:51 +02:00
Diego Biurrun
087d93f568
swscale: Remove unused variable from ff_bfin_get_unscaled_swscale().
2011-06-21 20:53:52 +02:00
Reinhard Tartler
0793531859
Bump major version for b8e893399f
...
On architectures such as x86 (both 32 bit and 64bit), the stack element
size is fixed, which maintains alignment. Here, this change does not
break anything. However, we also support also other architectures where
this property is not maintained and therefore, applications will crash
horribly.
This change effectively forces all applications to be recompiled against
libswscale.
2011-06-20 18:01:39 +02:00
Janne Grunau
3636e791ec
swscale: use SwsContext for av_log when available
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2011-06-15 13:20:20 +02:00
Diego Biurrun
a60466dbc3
swscale: Remove HAVE_MMX from files that are only compiled with MMX enabled.
2011-06-15 01:18:10 +02:00
Diego Biurrun
97e057ff81
swscale: Fix compilation with --disable-mmx2.
...
Some MMX2 functions were being referenced without proper #ifdefs.
2011-06-15 01:17:59 +02:00
Ronald S. Bultje
4e05830205
swscale: remove misplaced comment.
...
The comment should have been placed only in
yuv2rgb48_X_c_template, not yuv2rgb48_1_c_template.
2011-06-14 16:55:24 -04:00
Ronald S. Bultje
9f63211175
swscale: split out RGB48 output functions from yuv2packed[12X]_c().
...
This is part of the Great Evil Plan to simplify swscale. Note that
you'll see some code duplication between the output functions for
different RGB variants, and even between packed-YUV and RGB
variants. This is intentional because it improves readability.
2011-06-14 15:59:14 -04:00
Michael Niedermayer
0af8a71d66
swscale: fix JPEG-range YUV scaling artifacts.
...
YUV planes were marked as uint16_t, but they contained signed data.
Fixes issue 1108 and 675.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-06-14 09:46:49 -04:00
Ronald S. Bultje
103278f7b0
libavutil/swscale: YUV444P10/YUV444P9 support.
...
Also add missing glue code for recently added YUV422P10 formats
to swscale.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-06-10 15:12:24 -04:00
Ronald S. Bultje
af2faf2076
swscale: split YUYV output out of yuv2packed[12X]_c().
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-09 20:52:38 -04:00
Ronald S. Bultje
6b105e3ee6
swscale: extract monowhite/black output from yuv2packed[12X]_c().
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-09 16:47:45 -04:00
Ronald S. Bultje
6d4d483eee
swscale: de-macro'ify RGB15/16/32 input functions.
...
Inline functions are easier to read, maintain, modify and test,
which justifies the slightly increased source size. This patch
also adds support for non-native endianness RGB15/16 and fixes
isSupportedOutput() to no longer claim that we support writing
non-native RGB565/555/444.
2011-06-09 16:47:45 -04:00
Ronald S. Bultje
e2babb9b47
swscale: rearrange code.
...
This way the code in the file is less cluttered all-over-the-
place.
2011-06-09 16:47:45 -04:00
Ronald S. Bultje
dbd3183935
swscale: change 48bit RGB input macros to inline functions.
...
Inline functions are slightly larger in source code, but
are easier to handle in source code editors. The binary code
generated is the same.
2011-06-09 09:29:20 -04:00
Ronald S. Bultje
f30ee65700
swscale: change 9/10bit YUV input macros to inline functions.
...
Inline functions are slightly larger in source code, but
are easier to handle in source code editors. The binary code
generated is the same.
2011-06-09 09:29:03 -04:00
Ronald S. Bultje
aa39f5f6d6
swscale: extract gray16 output functions from yuv2packed[12X]().
...
This is part of the Great Evil Plan to simplify swscale.
2011-06-09 09:29:02 -04:00
Ronald S. Bultje
f1e0b90c64
swscale: use standard clipping functions.
...
This generates better code on some non-x86 architectures.
2011-06-09 09:27:51 -04:00
Ronald S. Bultje
e458b53605
swscale: merge macros that are used only once.
...
This reduces source code size without affecting the binary.
2011-06-09 09:26:00 -04:00
Ronald S. Bultje
6e5a8d3c9a
swscale: fix function declarations in swscale.c.
...
Remove inline keyword from functions that are never inlined.
Use av_always_inline for functions that should be force-inlined
for performance reasons. Use av_cold for init functions.
2011-06-09 09:25:59 -04:00
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.
2011-06-09 09:25:59 -04:00
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).
2011-06-08 11:39:26 -04:00
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.
2011-06-08 11:33:46 -04:00
Ronald S. Bultje
9d84dfce93
swscale: remove unused function.
...
Use of this wrapper was removed in a previous patch, but I
forgot to actually remove the function itself.
2011-06-08 11:08:20 -04:00
Ronald S. Bultje
edeb56fa31
swscale: remove duplicate conversion routine in swScale().
2011-06-07 10:05:55 -04:00
Ronald S. Bultje
b73fe70025
swscale: add yuv2planar/packed function typedefs.
2011-06-07 10:05:55 -04:00
Ronald S. Bultje
df91d09174
swscale: integrate yuv2nv12X_C into yuv2yuvX() function pointers.
2011-06-07 10:05:54 -04:00
Ronald S. Bultje
0fb5193156
swscale: reindent x86 init code.
2011-06-07 10:05:50 -04:00
Ronald S. Bultje
ca364a5b43
swscale: extract SWS_FULL_CHR_H_INT conditional into init code.
2011-06-07 10:03:47 -04:00
Ronald S. Bultje
b3b28b080f
swscale: cosmetics.
2011-06-07 10:03:46 -04:00
Ronald S. Bultje
ea28175312
swscale: remove alp/chr/lumSrcOffset.
...
They are hacks added to reuse the same scaling function for
different formats and they may cause problems when SIMD
implementation of the same functions are used along with pure
C functions.
2011-06-07 10:03:18 -04:00
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.
2011-06-07 10:03:12 -04:00
Ronald S. Bultje
6af2801088
swscale: split swscale.c in unscaled and generic conversion routines.
...
This duplicates the function fillPlane().
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
2762ee3034
swscale: cosmetics.
...
Remove duplicate "inC" and "_c" functions that do the same thing;
give each function that handles data and acts as a function pointer
a "_c" suffix; remove "_c" suffix from functions that are inherently
not optimizable. Remove inline keyword from functions that are only
used through function pointers.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
1674bd2abe
swscale: integrate (literally) swscale_template.c in swscale.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
983260b0a4
swscale: split out x86/swscale_template.c from swscale.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
075d0ae72c
swscale: enable hScale_altivec_real.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
67d80a5421
swscale: split out ppc _template.c files from main swscale.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
a3e9bb5dee
swscale: remove indirections in ppc/swscale_template.c.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
0e5d31b16b
swscale: split out unscaled altivec YUV converters in their own file.
2011-06-03 09:52:09 -07:00
Ronald S. Bultje
0d793db1b0
swscale: remove unused COMPILE_TEMPLATE_ALTIVEC.
2011-06-02 21:29:59 -07:00
Ronald S. Bultje
808d8ff6bb
swscale: allocate larger buffer to handle altivec overreads.
...
Altivec sws code intentionally overreads buffers for better performance,
so we need to allocate larger buffers to handle that.
2011-06-02 11:25:56 -07:00
Diego Biurrun
f635a233e3
swscale: Remove unused variable.
2011-05-30 23:19:06 +02:00
Diego Biurrun
06b5facd4b
swscale: Remove disabled code.
2011-05-29 14:32:08 +02:00
Anton Khirnov
b8e893399f
sws: replace all long with int.
...
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-05-28 10:03:37 -04:00
Ronald S. Bultje
009f829dde
swscale: fix crash in bilinear scaling.
2011-05-28 08:59:56 -04:00
Diego Biurrun
5a5a0f1613
swscale: Remove unused variables in x86 code.
...
libswscale/x86/swscale_template.c:2072: warning: unused variable ‘canMMX2BeUsed’
libswscale/x86/swscale_template.c:2145: warning: unused variable ‘canMMX2BeUsed’
libswscale/x86/swscale_template.c:2209: warning: unused variable ‘chrVPixBuf’
libswscale/x86/swscale_template.c:2237: warning: unused variable ‘chrVSrcPtr’
2011-05-27 21:25:57 +02:00
Ronald S. Bultje
389e2000eb
swscale: delay allocation of formatConvBuffer().
...
That means it won't be allocated when not needed. Alongside
this, it fixes valgrind/fate-detected memory leaks.
2011-05-27 13:22:27 -04:00
Ronald S. Bultje
f327bfa6dc
swscale: fix build with --disable-swscale-alpha.
2011-05-27 13:22:27 -04:00
Ronald S. Bultje
9f5d45025e
swscale: fix non-bitexact yuv2yuv[X2]() MMX/MMX2 functions.
2011-05-27 09:41:48 -04:00
Ronald S. Bultje
93681fbd50
swscale: fix compile on ppc.
2011-05-26 11:32:32 -04:00
Ronald S. Bultje
e758573a88
swscale: fix compile on x86-32.
2011-05-26 10:41:27 -04:00
Ronald S. Bultje
48520772d9
swscale: use av_clip_uint8() in yuv2yuv1_c().
2011-05-26 09:31:27 -04:00
Ronald S. Bultje
0f4eb8b043
swscale: remove VOF/VOFW.
2011-05-26 09:31:27 -04:00
Ronald S. Bultje
b4a224c5e4
swscale: split chroma buffers into separate U/V planes.
...
Preparatory step to implement support for sizes > VOFW.
2011-05-26 09:31:27 -04:00
Ronald S. Bultje
69645c021a
swscale: replace formatConvBuffer[VOF] by allocated array.
...
This allows to convert between formats of arbitrary width,
regardless of the value of VOF/VOFW.
2011-05-26 09:31:02 -04:00
Ronald S. Bultje
522d65ba25
rgb2rgb: remove duplicate mmx/mmx2/3dnow/sse2 functions.
...
Many functions have such a prefix, but do not actually use any
instructions or features from that set, thus giving the false
impression that swscale is highly optimized for a particular
system, whereas in reality it is not.
2011-05-26 09:31:02 -04:00
Ronald S. Bultje
836b82e3c9
swscale: reindent h[cy]scale_fast() and updateDitherTables().
2011-05-26 09:31:02 -04:00