Commit Graph

44 Commits

Author SHA1 Message Date
Måns Rullgård 8681669272 Make intreadwrite.h installation-safe
Originally committed as revision 24173 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-10 22:22:03 +00:00
Måns Rullgård 8fc0162ac4 Add av_ prefix to bswap macros
Originally committed as revision 24170 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-10 22:12:30 +00:00
Måns Rullgård 7918375f88 intreadwrite: common.h is not needed, attributes.h is sufficient
Originally committed as revision 24155 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-10 00:40:59 +00:00
Måns Rullgård 3d7b94ba5a Fix build failure with fast_unaligned and non-gcc-compatible compilers
Originally committed as revision 22142 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-02 03:16:24 +00:00
Michael Niedermayer 8ef4e65e94 AV_COPY16() & AV_ZERO16()
Originally committed as revision 22037 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-24 20:38:31 +00:00
Måns Rullgård 95c0d02ddc TOMI: 16- and 32-bit intreadwrite functions
Originally committed as revision 21890 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-19 03:20:01 +00:00
Måns Rullgård f4a7434f16 Add alias-safe aligned AV_[RW]N macros
Originally committed as revision 21880 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-18 13:44:38 +00:00
Måns Rullgård 7a6053ef72 Use alias-safe types in AV_COPY/SWAP/ZERO macros
Originally committed as revision 21879 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-18 13:40:24 +00:00
Måns Rullgård 0c76e635f5 Use alias-safe types in AV_[RW] macros
Originally committed as revision 21878 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-18 13:40:21 +00:00
Måns Rullgård d10458c9e2 Add alias-safe union typedefs
Originally committed as revision 21877 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-18 13:40:19 +00:00
Måns Rullgård 6c88973a75 Add AV_COPY32
Originally committed as revision 21524 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-29 03:26:17 +00:00
Alexander Strange f6d0390657 Add macros for 64- and 128-bit write-combining optimization to intreadwrite.h.
Add x86 implementation using MMX/SSE.

Originally committed as revision 21281 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-18 10:24:33 +00:00
Måns Rullgård c25210278c Add missing parens in AV_WN macros
Originally committed as revision 21260 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-17 12:47:06 +00:00
Måns Rullgård d691da9508 AVR32: optimisations for intreadwrite.h
Originally committed as revision 19665 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-17 00:15:53 +00:00
Måns Rullgård 4a051891f6 cosmetics: reformat intreadwrite.h
Originally committed as revision 19659 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-16 18:06:25 +00:00
Måns Rullgård 63826ceb32 intreadwrite: ensure arch-specific versions are always used if defined
The per-arch headers can define any combination of B/L/N variants.
This ensures that whatever is defined in an arch header gets used
for all equivalents not defined there.  E.g. on a little-endian
machine, AV_RN and AV_RL should give the same code.

Originally committed as revision 19658 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-16 15:51:55 +00:00
Måns Rullgård 57c36bdcea intreadwrite: allow arch-specific 24-bit access macros
Originally committed as revision 19657 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-08-16 15:51:52 +00:00
Måns Rullgård 63613fe615 Replace WORDS_BIGENDIAN with HAVE_BIGENDIAN
Originally committed as revision 19508 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-26 12:20:04 +00:00
Måns Rullgård e7ea5e3d8d Check for __attribute__((packed)) support
Not all compilers claiming to be gcc support this attribute.

Originally committed as revision 19453 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-17 08:21:43 +00:00
Måns Rullgård 530456bf31 MIPS: inline asm for intreadwrite.h
Originally committed as revision 18980 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-28 23:19:35 +00:00
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