]> sjero.net Git - linphone/blob - LinphoneCallImpl.java
fix for silk 24khz on Galaxy S
[linphone] / LinphoneCallImpl.java
1 /*
2 LinphoneCallImpl.java
3 Copyright (C) 2010  Belledonne Communications, Grenoble, France
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 */
19 package org.linphone.core;
20
21
22 class LinphoneCallImpl implements LinphoneCall {
23  
24         protected final long nativePtr;
25         boolean ownPtr = false;
26         native private void finalize(long nativePtr);
27         native private long  getCallLog(long nativePtr);
28         private native boolean isIncoming(long nativePtr);
29         native private long getRemoteAddress(long nativePtr);
30         native private int getState(long nativePtr);
31         private native long getCurrentParamsCopy(long nativePtr);
32         private native void enableCamera(long nativePtr, boolean enabled);
33         private native boolean cameraEnabled(long nativePtr);
34         private native void enableEchoCancellation(long nativePtr,boolean enable);
35         private native boolean isEchoCancellationEnabled(long nativePtr) ;
36         private native void enableEchoLimiter(long nativePtr,boolean enable);
37         private native boolean isEchoLimiterEnabled(long nativePtr);
38         private native Object getReplacedCall(long nativePtr);
39         private native int getDuration(long nativePtr);
40         private native float getCurrentQuality(long nativePtr);
41         private native float getAverageQuality(long nativePtr);
42         private native String getAuthenticationToken(long nativePtr);
43         private native boolean isAuthenticationTokenVerified(long nativePtr);
44         private native boolean areStreamsEncrypted(long nativePtr);
45         
46         /*
47          * This method must always be called from JNI, nothing else.
48          */
49         private LinphoneCallImpl(long aNativePtr)  {
50                 nativePtr = aNativePtr;
51         }
52         protected void finalize() throws Throwable {
53                 finalize(nativePtr);
54         }
55         public LinphoneCallLog getCallLog() {
56                 long lNativePtr = getCallLog(nativePtr);
57                 if (lNativePtr!=0) {
58                         return new LinphoneCallLogImpl(lNativePtr); 
59                 } else {
60                         return null;
61                 }
62         }
63         public CallDirection getDirection() {
64                 return isIncoming(nativePtr)?CallDirection.Incoming:CallDirection.Outgoing;
65         }
66         public LinphoneAddress getRemoteAddress() {
67                 long lNativePtr = getRemoteAddress(nativePtr);
68                 if (lNativePtr!=0) {
69                         return new LinphoneAddressImpl(lNativePtr); 
70                 } else {
71                         return null;
72                 }
73         }
74         public State getState() {
75                 return LinphoneCall.State.fromInt(getState(nativePtr));
76         }
77         public LinphoneCallParams getCurrentParamsCopy() {
78                 return new LinphoneCallParamsImpl(getCurrentParamsCopy(nativePtr));
79         }
80
81         public void enableCamera(boolean enabled) {
82                 enableCamera(nativePtr, enabled);
83         }
84         public boolean cameraEnabled() {
85                 return cameraEnabled(nativePtr);
86         }
87
88         @Override
89         public boolean equals(Object call) {
90                 if (this == call) return true;
91                 if (call == null) return false;
92                 if (!(call instanceof LinphoneCallImpl)) return false;
93                 return nativePtr == ((LinphoneCallImpl)call).nativePtr;
94         }
95
96         @Override
97         public int hashCode() {
98                 int result = 17;
99                 result = 31 * result + (int) (nativePtr ^ (nativePtr >>> 32));
100                 return result;
101         }
102         public void enableEchoCancellation(boolean enable) {
103                 enableEchoCancellation(nativePtr,enable);
104                 
105         }
106         public boolean isEchoCancellationEnabled() {
107                 return isEchoCancellationEnabled(nativePtr);
108         }
109         public void enableEchoLimiter(boolean enable) {
110                 enableEchoLimiter(nativePtr,enable);
111         }
112         public boolean isEchoLimiterEnabled() {
113                 return isEchoLimiterEnabled(nativePtr);
114         }
115         public LinphoneCall getReplacedCall(){
116                 return (LinphoneCall)getReplacedCall(nativePtr);
117         }
118
119         public int getDuration() {
120                 return getDuration(nativePtr);
121         }
122         public float getAverageQuality() {
123                 return getAverageQuality(nativePtr);
124         }
125         public float getCurrentQuality() {
126                 return getCurrentQuality(nativePtr);
127         }
128
129         public String getAuthenticationToken(){
130                 return getAuthenticationToken(nativePtr);
131         }
132         public boolean isAuthenticationTokenVerified(){
133                 return isAuthenticationTokenVerified(nativePtr);
134         }
135
136         public boolean isInConference() {
137                 LinphoneCallParamsImpl params = new LinphoneCallParamsImpl(getCurrentParamsCopy(nativePtr));
138                 return params.localConferenceMode();
139         }
140
141         @Override
142         public String toString() {
143                 return "Call " + nativePtr;
144         }
145 }