Line data Source code
1 : /*
2 : * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 : *
4 : * Use of this source code is governed by a BSD-style license
5 : * that can be found in the LICENSE file in the root of the source
6 : * tree. An additional intellectual property rights grant can be found
7 : * in the file PATENTS. All contributing project authors may
8 : * be found in the AUTHORS file in the root of the source tree.
9 : */
10 :
11 : #ifndef VP9_COMMON_VP9_COMMON_H_
12 : #define VP9_COMMON_VP9_COMMON_H_
13 :
14 : /* Interface header for common constant data structures and lookup tables */
15 :
16 : #include <assert.h>
17 :
18 : #include "./vpx_config.h"
19 : #include "vpx_dsp/vpx_dsp_common.h"
20 : #include "vpx_mem/vpx_mem.h"
21 : #include "vpx/vpx_integer.h"
22 : #include "vpx_ports/bitops.h"
23 :
24 : #ifdef __cplusplus
25 : extern "C" {
26 : #endif
27 :
28 : // Only need this for fixed-size arrays, for structs just assign.
29 : #define vp9_copy(dest, src) \
30 : { \
31 : assert(sizeof(dest) == sizeof(src)); \
32 : memcpy(dest, src, sizeof(src)); \
33 : }
34 :
35 : // Use this for variably-sized arrays.
36 : #define vp9_copy_array(dest, src, n) \
37 : { \
38 : assert(sizeof(*dest) == sizeof(*src)); \
39 : memcpy(dest, src, n * sizeof(*src)); \
40 : }
41 :
42 : #define vp9_zero(dest) memset(&(dest), 0, sizeof(dest))
43 : #define vp9_zero_array(dest, n) memset(dest, 0, n * sizeof(*dest))
44 :
45 0 : static INLINE int get_unsigned_bits(unsigned int num_values) {
46 0 : return num_values > 0 ? get_msb(num_values) + 1 : 0;
47 : }
48 :
49 : #if CONFIG_DEBUG
50 : #define CHECK_MEM_ERROR(cm, lval, expr) \
51 : do { \
52 : lval = (expr); \
53 : if (!lval) \
54 : vpx_internal_error(&(cm)->error, VPX_CODEC_MEM_ERROR, \
55 : "Failed to allocate " #lval " at %s:%d", __FILE__, \
56 : __LINE__); \
57 : } while (0)
58 : #else
59 : #define CHECK_MEM_ERROR(cm, lval, expr) \
60 : do { \
61 : lval = (expr); \
62 : if (!lval) \
63 : vpx_internal_error(&(cm)->error, VPX_CODEC_MEM_ERROR, \
64 : "Failed to allocate " #lval); \
65 : } while (0)
66 : #endif
67 :
68 : #define VP9_SYNC_CODE_0 0x49
69 : #define VP9_SYNC_CODE_1 0x83
70 : #define VP9_SYNC_CODE_2 0x42
71 :
72 : #define VP9_FRAME_MARKER 0x2
73 :
74 : #ifdef __cplusplus
75 : } // extern "C"
76 : #endif
77 :
78 : #endif // VP9_COMMON_VP9_COMMON_H_
|