summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorbodamnam <bodamnam@google.com>2023-01-19 12:33:32 +0000
committerbodamnam <bodamnam@google.com>2023-01-31 03:11:40 +0000
commitcb9f895d0b71f74322518baee08508cfaaaa6b74 (patch)
treef14cd88a5adab53c2891d641082f6f4b0215abbc /service
parent21513e0ac277906c3394eb6607d2a0ae675e27f7 (diff)
downloadImsMedia-cb9f895d0b71f74322518baee08508cfaaaa6b74.tar.gz
Implementation MediaQualityStatus notification
Modify setMediaQualityThreshold to use Integer array parameters Modify notifyMediaInactivity, notifyJitter, notifyPacketLoss to single callback Bug: 255862778 Test: atest ImsMediaJavaUnitTests, verified with loopback test using ImsMediaTestingApp Change-Id: If28ab6513fba2194cdd7b9e849d31468cfe776e6
Diffstat (limited to 'service')
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioListener.java11
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioOffloadListener.java18
-rw-r--r--service/src/com/android/telephony/imsmedia/AudioSession.java45
-rw-r--r--service/src/com/android/telephony/imsmedia/Utils.java48
4 files changed, 61 insertions, 61 deletions
diff --git a/service/src/com/android/telephony/imsmedia/AudioListener.java b/service/src/com/android/telephony/imsmedia/AudioListener.java
index cbdc84e4..738f4083 100644
--- a/service/src/com/android/telephony/imsmedia/AudioListener.java
+++ b/service/src/com/android/telephony/imsmedia/AudioListener.java
@@ -20,6 +20,7 @@ import android.os.Handler;
import android.os.Parcel;
import android.telephony.CallQuality;
import android.telephony.imsmedia.AudioConfig;
+import android.telephony.imsmedia.MediaQualityStatus;
import android.util.Log;
/**
@@ -92,10 +93,12 @@ public class AudioListener implements JNIImsMediaListener {
case AudioSession.EVENT_RTP_HEADER_EXTENSION_IND:
Utils.sendMessage(mHandler, event);
break;
- case AudioSession.EVENT_MEDIA_INACTIVITY_IND:
- case AudioSession.EVENT_PACKET_LOSS_IND:
- case AudioSession.EVENT_JITTER_IND:
- Utils.sendMessage(mHandler, event, parcel.readInt(), Utils.UNUSED);
+ case AudioSession.EVENT_MEDIA_QUALITY_STATUS_IND:
+ {
+ final MediaQualityStatus status =
+ MediaQualityStatus.CREATOR.createFromParcel(parcel);
+ Utils.sendMessage(mHandler, event, status);
+ }
break;
case AudioSession.EVENT_TRIGGER_ANBR_QUERY_IND:
final AudioConfig configAnbr = AudioConfig.CREATOR.createFromParcel(parcel);
diff --git a/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java b/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java
index 62a32eae..f72e424e 100644
--- a/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java
+++ b/service/src/com/android/telephony/imsmedia/AudioOffloadListener.java
@@ -18,6 +18,7 @@ package com.android.telephony.imsmedia;
import android.hardware.radio.ims.media.CallQuality;
import android.hardware.radio.ims.media.IImsMediaSessionListener;
+import android.hardware.radio.ims.media.MediaQualityStatus;
import android.hardware.radio.ims.media.RtpConfig;
import android.hardware.radio.ims.media.RtpHeaderExtension;
import android.os.Handler;
@@ -62,20 +63,9 @@ final class AudioOffloadListener extends IImsMediaSessionListener.Stub {
}
@Override
- public void notifyMediaInactivity(int packetType) {
- Utils.sendMessage(handler, AudioSession.EVENT_MEDIA_INACTIVITY_IND,
- packetType, Utils.UNUSED);
- }
-
- @Override
- public void notifyPacketLoss(int packetLossPercentage) {
- Utils.sendMessage(handler, AudioSession.EVENT_PACKET_LOSS_IND,
- packetLossPercentage, Utils.UNUSED);
- }
-
- @Override
- public void notifyJitter(int jitter) {
- Utils.sendMessage(handler, AudioSession.EVENT_JITTER_IND, jitter, Utils.UNUSED);
+ public void notifyMediaQualityStatus(MediaQualityStatus status) {
+ Utils.sendMessage(handler, AudioSession.EVENT_MEDIA_QUALITY_STATUS_IND,
+ Utils.convertMediaQualityStatus(status));
}
@Override
diff --git a/service/src/com/android/telephony/imsmedia/AudioSession.java b/service/src/com/android/telephony/imsmedia/AudioSession.java
index 78ab75d4..603780c2 100644
--- a/service/src/com/android/telephony/imsmedia/AudioSession.java
+++ b/service/src/com/android/telephony/imsmedia/AudioSession.java
@@ -27,6 +27,7 @@ import android.telephony.ims.RtpHeaderExtension;
import android.telephony.imsmedia.AudioConfig;
import android.telephony.imsmedia.IImsAudioSession;
import android.telephony.imsmedia.IImsAudioSessionCallback;
+import android.telephony.imsmedia.MediaQualityStatus;
import android.telephony.imsmedia.MediaQualityThreshold;
import android.util.Log;
@@ -64,13 +65,11 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
public static final int EVENT_CONFIRM_CONFIG_RESPONSE = 205;
public static final int EVENT_FIRST_MEDIA_PACKET_IND = 206;
public static final int EVENT_RTP_HEADER_EXTENSION_IND = 207;
- public static final int EVENT_MEDIA_INACTIVITY_IND = 208;
- public static final int EVENT_PACKET_LOSS_IND = 209;
- public static final int EVENT_JITTER_IND = 210;
- public static final int EVENT_TRIGGER_ANBR_QUERY_IND = 211;
- public static final int EVENT_DTMF_RECEIVED_IND = 212;
- public static final int EVENT_CALL_QUALITY_CHANGE_IND = 213;
- public static final int EVENT_SESSION_CLOSED = 214;
+ public static final int EVENT_MEDIA_QUALITY_STATUS_IND = 208;
+ public static final int EVENT_TRIGGER_ANBR_QUERY_IND = 209;
+ public static final int EVENT_DTMF_RECEIVED_IND = 210;
+ public static final int EVENT_CALL_QUALITY_CHANGE_IND = 211;
+ public static final int EVENT_SESSION_CLOSED = 212;
private static final int DTMF_DEFAULT_DURATION = 140;
@@ -296,14 +295,8 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
case EVENT_RTP_HEADER_EXTENSION_IND:
handleRtpHeaderExtensionInd((List<RtpHeaderExtension>)msg.obj);
break;
- case EVENT_MEDIA_INACTIVITY_IND:
- notifyMediaInactivityInd(msg.arg1);
- break;
- case EVENT_PACKET_LOSS_IND:
- notifyPacketLossInd(msg.arg1);
- break;
- case EVENT_JITTER_IND:
- notifyJitterInd(msg.arg1);
+ case EVENT_MEDIA_QUALITY_STATUS_IND:
+ handleNotifyMediaQualityStatus((MediaQualityStatus) msg.obj);
break;
case EVENT_TRIGGER_ANBR_QUERY_IND:
handleTriggerAnbrQuery((AudioConfig) msg.obj);
@@ -509,29 +502,13 @@ public final class AudioSession extends IImsAudioSession.Stub implements IMediaS
}
}
- private void notifyMediaInactivityInd(int packetType) {
- try {
- mCallback.notifyMediaInactivity(packetType);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to notify media timeout: " + e);
- }
-
- }
-
- private void notifyPacketLossInd(int percentage) {
+ private void handleNotifyMediaQualityStatus(MediaQualityStatus status) {
try {
- mCallback.notifyPacketLoss(percentage);
+ mCallback.notifyMediaQualityStatus(status);
} catch (RemoteException e) {
- Log.e(TAG, "Failed to notify packet loss: " + e);
+ Log.e(TAG, "Failed to notify media quality status: " + e);
}
- }
- private void notifyJitterInd(int jitter) {
- try {
- mCallback.notifyJitter(jitter);
- } catch (RemoteException e) {
- Log.e(TAG, "Failed to notify jitter: " + e);
- }
}
private void handleTriggerAnbrQuery(AudioConfig config) {
diff --git a/service/src/com/android/telephony/imsmedia/Utils.java b/service/src/com/android/telephony/imsmedia/Utils.java
index 38b2ba0a..651413b5 100644
--- a/service/src/com/android/telephony/imsmedia/Utils.java
+++ b/service/src/com/android/telephony/imsmedia/Utils.java
@@ -30,6 +30,7 @@ import android.telephony.ims.RtpHeaderExtension;
import android.telephony.imsmedia.AmrParams;
import android.telephony.imsmedia.AudioConfig;
import android.telephony.imsmedia.EvsParams;
+import android.telephony.imsmedia.MediaQualityStatus;
import android.telephony.imsmedia.MediaQualityThreshold;
import android.telephony.imsmedia.RtcpConfig;
import android.telephony.imsmedia.RtpConfig;
@@ -37,6 +38,7 @@ import android.telephony.imsmedia.RtpConfig;
import com.android.telephony.imsmedia.ImsMediaController.OpenSessionCallback;
import java.net.InetSocketAddress;
+import java.util.Arrays;
/**
* Class consists of utility methods and sub classes
@@ -214,6 +216,18 @@ public final class Utils {
return rtpConfig;
}
+ /** Converts {@link MediaQuailtyStatus} to HAL MediaQuailtyStatus */
+ public static android.hardware.radio.ims.media.MediaQualityStatus
+ convertToHalMediaQualityStatus(final MediaQualityStatus status) {
+ final android.hardware.radio.ims.media.MediaQualityStatus halStatus =
+ new android.hardware.radio.ims.media.MediaQualityStatus();
+ halStatus.rtpInactivityTimeMillis = status.getRtpInactivityTimeMillis();
+ halStatus.rtcpInactivityTimeMillis = status.getRtcpInactivityTimeMillis();
+ halStatus.rtpPacketLossRate = status.getRtpPacketLossRate();
+ halStatus.rtpJitterMillis = status.getRtpJitterMillis();
+ return halStatus;
+ }
+
private static RtcpConfig buildRtcpConfig(
final android.hardware.radio.ims.media.RtpConfig rtpConfig) {
final RtcpConfig rtcpConfig;
@@ -352,12 +366,16 @@ public final class Utils {
out = null;
} else {
out = new android.hardware.radio.ims.media.MediaQualityThreshold();
- out.rtpInactivityTimerMillis = in.getRtpInactivityTimerMillis();
+ out.rtpInactivityTimerMillis = Arrays.copyOf(in.getRtpInactivityTimerMillis(),
+ in.getRtpInactivityTimerMillis().length);
out.rtcpInactivityTimerMillis = in.getRtcpInactivityTimerMillis();
- out.rtpPacketLossDurationMillis = in.getPacketLossPeriodMillis();
- out.rtpPacketLossRate = in.getPacketLossThreshold();
- out.jitterDurationMillis = in.getJitterPeriodMillis();
- out.rtpJitterMillis = in.getJitterThresholdMillis();
+ out.rtpHysteresisTimeInMillis = in.getRtpHysteresisTimeInMillis();
+ out.rtpPacketLossDurationMillis = in.getRtpPacketLossDurationMillis();
+ out.rtpPacketLossRate = Arrays.copyOf(in.getRtpPacketLossRate(),
+ in.getRtpPacketLossRate().length);
+ out.rtpJitterMillis = Arrays.copyOf(in.getRtpJitterMillis(),
+ in.getRtpJitterMillis().length);
+ out.notifyCurrentStatus = in.getNotifyCurrentStatus();
}
return out;
@@ -369,10 +387,22 @@ public final class Utils {
return (in == null) ? null : new MediaQualityThreshold.Builder()
.setRtpInactivityTimerMillis(in.rtpInactivityTimerMillis)
.setRtcpInactivityTimerMillis(in.rtcpInactivityTimerMillis)
- .setPacketLossPeriodMillis(in.rtpPacketLossDurationMillis)
- .setPacketLossThreshold(in.rtpPacketLossRate)
- .setJitterPeriodMillis(in.jitterDurationMillis)
- .setJitterThresholdMillis(in.rtpJitterMillis)
+ .setRtpHysteresisTimeInMillis(in.rtpHysteresisTimeInMillis)
+ .setRtpPacketLossDurationMillis(in.rtpPacketLossDurationMillis)
+ .setRtpPacketLossRate(in.rtpPacketLossRate)
+ .setRtpJitterMillis(in.rtpJitterMillis)
+ .setNotifyCurrentStatus(in.notifyCurrentStatus)
+ .build();
+ }
+
+ /** Converts HAL MediaQualityStatus to {@link MediaQualityStatus} */
+ public static MediaQualityStatus convertMediaQualityStatus(
+ final android.hardware.radio.ims.media.MediaQualityStatus in) {
+ return (in == null) ? null : new MediaQualityStatus.Builder()
+ .setRtpInactivityTimeMillis(in.rtpInactivityTimeMillis)
+ .setRtcpInactivityTimeMillis(in.rtcpInactivityTimeMillis)
+ .setRtpPacketLossRate(in.rtpPacketLossRate)
+ .setRtpJitterMillis(in.rtpJitterMillis)
.build();
}