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

« back to all changes in this revision

Viewing changes to daemon/libs/pjproject-2.1.0/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__ */
 
116
 
 
117