FFmpeg/libavcodec/rnd_avg.h
Michael Niedermayer 5fd6d85d17 rnd_avg: fix author attribution
Reference:
commit 41fda91d09
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

commit 8dbe585641
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>
2013-02-09 14:22:29 +01:00

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 */