⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifunctions.h

📁 此code含H.264解码需要的 lib和 src
💻 H
字号:

/*!
 ************************************************************************
 *  \file
 *     ifunctions.h
 *
 *  \brief
 *     define some inline functions that are used within the encoder.
 *
 *  \author
 *      Main contributors (see contributors.h for copyright, address and affiliation details)
 *      - Karsten S黨ring                 <suehring@hhi.de>
 *      - Alexis Tourapis                 <alexismt@ieee.org>
 *
 ************************************************************************
 */
#ifndef _IFUNCTIONS_H_
#define _IFUNCTIONS_H_

# if defined(WIN32) || (__STDC_VERSION__ >= 199901L)
static inline int imin(int a, int b)
{
  return ((a) < (b)) ? (a) : (b);
}

static inline int imax(int a, int b)
{
  return ((a) > (b)) ? (a) : (b);
}

static inline double dmin(double a, double b)
{
  return ((a) < (b)) ? (a) : (b);
}

static inline double dmax(double a, double b)
{
  return ((a) > (b)) ? (a) : (b);
}

static inline int64 i64min(int64 a, int64 b)
{
  return ((a) < (b)) ? (a) : (b);
}

static inline int64 i64max(int64 a, int64 b)
{
  return ((a) > (b)) ? (a) : (b);
}

static inline int iabs(int x)
{
  return ((x) < 0) ? -(x) : (x);
}

static inline double dabs(double x)
{
  return ((x) < 0) ? -(x) : (x);
}

static inline int64 i64abs(int64 x)
{
  return ((x) < 0) ? -(x) : (x);
}

static inline double dabs2(double x)
{
  return (x) * (x);
}

static inline int iabs2(int x) {
  return (x) * (x);
}

static inline int64 i64abs2(int64 x)
{
  return (x) * (x);
}

static inline int isign(int x)
{
  return ((x) < 0) ? -1 : 1;
}

static inline int isignab(int a, int b)
{
  return ((b) < 0) ? -iabs(a) : iabs(a);
}

static inline int rshift_rnd(int x, int a)
{
  return (a > 0) ? ((x + (1 << (a-1) )) >> a) : (x << (-a));
}

static inline unsigned int rshift_rnd_us(unsigned int x, unsigned int a)
{
  return (a > 0) ? ((x + (1 << (a-1))) >> a) : x;
}

static inline int rshift_rnd_sf(int x, int a)
{
  return ((x + (1 << (a-1) )) >> a);
}

static inline unsigned int rshift_rnd_us_sf(unsigned int x, unsigned int a)
{
  return ((x + (1 << (a-1))) >> a);
}

static inline int iClip1(int high, int x)
{
  x = imax(x, 0);
  x = imin(x, high);

  return x;
}

static inline int iClip3(int low, int high, int x)
{
  x = imax(x, low);
  x = imin(x, high);

  return x;
}

static inline double dClip3(double low, double high, double x)
{
  x = dmax(x, low);
  x = dmin(x, high);

  return x;
}

static inline int RSD(int x)
{
 return ((x&2)?(x|1):(x&(~1)));
}

# else

#  define imin(a, b)                  (((a) < (b)) ? (a) : (b))
#  define imax(a, b)                  (((a) > (b)) ? (a) : (b))
#  define dmin(a, b)                  (((a) < (b)) ? (a) : (b))
#  define dmax(a, b)                  (((a) > (b)) ? (a) : (b))
#  define i64min(a, b)                (((a) < (b)) ? (a) : (b))
#  define i64max(a, b)                (((a) > (b)) ? (a) : (b))
#  define iabs(x)                     (((x) < 0)   ? -(x) : (x))
#  define dabs(x)                     (((x) < 0)   ? -(x) : (x))
#  define i64abs(x)                   (((x) < 0)   ? -(x) : (x))
#  define iabs2(x)                    ((x) * (x))
#  define dabs2(x)                    ((x) * (x))
#  define i64abs2(x)                  ((x) * (x))
#  define isign(x)                    (((x) < 0)   ? -1 : 1)
#  define isignab(a, b)               (((b) < 0)   ? -iabs(a) : iabs(a))
#  define rshift_rnd(x, a)            (((a) > 0)   ? (((x) + (1 << ((a)-1))) >> (a)) : ((x) << (-(a))))
#  define rshift_rnd_us(x, a)         (((a) > 0)   ? (((x) + (1 << ((a)-1))) >> (a)) : (x))
#  define rshift_rnd_sf(x, a)         (((x) + (1 << ((a)-1))) >> (a))
#  define rshift_rnd_us_sf(x, a)      (((x) + (1 << ((a)-1))) >> (a))
#  define iClip1(high, x)             (imax( imin(x, high), 0))
#  define iClip3(low, high, x)        (imax( imin(x, high), low))
#  define dClip3(low, high, x)        (dmax( dmin(x, high), low))
#  define RSD(x)                      (((x)&2)?((x)|1):((x)&(~1)))

# endif
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -