1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00
Commit Graph

47 Commits

Author SHA1 Message Date
Diego Biurrun
af6dd6de08 intreadwrite: Add AV_COPYxxU macros for copying to/from unaligned addresses 2012-10-23 16:54:08 +02:00
Uoti Urpala
c98b928fa7 intreadwrite.h: fix AV_RL32/AV_RB32 signedness.
The output type of the AV_RL32/AV_RB32 macros was signed int. The
resulting overflow broke at least some ASF streams with large
timestamps. Fix by adding a cast to uint32_t.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-06-16 20:49:19 +02:00
Mans Rullgard
2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
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