package com.laifeng.sopcastsdk.configuration;
import android.media.AudioFormat;
import android.media.MediaCodecInfo;
/**
* @Title: AudioConfiguration
* @Package com.laifeng.sopcastsdk.configuration
* @Description:
* @Author Jim
* @Date 16/9/14
* @Time 下午3:20
* @Version
*/
public final class AudioConfiguration {
public static final int DEFAULT_FREQUENCY = 44100;
public static final int DEFAULT_MAX_BPS = 64;
public static final int DEFAULT_MIN_BPS = 32;
public static final int DEFAULT_ADTS = 0;
public static final String DEFAULT_MIME = "audio/mp4a-latm";
public static final int DEFAULT_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;
public static final int DEFAULT_AAC_PROFILE = MediaCodecInfo.CodecProfileLevel.AACObjectLC;
public static final int DEFAULT_CHANNEL_COUNT = 1;
public static final boolean DEFAULT_AEC = false;
public final int minBps;
public final int maxBps;
public final int frequency;
public final int encoding;
public final int channelCount;
public final int adts;
public final int aacProfile;
public final String mime;
public final boolean aec;
private AudioConfiguration(final Builder builder) {
minBps = builder.minBps;
maxBps = builder.maxBps;
frequency = builder.frequency;
encoding = builder.encoding;
channelCount = builder.channelCount;
adts = builder.adts;
mime = builder.mime;
aacProfile = builder.aacProfile;
aec = builder.aec;
}
public static AudioConfiguration createDefault() {
return new Builder().build();
}
public static class Builder {
private int minBps = DEFAULT_MIN_BPS;
private int maxBps = DEFAULT_MAX_BPS;
private int frequency = DEFAULT_FREQUENCY;
private int encoding = DEFAULT_AUDIO_ENCODING;
private int channelCount = DEFAULT_CHANNEL_COUNT;
private int adts = DEFAULT_ADTS;
private String mime = DEFAULT_MIME;
private int aacProfile = DEFAULT_AAC_PROFILE;
private boolean aec = DEFAULT_AEC;
public Builder setBps(int minBps, int maxBps) {
this.minBps = minBps;
this.maxBps = maxBps;
return this;
}
public Builder setFrequency(int frequency) {
this.frequency = frequency;
return this;
}
public Builder setEncoding(int encoding) {
this.encoding = encoding;
return this;
}
public Builder setChannelCount(int channelCount) {
this.channelCount = channelCount;
return this;
}
public Builder setAdts(int adts) {
this.adts = adts;
return this;
}
public Builder setAacProfile(int aacProfile) {
this.aacProfile = aacProfile;
return this;
}
public Builder setMime(String mime) {
this.mime = mime;
return this;
}
public Builder setAec(boolean aec) {
this.aec = aec;
return this;
}
public AudioConfiguration build() {
return new AudioConfiguration(this);
}
}
}