~ubuntu-branches/ubuntu/wily/sflphone/wily

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.0.1/third_party/g7221/common/basic_op.h

  • Committer: Package Import Robot
  • Author(s): Mark Purcell
  • Date: 2014-01-28 18:23:36 UTC
  • mfrom: (1.1.11)
  • mto: This revision was merged to the branch mainline in revision 24.
  • Revision ID: package-import@ubuntu.com-20140128182336-3xenud1kbnwmf3mz
* New upstream release 
  - Fixes "New Upstream Release" (Closes: #735846)
  - Fixes "Ringtone does not stop" (Closes: #727164)
  - Fixes "[sflphone-kde] crash on startup" (Closes: #718178)
  - Fixes "sflphone GUI crashes when call is hung up" (Closes: #736583)
* Build-Depends: ensure GnuTLS 2.6
  - libucommon-dev (>= 6.0.7-1.1), libccrtp-dev (>= 2.0.6-3)
  - Fixes "FTBFS Build-Depends libgnutls{26,28}-dev" (Closes: #722040)
* Fix "boost 1.49 is going away" unversioned Build-Depends: (Closes: #736746)
* Add Build-Depends: libsndfile-dev, nepomuk-core-dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef __BASIC_OP_H__
2
 
#define __BASIC_OP_H__
3
 
 
4
 
#include "config.h"
5
 
 
6
 
/*___________________________________________________________________________
7
 
 |                                                                           |
8
 
 |   Constants and Globals                                                   |
9
 
 |___________________________________________________________________________|
10
 
*/
11
 
 
12
 
#define MAX_32 (Word32)0x7fffffffL
13
 
#define MIN_32 (Word32)0x80000000L
14
 
 
15
 
#define MAX_16 (Word16)0x7fff
16
 
#define MIN_16 (Word16)(pj_uint16_t)0x8000
17
 
 
18
 
#define UMAX_32 (UWord32)0xffffffffL
19
 
#define UMIN_32 (UWord32)0x00000000L
20
 
 
21
 
/*___________________________________________________________________________
22
 
 |                                                                           |
23
 
 |   Prototypes for basic arithmetic operators                               |
24
 
 |___________________________________________________________________________|
25
 
*/
26
 
 
27
 
PJ_INLINE(Word16) add (Word16 var1, Word16 var2);    /* Short add,           1   */
28
 
PJ_INLINE(Word16) sub (Word16 var1, Word16 var2);    /* Short sub,           1   */
29
 
PJ_INLINE(Word16) abs_s (Word16 var1);               /* Short abs,           1   */
30
 
LIBG7221_DECL(Word16) shl (Word16 var1, Word16 var2);    /* Short shift left,    1   */
31
 
PJ_INLINE(Word16) shl_nocheck(Word16 var1, Word16 var2);
32
 
LIBG7221_DECL(Word16) shr (Word16 var1, Word16 var2);    /* Short shift right,   1   */
33
 
PJ_INLINE(Word16) shr_nocheck(Word16 var1, Word16 var2);
34
 
LIBG7221_DECL(Word16) mult (Word16 var1, Word16 var2);   /* Short mult,          1   */
35
 
PJ_INLINE(Word32) L_mult (Word16 var1, Word16 var2); /* Long mult,           1   */
36
 
PJ_INLINE(Word16) negate (Word16 var1);              /* Short negate,        1   */
37
 
PJ_INLINE(Word16) extract_h (Word32 L_var1);         /* Extract high,        1   */
38
 
PJ_INLINE(Word16) extract_l (Word32 L_var1);         /* Extract low,         1   */
39
 
PJ_INLINE(Word16) itu_round (Word32 L_var1);         /* Round,               1   */
40
 
PJ_INLINE(Word32) L_mac (Word32 L_var3, Word16 var1, Word16 var2);   /* Mac,  1  */
41
 
LIBG7221_DECL(Word32) L_msu (Word32 L_var3, Word16 var1, Word16 var2);   /* Msu,  1  */
42
 
LIBG7221_DECL(Word32) L_macNs (Word32 L_var3, Word16 var1, Word16 var2); /* Mac without
43
 
                                                                       sat, 1   */
44
 
LIBG7221_DECL(Word32) L_msuNs (Word32 L_var3, Word16 var1, Word16 var2); /* Msu without
45
 
                                                                       sat, 1   */
46
 
//PJ_INLINE(Word32) L_add (Word32 L_var1, Word32 L_var2);    /* Long add,        2 */
47
 
PJ_INLINE(Word32) L_sub (Word32 L_var1, Word32 L_var2);    /* Long sub,        2 */
48
 
LIBG7221_DECL(Word32) L_add_c (Word32 L_var1, Word32 L_var2);  /* Long add with c, 2 */
49
 
LIBG7221_DECL(Word32) L_sub_c (Word32 L_var1, Word32 L_var2);  /* Long sub with c, 2 */
50
 
LIBG7221_DECL(Word32) L_negate (Word32 L_var1);                /* Long negate,     2 */
51
 
LIBG7221_DECL(Word16) mult_r (Word16 var1, Word16 var2);       /* Mult with round, 2 */
52
 
PJ_INLINE(Word32) L_shl (Word32 L_var1, Word16 var2);      /* Long shift left, 2 */
53
 
PJ_INLINE(Word32) L_shr (Word32 L_var1, Word16 var2);      /* Long shift right, 2*/
54
 
LIBG7221_DECL(Word16) shr_r (Word16 var1, Word16 var2);        /* Shift right with
55
 
                                                             round, 2           */
56
 
LIBG7221_DECL(Word16) mac_r (Word32 L_var3, Word16 var1, Word16 var2); /* Mac with
57
 
                                                           rounding,2 */
58
 
LIBG7221_DECL(Word16) msu_r (Word32 L_var3, Word16 var1, Word16 var2); /* Msu with
59
 
                                                           rounding,2 */
60
 
LIBG7221_DECL(Word32) L_deposit_h (Word16 var1);        /* 16 bit var1 -> MSB,     2 */
61
 
LIBG7221_DECL(Word32) L_deposit_l (Word16 var1);        /* 16 bit var1 -> LSB,     2 */
62
 
 
63
 
LIBG7221_DECL(Word32) L_shr_r (Word32 L_var1, Word16 var2); /* Long shift right with
64
 
                                                          round,  3             */
65
 
LIBG7221_DECL(Word32) L_abs (Word32 L_var1);            /* Long abs,              3  */
66
 
LIBG7221_DECL(Word32) L_sat (Word32 L_var1);            /* Long saturation,       4  */
67
 
LIBG7221_DECL(Word16) norm_s (Word16 var1);             /* Short norm,           15  */
68
 
LIBG7221_DECL(Word16) div_s (Word16 var1, Word16 var2); /* Short division,       18  */
69
 
LIBG7221_DECL(Word16) norm_l (Word32 L_var1);           /* Long norm,            30  */
70
 
 
71
 
/*
72
 
   Additional G.723.1 operators
73
 
*/
74
 
LIBG7221_DECL(Word32) L_mls( Word32, Word16 ) ;    /* Weight FFS; currently assigned 1 */
75
 
LIBG7221_DECL(Word16) div_l( Word32, Word16 ) ;    /* Weight FFS; currently assigned 1 */
76
 
LIBG7221_DECL(Word16) i_mult(Word16 a, Word16 b);  /* Weight FFS; currently assigned 1 */
77
 
 
78
 
/*
79
 
    New shiftless operators, not used in G.729/G.723.1
80
 
*/
81
 
LIBG7221_DECL(Word32) L_mult0(Word16 v1, Word16 v2); /* 32-bit Multiply w/o shift         1 */
82
 
LIBG7221_DECL(Word32) L_mac0(Word32 L_v3, Word16 v1, Word16 v2); /* 32-bit Mac w/o shift  1 */
83
 
LIBG7221_DECL(Word32) L_msu0(Word32 L_v3, Word16 v1, Word16 v2); /* 32-bit Msu w/o shift  1 */
84
 
 
85
 
/*
86
 
    Additional G.722.1 operators
87
 
*/
88
 
LIBG7221_DECL(UWord32) LU_shl (UWord32 L_var1, Word16 var2);
89
 
LIBG7221_DECL(UWord32) LU_shr (UWord32 L_var1, Word16 var2);
90
 
 
91
 
#define INCLUDE_UNSAFE      0
92
 
 
93
 
/* Local */
94
 
PJ_INLINE(Word16) saturate (Word32 L_var1);
95
 
 
96
 
#if INCLUDE_UNSAFE
97
 
    extern Flag g7221_Overflow;
98
 
    extern Flag g7221_Carry;
99
 
#   define SET_OVERFLOW(n)  g7221_Overflow = n
100
 
#   define SET_CARRY(n)     g7221_Carry = n
101
 
 
102
 
#else
103
 
#   define SET_OVERFLOW(n)
104
 
#   define SET_CARRY(n)
105
 
#   define GET_OVERFLOW()   0
106
 
#   define GET_CARRY()      0
107
 
#endif
108
 
 
109
 
#include "basic_op_i.h"
110
 
 
111
 
#if PJMEDIA_LIBG7221_FUNCS_INLINED
112
 
#   include "basic_op.c"
113
 
#endif
114
 
 
115
 
#endif /* __BASIC_OP_H__ */