本文整理汇总了Java中com.google.android.exoplayer.audio.AudioTrack类的典型用法代码示例。如果您正苦于以下问题:Java AudioTrack类的具体用法?Java AudioTrack怎么用?Java AudioTrack使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
AudioTrack类属于com.google.android.exoplayer.audio包,在下文中一共展示了AudioTrack类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: onDisabled
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
@Override
protected void onDisabled() throws ExoPlaybackException {
inputBuffer = null;
outputBuffer = null;
format = null;
audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
try {
if (decoder != null) {
decoder.release();
decoder = null;
codecCounters.codecReleaseCount++;
}
audioTrack.release();
} finally {
super.onDisabled();
}
}
示例2: processOutput
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
private boolean processOutput() throws ExoPlaybackException {
if (mOutputStreamEnded) {
return false;
}
if (!mOutputReady) {
if (mInputStreamEnded) {
mOutputStreamEnded = true;
mEndOfStreamMs = SystemClock.elapsedRealtime();
return false;
}
return true;
}
ensureAudioTrackInitialized();
int handleBufferResult;
try {
// To reduce discontinuity, interpolate presentation time.
mInterpolatedTimeUs = mPresentationTimeUs
+ mPresentationCount * AC3_SAMPLE_DURATION_US;
handleBufferResult = AUDIO_TRACK.handleBuffer(mOutputBuffer,
0, mOutputBuffer.limit(), mInterpolatedTimeUs);
} catch (AudioTrack.WriteException e) {
notifyAudioTrackWriteError(e);
throw new ExoPlaybackException(e);
}
if ((handleBufferResult & AudioTrack.RESULT_POSITION_DISCONTINUITY) != 0) {
Log.i(TAG, "Play discontinuity happened");
mCurrentPositionUs = Long.MIN_VALUE;
}
if ((handleBufferResult & AudioTrack.RESULT_BUFFER_CONSUMED) != 0) {
mCodecCounters.renderedOutputBufferCount++;
mOutputReady = false;
return true;
}
return false;
}
示例3: getPositionUs
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
@Override
public long getPositionUs() {
if (!AUDIO_TRACK.isInitialized()) {
return mAudioClock.getPositionUs();
} else if (!AUDIO_TRACK.isEnabled()) {
if (mInterpolatedTimeUs > 0) {
return mInterpolatedTimeUs - ESTIMATED_TRACK_RENDERING_DELAY_US;
}
return mPresentationTimeUs;
}
long audioTrackCurrentPositionUs = AUDIO_TRACK.getCurrentPositionUs(isEnded());
if (audioTrackCurrentPositionUs == AudioTrack.CURRENT_POSITION_NOT_SET) {
mPreviousPositionUs = 0L;
if (DEBUG) {
long oldPositionUs = Math.max(mCurrentPositionUs, 0);
long currentPositionUs = Math.max(mPresentationTimeUs, mCurrentPositionUs);
Log.d(TAG, "Audio position is not set, diff in us: "
+ String.valueOf(currentPositionUs - oldPositionUs));
}
mCurrentPositionUs = Math.max(mPresentationTimeUs, mCurrentPositionUs);
} else {
if (mPreviousPositionUs
> audioTrackCurrentPositionUs + BACKWARD_AUDIO_TRACK_MOVE_THRESHOLD_US) {
Log.e(TAG, "audio_position BACK JUMP: "
+ (mPreviousPositionUs - audioTrackCurrentPositionUs));
mCurrentPositionUs = audioTrackCurrentPositionUs;
} else {
mCurrentPositionUs = Math.max(mCurrentPositionUs, audioTrackCurrentPositionUs);
}
mPreviousPositionUs = audioTrackCurrentPositionUs;
}
long upperBound = mPresentationTimeUs + CURRENT_POSITION_FROM_PTS_LIMIT_US;
if (mCurrentPositionUs > upperBound) {
mCurrentPositionUs = upperBound;
}
return mCurrentPositionUs;
}
示例4: notifyAudioTrackInitializationError
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
private void notifyAudioTrackInitializationError(final AudioTrack.InitializationException e) {
if (mEventHandler == null || mEventListener == null) {
return;
}
mEventHandler.post(new Runnable() {
@Override
public void run() {
mEventListener.onAudioTrackInitializationError(e);
}
});
}
示例5: initialize
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
public void initialize() throws AudioTrack.InitializationException {
if (!mIsEnabled) {
return;
}
if (mAudioSessionID != AudioTrack.SESSION_ID_NOT_SET) {
mAudioTrack.initialize(mAudioSessionID);
} else {
mAudioSessionID = mAudioTrack.initialize();
}
}
示例6: handleBuffer
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
public int handleBuffer(ByteBuffer buffer, int offset, int size, long presentationTimeUs)
throws AudioTrack.WriteException {
if (!mIsEnabled) {
return AudioTrack.RESULT_BUFFER_CONSUMED;
}
return mAudioTrack.handleBuffer(buffer, offset, size, presentationTimeUs);
}
示例7: getPositionUs
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
@Override
public long getPositionUs() {
long newCurrentPositionUs = audioTrack.getCurrentPositionUs(isEnded());
if (newCurrentPositionUs != AudioTrack.CURRENT_POSITION_NOT_SET) {
currentPositionUs = allowPositionDiscontinuity
? newCurrentPositionUs
: Math.max(currentPositionUs, newCurrentPositionUs);
allowPositionDiscontinuity = false;
}
return (long) (currentPositionUs * audioTrack.getPlaybackSpeed());
}
示例8: onDisabled
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
@Override
protected void onDisabled() {
audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
try {
audioTrack.release();
} finally {
super.onDisabled();
}
}
示例9: notifyAudioTrackInitializationError
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
private void notifyAudioTrackInitializationError(final AudioTrack.InitializationException e) {
if (eventHandler != null && eventListener != null) {
eventHandler.post(new Runnable() {
@Override
public void run() {
eventListener.onAudioTrackInitializationError(e);
}
});
}
}
示例10: notifyAudioTrackWriteError
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
private void notifyAudioTrackWriteError(final AudioTrack.WriteException e) {
if (eventHandler != null && eventListener != null) {
eventHandler.post(new Runnable() {
@Override
public void run() {
eventListener.onAudioTrackWriteError(e);
}
});
}
}
示例11: LibopusAudioTrackRenderer
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
/**
* @param source The upstream source from which the renderer obtains samples.
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
*/
public LibopusAudioTrackRenderer(SampleSource source, Handler eventHandler,
EventListener eventListener) {
super(source);
this.eventHandler = eventHandler;
this.eventListener = eventListener;
this.audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
audioTrack = new AudioTrack();
formatHolder = new MediaFormatHolder();
}
示例12: getPositionUs
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
@Override
public long getPositionUs() {
long newCurrentPositionUs = audioTrack.getCurrentPositionUs(isEnded());
if (newCurrentPositionUs != AudioTrack.CURRENT_POSITION_NOT_SET) {
currentPositionUs = allowPositionDiscontinuity ? newCurrentPositionUs
: Math.max(currentPositionUs, newCurrentPositionUs);
allowPositionDiscontinuity = false;
}
return currentPositionUs;
}
示例13: LibflacAudioTrackRenderer
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
/**
* @param source The upstream source from which the renderer obtains samples.
* @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
*/
public LibflacAudioTrackRenderer(SampleSource source, Handler eventHandler,
EventListener eventListener) {
super(source);
this.eventHandler = eventHandler;
this.eventListener = eventListener;
this.audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
this.audioTrack = new AudioTrack();
formatHolder = new MediaFormatHolder();
}
示例14: onDisabled
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
@Override
protected void onDisabled() throws ExoPlaybackException {
audioSessionId = AudioTrack.SESSION_ID_NOT_SET;
try {
audioTrack.release();
} finally {
super.onDisabled();
}
}
示例15: notifyAudioTrackWriteError
import com.google.android.exoplayer.audio.AudioTrack; //导入依赖的package包/类
private void notifyAudioTrackWriteError(final AudioTrack.WriteException e) {
if (eventHandler != null && eventListener != null) {
eventHandler.post(new Runnable() {
@Override
public void run() {
eventListener.onAudioTrackWriteError(e);
}
});
}
}