am af7748ef: Merge "Consider channel index masks when calculating channel counts." into mnc-dev
* commit 'af7748efb6cf4ecca07ab7a76b678a04387e2e40': Consider channel index masks when calculating channel counts.
This commit is contained in:
@@ -19,6 +19,8 @@ package android.media;
|
||||
import android.annotation.NonNull;
|
||||
import android.util.SparseIntArray;
|
||||
|
||||
import java.util.TreeSet;
|
||||
|
||||
/**
|
||||
* Class to provide information about the audio devices.
|
||||
*/
|
||||
@@ -201,13 +203,24 @@ public final class AudioDeviceInfo {
|
||||
* Note: an empty array indicates that the device supports arbitrary channel counts.
|
||||
*/
|
||||
public @NonNull int[] getChannelCounts() {
|
||||
int[] masks = getChannelMasks();
|
||||
int[] counts = new int[masks.length];
|
||||
// TODO: consider channel index masks
|
||||
for (int mask_index = 0; mask_index < masks.length; mask_index++) {
|
||||
counts[mask_index] = isSink()
|
||||
? AudioFormat.channelCountFromOutChannelMask(masks[mask_index])
|
||||
: AudioFormat.channelCountFromInChannelMask(masks[mask_index]);
|
||||
TreeSet<Integer> countSet = new TreeSet<Integer>();
|
||||
|
||||
// Channel Masks
|
||||
for (int mask : getChannelMasks()) {
|
||||
countSet.add(isSink() ?
|
||||
AudioFormat.channelCountFromOutChannelMask(mask)
|
||||
: AudioFormat.channelCountFromInChannelMask(mask));
|
||||
}
|
||||
|
||||
// Index Masks
|
||||
for (int index_mask : getChannelIndexMasks()) {
|
||||
countSet.add(Integer.bitCount(index_mask));
|
||||
}
|
||||
|
||||
int[] counts = new int[countSet.size()];
|
||||
int index = 0;
|
||||
for (int count : countSet) {
|
||||
counts[index++] = count;
|
||||
}
|
||||
return counts;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user