@Override public void release() { synchronized (lock) { if (mHasBeenReleased) { return; } mHasBeenReleased = true; } stopCurrentPlayback(); boolean requiresShutdown = false; synchronized (lock) { requiresShutdown = hasEngineBeenInitialized(); } if (requiresShutdown) { VariableSpeedNative.shutdownEngine(); } synchronized (lock) { mIsReadyToReUse = true; } }