Example #1
0
  private void ProcessBuffer(boolean bFinalize) throws IOException {
    if (m_pBuffer == null) throw new JMACException("Error Undefined");

    // process as much as possible
    int nThreshold = (bFinalize) ? 0 : m_spAPECompressCreate.GetFullFrameBytes();

    while ((m_nBufferTail - m_nBufferHead) >= nThreshold) {
      int nFrameBytes =
          Math.min(m_spAPECompressCreate.GetFullFrameBytes(), m_nBufferTail - m_nBufferHead);

      if (nFrameBytes == 0) break;

      pByteReader.reset(m_pBuffer, m_nBufferHead);
      m_spAPECompressCreate.EncodeFrame(pByteReader, nFrameBytes);

      m_nBufferHead += nFrameBytes;
    }

    // shift the buffer
    if (m_nBufferHead != 0) {
      int nBytesLeft = m_nBufferTail - m_nBufferHead;

      if (nBytesLeft != 0) System.arraycopy(m_pBuffer, m_nBufferHead, m_pBuffer, 0, nBytesLeft);

      m_nBufferTail -= m_nBufferHead;
      m_nBufferHead = 0;
    }
  }