Commit Graph

92 Commits

Author SHA1 Message Date
Andreas Rheinhardt 7d9d400695 postproc/postprocess: Don't generally include arch-specific headers
Reviewed-by: Sean McGovern <gseanmcg@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2024-03-30 05:04:27 +01:00
Andreas Rheinhardt f0ee38790b postproc/postprocess_template: Fix alignment
postProcess in postprocess_template.c copies a PPContext
to the stack, works with this copy and then copies
it back again. Said local copy uses a hardcoded alignment
of eight, although PPContext has alignment 32 since
cbe27006ce
(this commit was in anticipation of AVX2 code that never landed).
This leads to misalignment in the filter-(pp|pp1|pp2|pp3|qp)
FATE-tests which UBSan complains about. So avoid the local copy.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-11-09 17:39:00 +01:00
Andreas Rheinhardt 1f0948272a postproc/postprocess: Remove obsolete MMX(EXT)/3Dnow functions
postprocess.c currently has C, MMX, MMXEXT, 3DNow as well as
SSE2 versions of its internal functions. But given that only
ancient 32-bit x86 CPUs don't support SSE2, the MMX, MMXEXT
and 3DNow versions are obsolete and are therefore removed by
this commit. This saves about 56KB here.

(The SSE2 version in particular is not really complete,
so that it often falls back to MMXEXT (which means that
there were some identical (apart from the name) MMXEXT
and SSE2 functions; this duplication no longer exists
with this commit.)

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-11-09 17:38:24 +01:00
Andreas Rheinhardt 5d10e21809 libpostproc/postprocess_template: Don't reimplement FFSWAP
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2021-10-02 17:13:42 +02:00
Anton Khirnov e15371061d lavu/mem: move the DECLARE_ALIGNED macro family to mem_internal on next+1 bump
They are not properly namespaced and not intended for public use.
2021-01-01 14:14:57 +01:00
Andreas Rheinhardt cc2a9509ce libavcodec, libpostproc: Remove outcommented START/STOP_TIMER
as well as includes of libavutil/timer.h.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-03-14 18:24:04 +01:00
Michael Niedermayer c1cbeb87db postproc/postprocess_template: remove FF_REG_sp from clobber list
Future gcc may no longer support this

Tested-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-12-22 17:41:44 +01:00
Michael Niedermayer 4325527e1c postproc/postprocess_template: Avoid using %4 for the threshold compare
This avoids problems if %4 is the stack pointer
the constraints do not allow %4 to be the stack pointer but gcc 9 may
no longer support specifying such constraints

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-12-22 17:41:44 +01:00
James Almer 2b7da70a70 postproc: remove usage of deprecated QP_STORE_T define
Signed-off-by: James Almer <jamrial@gmail.com>
2017-08-30 14:44:27 -03:00
Matthieu Bouron 9eb3da2f99 asm: FF_-prefix internal macros used in inline assembly
See merge commit '39d6d3618d48625decaff7d9bdbb45b44ef2a805'.
2016-06-27 17:21:18 +02:00
Ganesh Ajjanagadde 531b0a316b avutil/x86/asm: rename REG_SP to REG_sp
REG_SP is defined by Solaris system headers.
This fixes a sea of warnings while building on Solaris:
http://fate.ffmpeg.org/report.cgi?time=20150820233505&slot=x86-opensolaris-gcc4.3

Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-22 02:56:53 +02:00
Carl Eugen Hoyos 3323c5f353 Remove a few occurences of "long long" from the libraries. 2015-06-13 09:28:41 +02:00
Michael Niedermayer 6f51674c91 postproc: Avoid floats in maxClipped computation
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-31 01:40:12 +02:00
Michael Niedermayer ebe919cce2 postproc/postprocess_template: Compute packedYScale and QPCorrecture without floats
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-31 00:59:34 +02:00
Tucker DiNapoli cbe27006ce postproc: Made QP, nonBQP, and pQPb arrays
Also pulled QP initialization out of inner loop, which removed some redundent code.

Added some dummy fields to PPContext to allow current code to work while
changing the rest of the postprocessing code to support the arrays.

I also increased alignment requirements for some fields in the PPContext struct to
support future avx2 code.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-22 23:59:03 +02:00
Tucker DiNapoli 6264b6227c postproc: Replaced inline asm for prefetching with prefetch functions
Prefetching functions are defined in postprocess_template using the
RENAME macro so that prefetching is used when available. For x86
targets inline asm is used and the functions are non-empty only for
cpus where prefetching is available. For non x86 targets the gcc bultin
prefetch is used if it is available, otherwise no prefetching is done.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-22 23:32:35 +02:00
Tucker DiNapoli 303c3dada2 postproc: Removed unecessary if/else branch when getting QP.
There's still an if, as QP needs to be modified if isColor=0, but it
still removes a unecessary branch.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-28 01:49:12 +01:00
Michael Niedermayer 83020f8978 postproc/postprocess_template: split 2nd blockgroup loop out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 00:41:41 +01:00
Michael Niedermayer d9e3fe8c22 postproc/postprocess_template: split first part of block loop
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 00:33:16 +01:00
Michael Niedermayer 2a9b9579ab postproc/postprocess_template: Move QP initialization down
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 00:24:46 +01:00
Michael Niedermayer 330113b032 postproc/postprocess_template: Remove dead code and comments
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 00:22:43 +01:00
Michael Niedermayer fc90d1502a bpostproc/postprocess_template: drop avoidable #ifdef
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 00:16:07 +01:00
Michael Niedermayer 93f4538363 postproc/postprocess_template: split loop in 2 (block groups of 4, blocks)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-23 00:15:58 +01:00
Michael Niedermayer ac682955e9 postproc: add basic deblock filter visualization support
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-24 16:58:47 +02:00
Michael Niedermayer 3c4fc6a782 postproc/postprocess_template: mark unchanged function arguments const
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-22 17:49:55 +02:00
Michael Niedermayer 7f8d28f686 postproc: Replace CLIP by av_clip_uint8
drop "#define CLIP av_clip_uint8"

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-19 02:52:52 +02:00
Michael Niedermayer bb8b752553 postproc: use FFMIN/FFMAX where appropriate
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-09-04 03:50:46 +02:00
Carl Eugen Hoyos a19bcf4ee8 Fix libpostproc compilation with !HAVE_6REGS. 2014-04-24 17:50:02 +02:00
Matt Oliver 8236747511 Automatically change MANGLE() into named inline asm operands when direct symbol reference in inline asm are not supported.
This is part of the patch-set for intel C inline asm on windows support

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-18 23:39:30 +01:00
Michael Niedermayer 78d2d1e027 postprocess_template: put rsp on the clobber list to prevent gcc from using it in "q"
Fixes Ticket2675

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-16 18:21:39 +02:00
Michael Niedermayer 1d3476f258 postproc/postprocess_template: remove empty comments
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-23 14:39:58 +02:00
Michael Niedermayer a2f7314ba2 libpostproc: silence valgrind/fate warning about using uninitialized data
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-25 21:48:45 +01:00
Carl Eugen Hoyos 7a259a5fcd Fix libpostproc compilation on x86_32 with disable-optimizations. 2013-02-09 15:03:04 +01:00
Michael Niedermayer 9e04e11e83 libpostproc: alloc a few bytes more in the temporary buffer
This avoids dering reading 4 bytes prior the buffer (1 byte can
be used)

Fixes Ticket2057

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-28 02:47:25 +01:00
Michael Niedermayer f1185fbbec libpostproc: Fix off by 1 error in the C dering code
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-28 01:48:40 +01:00
Clément Bœsch a1d14336d3 pp: fix a few typo in the template. 2012-12-19 17:59:25 +01:00
Clément Bœsch f48cddfe4c pp: add SSE2 deInterlaceInterpolateCubic().
2124 decicycles in deInterlaceInterpolateCubic_C, 67100774 runs, 8090 skips
458 decicycles in deInterlaceInterpolateCubic_MMX2, 67107146 runs, 1718 skips
382 decicycles in deInterlaceInterpolateCubic_SSE2, 67107086 runs, 1778 skips
2012-11-18 16:21:59 +01:00
Clément Bœsch 4e264d1c79 pp: add support for SSE2. 2012-11-18 16:21:59 +01:00
Clément Bœsch 375cd3f2ec pp: rework the way templating is done.
This refactoring simplifies the usage of the template: define the
profile and include the template is all that is required. It should now
be easier to add more instruction sets.

The HAVE_* flags are changed with TEMPLATE_PP_* setting to avoid messing
them up.

See the top comment in postprocess_template.c for details.
2012-11-16 23:13:36 +01:00
Clément Bœsch 5cd567cfb4 pp: fix typo in avg() comment. 2012-11-15 21:54:18 +01:00
Michael Niedermayer 3689ec3d28 pp: avoid overflow in w*h
Fixes CID700580
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-13 21:17:43 +02:00
Derek Buitenhuis e20ac54f3e postproc: Fix unprotected inline asm
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-09-11 20:12:14 +02:00
XhmikosR 08bd8c8ab3 rename the remaining instances of HAVE_MMX2 to HAVE_MMXEXT
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-20 17:47:25 +02:00
Michael Niedermayer 9f088a1ed4 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  mpegvideo: reduce excessive inlining of mpeg_motion()
  mpegvideo: convert mpegvideo_common.h to a .c file
  build: factor out mpegvideo.o dependencies to CONFIG_MPEGVIDEO
  Move MASK_ABS macro to libavcodec/mathops.h
  x86: move MANGLE() and related macros to libavutil/x86/asm.h
  x86: rename libavutil/x86_cpu.h to libavutil/x86/asm.h
  aacdec: Don't fall back to the old output configuration when no old configuration is present.
  rtmp: Add message tracking
  rtsp: Support mpegts in raw udp packets
  rtsp: Support receiving plain data over UDP without any RTP encapsulation
  rtpdec: Remove an unused include
  rtpenc: Remove an av_abort() that depends on user-supplied data
  vsrc_movie: discourage its use with avconv.
  avconv: allow no input files.
  avconv: prevent invalid reads in transcode_init()
  avconv: rename OutputStream.is_past_recording_time to finished.

Conflicts:
	configure
	doc/filters.texi
	ffmpeg.c
	ffmpeg.h
	libavcodec/Makefile
	libavcodec/aacdec.c
	libavcodec/mpegvideo.c
	libavformat/version.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-08-09 19:31:56 +02:00
Michael Niedermayer f5bf7b9f4b libpostproc: fix out of array accesses detected by AddressSanitizer.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-02-29 04:25:13 +01:00
Diego Biurrun b315042c8c Remove libpostproc.
This library does not fit into Libav as a whole and its code is just a
maintenance burden.  Furthermore it is now available as an external project,
which completely obviates any reason to keep it around.

URL: http://git.videolan.org/?p=libpostproc.git
2012-02-23 19:36:16 +01:00
Michael Niedermayer 7f83db3124 Merge remote-tracking branch 'qatar/master'
* qatar/master: (46 commits)
  mtv: Make sure audio_subsegments is not 0
  v4l2: use V4L2_FMT_FLAG_EMULATED only if it is defined
  avconv: add symbolic names for -vsync parameters
  flvdec: Fix compiler warning for uninitialized variables
  rtsp: Fix compiler warning for uninitialized variable
  ulti: convert to new bytestream API.
  swscale: Use standard multiple inclusion guards in ppc/ header files.
  Place some START_TIMER invocations in separate blocks.
  v4l2: list available formats
  v4l2: set the proper codec_tag
  v4l2: refactor device_open
  v4l2: simplify away io_method
  v4l2: cosmetics
  v4l2: uniform and format options
  v4l2: do not force interlaced mode
  avio: exit early in fill_buffer without read_packet
  vc1dec: fix invalid memory access for small video dimensions
  rv34: fix invalid memory access for small video dimensions
  rv34: joint coefficient decoding and dequantization
  avplay: Don't call avio_set_interrupt_cb(NULL)
  ...

Conflicts:
	Changelog
	avconv.c
	doc/APIchanges
	doc/indevs.texi
	libavcodec/adxenc.c
	libavcodec/dnxhdenc.c
	libavcodec/h264.c
	libavdevice/v4l2.c
	libavformat/flvdec.c
	libavformat/mtv.c
	libswscale/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-05 02:03:12 +01:00
Diego Biurrun 00a1cdd264 Place some START_TIMER invocations in separate blocks.
This fixes compilation failures related to START_TIMER/STOP_TIMER macros and
-Werror=declaration-after-statement.  START_TIMER declares variables and thus
may not be placed after statements outside of a new block.
2012-01-04 15:05:49 +01:00
Michael Niedermayer 7d8f115843 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  mpegenc: use avctx->slices as number of slices
  v410enc: fix undefined signed left shift caused by integer promotion
  Release notes: mention cleaned up header includes
  fix Changelog file
  Fix a bunch of typos.
  Drop some pointless void* return value casts from av_malloc() invocations.
  wavpack: fix typos in previous cosmetic clean-up commit
  wavpack: cosmetics: K&R pretty-printing
  avconv: remove the 'codec framerate is different from stream' warning
  wavpack: determine sample_fmt before requesting a buffer
  bmv audio: implement new audio decoding API
  mpegaudiodec: skip all channels when skipping granules
  mpegenc: simplify muxrate calculation

Conflicts:
	Changelog
	avconv.c
	doc/RELEASE_NOTES
	libavcodec/h264.c
	libavcodec/mpeg12.c
	libavcodec/mpegaudiodec.c
	libavcodec/mpegvideo.c
	libavformat/mpegenc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-01-03 03:06:45 +01:00
Diego Biurrun 8fd35b1aac Fix a bunch of typos. 2012-01-02 16:41:25 +01:00