summaryrefslogtreecommitdiff
path: root/libavutil/intreadwrite.h
Commit message (Collapse)AuthorAge
* intreadwrite: add AV_RL64A, AV_WL64APeter Ross2019-01-11
| | | | | | | | macros for reading and writing 64-bit aligned little-endian values. these macros are used by the DST decoder and give a performance boost on platforms that where the compiler must guard against unaligned memory access.
* Merge commit '85e10c0a9321bfe0d2afe0f3983ab6a8df6e3fba'Mark Thompson2018-01-25
|\ | | | | | | | | | | | | * commit '85e10c0a9321bfe0d2afe0f3983ab6a8df6e3fba': intreadwrite: Use __unaligned in MSVC for ARM64 as well Merged-by: Mark Thompson <sw@jkqxz.net>
| * intreadwrite: Use __unaligned in MSVC for ARM64 as wellMartin Storsjö2018-01-16
| | | | | | | | | | | | | | This attribute is supported for this architecture in MSVC as well (but produces errors if used for 32 bit x86). Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '0af8a72174108b9bb482f1073a1e9a3bc258af51'James Almer2017-11-11
|\| | | | | | | | | | | | | * commit '0af8a72174108b9bb482f1073a1e9a3bc258af51': build: Drop support for legacy TI ARM compiler Merged-by: James Almer <jamrial@gmail.com>
| * build: Drop support for legacy TI ARM compilerDiego Biurrun2017-10-25
| |
* | Merge commit '09c98327b9f25c6c1716c0ee82ce09d8b484887a'James Almer2017-11-11
|\| | | | | | | | | | | | | * commit '09c98327b9f25c6c1716c0ee82ce09d8b484887a': build: Drop support for Tru64 Unix (OSF/1) Merged-by: James Almer <jamrial@gmail.com>
| * build: Drop support for Tru64 Unix (OSF/1)Diego Biurrun2017-10-10
| | | | | | | | | | This proprietary Unix flavor dropped from the face of the earth more than a decade ago. Nothing of value was lost.
| * Revert "libavutil: Use an intermediate variable in AV_COPY*U"Martin Storsjö2016-08-02
| | | | | | | | | | | | | | | | | | | | This reverts commit 014773b66bdff4de24f384066d1a85d2a5bb6774. Since 230b1c070, the bytewise AV_W*() macros only expand their argument once, i.e. doing exactly the same change as was done in the AV_COPY*U macros, so this change is no longer necessary. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit 'f79d847400d218cfd0b95f10358fe6e65ec3c9c4'James Almer2017-03-15
|\| | | | | | | | | | | | | * commit 'f79d847400d218cfd0b95f10358fe6e65ec3c9c4': intreadwrite: Use the __unaligned keyword on MSVC for ARM and x86_64 Merged-by: James Almer <jamrial@gmail.com>
| * intreadwrite: Use the __unaligned keyword on MSVC for ARM and x86_64Martin Storsjö2016-08-02
| | | | | | | | | | | | | | | | | | | | | | | | | | AV_WN64 is meant for unaligned data, but the existing av_alias* unions (without a definition for the av_alias attribute - we don't have one for MSVC) indicate to the compiler that they would have sufficient alignment for normal access, i.e. the compiler is free to assume 8 byte alignment. On ARM, this makes sure that AV_WN64 (or two consecutive AV_WN32) is done with two str instructions instead of one strd. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '230b1c070baa3b6d4bd590426a365b843d60ff50'James Almer2017-03-15
|\| | | | | | | | | | | | | | | | | | | * commit '230b1c070baa3b6d4bd590426a365b843d60ff50': intreadwrite: Add intermediate variables in the byteswise AV_W*() macros Mostly a noop. Merged for cosmetic purposes. See d83ff76ca0e1ec905ca2d5b27bd0973991eadbd9 Merged-by: James Almer <jamrial@gmail.com>
| * intreadwrite: Add intermediate variables in the byteswise AV_W*() macrosMartin Storsjö2016-08-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids issues with expanding the argument multiple times, and makes sure that it is of the right type for the following shifts. Even if the caller of a macro could be expected not to pass parameters that have side effects if expanded multiple times, these fallback codepaths are rarely, if ever, tested, so it is expected that such issues can arise. Thefore, for safety, make sure the fallback codepaths only expand the arguments once. Signed-off-by: Martin Storsjö <martin@martin.st>
| * libavutil: Use an intermediate variable in AV_COPY*UMartin Storsjö2016-07-31
| | | | | | | | | | | | | | | | | | | | | | If AV_RN and AV_WN are macros with multiple individual reads and writes, the previous version of the AV_COPYU macro would fail if the reads and writes overlap. This should not be any less efficient in any case, given a sensibly optimizing compiler. Signed-off-by: Martin Storsjö <martin@martin.st>
* | libavutil: document side effects of macrosChristophe Gisquet2014-07-19
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavu/intreadwrite: add AV_[RW][BLN]48Paul B Mahol2013-02-13
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | Merge commit 'ceb754d041f5f6327fd9195a5f43575af9516daa'Michael Niedermayer2012-10-24
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'ceb754d041f5f6327fd9195a5f43575af9516daa': lzo: Use AV_COPY*U macros where appropriate prepare 9_beta2 release dsputil: Replace AV_WNxx(AV_RNxx()) combinations by AV_COPYxxU intreadwrite: Add AV_COPYxxU macros for copying to/from unaligned addresses dxtory: Replace AV_WN16A(AV_RN16A()) combination by AV_COPY16 mp3: properly forward mp_decode_frame errors Conflicts: RELEASE libavcodec/mpegaudiodec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * intreadwrite: Add AV_COPYxxU macros for copying to/from unaligned addressesDiego Biurrun2012-10-23
| |
* | intreadwrite: Dont evaluate value for AV_W* multiple times.Michael Niedermayer2012-09-04
| | | | | | | | | | | | | | Evaluating it multiple times, can have side effects and is possibly slow. So its definitly a bad idea. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2011-06-18
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: lavc: add opt_find to AVCodecContext class. h264: Complexify frame num gap shortening code intreadwrite.h: fix AV_RL32/AV_RB32 signedness. Fix decoding of mpegts streams with h264 video that does *NOT* have b frames Add minor bumps and APIChanges entries for lavf private options. ffmpeg: deprecate -vc and -tvstd ffmpeg: use new avformat_open_* API. ffserver: use new avformat_open_* API. ffprobe: use new avformat_open_* API. ffplay: use new avformat_open_* API. cmdutils: add opt_default2(). dict: add AV_DICT_APPEND flag. lavf: add avformat_write_header() as a replacement for av_write_header(). Deprecate av_open_input_* and remove their uses. lavf: add avformat_open_input() as a replacement for av_open_input_* AVOptions: add av_opt_find() as a replacement for av_find_opt. AVOptions: add av_opt_set_dict() mapping a dictionary struct to a context. ffmpeg: don't abuse a global for passing frame size from input to output ffmpeg: don't abuse a global for passing pixel format from input to output ffmpeg: initialise encoders earlier. Conflicts: cmdutils.c doc/APIchanges ffmpeg.c ffplay.c ffprobe.c libavcodec/h264.c libavformat/avformat.h libavformat/utils.c libavformat/version.h libavutil/avutil.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * intreadwrite.h: fix AV_RL32/AV_RB32 signedness.Uoti Urpala2011-06-16
| | | | | | | | | | | | | | | | | | 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>
| * Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
|/ | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* Make intreadwrite.h installation-safeMåns Rullgård2010-07-10
| | | | Originally committed as revision 24173 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add av_ prefix to bswap macrosMåns Rullgård2010-07-10
| | | | Originally committed as revision 24170 to svn://svn.ffmpeg.org/ffmpeg/trunk
* intreadwrite: common.h is not needed, attributes.h is sufficientMåns Rullgård2010-07-10
| | | | Originally committed as revision 24155 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Fix build failure with fast_unaligned and non-gcc-compatible compilersMåns Rullgård2010-03-02
| | | | Originally committed as revision 22142 to svn://svn.ffmpeg.org/ffmpeg/trunk
* AV_COPY16() & AV_ZERO16()Michael Niedermayer2010-02-24
| | | | Originally committed as revision 22037 to svn://svn.ffmpeg.org/ffmpeg/trunk
* TOMI: 16- and 32-bit intreadwrite functionsMåns Rullgård2010-02-19
| | | | Originally committed as revision 21890 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add alias-safe aligned AV_[RW]N macrosMåns Rullgård2010-02-18
| | | | Originally committed as revision 21880 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Use alias-safe types in AV_COPY/SWAP/ZERO macrosMåns Rullgård2010-02-18
| | | | Originally committed as revision 21879 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Use alias-safe types in AV_[RW] macrosMåns Rullgård2010-02-18
| | | | Originally committed as revision 21878 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add alias-safe union typedefsMåns Rullgård2010-02-18
| | | | Originally committed as revision 21877 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add AV_COPY32Måns Rullgård2010-01-29
| | | | Originally committed as revision 21524 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add macros for 64- and 128-bit write-combining optimization to intreadwrite.h.Alexander Strange2010-01-18
| | | | | | Add x86 implementation using MMX/SSE. Originally committed as revision 21281 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add missing parens in AV_WN macrosMåns Rullgård2010-01-17
| | | | Originally committed as revision 21260 to svn://svn.ffmpeg.org/ffmpeg/trunk
* AVR32: optimisations for intreadwrite.hMåns Rullgård2009-08-17
| | | | Originally committed as revision 19665 to svn://svn.ffmpeg.org/ffmpeg/trunk
* cosmetics: reformat intreadwrite.hMåns Rullgård2009-08-16
| | | | Originally committed as revision 19659 to svn://svn.ffmpeg.org/ffmpeg/trunk
* intreadwrite: ensure arch-specific versions are always used if definedMåns Rullgård2009-08-16
| | | | | | | | | 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
* intreadwrite: allow arch-specific 24-bit access macrosMåns Rullgård2009-08-16
| | | | Originally committed as revision 19657 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Replace WORDS_BIGENDIAN with HAVE_BIGENDIANMåns Rullgård2009-07-26
| | | | Originally committed as revision 19508 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Check for __attribute__((packed)) supportMåns Rullgård2009-07-17
| | | | | | Not all compilers claiming to be gcc support this attribute. Originally committed as revision 19453 to svn://svn.ffmpeg.org/ffmpeg/trunk
* MIPS: inline asm for intreadwrite.hMåns Rullgård2009-05-28
| | | | Originally committed as revision 18980 to svn://svn.ffmpeg.org/ffmpeg/trunk
* PPC asm for AV_RL*()Måns Rullgård2009-04-18
| | | | | | | | | | | | 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
* ARM asm for AV_RN*()Måns Rullgård2009-04-18
| | | | | | | | | | | | | | | 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
* Reorganise intreadwrite.hMåns Rullgård2009-04-18
| | | | | | | | 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
* Change semantic of CONFIG_*, HAVE_* and ARCH_*.Aurelien Jacobs2009-01-13
| | | | | | They are now always defined to either 0 or 1. Originally committed as revision 16590 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Globally rename the header inclusion guard names.Stefano Sabatini2008-08-31
| | | | | | | | | 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
* intreadwrite: support DEC compiler __unaligned type qualifierMåns Rullgård2008-07-18
| | | | Originally committed as revision 14275 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Rearrange AV_[RW][BL]*() macrosMåns Rullgård2008-07-17
| | | | Originally committed as revision 14265 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Add #include "config.h" to headers that need it.Diego Biurrun2008-03-13
| | | | Originally committed as revision 12431 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Do not cast const away.Michael Niedermayer2008-02-01
| | | | Originally committed as revision 11707 to svn://svn.ffmpeg.org/ffmpeg/trunk