summaryrefslogtreecommitdiff
path: root/libavcodec/x86/h264dsp_mmx.c
Commit message (Collapse)AuthorAge
* Detect and check for CMOV.Reimar Döffinger2012-02-12
| | | | | | | | | Some MMX-only CPUs do not have support for CMOV. All SSE/MMX2 CPUs should be fine, thus no check was added to those functions. See also https://sourceforge.net/tracker/?func=detail&aid=3358347&group_id=205275&atid=992986 Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-10-22
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (35 commits) flvdec: Do not call parse_keyframes_index with a NULL stream libspeexdec: include system headers before local headers libspeexdec: return meaningful error codes libspeexdec: cosmetics: reindent libspeexdec: decode one frame at a time. swscale: fix signed shift overflows in ff_yuv2rgb_c_init_tables() Move timefilter code from lavf to lavd. mov: add support for hdvd and pgapmetadata atoms mov: rename function _stik, some indentation cosmetics mov: rename function _int8 to remove ambiguity, some indentation cosmetics mov: parse the gnre atom mp3on4: check for allocation failures in decode_init_mp3on4() mp3on4: create a separate flush function for MP3onMP4. mp3on4: ensure that the frame channel count does not exceed the codec channel count. mp3on4: set channel layout mp3on4: fix the output channel order mp3on4: allocate temp buffer with av_malloc() instead of on the stack. mp3on4: copy MPADSPContext from first context to all contexts. fmtconvert: port float_to_int16_interleave() 2-channel x86 inline asm to yasm fmtconvert: port int32_to_float_fmul_scalar() x86 inline asm to yasm ... Conflicts: libavcodec/arm/h264dsp_init_arm.c libavcodec/h264.c libavcodec/h264.h libavcodec/h264_cabac.c libavcodec/h264_cavlc.c libavcodec/h264_ps.c libavcodec/h264dsp_template.c libavcodec/h264idct_template.c libavcodec/h264pred.c libavcodec/h264pred_template.c libavcodec/x86/h264dsp_mmx.c libavdevice/Makefile libavdevice/jack_audio.c libavformat/Makefile libavformat/flvdec.c libavformat/flvenc.c libavutil/pixfmt.h libswscale/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * H264: change weight/biweight functions to take a height argument.Ronald S. Bultje2011-10-21
| | | | | | | | Neon parts by Mans Rullgard <mans@mansr.com>.
| * Support for lossless and inter H264 4:2:2.Ronald S. Bultje2011-10-21
| |
| * h264: 4:2:2 intra decoding supportBaptiste Coudurier2011-10-21
| | | | | | | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* | h264dec: h264: 4:2:2 intra decodingBaptiste Coudurier2011-08-15
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-07-12
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: changelog: misc typo and wording fixes H.264: add filter_mb_fast support for >8-bit decoding doc: Remove outdated comments about gcc 2.95 and gcc 3.3 support. lls: use av_lfg instead of rand() in test program build: remove unnecessary dependency on libs from 'all' target H.264: avoid redundant alpha/beta calculations in loopfilter H.264: optimize intra/inter loopfilter decision mpegts: fix Continuity Counter error detection build: remove unnecessary FFLDFLAGS variable vp8/mt: flush worker thread, not application thread context, on seek. mt: proper locking around release_buffer calls. DxVA2: unbreak build after [657ccb5ac75ce34e62bd67f228d9bd36db72189e] hwaccel: unbreak build Eliminate FF_COMMON_FRAME macro. Conflicts: Changelog Makefile doc/developer.texi libavcodec/avcodec.h libavcodec/h264.c libavcodec/mpeg4videodec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * H.264: add filter_mb_fast support for >8-bit decodingJason Garrett-Glaser2011-07-11
| | | | | | | | Much faster high bit depth deblocking.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-06-22
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: rawdec: Fix decoding of QT WRAW files. configure: report optimization for size separately mov: Support Digital Voodoo SD 8 Bit and DTS codec identifiers. mov: Support R10g codec identifier. riff/img2: Add JPEG 2000 codec IDs. riff: Add DAVC fourcc. riff: Add M263, XVIX, MMJP, CDV5 fourccs. rawvideo: Support auv2 fourcc. swscale: Remove unused variable from ff_bfin_get_unscaled_swscale(). h264: Fix assert that failed to compile with -DDEBUG. h264: Add x86 assembly for 10-bit weight/biweight H.264 functions. fate: remove output redirections from old regtest scripts Conflicts: configure libavcodec/rawdec.c libavformat/isom.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * h264: Add x86 assembly for 10-bit weight/biweight H.264 functions.Daniel Kang2011-06-21
| | | | | | | | | | | | Mainly ported from 8-bit H.264 weight/biweight. Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | Fix compilation with old yasm.Carl Eugen Hoyos2011-06-16
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-06-02
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: ARM: ac3dsp: optimised update_bap_counts() mpegaudiodec: Fix av_dlog() invocation. h264/10bit: add HAVE_ALIGNED_STACK checks. Update 8-bit H.264 IDCT function names to reflect bit-depth. Add IDCT functions for 10-bit H.264. mpegaudioenc: Fix broken av_dlog statement. Employ correct printf format specifiers, mostly in debug output. ARM: fix MUL64 inline asm for pre-armv6 Conflicts: libavcodec/mpegaudioenc.c libavformat/ape.c libavformat/mxfdec.c libavformat/r3d.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * h264/10bit: add HAVE_ALIGNED_STACK checks.Daniel Kang2011-05-31
| | | | | | | | | | | | | | Fixes regression in 836f47d34b49e8ba9883e738a42f154130421caa in ICC-10.x, since ICC<=11.0 doesn't align stack upon function calls. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
| * Update 8-bit H.264 IDCT function names to reflect bit-depth.Daniel Kang2011-05-31
| | | | | | | | Signed-off-by: Ronald S. Bultje <rbultje@google.com>
| * Add IDCT functions for 10-bit H.264.Daniel Kang2011-05-31
| | | | | | | | | | | | | | | | Ports the majority of IDCT functions for 10-bit H.264. Parts are inspired from 8-bit IDCT code in Libav; other parts ported from x264 with relicensing permission from author. Signed-off-by: Ronald S. Bultje <rbultje@google.com>
* | Merge remote branch 'qatar/master'Michael Niedermayer2011-05-17
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 12 files changed, 36 insertions(+), 81 deletions(-) yes thats 36 new lines in 14 commits * qatar/master: ffmpeg: fix -aspect cli option Restructure video filter implementation in ffmpeg.c. ffplay: remove audio_write_get_buf_size() forward declaration lavfi: print key-frame and picture type information in ff_dlog_ref() mathops: remove ancient confusing comment cws2fws: Improve error message wording. tools: Check the return value of write(). mpegaudio: move OUT_FMT macro to mpegaudiodec.c mpegaudio: remove OUT_MIN/MAX macros Add missing #includes to mp3_header_(de)compress bsf dct: fix indentation dct: bypass table allocation for DCT_II of size 32 h264dsp_mmx: Add #ifdefs around some mmxext functions on x86_64. Remove unused header mpegaudio3.h. Conflicts: ffmpeg.c libavcodec/mpegaudio.h libavcodec/mpegaudio3.h libavfilter/avfilter.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * h264dsp_mmx: Add #ifdefs around some mmxext functions on x86_64.Gil Pedersen2011-05-16
| | | | | | | | | | | | This fixes linking errors due to undefined symbols on x86_64 OS X. Signed-off-by: Diego Biurrun <diego@biurrun.de>
* | Merge remote branch 'qatar/master'Michael Niedermayer2011-05-12
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: (32 commits) 10-bit H.264 x86 chroma v loopfilter asm Port SMPTE S302M audio decoder from FFmbc 0.3. [Copyright headers corrected] Fix crash of interlaced MPEG2 decoding h264pred: fix one more aliasing violation. doc/APIchanges: fill in missing hashes and dates. flacenc: use proper initializers for AVOption default values. lavc: deprecate named constants for deprecated antialias_algo. aac: workaround for compilation on cygwin swscale: extend YUV422p support to 10bits depth tiff: add support for inverted FillOrder for uncompressed data Remove unused softfloat implementation. h264pred: fix aliasing violations. rotozoom: Eliminate French variable name. rotozoom: Check return value of fread(). rotozoom: Return an error value instead of calling exit(). rotozoom: Make init_demo() return int and check for errors on invocation. rotozoom: Drop silly UINT8 typedef. rotozoom: Drop some unnecessary parentheses. rotozoom: K&R coding style cosmetics rtsp: Only do keepalive using GET_PARAMETER if the server supports it ... Conflicts: Changelog cmdutils.c doc/APIchanges doc/general.texi ffmpeg.c ffplay.c libavcodec/h264pred_template.c libavcodec/resample.c libavutil/pixfmt.h libavutil/softfloat.c libavutil/softfloat.h tests/rotozoom.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * 10-bit H.264 x86 chroma v loopfilter asmJason Garrett-Glaser2011-05-11
| | | | | | | | Also delete some unused deblock asm macros.
| * Port x86 10-bit H.264 deblock asm from x264Jason Garrett-Glaser2011-05-10
| |
| * Update x86 H.264 deblock asmJason Garrett-Glaser2011-05-10
| | | | | | | | Includes AVX versions from x264.
| * h264dsp_mmx: place bracket outside #if/#endif block.Ronald S. Bultje2011-05-10
| | | | | | | | Should fix compile on systems missing yasm/nasm.
| * Adds 8-, 9- and 10-bit versions of some of the functions used by the h264 ↵Oskar Arvidsson2011-05-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | decoder. This patch lets e.g. dsputil_init chose dsp functions with respect to the bit depth to decode. The naming scheme of bit depth dependent functions is <base name>_<bit depth>[_<prefix>] (i.e. the old clear_blocks_c is now named clear_blocks_8_c). Note: Some of the functions for high bit depth is not dependent on the bit depth, but only on the pixel size. This leaves some room for optimizing binary size. Preparatory patch for high bit depth h264 decoding support. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
| * Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
| | | | | | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* | Fix compilation with --disable-yasm.Carl Eugen Hoyos2011-04-12
| |
* | Adds 8-, 9- and 10-bit versions of some of the functions used by the h264 ↵Oskar Arvidsson2011-04-10
|/ | | | | | | | | | | | | | | | | decoder. This patch lets e.g. dsputil_init chose dsp functions with respect to the bit depth to decode. The naming scheme of bit depth dependent functions is <base name>_<bit depth>[_<prefix>] (i.e. the old clear_blocks_c is now named clear_blocks_8_c). Note: Some of the functions for high bit depth is not dependent on the bit depth, but only on the pixel size. This leaves some room for optimizing binary size. Preparatory patch for high bit depth h264 decoding support. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* H.264: split luma dc idct out and implement MMX/SSE2 versionsJason Garrett-Glaser2011-01-14
| | | | | | | | | | About 2.5x the speed. NOTE: the way that the asm code handles large qmuls is a bit suboptimal. If x264-style dequant was used (separate shift and qmul values), it might be possible to get some extra speed. Originally committed as revision 26336 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Move static inline function to a macro, so that constant propagation inRonald S. Bultje2010-09-29
| | | | | | | inline asm works for gcc-3.x also (hopefully). Should fix gcc-3.x FATE breakage after r25254. Originally committed as revision 25262 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Merge b_idx and edge variables, and optimize the ASM to directly load variablesRonald S. Bultje2010-09-29
| | | | | | | | from memory locations/offsets depending on b_idx plus constants, rather than having gcc do this. This saves several lea calls and together saves about 10 cycles in h264_loop_filter_strength_mmx2(). Originally committed as revision 25256 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove mv_mask variable. Replace the related pand -1/0 instructions by eitherRonald S. Bultje2010-09-29
| | | | | | | a pxor, or remove the instruction alltogether. Altogether, this saves 1 instruction. Originally committed as revision 25255 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove d_idx as a variable, and instead load it as a constant in the asm.Ronald S. Bultje2010-09-29
| | | | | | | This has no measurable speed effect because the surrounding code doesn't take advantage of this yet. Originally committed as revision 25254 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Unroll inner bidir loop in h264_loop_filter_strength_mmx2(), which gets ridRonald S. Bultje2010-09-29
| | | | | | | of the d_idx variable and therefore allows for future optimizations. No speed difference by this commit itself. Originally committed as revision 25253 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Unloop the outer loop in h264_loop_filter_strength_mmx2(), which allowsRonald S. Bultje2010-09-29
| | | | | | | inlining various constants within the loop code. 20 cycles faster on cathedral sample. Originally committed as revision 25252 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove unused variable.Ronald S. Bultje2010-09-24
| | | | Originally committed as revision 25173 to svn://svn.ffmpeg.org/ffmpeg/trunk
* x86: disable SSE functions using stack when stack is not alignedMåns Rullgård2010-09-21
| | | | | | This fixes crashes with ICC 10.1. Originally committed as revision 25153 to svn://svn.ffmpeg.org/ffmpeg/trunk
* x86: remove hack disabling sse2 h264 loop filter with 32-bit iccMåns Rullgård2010-09-18
| | | | Originally committed as revision 25146 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Rename h264_idct_sse2.asm to h264_idct.asm; move inline IDCT asm fromRonald S. Bultje2010-09-14
| | | | | | | | | | | | | h264dsp_mmx.c to h264_idct.asm (as yasm code). Because the loops are now coded in asm instead of C, this is (depending on the function) up to 50% faster for cases where gcc didn't do a great job at looping. Since h264_idct_add8() is now faster than the manual loop setup in h264.c, in-asm idct calling can now be enabled for chroma as well (see r16207). For MMX, this is 5% faster. For SSE2 (which isn't done for chroma if h264.c does the looping), this makes it up to 50% faster. Speed gain overall is ~0.5-1.0%. Originally committed as revision 25119 to svn://svn.ffmpeg.org/ffmpeg/trunk
* LGPL SSE2 H.264 iDCTJason Garrett-Glaser2010-09-10
| | | | | | | | This leaves no more GPL-only H.264 decoding asm code. Approved by Loren. Originally committed as revision 25092 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Move mm_support() from libavcodec to libavutil, make it a publicStefano Sabatini2010-09-08
| | | | | | function and rename it to av_get_cpu_flags(). Originally committed as revision 25076 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Rename FF_MM_ symbols related to CPU features flags as AV_CPU_FLAG_Stefano Sabatini2010-09-04
| | | | | | symbols, and move them from libavcodec/avcodec.h to libavutil/cpu.h. Originally committed as revision 25040 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Port latest x264 deblock asm (before they moved to using NV12 as internalRonald S. Bultje2010-09-03
| | | | | | | format), LGPL'ed with permission from Jason and Loren. This includes mmx2 code, so remove inline asm from h264dsp_mmx.c accordingly. Originally committed as revision 25031 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Rename h264_weight_sse2.asm to h264_weight.asm; add 16x8/8x16/8x4 non-squareRonald S. Bultje2010-09-01
| | | | | | | | biweight code to sse2/ssse3; add sse2 weight code; and use that same code to create mmx2 functions also, so that the inline asm in h264dsp_mmx.c can be removed. OK'ed by Jason on IRC. Originally committed as revision 25019 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Split h264dsp_mmx.c (which was #included in dsputil_mmx.c) in h264_qpel_mmx.c,Ronald S. Bultje2010-09-01
| | | | | | | still #included in dsputil_mmx.c and is part of DSPContext, and h264dsp_mmx.c, which represents H264DSPContext and is now compiled on its own. Originally committed as revision 25018 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Split intra prediction initialization (i.e. assigning of function pointers)Ronald S. Bultje2010-08-30
| | | | | | | into its own file, it doesn't belong in h264dsp_mmx.c (much less so in dsputil_mmx.c). Originally committed as revision 24990 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Move H264 chroma MC from inline asm to yasm. This fixes VP3/5/6 and VC-1Ronald S. Bultje2010-08-30
| | | | | | fate failures on Win64. Originally committed as revision 24989 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Put ff_ prefix on non-static {put_signed,put,add}_pixels_clamped_mmx()Ronald S. Bultje2010-08-30
| | | | | | functions. Originally committed as revision 24987 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove global mm_flags variableMåns Rullgård2010-08-24
| | | | Originally committed as revision 24909 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Split h264dsp and h264pred in configure.Jason Garrett-Glaser2010-08-07
| | | | | | | | | Many H.264 derivatives, like RV40 and VP8, use the H.264 prediction functions but not the weight/loopfilter functions. This should reduce the size of builds with one of these derivatives but without H.264 decoding itself. Originally committed as revision 24741 to svn://svn.ffmpeg.org/ffmpeg/trunk
* H.264: SSE2/SSSE3 weighted prediction asmEli Friedman2010-08-05
| | | | | | Patch by Eli Friedman <eli.friedman at gmail dot com> Originally committed as revision 24702 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Fix h264/vp8 intra pred on Athlon XPJason Garrett-Glaser2010-07-01
| | | | | | Whose idea was it to have a CPU that didn't SIGILL on an invalid instruction? Originally committed as revision 23927 to svn://svn.ffmpeg.org/ffmpeg/trunk