summaryrefslogtreecommitdiff
path: root/vp9/common/vp9_common.h
blob: 4295eba871c0fb123f34ef01744d27a9a7ad8cf8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef VP9_COMMON_VP9_COMMON_H_
#define VP9_COMMON_VP9_COMMON_H_

#include <assert.h>
#include "vpx_config.h"
/* Interface header for common constant data structures and lookup tables */

#include "vpx_mem/vpx_mem.h"
#include "vpx/vpx_integer.h"

#define TRUE    1
#define FALSE   0

#define MIN(x, y) (((x) < (y)) ? (x) : (y))
#define MAX(x, y) (((x) > (y)) ? (x) : (y))

/* Only need this for fixed-size arrays, for structs just assign. */

#define vp9_copy(Dest, Src) { \
    assert(sizeof(Dest) == sizeof(Src)); \
    vpx_memcpy(Dest, Src, sizeof(Src)); \
  }

/* Use this for variably-sized arrays. */

#define vp9_copy_array(Dest, Src, N) { \
    assert(sizeof(*Dest) == sizeof(*Src)); \
    vpx_memcpy(Dest, Src, N * sizeof(*Src)); \
  }

#define vp9_zero(Dest) vpx_memset(&Dest, 0, sizeof(Dest));

#define vp9_zero_array(Dest, N) vpx_memset(Dest, 0, N * sizeof(*Dest));

static INLINE uint8_t clip_pixel(int val) {
  return (val > 255) ? 255u : (val < 0) ? 0u : val;
}

#endif  // VP9_COMMON_VP9_COMMON_H_