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