summaryrefslogtreecommitdiff
path: root/third_party
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-06-01 16:43:45 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-06-01 16:43:45 +0000
commitdb8640b0bc2a82c87576ed4b7ae33cdf25620c6d (patch)
tree183e78e6ce3db265ee935d5794ddfb5c7e04f19f /third_party
parenteccc9bdf7f99002d501ded2d37c74aa97c09faf9 (diff)
Ticket #841: Added config to expand G722.1 functions as inline, default value is 1/true (expand as inline).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2731 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'third_party')
-rw-r--r--third_party/build/g7221/libg7221codec.vcproj4
-rw-r--r--third_party/g7221/common/basic_op.c66
-rw-r--r--third_party/g7221/common/basic_op.h74
-rw-r--r--third_party/g7221/common/config.h24
4 files changed, 102 insertions, 66 deletions
diff --git a/third_party/build/g7221/libg7221codec.vcproj b/third_party/build/g7221/libg7221codec.vcproj
index abc62794..fb436777 100644
--- a/third_party/build/g7221/libg7221codec.vcproj
+++ b/third_party/build/g7221/libg7221codec.vcproj
@@ -3216,6 +3216,10 @@
</FileConfiguration>
</File>
<File
+ RelativePath="..\..\g7221\common\config.h"
+ >
+ </File>
+ <File
RelativePath="..\..\g7221\common\count.h"
>
</File>
diff --git a/third_party/g7221/common/basic_op.c b/third_party/g7221/common/basic_op.c
index d4c1530e..0ff6e9bb 100644
--- a/third_party/g7221/common/basic_op.c
+++ b/third_party/g7221/common/basic_op.c
@@ -1,3 +1,8 @@
+#include "config.h"
+
+#if !PJMEDIA_LIBG7221_FUNCS_INLINED || \
+ (PJMEDIA_LIBG7221_FUNCS_INLINED && defined(__BASIC_OP_H__))
+
/*___________________________________________________________________________
| |
| Basic arithmetic operators. |
@@ -72,7 +77,7 @@ Flag g7221_Carry = 0;
| range : 0xffff 8000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 shr (Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) shr (Word16 var1, Word16 var2)
{
if (var2 < 0)
{
@@ -122,7 +127,7 @@ Word16 shr (Word16 var1, Word16 var2)
| range : 0xffff 8000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 shl (Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) shl (Word16 var1, Word16 var2)
{
if (var2 < 0)
{
@@ -171,7 +176,7 @@ Word16 shl (Word16 var1, Word16 var2)
| range : 0xffff 8000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 mult (Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) mult (Word16 var1, Word16 var2)
{
Word16 var_out;
Word32 L_product;
@@ -228,7 +233,7 @@ Word16 mult (Word16 var1, Word16 var2)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
|___________________________________________________________________________|
*/
-Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word32) L_msu (Word32 L_var3, Word16 var1, Word16 var2)
{
Word32 L_var_out;
Word32 L_product;
@@ -289,7 +294,7 @@ Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2)
| operators which take into account its value. |
|___________________________________________________________________________|
*/
-Word32 L_macNs (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word32) L_macNs (Word32 L_var3, Word16 var1, Word16 var2)
{
Word32 L_var_out;
@@ -350,7 +355,7 @@ Word32 L_macNs (Word32 L_var3, Word16 var1, Word16 var2)
| operators which take into account its value. |
|___________________________________________________________________________|
*/
-Word32 L_msuNs (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word32) L_msuNs (Word32 L_var3, Word16 var1, Word16 var2)
{
Word32 L_var_out;
@@ -408,7 +413,7 @@ Word32 L_msuNs (Word32 L_var3, Word16 var1, Word16 var2)
| operators which take into account its value. |
|___________________________________________________________________________|
*/
-Word32 L_add_c (Word32 L_var1, Word32 L_var2)
+LIBG7221_DEF(Word32) L_add_c (Word32 L_var1, Word32 L_var2)
{
Word32 L_var_out;
Word32 L_test;
@@ -524,7 +529,7 @@ Word32 L_add_c (Word32 L_var1, Word32 L_var2)
| operators which take into account its value. |
|___________________________________________________________________________|
*/
-Word32 L_sub_c (Word32 L_var1, Word32 L_var2)
+LIBG7221_DEF(Word32) L_sub_c (Word32 L_var1, Word32 L_var2)
{
Word32 L_var_out;
Word32 L_test;
@@ -617,7 +622,7 @@ Word32 L_sub_c (Word32 L_var1, Word32 L_var2)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
|___________________________________________________________________________|
*/
-Word32 L_negate (Word32 L_var1)
+LIBG7221_DEF(Word32) L_negate (Word32 L_var1)
{
Word32 L_var_out;
@@ -663,7 +668,7 @@ Word32 L_negate (Word32 L_var1)
| range : 0xffff 8000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 mult_r (Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) mult_r (Word16 var1, Word16 var2)
{
Word16 var_out;
Word32 L_product_arr;
@@ -728,7 +733,7 @@ Word16 mult_r (Word16 var1, Word16 var2)
| range : 0xffff 8000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 shr_r (Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) shr_r (Word16 var1, Word16 var2)
{
Word16 var_out;
@@ -797,7 +802,7 @@ Word16 shr_r (Word16 var1, Word16 var2)
| range : 0x0000 8000 <= L_var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 mac_r (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) mac_r (Word32 L_var3, Word16 var1, Word16 var2)
{
Word16 var_out;
@@ -857,7 +862,7 @@ Word16 mac_r (Word32 L_var3, Word16 var1, Word16 var2)
| range : 0x0000 8000 <= L_var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word16 msu_r (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) msu_r (Word32 L_var3, Word16 var1, Word16 var2)
{
Word16 var_out;
@@ -907,7 +912,7 @@ Word16 msu_r (Word32 L_var3, Word16 var1, Word16 var2)
| range : 0x8000 0000 <= var_out <= 0x7fff 0000. |
|___________________________________________________________________________|
*/
-Word32 L_deposit_h (Word16 var1)
+LIBG7221_DEF(Word32) L_deposit_h (Word16 var1)
{
Word32 L_var_out;
@@ -948,7 +953,7 @@ Word32 L_deposit_h (Word16 var1)
| range : 0xFFFF 8000 <= var_out <= 0x0000 7fff. |
|___________________________________________________________________________|
*/
-Word32 L_deposit_l (Word16 var1)
+LIBG7221_DEF(Word32) L_deposit_l (Word16 var1)
{
Word32 L_var_out;
@@ -1002,7 +1007,7 @@ Word32 L_deposit_l (Word16 var1)
| range : 0x8000 0000 <= var_out <= 0x7fff ffff. |
|___________________________________________________________________________|
*/
-Word32 L_shr_r (Word32 L_var1, Word16 var2)
+LIBG7221_DEF(Word32) L_shr_r (Word32 L_var1, Word16 var2)
{
Word32 L_var_out;
@@ -1060,7 +1065,7 @@ Word32 L_shr_r (Word32 L_var1, Word16 var2)
| range : 0x0000 0000 <= var_out <= 0x7fff ffff. |
|___________________________________________________________________________|
*/
-Word32 L_abs (Word32 L_var1)
+LIBG7221_DEF(Word32) L_abs (Word32 L_var1)
{
Word32 L_var_out;
@@ -1120,7 +1125,7 @@ Word32 L_abs (Word32 L_var1)
| range : 0x0000 0000 <= var_out <= 0x0000 000f. |
|___________________________________________________________________________|
*/
-Word16 norm_s (Word16 var1)
+LIBG7221_DEF(Word16) norm_s (Word16 var1)
{
Word16 var_out;
@@ -1130,7 +1135,7 @@ Word16 norm_s (Word16 var1)
}
else
{
- if (var1 == (Word16) 0xffff)
+ if (var1 == (UWord16)0xffff)
{
var_out = 15;
}
@@ -1191,7 +1196,7 @@ Word16 norm_s (Word16 var1)
| It's a Q15 value (point between b15 and b14). |
|___________________________________________________________________________|
*/
-Word16 div_s (Word16 var1, Word16 var2)
+LIBG7221_DEF(Word16) div_s (Word16 var1, Word16 var2)
{
Word16 var_out = 0;
Word16 iteration;
@@ -1291,7 +1296,7 @@ Word16 div_s (Word16 var1, Word16 var2)
| range : 0x0000 0000 <= var_out <= 0x0000 001f. |
|___________________________________________________________________________|
*/
-Word16 norm_l (Word32 L_var1)
+LIBG7221_DEF(Word16) norm_l (Word32 L_var1)
{
Word16 var_out;
@@ -1372,7 +1377,7 @@ Word16 norm_l (Word32 L_var1)
| |
|___________________________________________________________________________|
*/
-Word32 L_mls (Word32 Lv, Word16 v)
+LIBG7221_DEF(Word32) L_mls (Word32 Lv, Word16 v)
{
Word32 Temp ;
@@ -1431,7 +1436,7 @@ Word32 L_mls (Word32 Lv, Word16 v)
| It's a Q15 value (point between b15 and b14). |
|___________________________________________________________________________|
*/
-Word16 div_l (Word32 L_num, Word16 den)
+LIBG7221_DEF(Word16) div_l (Word32 L_num, Word16 den)
{
Word16 var_out = (Word16)0;
Word32 L_den;
@@ -1519,7 +1524,7 @@ Word16 div_l (Word32 L_num, Word16 den)
| are performed if ORIGINAL_G7231 is defined. |
|___________________________________________________________________________|
*/
-Word16 i_mult (Word16 a, Word16 b)
+LIBG7221_DEF(Word16) i_mult (Word16 a, Word16 b)
{
#ifdef ORIGINAL_G7231
return a*b ;
@@ -1568,7 +1573,7 @@ Word16 i_mult (Word16 a, Word16 b)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.
|___________________________________________________________________________
*/
-Word32 L_mult0 (Word16 var1,Word16 var2)
+LIBG7221_DEF(Word32) L_mult0 (Word16 var1,Word16 var2)
{
Word32 L_var_out;
@@ -1612,7 +1617,7 @@ Word32 L_mult0 (Word16 var1,Word16 var2)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.
|___________________________________________________________________________
*/
-Word32 L_mac0 (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word32) L_mac0 (Word32 L_var3, Word16 var1, Word16 var2)
{
Word32 L_var_out;
Word32 L_product;
@@ -1660,7 +1665,7 @@ Word32 L_mac0 (Word32 L_var3, Word16 var1, Word16 var2)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff.
|___________________________________________________________________________
*/
-Word32 L_msu0 (Word32 L_var3, Word16 var1, Word16 var2)
+LIBG7221_DEF(Word32) L_msu0 (Word32 L_var3, Word16 var1, Word16 var2)
{
Word32 L_var_out;
Word32 L_product;
@@ -1711,7 +1716,7 @@ Word32 L_msu0 (Word32 L_var3, Word16 var1, Word16 var2)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
|___________________________________________________________________________|
*/
-UWord32 LU_shl (UWord32 L_var1, Word16 var2)
+LIBG7221_DEF(UWord32) LU_shl (UWord32 L_var1, Word16 var2)
{
Word16 neg_var2;
UWord32 L_var_out = 0;
@@ -1742,7 +1747,7 @@ UWord32 LU_shl (UWord32 L_var1, Word16 var2)
if (L_var1 < (UWord32) 0x00000001L)
{
SET_OVERFLOW(1);
- L_var_out = MIN_32;
+ L_var_out = (UWord32)MIN_32;
break;
}
}
@@ -1791,7 +1796,7 @@ UWord32 LU_shl (UWord32 L_var1, Word16 var2)
| range : 0x8000 0000 <= L_var_out <= 0x7fff ffff. |
|___________________________________________________________________________|
*/
-UWord32 LU_shr (UWord32 L_var1, Word16 var2)
+LIBG7221_DEF(UWord32) LU_shr (UWord32 L_var1, Word16 var2)
{
Word16 neg_var2;
UWord32 L_var_out;
@@ -1825,5 +1830,6 @@ UWord32 LU_shr (UWord32 L_var1, Word16 var2)
}
/* ------------------------- End of LU_shr() ------------------------- */
+#endif /* PJMEDIA_LIBG7221_FUNCS_INLINED */
/* ************************** END OF BASOP32.C ************************** */
diff --git a/third_party/g7221/common/basic_op.h b/third_party/g7221/common/basic_op.h
index fe64a494..45104d1c 100644
--- a/third_party/g7221/common/basic_op.h
+++ b/third_party/g7221/common/basic_op.h
@@ -1,11 +1,11 @@
#ifndef __BASIC_OP_H__
#define __BASIC_OP_H__
+#include "config.h"
+
/*___________________________________________________________________________
| |
| Constants and Globals |
- | |
- | $Id $
|___________________________________________________________________________|
*/
@@ -27,66 +27,66 @@
PJ_INLINE(Word16) add (Word16 var1, Word16 var2); /* Short add, 1 */
PJ_INLINE(Word16) sub (Word16 var1, Word16 var2); /* Short sub, 1 */
PJ_INLINE(Word16) abs_s (Word16 var1); /* Short abs, 1 */
-Word16 shl (Word16 var1, Word16 var2); /* Short shift left, 1 */
+LIBG7221_DECL(Word16) shl (Word16 var1, Word16 var2); /* Short shift left, 1 */
PJ_INLINE(Word16) shl_nocheck(Word16 var1, Word16 var2);
-Word16 shr (Word16 var1, Word16 var2); /* Short shift right, 1 */
+LIBG7221_DECL(Word16) shr (Word16 var1, Word16 var2); /* Short shift right, 1 */
PJ_INLINE(Word16) shr_nocheck(Word16 var1, Word16 var2);
-Word16 mult (Word16 var1, Word16 var2); /* Short mult, 1 */
+LIBG7221_DECL(Word16) mult (Word16 var1, Word16 var2); /* Short mult, 1 */
PJ_INLINE(Word32) L_mult (Word16 var1, Word16 var2); /* Long mult, 1 */
PJ_INLINE(Word16) negate (Word16 var1); /* Short negate, 1 */
PJ_INLINE(Word16) extract_h (Word32 L_var1); /* Extract high, 1 */
PJ_INLINE(Word16) extract_l (Word32 L_var1); /* Extract low, 1 */
PJ_INLINE(Word16) itu_round (Word32 L_var1); /* Round, 1 */
PJ_INLINE(Word32) L_mac (Word32 L_var3, Word16 var1, Word16 var2); /* Mac, 1 */
-Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2); /* Msu, 1 */
-Word32 L_macNs (Word32 L_var3, Word16 var1, Word16 var2); /* Mac without
- sat, 1 */
-Word32 L_msuNs (Word32 L_var3, Word16 var1, Word16 var2); /* Msu without
- sat, 1 */
+LIBG7221_DECL(Word32) L_msu (Word32 L_var3, Word16 var1, Word16 var2); /* Msu, 1 */
+LIBG7221_DECL(Word32) L_macNs (Word32 L_var3, Word16 var1, Word16 var2); /* Mac without
+ sat, 1 */
+LIBG7221_DECL(Word32) L_msuNs (Word32 L_var3, Word16 var1, Word16 var2); /* Msu without
+ sat, 1 */
//PJ_INLINE(Word32) L_add (Word32 L_var1, Word32 L_var2); /* Long add, 2 */
PJ_INLINE(Word32) L_sub (Word32 L_var1, Word32 L_var2); /* Long sub, 2 */
-Word32 L_add_c (Word32 L_var1, Word32 L_var2); /* Long add with c, 2 */
-Word32 L_sub_c (Word32 L_var1, Word32 L_var2); /* Long sub with c, 2 */
-Word32 L_negate (Word32 L_var1); /* Long negate, 2 */
-Word16 mult_r (Word16 var1, Word16 var2); /* Mult with round, 2 */
+LIBG7221_DECL(Word32) L_add_c (Word32 L_var1, Word32 L_var2); /* Long add with c, 2 */
+LIBG7221_DECL(Word32) L_sub_c (Word32 L_var1, Word32 L_var2); /* Long sub with c, 2 */
+LIBG7221_DECL(Word32) L_negate (Word32 L_var1); /* Long negate, 2 */
+LIBG7221_DECL(Word16) mult_r (Word16 var1, Word16 var2); /* Mult with round, 2 */
PJ_INLINE(Word32) L_shl (Word32 L_var1, Word16 var2); /* Long shift left, 2 */
PJ_INLINE(Word32) L_shr (Word32 L_var1, Word16 var2); /* Long shift right, 2*/
-Word16 shr_r (Word16 var1, Word16 var2); /* Shift right with
- round, 2 */
-Word16 mac_r (Word32 L_var3, Word16 var1, Word16 var2); /* Mac with
+LIBG7221_DECL(Word16) shr_r (Word16 var1, Word16 var2); /* Shift right with
+ round, 2 */
+LIBG7221_DECL(Word16) mac_r (Word32 L_var3, Word16 var1, Word16 var2); /* Mac with
rounding,2 */
-Word16 msu_r (Word32 L_var3, Word16 var1, Word16 var2); /* Msu with
+LIBG7221_DECL(Word16) msu_r (Word32 L_var3, Word16 var1, Word16 var2); /* Msu with
rounding,2 */
-Word32 L_deposit_h (Word16 var1); /* 16 bit var1 -> MSB, 2 */
-Word32 L_deposit_l (Word16 var1); /* 16 bit var1 -> LSB, 2 */
+LIBG7221_DECL(Word32) L_deposit_h (Word16 var1); /* 16 bit var1 -> MSB, 2 */
+LIBG7221_DECL(Word32) L_deposit_l (Word16 var1); /* 16 bit var1 -> LSB, 2 */
-Word32 L_shr_r (Word32 L_var1, Word16 var2); /* Long shift right with
- round, 3 */
-Word32 L_abs (Word32 L_var1); /* Long abs, 3 */
-Word32 L_sat (Word32 L_var1); /* Long saturation, 4 */
-Word16 norm_s (Word16 var1); /* Short norm, 15 */
-Word16 div_s (Word16 var1, Word16 var2); /* Short division, 18 */
-Word16 norm_l (Word32 L_var1); /* Long norm, 30 */
+LIBG7221_DECL(Word32) L_shr_r (Word32 L_var1, Word16 var2); /* Long shift right with
+ round, 3 */
+LIBG7221_DECL(Word32) L_abs (Word32 L_var1); /* Long abs, 3 */
+LIBG7221_DECL(Word32) L_sat (Word32 L_var1); /* Long saturation, 4 */
+LIBG7221_DECL(Word16) norm_s (Word16 var1); /* Short norm, 15 */
+LIBG7221_DECL(Word16) div_s (Word16 var1, Word16 var2); /* Short division, 18 */
+LIBG7221_DECL(Word16) norm_l (Word32 L_var1); /* Long norm, 30 */
/*
Additional G.723.1 operators
*/
-Word32 L_mls( Word32, Word16 ) ; /* Weight FFS; currently assigned 1 */
-Word16 div_l( Word32, Word16 ) ; /* Weight FFS; currently assigned 1 */
-Word16 i_mult(Word16 a, Word16 b); /* Weight FFS; currently assigned 1 */
+LIBG7221_DECL(Word32) L_mls( Word32, Word16 ) ; /* Weight FFS; currently assigned 1 */
+LIBG7221_DECL(Word16) div_l( Word32, Word16 ) ; /* Weight FFS; currently assigned 1 */
+LIBG7221_DECL(Word16) i_mult(Word16 a, Word16 b); /* Weight FFS; currently assigned 1 */
/*
New shiftless operators, not used in G.729/G.723.1
*/
-Word32 L_mult0(Word16 v1, Word16 v2); /* 32-bit Multiply w/o shift 1 */
-Word32 L_mac0(Word32 L_v3, Word16 v1, Word16 v2); /* 32-bit Mac w/o shift 1 */
-Word32 L_msu0(Word32 L_v3, Word16 v1, Word16 v2); /* 32-bit Msu w/o shift 1 */
+LIBG7221_DECL(Word32) L_mult0(Word16 v1, Word16 v2); /* 32-bit Multiply w/o shift 1 */
+LIBG7221_DECL(Word32) L_mac0(Word32 L_v3, Word16 v1, Word16 v2); /* 32-bit Mac w/o shift 1 */
+LIBG7221_DECL(Word32) L_msu0(Word32 L_v3, Word16 v1, Word16 v2); /* 32-bit Msu w/o shift 1 */
/*
Additional G.722.1 operators
*/
-UWord32 LU_shl (UWord32 L_var1, Word16 var2);
-UWord32 LU_shr (UWord32 L_var1, Word16 var2);
+LIBG7221_DECL(UWord32) LU_shl (UWord32 L_var1, Word16 var2);
+LIBG7221_DECL(UWord32) LU_shr (UWord32 L_var1, Word16 var2);
#define INCLUDE_UNSAFE 0
@@ -108,7 +108,9 @@ PJ_INLINE(Word16) saturate (Word32 L_var1);
#include "basic_op_i.h"
-
+#if PJMEDIA_LIBG7221_FUNCS_INLINED
+# include "basic_op.c"
+#endif
#endif /* __BASIC_OP_H__ */
diff --git a/third_party/g7221/common/config.h b/third_party/g7221/common/config.h
new file mode 100644
index 00000000..925a1dae
--- /dev/null
+++ b/third_party/g7221/common/config.h
@@ -0,0 +1,24 @@
+#ifndef __LIBG7221_CONFIG_H__
+#define __LIBG7221_CONFIG_H__
+
+#include <pj/config.h>
+
+/**
+ * Expand basic operation functions as inline.
+ *
+ * Default: 1 (yes)
+ */
+#ifndef PJMEDIA_LIBG7221_FUNCS_INLINED
+# define PJMEDIA_LIBG7221_FUNCS_INLINED 1
+#endif
+
+/* Declare/define a function that may be expanded as inline. */
+#if PJMEDIA_LIBG7221_FUNCS_INLINED
+# define LIBG7221_DECL(type) PJ_INLINE(type)
+# define LIBG7221_DEF(type) PJ_INLINE(type)
+#else
+# define LIBG7221_DECL(type) PJ_DECL(type)
+# define LIBG7221_DEF(type) PJ_DEF(type)
+#endif
+
+#endif /* __LIBG7221_CONFIG_H__ */