summaryrefslogtreecommitdiff
path: root/src/xine-utils
AgeCommit message (Collapse)Author
2014-06-06Copyright year update by hg log.Torsten Jager
2014-05-30rgb2yuy2 update.Torsten Jager
* palette color count guard. * add 4, 2, 1 bit palette support. * use default gray on NULL palette. * optional xine clut_t output.
2014-05-19NetBSD does not support CLOCK_THREAD_CPUTIME_IDThomas Klausner
2014-03-11Fix a short zero-init.Darren Salt
2014-03-10Silence compiler warnings on register_enum () arg #4.Torsten Jager
Making them all "const char * const *" did work too (even with Kaffeine build/run), but that would be an API change.
2014-03-08Silence some compiler warnings.Torsten Jager
2014-01-04Copyright year update by hg log #4.Torsten Jager
BTW. Happy 2014 to you! Didnt think xine will survive this far :-) And yes, I finally got an ffmpeg patch through. That kind of rounds the circle :-)
2013-10-14Copyright year update by hg log info #2.Torsten Jager
2013-10-01Clean up vaapi µs delay code.Darren Salt
2013-09-18Put vzeroupper in the right place, ref. patch as sent to xine-devel.Darren Salt
2013-09-17Emit vzeroupper after avx memcpyRoland Scheidegger
Emitting vzeroupper is necessary to avoid avx<->sse transition penalties (when using avx-256 instructions). This didn't really matter much in the past, since other code wasn't using avx, hence there was just a penalty once afterwards when sse code was executed. However, there's code in ffmpeg which mixes avx-128 and sse a lot, and each time this happens there's a huge penalty. This causes in particular ff_deblock_v_luma_8_avx to slow down by a factor of 50 or so which makes the whole decoding about twice as slow (might be dependent on the h264 stream or maybe ffmpeg version too, since ffmpeg will also emit vzeroupper when using avx-256 hence not doing it here might not always be an issue, but in the case I was seeing nothing else used avx-256).
2013-09-13Copyright year update by hg log infoTorsten Jager
script execution time: 55"
2013-04-15xine_mmx.h: make sure alignment macros are defined. Make some noise if ↵Petri Hintukainen
alignment requirements are not met.
2013-01-21rgb2yuy2: added 16/15/8 bit formatsTorsten Jager
2012-12-05color.c: direct rgb->yuy2 converterTorsten Jager
2012-10-07yuv444_to_yuy2_mmx: follow target UV pitchTorsten Jager
2012-07-16Added configure check for AVX assembler supportPetri Hintukainen
2012-07-12avx memcpyPetri Hintukainen
2012-07-12sanity check for memcpy method config valuePetri Hintukainen
2012-06-05Merge from 1.1Petri Hintukainen
2012-06-05Fix building with cygwinCarlo Bramini
CYGWIN is a full POSIX environment, it does not need to include windows.h (it even causes an error if you try).
2012-05-29Fixed 91d04bf1862cPetri Hintukainen
2012-05-29Moved defining ATTR_ALIGN after include configure.h.Petri Hintukainen
ATTRIBUTE_ALIGNED_MAX is defined in configure.h.
2012-05-29Removed extra semicolonCarlo Bramini
2012-05-28Added yv12_to_yuy2_sse2()Petri Hintukainen
2012-05-23Added missing #include "config.h" to make ATTR_ALIGN workPetri Hintukainen
2012-05-16xine_mmx.h: added 32-bit integers to sse_tPetri Hintukainen
2012-05-16xine_mmx.h: added SSE2 pslldq and psrldqPetri Hintukainen
2012-04-11Marked data const and fixed typePetri Hintukainen
2012-02-15Improved RGB→YUV conversion v2 (use MPEG range instead of full range)Darren Salt
Video-out plugins expect MPEG range Y'CbCr data (Y'=16..235, Cb,Cr=16..240). RGB sources (still images and audio visualisation effects) need to be converted first. This patch fixes up the range calculations and corrects an off-by-one in the range for Cb and Cr over commit 68fcd69fb3b6 (which was reverted due to API change). It should also provide a little more accuracy: I've gone back to the source (http://www.itu.int/rec/R-REC-BT.601/) for the conversion information. (We should use float or double here, but that would be an ABI change.)
2012-02-14Backed out RGB→YUV patch – API change.Darren Salt
Anything which uses the COMPUTE_* macros would need to be recompiled because of the use of new tables. This change needs to be conditional somehow, at least externally.
2012-02-14Improved RGB->YUV conversion (use mpeg range instead of full range)Torsten Jager
Video out plugins expect mpeg range yuv data (y=16..235, uv=16..239). RGB sources (still images and audio visualisation effects) need to be converted first.
2011-12-31Merge.Darren Salt
2011-12-22Use proper chroma upsampling for yv12 to yuy2 conversionRoland Scheidegger
The old code did some "averaging" which, while cheap, lead to serious chroma shift because the weighting factors turned out to be pretty random (arguably no averaging likely would have been given more correct results). It also in fact lead to chroma ghosts. To see why this was wrong read the following and then do the math. http://www.hometheaterhifi.com/the-dvd-benchmark/179-the-chroma-upsampling-error-and-the-420-interlaced-chroma-problem.html http://avisynth.org/mediawiki/Sampling As an example, let's look what happens at line 4 for interlaced content (where the code would have averaged chroma from chroma line 2 and 4): Chroma line 2 contains chroma values for line 2 (25%) and 4 (75%) while chroma line 4 contains chroma values for line 6 (25%) and 8 (75%) of the original (prior to subsampling) frame. Average these together and you get something quite wrong. Most importantly the center of these weights will be at 5.5 instead of 4 (hence chroma shift). For odd lines it is different (better but still wrong). So, fix this by using the correct weights for reconstruction of the chroma values (which is averaging for the progressive case for all pixels since the samples are defined to be between the lines, and use different weighting factors for odd/even/"upper"/"lower" lines). This runs more than twice the instructions (for the mmx case), but I measured only a performance impact of roughly 5% (on a Athlon64 X2) - seriously bound by memory access (by comparison the sort-of-pointless post-deinterlace chroma filter is nearly twice as slow hence if you don't need it because the values are correct this will be a lot faster). Note: this is only correct for codecs which use the same chroma positions as mpeg2 (dv is definitely different, mpeg1 is also different but only for horizontal positioning, which doesn't matter here). "yv12" as such seems underspecified wrt chroma positioning. On another note, while this algorithm may be correct, it is inherently suboptimal doing this pre-deinterlace (and a post-deinterlace chroma filter is not going to help much neither except it can blur the mess). This NEEDS to be part of deinterlace (which btw would also be quite a bit faster when handling planar directly due to saving one pass of going through all memory). The reason is while line 4 will now use the correct weighting factors, the fact remains it will use chroma values originating from lines 2, 4, 6 and 8 of the original image. However, if the deinterlacer decides to weave because there is no motion, it CAN and most likely wants to use chroma values from the other field (hence values originating from line 2, 3, 4, 5 in this case when using a very simple filter, with appropriate weighting). --HG-- branch : point-release extra : rebase_source : 808bb5785ca398970324bea6b391a9e24c576d2f
2012-04-04xine_mmx.h: Added pmaddubsw (SSSE3)Petri Hintukainen
2012-04-11Added MMXEXT version of yv12_to_yuy2()Roland Scheidegger
2012-04-11Removed incorrect .align directives from asm codePetri Hintukainen
2012-04-11MMX version of yv12_to_yuy2()Roland Scheidegger
2012-04-10yv12_to_yuy2: use the same macros for both odd and even linesRoland Scheidegger
(as a simple argument swap is all that's needed).
2012-04-04Fixed pmovmskb() and added a version that can be actually used.Petri Hintukainen
2012-03-29Detect CPU/OS support for SSE3, SSSE3, SSE4, SSE42 and AVXPetri Hintukainen
2012-03-29Added some SSE2 instructionsPetri Hintukainen
2012-03-29Added integer types to sse_t unionPetri Hintukainen
2012-03-29Added macros for loading 32-bit value to mmx/sse register from memory or GP ↵Petri Hintukainen
register (mmx_a2r)
2012-02-15Merge from 1.1.Darren Salt
--HG-- rename : src/xine-utils/xineutils.h => include/xine/xineutils.h
2012-02-14Merge from 1.1Petri Hintukainen
--HG-- rename : src/xine-utils/xineutils.h => include/xine/xineutils.h
2012-01-10Fixed printf argumentPetri Hintukainen
2012-01-10Removed unused variable from enum definitionPetri Hintukainen
2012-01-10Include xine_private.h to get xine_probe_fast_memcpy() definitionPetri Hintukainen
2011-12-31Merge from 1.1.Darren Salt