Fixes WebRtcAudioTrack crash while stopping
TBR=henrika@webrtc.org Bug: webrtc:11248 Change-Id: I5b829b5193d2accdfbf1e06c5317a5cd441c48c3 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/163990 Commit-Queue: Alex Narest <alexnarest@google.com> Commit-Queue: Alex Narest <alexnarest@webrtc.org> Reviewed-by: Alex Narest <alexnarest@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30133}
This commit is contained in:
@ -142,20 +142,6 @@ class WebRtcAudioTrack {
|
|||||||
// counting number of written frames and subtracting the result from
|
// counting number of written frames and subtracting the result from
|
||||||
// audioTrack.getPlaybackHeadPosition().
|
// audioTrack.getPlaybackHeadPosition().
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stops playing the audio data. Since the instance was created in
|
|
||||||
// MODE_STREAM mode, audio will stop playing after the last buffer that
|
|
||||||
// was written has been played.
|
|
||||||
if (audioTrack != null) {
|
|
||||||
Logging.d(TAG, "Calling AudioTrack.stop...");
|
|
||||||
try {
|
|
||||||
audioTrack.stop();
|
|
||||||
Logging.d(TAG, "AudioTrack.stop is done.");
|
|
||||||
doAudioTrackStateCallback(AUDIO_TRACK_STOP);
|
|
||||||
} catch (IllegalStateException e) {
|
|
||||||
Logging.e(TAG, "AudioTrack.stop failed: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private int writeBytes(AudioTrack audioTrack, ByteBuffer byteBuffer, int sizeInBytes) {
|
private int writeBytes(AudioTrack audioTrack, ByteBuffer byteBuffer, int sizeInBytes) {
|
||||||
@ -320,6 +306,16 @@ class WebRtcAudioTrack {
|
|||||||
}
|
}
|
||||||
Logging.d(TAG, "AudioTrackThread has now been stopped.");
|
Logging.d(TAG, "AudioTrackThread has now been stopped.");
|
||||||
audioThread = null;
|
audioThread = null;
|
||||||
|
if (audioTrack != null) {
|
||||||
|
Logging.d(TAG, "Calling AudioTrack.stop...");
|
||||||
|
try {
|
||||||
|
audioTrack.stop();
|
||||||
|
Logging.d(TAG, "AudioTrack.stop is done.");
|
||||||
|
doAudioTrackStateCallback(AUDIO_TRACK_STOP);
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
Logging.e(TAG, "AudioTrack.stop failed: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
releaseAudioResources();
|
releaseAudioResources();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user