Commit Graph

24 Commits

Author SHA1 Message Date
Måns Rullgård 9f5ff83f2a PPC asm for AV_RL*()
PPC is normally big endian but has special little endian load/store
instructions.  Using these avoids a separate byteswap.  This makes the
vorbis decoder about 5% faster.  Not much else uses little-endian
read/write extensively.

GCC generates horrible PPC code for the default AV_[RW]B64 (which uses
a packed struct), so we override it with a plain pointer cast.

Originally committed as revision 18602 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-18 00:00:31 +00:00
Måns Rullgård 3c55ce039d ARM asm for AV_RN*()
ARMv6 and later support unaligned loads and stores for single
word/halfword but not double/multiple.  GCC is ignorant of this and
will always use bytewise accesses for unaligned data.  Casting to an
int32_t pointer is dangerous since a load/store double or multiple
instruction might be used (this happens with some code in FFmpeg).
Implementing the AV_[RW]* macros with inline asm using only supported
instructions gives fast and safe unaligned accesses.  ARM RVCT does
the right thing with generic code.

This gives an overall speedup of up to 10%.

Originally committed as revision 18601 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-18 00:00:28 +00:00
Måns Rullgård a6783b8961 Reorganise intreadwrite.h
This changes intreadwrite.h to support per-arch implementations of the
various macros allowing us to take advantage of special instructions
or other properties the compiler does not know about.

Originally committed as revision 18600 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-18 00:00:22 +00:00
Aurelien Jacobs b250f9c66d Change semantic of CONFIG_*, HAVE_* and ARCH_*.
They are now always defined to either 0 or 1.

Originally committed as revision 16590 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-13 23:44:16 +00:00
Stefano Sabatini 987903826b Globally rename the header inclusion guard names.
Consistently apply this rule: the guard name is obtained from the
filename by stripping the leading "lib", converting '/' and '.'  to
'_' and uppercasing the resulting name. Guard names in the root
directory have to be prefixed by "FFMPEG_".

Originally committed as revision 15120 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 07:39:47 +00:00
Måns Rullgård b7b38fb28a intreadwrite: support DEC compiler __unaligned type qualifier
Originally committed as revision 14275 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-18 01:18:59 +00:00
Måns Rullgård fbbea48eb3 Rearrange AV_[RW][BL]*() macros
Originally committed as revision 14265 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 18:42:19 +00:00
Diego Biurrun a087028ad8 Add #include "config.h" to headers that need it.
Originally committed as revision 12431 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-03-13 18:04:21 +00:00
Michael Niedermayer ff794171c9 Do not cast const away.
Originally committed as revision 11707 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-02-01 03:14:50 +00:00
Diego Biurrun 5b21bdabe4 Add FFMPEG_ prefix to all multiple inclusion guards.
Originally committed as revision 10765 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-10-17 09:37:46 +00:00
Roman Shaposhnik 905694d96e * renaming (ST|LD)(16|32|64) -> AV_(R|W)N(16|32|64)
Originally committed as revision 10023 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-08-09 17:01:15 +00:00
Reimar Döffinger c08be350da intreadwrite.h needs bswap.h if HAVE_FAST_UNALIGNED is set, so include it.
Originally committed as revision 9414 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-06-24 14:29:52 +00:00
Måns Rullgård 99545457bf include all prerequisites in header files
Originally committed as revision 9344 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-06-16 22:59:13 +00:00
Jindřich Makovička 803ca89ca1 Proper fix for r8963
Patch by Jindrich Makovicka, makovick at gmail dot com
Reference thread:
Subject: Re: [PATCH] make libavcodec use bytestream functions
Date: Thu, 10 May 2007 07:49:43 +0200

Originally committed as revision 8982 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-05-10 18:28:44 +00:00
Ivo van Poorten 9e010b41e6 add AV_[RW][BL]64 support
Originally committed as revision 8924 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-05-07 13:12:33 +00:00
Ramiro Polla 7b829d2ab6 "fast unaligned" bytestream functions
patch by Ramiro Polla ramiro lisha ufsc br
original thread:
date: 03/11/2007 03:06 AM
subject: [Ffmpeg-devel] [PATCH] Machine endian bytestream functions

Originally committed as revision 8803 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-04-25 08:47:15 +00:00
Diego Biurrun 85b1a7222d cosmetics: Reorder endianness macros by bit depth, alignment prettyprinting.
Originally committed as revision 8796 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-04-24 07:16:47 +00:00
Alex Beregszaszi 1586238717 add little endian 24bit read/write
Originally committed as revision 8269 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-03-06 13:04:47 +00:00
Baptiste Coudurier 626b7c0f1a add R/WB24 functions
Originally committed as revision 8216 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-03-04 02:48:32 +00:00
Diego Biurrun f5a90186d7 Add missing license headers.
Originally committed as revision 8149 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-02-27 16:05:19 +00:00
Michael Niedermayer 7d4495dafe simplify and remove useless index in AV_W*
Originally committed as revision 7852 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-02-06 19:10:17 +00:00
Alex Beregszaszi a3550abd08 add AV_WB/WL for lswriting, similar to AV_RB/RL (also increment version)
Originally committed as revision 7588 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-01-19 22:26:10 +00:00
Alex Beregszaszi fead30d444 rename BE/LE_8/16/32 to AV_RL/B_8/16/32
Originally committed as revision 7587 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-01-19 22:12:59 +00:00
Reimar Döffinger cf1e119bb2 Move BE_*/LE_*/ST*/LD* macros to a common place. Some further
optimization/cleanup would be desirable (e.g. LE_* and LD*
should be the same on x86).

Originally committed as revision 7218 to svn://svn.ffmpeg.org/ffmpeg/trunk
2006-12-03 16:35:30 +00:00