package im.actor.sdk.core.audio; import java.util.ArrayList; import java.util.HashMap; /** * Created by ex3ndr on 17.03.14. */ public class VoiceBuffers { private static VoiceBuffers instance; public static synchronized VoiceBuffers getInstance() { if (instance == null) { instance = new VoiceBuffers(); } return instance; } private final HashMap<Integer, ArrayList<byte[]>> freeBuffers = new HashMap<Integer, ArrayList<byte[]>>(); private VoiceBuffers() { } public byte[] obtainBuffer(int size) { synchronized (freeBuffers) { if (freeBuffers.containsKey(size)) { ArrayList<byte[]> b = freeBuffers.get(size); if (b.size() > 0) { return b.remove(0); } } } return new byte[size]; } public void releaseBuffer(byte[] b) { synchronized (freeBuffers) { if (freeBuffers.containsKey(b.length)) { freeBuffers.get(b.length).add(b); return; } else { ArrayList<byte[]> res = new ArrayList<byte[]>(); res.add(b); freeBuffers.put(b.length, res); } } } }