private void onCompletedSegmentEncode() { synchronized (this) { if(status == Status.ENCODED) return; // Race condition. if (!(status == Status.ENCODED_CROSS_SEGMENTS || (crossSegments == null && status == Status.STARTED))) { Logger.error(this, "Wrong state " + status+" for "+this, new Exception("error")); return; } status = Status.ENCODED; } callback.onFinishedEncode(); }