mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
5fd6d85d17
Reference: commit41fda91d09
Author: BERO <bero@geocities.co.jp> Date: Wed May 14 17:46:55 2003 +0000 aligned dsputil (for sh4) patch by (BERO <bero at geocities dot co dot jp>) Originally committed as revision 1880 to svn://svn.ffmpeg.org/ffmpeg/trunk commit8dbe585641
Author: Oskar Arvidsson <oskar@irock.se> Date: Tue Mar 29 17:48:59 2011 +0200 Adds 8-, 9- and 10-bit versions of some of the functions used by the h264 decoder. This patch lets e.g. dsputil_init chose dsp functions with respect to the bit depth to decode. The naming scheme of bit depth dependent functions is <base name>_<bit depth>[_<prefix>] (i.e. the old clear_blocks_c is now named clear_blocks_8_c). Note: Some of the functions for high bit depth is not dependent on the bit depth, but only on the pixel size. This leaves some room for optimizing binary size. Preparatory patch for high bit depth h264 decoding support. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/*
|
|
* Copyright (c) 2001-2003 BERO <bero@geocities.co.jp>
|
|
* Copyright (c) 2011 Oskar Arvidsson
|
|
*
|
|
* This file is part of FFmpeg.
|
|
*
|
|
* FFmpeg is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* FFmpeg is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with FFmpeg; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef AVCODEC_RND_AVG_H
|
|
#define AVCODEC_RND_AVG_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define BYTE_VEC32(c) ((c)*0x01010101UL)
|
|
#define BYTE_VEC64(c) ((c)*0x0001000100010001UL)
|
|
|
|
static inline uint32_t rnd_avg32(uint32_t a, uint32_t b)
|
|
{
|
|
return (a | b) - (((a ^ b) & ~BYTE_VEC32(0x01)) >> 1);
|
|
}
|
|
|
|
static inline uint32_t no_rnd_avg32(uint32_t a, uint32_t b)
|
|
{
|
|
return (a & b) + (((a ^ b) & ~BYTE_VEC32(0x01)) >> 1);
|
|
}
|
|
|
|
static inline uint64_t rnd_avg64(uint64_t a, uint64_t b)
|
|
{
|
|
return (a | b) - (((a ^ b) & ~BYTE_VEC64(0x01)) >> 1);
|
|
}
|
|
|
|
static inline uint64_t no_rnd_avg64(uint64_t a, uint64_t b)
|
|
{
|
|
return (a & b) + (((a ^ b) & ~BYTE_VEC64(0x01)) >> 1);
|
|
}
|
|
|
|
#endif /* AVCODEC_RND_AVG_H */
|