Merge changes I4f225864,Ic95b7014 into tm-qpr-dev am: 18bd9509cc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20752346 Change-Id: I549b18bd0d85a94a19bf886f11789ced9cf39234 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -109,6 +109,7 @@ final class HotwordAudioStreamCopier {
|
|||||||
List<HotwordAudioStream> newAudioStreams = new ArrayList<>(audioStreams.size());
|
List<HotwordAudioStream> newAudioStreams = new ArrayList<>(audioStreams.size());
|
||||||
List<CopyTaskInfo> copyTaskInfos = new ArrayList<>(audioStreams.size());
|
List<CopyTaskInfo> copyTaskInfos = new ArrayList<>(audioStreams.size());
|
||||||
int totalMetadataBundleSizeBytes = 0;
|
int totalMetadataBundleSizeBytes = 0;
|
||||||
|
int totalInitialAudioSizeBytes = 0;
|
||||||
for (HotwordAudioStream audioStream : audioStreams) {
|
for (HotwordAudioStream audioStream : audioStreams) {
|
||||||
ParcelFileDescriptor[] clientPipe = ParcelFileDescriptor.createReliablePipe();
|
ParcelFileDescriptor[] clientPipe = ParcelFileDescriptor.createReliablePipe();
|
||||||
ParcelFileDescriptor clientAudioSource = clientPipe[0];
|
ParcelFileDescriptor clientAudioSource = clientPipe[0];
|
||||||
@@ -137,6 +138,10 @@ final class HotwordAudioStreamCopier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We are including the non-streamed initial audio
|
||||||
|
// (HotwordAudioStream.getInitialAudio()) bytes in the "stream" size metrics.
|
||||||
|
totalInitialAudioSizeBytes += audioStream.getInitialAudio().length;
|
||||||
|
|
||||||
ParcelFileDescriptor serviceAudioSource =
|
ParcelFileDescriptor serviceAudioSource =
|
||||||
audioStream.getAudioStreamParcelFileDescriptor();
|
audioStream.getAudioStreamParcelFileDescriptor();
|
||||||
copyTaskInfos.add(new CopyTaskInfo(serviceAudioSource, clientAudioSink,
|
copyTaskInfos.add(new CopyTaskInfo(serviceAudioSource, clientAudioSink,
|
||||||
@@ -146,7 +151,7 @@ final class HotwordAudioStreamCopier {
|
|||||||
String resultTaskId = TASK_ID_PREFIX + System.identityHashCode(result);
|
String resultTaskId = TASK_ID_PREFIX + System.identityHashCode(result);
|
||||||
mExecutorService.execute(
|
mExecutorService.execute(
|
||||||
new HotwordDetectedResultCopyTask(resultTaskId, copyTaskInfos,
|
new HotwordDetectedResultCopyTask(resultTaskId, copyTaskInfos,
|
||||||
totalMetadataBundleSizeBytes));
|
totalMetadataBundleSizeBytes, totalInitialAudioSizeBytes));
|
||||||
|
|
||||||
return result.buildUpon().setAudioStreams(newAudioStreams).build();
|
return result.buildUpon().setAudioStreams(newAudioStreams).build();
|
||||||
}
|
}
|
||||||
@@ -167,13 +172,15 @@ final class HotwordAudioStreamCopier {
|
|||||||
private final String mResultTaskId;
|
private final String mResultTaskId;
|
||||||
private final List<CopyTaskInfo> mCopyTaskInfos;
|
private final List<CopyTaskInfo> mCopyTaskInfos;
|
||||||
private final int mTotalMetadataSizeBytes;
|
private final int mTotalMetadataSizeBytes;
|
||||||
|
private final int mTotalInitialAudioSizeBytes;
|
||||||
private final ExecutorService mExecutorService = Executors.newCachedThreadPool();
|
private final ExecutorService mExecutorService = Executors.newCachedThreadPool();
|
||||||
|
|
||||||
HotwordDetectedResultCopyTask(String resultTaskId, List<CopyTaskInfo> copyTaskInfos,
|
HotwordDetectedResultCopyTask(String resultTaskId, List<CopyTaskInfo> copyTaskInfos,
|
||||||
int totalMetadataSizeBytes) {
|
int totalMetadataSizeBytes, int totalInitialAudioSizeBytes) {
|
||||||
mResultTaskId = resultTaskId;
|
mResultTaskId = resultTaskId;
|
||||||
mCopyTaskInfos = copyTaskInfos;
|
mCopyTaskInfos = copyTaskInfos;
|
||||||
mTotalMetadataSizeBytes = totalMetadataSizeBytes;
|
mTotalMetadataSizeBytes = totalMetadataSizeBytes;
|
||||||
|
mTotalInitialAudioSizeBytes = totalInitialAudioSizeBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -195,25 +202,30 @@ final class HotwordAudioStreamCopier {
|
|||||||
try {
|
try {
|
||||||
HotwordMetricsLogger.writeAudioEgressEvent(mDetectorType,
|
HotwordMetricsLogger.writeAudioEgressEvent(mDetectorType,
|
||||||
HOTWORD_AUDIO_EGRESS_EVENT_REPORTED__EVENT__STARTED,
|
HOTWORD_AUDIO_EGRESS_EVENT_REPORTED__EVENT__STARTED,
|
||||||
mVoiceInteractorUid, /* streamSizeBytes= */ 0, mTotalMetadataSizeBytes,
|
mVoiceInteractorUid, mTotalInitialAudioSizeBytes,
|
||||||
size);
|
mTotalMetadataSizeBytes, size);
|
||||||
// TODO(b/244599891): Set timeout, close after inactivity
|
// TODO(b/244599891): Set timeout, close after inactivity
|
||||||
mExecutorService.invokeAll(tasks);
|
mExecutorService.invokeAll(tasks);
|
||||||
|
|
||||||
int totalStreamSizeBytes = 0;
|
// We are including the non-streamed initial audio
|
||||||
|
// (HotwordAudioStream.getInitialAudio()) bytes in the "stream" size metrics.
|
||||||
|
int totalStreamSizeBytes = mTotalInitialAudioSizeBytes;
|
||||||
for (SingleAudioStreamCopyTask task : tasks) {
|
for (SingleAudioStreamCopyTask task : tasks) {
|
||||||
totalStreamSizeBytes += task.mTotalCopiedBytes;
|
totalStreamSizeBytes += task.mTotalCopiedBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
Slog.i(TAG, mResultTaskId + ": Task was completed. Total bytes streamed: "
|
Slog.i(TAG, mResultTaskId + ": Task was completed. Total bytes egressed: "
|
||||||
+ totalStreamSizeBytes + ", total metadata bundle size bytes: "
|
+ totalStreamSizeBytes + " (including " + mTotalInitialAudioSizeBytes
|
||||||
|
+ " bytes NOT streamed), total metadata bundle size bytes: "
|
||||||
+ mTotalMetadataSizeBytes);
|
+ mTotalMetadataSizeBytes);
|
||||||
HotwordMetricsLogger.writeAudioEgressEvent(mDetectorType,
|
HotwordMetricsLogger.writeAudioEgressEvent(mDetectorType,
|
||||||
HOTWORD_AUDIO_EGRESS_EVENT_REPORTED__EVENT__ENDED,
|
HOTWORD_AUDIO_EGRESS_EVENT_REPORTED__EVENT__ENDED,
|
||||||
mVoiceInteractorUid, totalStreamSizeBytes, mTotalMetadataSizeBytes,
|
mVoiceInteractorUid, totalStreamSizeBytes, mTotalMetadataSizeBytes,
|
||||||
size);
|
size);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
int totalStreamSizeBytes = 0;
|
// We are including the non-streamed initial audio
|
||||||
|
// (HotwordAudioStream.getInitialAudio()) bytes in the "stream" size metrics.
|
||||||
|
int totalStreamSizeBytes = mTotalInitialAudioSizeBytes;
|
||||||
for (SingleAudioStreamCopyTask task : tasks) {
|
for (SingleAudioStreamCopyTask task : tasks) {
|
||||||
totalStreamSizeBytes += task.mTotalCopiedBytes;
|
totalStreamSizeBytes += task.mTotalCopiedBytes;
|
||||||
}
|
}
|
||||||
@@ -222,8 +234,9 @@ final class HotwordAudioStreamCopier {
|
|||||||
HOTWORD_AUDIO_EGRESS_EVENT_REPORTED__EVENT__INTERRUPTED_EXCEPTION,
|
HOTWORD_AUDIO_EGRESS_EVENT_REPORTED__EVENT__INTERRUPTED_EXCEPTION,
|
||||||
mVoiceInteractorUid, totalStreamSizeBytes, mTotalMetadataSizeBytes,
|
mVoiceInteractorUid, totalStreamSizeBytes, mTotalMetadataSizeBytes,
|
||||||
size);
|
size);
|
||||||
Slog.e(TAG, mResultTaskId + ": Task was interrupted. Total bytes streamed: "
|
Slog.i(TAG, mResultTaskId + ": Task was interrupted. Total bytes egressed: "
|
||||||
+ totalStreamSizeBytes + ", total metadata bundle size bytes: "
|
+ totalStreamSizeBytes + " (including " + mTotalInitialAudioSizeBytes
|
||||||
|
+ " bytes NOT streamed), total metadata bundle size bytes: "
|
||||||
+ mTotalMetadataSizeBytes);
|
+ mTotalMetadataSizeBytes);
|
||||||
bestEffortPropagateError(e.getMessage());
|
bestEffortPropagateError(e.getMessage());
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user