1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00
Go to file
Sebastian Pop bd83191271 swscale/aarch64: use multiply accumulate and increase vector factor to 4
This patch implements ff_hscale_8_to_15_neon with NEON fused multiply accumulate
and bumps the vectorization factor from 2 to 4.
The speedup is of 25% on Graviton1 A1 instances based on A-72 cpus:

$ ffmpeg -nostats -f lavfi -i testsrc2=4k:d=2 -vf bench=start,scale=1024x1024,bench=stop -f null -
before: t:0.040303 avg:0.040287 max:0.040371 min:0.039214
after:  t:0.032168 avg:0.032215 max:0.033081 min:0.032146

The speedup is of 39% on Graviton2 m6g instances based on Neoverse-N1 cpus:
$ ffmpeg -nostats -f lavfi -i testsrc2=4k:d=2 -vf bench=start,scale=1024x1024,bench=stop -f null -
before: t:0.019446 avg:0.019423 max:0.019493 min:0.019181
after:  t:0.014015 avg:0.014096 max:0.015018 min:0.013971

Tested with `make check` on aarch64-linux.

Signed-off-by: Sebastian Pop <spop@amazon.com>
Reviewed-by: Jean-Baptiste Kempf <jb@videolan.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-12-17 23:41:47 +01:00
compat compat/cuda: Change inclusion guards 2019-08-05 12:07:09 +02:00
doc avfilter: Add tonemap vaapi filter for H2S 2019-12-17 07:49:49 +08:00
ffbuild build: add support for building CUDA files with clang 2019-08-04 19:08:08 +02:00
fftools configure: Check for the SetDllDirectory and GetModuleHandle functions 2019-12-13 10:53:05 +02:00
libavcodec lavc/h264dec.h: remove unused ff_h264_decode_slice_header 2019-12-17 23:41:47 +01:00
libavdevice avdevice/xcbgrab: wrap non-shm image replies in a buffer ref 2019-12-06 10:09:49 +01:00
libavfilter avfilter/vf_stack: set framerate to VFR when inputs frame rates differs 2019-12-17 13:30:16 +01:00
libavformat avformat: Don't free old extradata before ff_alloc/get_extradata 2019-12-12 19:25:33 +01:00
libavresample avresample: remove deprecated attribute from the AVAudioResampleContext struct 2018-01-09 10:56:53 -03:00
libavutil lavu/log: Also print the log level for level trace. 2019-12-16 20:53:27 +01:00
libpostproc Bump minor versions again on master to keep 4.2 versions separate from master 2019-07-21 18:36:31 +02:00
libswresample swresample/audioconvert: fix invalid left shift for 64bit sample format 2019-09-26 16:22:47 +02:00
libswscale swscale/aarch64: use multiply accumulate and increase vector factor to 4 2019-12-17 23:41:47 +01:00
presets presets: remove moldering iPod presets 2014-06-17 16:15:04 -08:00
tests FATE/hevc.mak: cosmetic for fate-hevc-paired-fields 2019-12-17 14:20:48 -03:00
tools tools/target_dec_fuzzer: Adjust threshold for dst 2019-12-15 01:01:22 +01:00
.gitattributes fate: add SCC test 2017-01-27 17:06:42 +01:00
.gitignore tools/python: add script to convert TensorFlow model (.pb) to native model (.model) 2019-07-01 10:23:47 -03:00
.travis.yml Merge commit '899ee03088d55152a48830df0899887f055da1de' 2019-03-14 15:53:16 -03:00
Changelog Changelog: add entry about MPEG-H 3D Audio support in mp4 2019-12-12 12:03:31 -03:00
configure fate: Add an option for disabling the 2k/4k tests 2019-12-17 10:22:29 +02:00
CONTRIBUTING.md Add CONTRIBUTING.md 2016-09-18 10:02:13 +01:00
COPYING.GPLv2
COPYING.GPLv3
COPYING.LGPLv2.1
COPYING.LGPLv3
CREDITS CREDITS: redirect to Git log, remove current outdated content 2013-01-31 18:02:52 +01:00
INSTALL.md INSTALL.md: Fix Markdown formatting 2019-01-31 10:29:16 -09:00
LICENSE.md LICENSE: Add missing libraries that need --enable-version3. 2019-08-12 02:25:39 +02:00
MAINTAINERS MAINTAINERS: add myself as libxavs2 maintainer 2019-12-07 19:34:57 +01:00
Makefile tools: add a fuzzer tool for bitstream filters 2019-12-05 20:49:15 -03:00
README.md Remove the ffserver program 2018-01-06 18:31:37 +00:00
RELEASE RELEASE: Update value for post 4.2 branch 2019-07-21 18:37:32 +02:00

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides a mean to alter decoded Audio and Video through chain of filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.