Commit graph

109 commits

Author SHA1 Message Date
sunyuechi
0b9d009b4a lavc/vc1dsp: R-V V inv_trans
C908:
vc1dsp.vc1_inv_trans_4x4_dc_c:      125.7
vc1dsp.vc1_inv_trans_4x4_dc_rvv_i32: 53.5
vc1dsp.vc1_inv_trans_4x8_dc_c:      230.7
vc1dsp.vc1_inv_trans_4x8_dc_rvv_i32: 65.5
vc1dsp.vc1_inv_trans_8x4_dc_c:      228.7
vc1dsp.vc1_inv_trans_8x4_dc_rvv_i64: 64.5
vc1dsp.vc1_inv_trans_8x8_dc_c:      476.5
vc1dsp.vc1_inv_trans_8x8_dc_rvv_i64: 80.2

Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
2023-12-08 17:20:48 +02:00
Andreas Rheinhardt
333b32af8e avcodec/h264chroma: Constify src in h264_chroma_mc_func
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-08-05 03:02:13 +02:00
Andreas Rheinhardt
40e6575aa3 all: Replace if (ARCH_FOO) checks by #if ARCH_FOO
This is more spec-compliant because it does not rely
on dead-code elimination by the compiler. Especially
MSVC has problems with this, as can be seen in
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/296373.html
or
https://ffmpeg.org/pipermail/ffmpeg-devel/2022-May/297022.html

This commit does not eliminate every instance where we rely
on dead code elimination: It only tackles branching to
the initialization of arch-specific dsp code, not e.g. all
uses of CONFIG_ and HAVE_ checks. But maybe it is already
enough to compile FFmpeg with MSVC with whole-programm-optimizations
enabled (if one does not disable too many components).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-06-15 04:56:37 +02:00
Ben Avison
2e26847780 avcodec/vc1: Introduce fast path for unescaping bitstream buffer
Includes a checkasm test.

Signed-off-by: Ben Avison <bavison@riscosopen.org>
Signed-off-by: Martin Storsjö <martin@martin.st>
2022-04-01 10:03:33 +03:00
Martin Storsjö
db54426975 vc1dsp: Change remaining stride parameters to ptrdiff_t
The existing x86 assembly for loop filters uses the stride as a
full register without clearing/sign extending the upper half
of the registers on x86_64.

This avoids crashes if the caller would have passed nonzero bits
in the previously undefined upper 32 bits of the parameters.

Signed-off-by: Martin Storsjö <martin@martin.st>
2022-03-30 14:53:55 +03:00
Martin Storsjö
a78f136f3f configure: Use a separate config_components.h header for $ALL_COMPONENTS
This avoids unnecessary rebuilds of most source files if only the
list of enabled components has changed, but not the other properties
of the build, set in config.h.

Signed-off-by: Martin Storsjö <martin@martin.st>
2022-03-16 14:12:49 +02:00
Hao Chen
60ead5cd68 avcodec: [loongarch] Optimize vc1dsp with LASX.
./ffmpeg -i 11_wmv3_720p_24fps_7Mbps.wmv -f rawvideo -y /dev/null -an
before:131fps
after :229fps

Reviewed-by: Shiyou Yin <yinshiyou-hf@loongson.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2021-12-23 12:28:54 +01:00
Michael Niedermayer
507ca66ee4 avcodec/vc1dsp: Avoid undefined shifts in vc1_v_s_overlap_c / vc1_h_s_overlap_c
Fixes: left shift of negative value -13
Fixes: 15260/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1_fuzzer-5702076048343040

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-06-26 21:26:41 +02:00
Jerome Borsboom
975a1a81b2 avcodec/vc1: fix overlap filter for frame interlaced pictures
The overlap filter is not correct for vertical edges in frame interlaced
I and P pictures. When filtering macroblocks with different FIELDTX values,
we have to match the lines at both sides of the vertical border. In addition,
we have to use the correct rounding values, depending on the line we are
filtering.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
2018-06-29 01:18:44 +02:00
James Almer
a8474df944 Merge commit 'e4a94d8b36'
* commit 'e4a94d8b36':
  h264chroma: Change type of stride parameters to ptrdiff_t

Merged-by: James Almer <jamrial@gmail.com>
2017-03-21 15:20:45 -03:00
James Almer
5a49097b42 Merge commit '2ec9fa5ec6'
* commit '2ec9fa5ec6':
  idct: Change type of array stride parameters to ptrdiff_t

Merged-by: James Almer <jamrial@gmail.com>
2017-03-21 14:29:52 -03:00
Zhou Xiaoyong
5b74ebe937 avcodec/mips: version 1 of vc1dsp optimizations for loongson mmi
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-17 18:41:18 +01:00
Diego Biurrun
e4a94d8b36 h264chroma: Change type of stride parameters to ptrdiff_t
This avoids SIMD-optimized functions having to sign-extend their
stride argument manually to be able to do pointer arithmetic.
2016-09-29 14:48:04 +02:00
Diego Biurrun
2ec9fa5ec6 idct: Change type of array stride parameters to ptrdiff_t
ptrdiff_t is the correct type for array strides and similar.
2016-09-29 14:48:03 +02:00
Derek Buitenhuis
1a12eb4a73 Merge commit '29c2d06d67'
* commit '29c2d06d67':
  cosmetics: Drop empty comment lines

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-24 17:31:44 +00:00
Diego Biurrun
29c2d06d67 cosmetics: Drop empty comment lines 2016-02-18 15:35:30 +01:00
Michael Niedermayer
e3f7142306 avcodec/vc1dsp: add () to protect the arguments of the op* macros
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-17 00:02:40 +01:00
Michael Niedermayer
bf7ed956ff Merge commit 'adf8227cf4'
* commit 'adf8227cf4':
  vc-1: Add platform-specific start code search routine to VC1DSPContext.

Conflicts:
	configure
	libavcodec/arm/vc1dsp_init_arm.c
	libavcodec/vc1dsp.c
	libavcodec/vc1dsp.h

See: 9d8ecdd8ca
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-05 13:00:41 +02:00
Ben Avison
adf8227cf4 vc-1: Add platform-specific start code search routine to VC1DSPContext.
Initialise VC1DSPContext for parser as well as for decoder.
Note, the VC-1 code doesn't actually use the function pointer yet.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-08-04 22:22:54 +02:00
Diego Biurrun
58e65e44f4 vc1dsp: Add wrappers for {avg|put}_vc1_mspel_mc00_c
This avoids invoking the wrapped functions with too many arguments.
2014-07-25 02:52:54 -07:00
Michael Niedermayer
98a6806fdd Merge commit '368f50359e'
* commit '368f50359e':
  dsputil: Split off quarterpel bits into their own context

Conflicts:
	configure
	libavcodec/dsputil.c
	libavcodec/h263dec.c
	libavcodec/mpegvideo.c
	libavcodec/mpegvideo_enc.c
	libavcodec/vc1dec.c
	libavcodec/vc1dsp.c
	libavcodec/x86/dsputil_init.c
	libavcodec/x86/qpeldsp.asm

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-30 02:43:34 +02:00
Diego Biurrun
368f50359e dsputil: Split off quarterpel bits into their own context 2014-05-29 06:48:31 -07:00
Ben Avison
9d8ecdd8ca vc-1: Add platform-specific start code search routine to VC1DSPContext.
Initialise VC1DSPContext for parser as well as for decoder.
Note, the VC-1 code doesn't actually use the function pointer yet.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-25 02:36:11 +02:00
Christophe Gisquet
319235c67c vc1dsp: introduce cases for 8x8 and 16x16
This allows further unrolling the DSP implementation where possible.

x86 and ARM DSP modified by simply moving the multiple calls from vc1dec
to the DSP code. Decoding improvements should only occurs because of the
compiler actually able to unroll more.

Decoding time: ~8.80s -> 8.64s (ie around 2%)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-20 18:25:36 +02:00
Michael Niedermayer
5440151fa4 Merge commit '3dc6272bed'
* commit '3dc6272bed':
  Remove a number of unnecessary dsputil.h #includes

Conflicts:
	libavcodec/h264pred.c
	libavcodec/vc1dsp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-04-05 18:54:15 +02:00
Diego Biurrun
3dc6272bed Remove a number of unnecessary dsputil.h #includes 2014-04-04 19:08:05 +02:00
Michael Niedermayer
5dce8e56c6 Merge commit 'ed9625eb62'
* commit 'ed9625eb62':
  dsputil: Move intreadwrite.h #include from header file to .c files

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-13 23:30:43 +01:00
Michael Niedermayer
6f001d87ff Merge commit '71617884a2'
* commit '71617884a2':
  aarch64: h264 chroma motion compensation NEON optimizations

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-15 15:00:06 +01:00
Janne Grunau
71617884a2 aarch64: h264 chroma motion compensation NEON optimizations
Since RV40 and VC-1 use almost the same algorithm so optimizations for
those two decoders are easy to do and included.
2014-01-15 12:07:18 +01:00
Michael Niedermayer
58eb9b9299 Merge commit '6d98959c8a'
* commit '6d98959c8a':
  vc1: Add avg_no_rnd_vc1_chroma_mc4_c()

Conflicts:
	libavcodec/vc1dsp.c

See: dd6e291e40
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-13 14:19:15 +01:00
Michael Niedermayer
1df53ff22d Merge commit 'c798a6fedc'
* commit 'c798a6fedc':
  vc1: Factorize out chroma MC

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-13 14:04:58 +01:00
Michael Niedermayer
6d98959c8a vc1: Add avg_no_rnd_vc1_chroma_mc4_c()
Needed for proper interlaced support.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2014-01-13 10:22:58 +01:00
Luca Barbato
c798a6fedc vc1: Factorize out chroma MC 2014-01-13 10:21:53 +01:00
Michael Niedermayer
4daf8bc31b Merge remote-tracking branch 'qatar/master'
* qatar/master:
  vc1dsp: K&R formatting cosmetics

Conflicts:
	libavcodec/vc1dsp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-12 20:04:35 +01:00
Luca Barbato
a1f5164814 vc1dsp: K&R formatting cosmetics
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-01-12 18:33:25 +01:00
Michael Niedermayer
69278d94c4 Merge commit '832e190632'
* commit '832e190632':
  vc1: arm: Add NEON assembly

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-20 23:12:16 +01:00
Mason Carter
832e190632 vc1: arm: Add NEON assembly
For:

ff_vc1_inv_trans_{8,4}x{8,4}_{dc_,}neon
ff_put_pixels8x8_neon
ff_put_vc1_mspel_mc{0,1,2,3}{0,1,2,3}_neon (except for 00)

Based on ARM assembly code in libavcodec/arm by Rob Clark and Mans
Rullgard.

Signed-off-by: Martin Storsjö <martin@martin.st>
2013-12-20 14:53:39 +02:00
Michael Niedermayer
f896f92337 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  cosmetics: Place arch initialization calls in alphabetical order

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-29 16:15:54 +02:00
Diego Biurrun
67e6a9f558 cosmetics: Place arch initialization calls in alphabetical order 2013-08-29 11:24:14 +02:00
Michael Niedermayer
cae8f469fe Merge commit '38282149b6'
* commit '38282149b6':
  ppc: More consistent arch initialization

Conflicts:
	libavcodec/fft.h
	libavcodec/mpegaudiodsp.c
	libavcodec/mpegaudiodsp.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-01 18:08:13 +02:00
Diego Biurrun
38282149b6 ppc: More consistent arch initialization 2013-04-30 12:19:45 +02:00
Michael Niedermayer
dd6e291e40 vc1dsp: add avg_no_rnd_vc1_chroma_mc4_c()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-25 22:39:19 +02:00
Michael Niedermayer
019b378d90 vc1: fix int/ptrdiff_t mismatches
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-13 14:35:48 +01:00
Michael Niedermayer
db4e4f766c Merge commit 'a8b6015823'
* commit 'a8b6015823':
  dsputil: convert remaining functions to use ptrdiff_t strides

Conflicts:
	libavcodec/dsputil.h
	libavcodec/dsputil_template.c
	libavcodec/h264qpel_template.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-13 14:18:53 +01:00
Luca Barbato
a8b6015823 dsputil: convert remaining functions to use ptrdiff_t strides
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2013-03-12 18:26:42 +01:00
Michael Niedermayer
81a11452f8 Merge commit 'bf6b3ec924'
* commit 'bf6b3ec924':
  dsputil: Move rnd_avg inline functions to a separate header

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-02-09 14:22:05 +01:00
Michael Niedermayer
c4e394e460 Merge commit '79dad2a932'
* commit '79dad2a932':
  dsputil: Separate h264chroma

Conflicts:
	libavcodec/dsputil_template.c
	libavcodec/ppc/dsputil_ppc.c
	libavcodec/vc1dec.c
	libavcodec/vc1dsp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-02-07 13:09:35 +01:00
Diego Biurrun
79dad2a932 dsputil: Separate h264chroma 2013-02-06 11:30:53 +01:00
Michael Niedermayer
ac8987591f Merge commit '88bd7fdc82'
* commit '88bd7fdc82':
  Drop DCTELEM typedef

Conflicts:
	libavcodec/alpha/dsputil_alpha.h
	libavcodec/alpha/motion_est_alpha.c
	libavcodec/arm/dsputil_init_armv6.c
	libavcodec/bfin/dsputil_bfin.h
	libavcodec/bfin/pixels_bfin.S
	libavcodec/cavs.c
	libavcodec/cavsdec.c
	libavcodec/dct-test.c
	libavcodec/dnxhdenc.c
	libavcodec/dsputil.c
	libavcodec/dsputil.h
	libavcodec/dsputil_template.c
	libavcodec/eamad.c
	libavcodec/h264_cavlc.c
	libavcodec/h264idct_template.c
	libavcodec/mpeg12.c
	libavcodec/mpegvideo.c
	libavcodec/mpegvideo.h
	libavcodec/mpegvideo_enc.c
	libavcodec/ppc/dsputil_altivec.c
	libavcodec/proresdsp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-23 17:44:56 +01:00
Diego Biurrun
88bd7fdc82 Drop DCTELEM typedef
It does not help as an abstraction and adds dsputil dependencies.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2013-01-22 18:32:56 -08:00