记录的

package jmp123.debug;
import java.util.Arrays;
/**return (int) ((float) total / (float) timeSize * offset);
*criteria
*select * from ims_business where  regexp_like(u_operation_name,'.*pIn.*','i');
* Arbortext Editor  (?i)[s|t|o|p]{4}
* 标识标签 \\[[\\w][\\w]:.*\\]
* 时间标签\\[\\d{2}?:\\d{2}?.\\d{2}?\\]
*HTML Help Workshop[hhc]
*http://www.iteye.com/topic/147508
* 播放音频文件的回程缓存(把播放过的数据保存起来,使回放成为可能)
*/
public class BackBuffer

    /**
    * 回程数据
    */
    private byte[] data;
   
    /**
    *
    * 指向回程数据的指针,通过该指针来访问数组 注意更新指针
    * 用int做offset最多可表示2G的数据大小,所以不必担心不够
    */
    private int offset = 0;
   
    /**
    *
    * 创建初始长度为0字节的回程缓存
    */
    public BackBuffer()
    {
        data = new byte[0];
        offset = data.length - 1;
    }
    
    /**
    *
    * 读取回程数据 注意:读取与写入不能同时被调用
    */
    public byte read()
    {
        if (offset < 0)
        {
            return -1;
        }
        return data[offset--];
    }
   
    /**
     * 
     * 按帧读取数据  必须按帧存放的,否则无法读取<br/>
     * 该方法应该比read()用的多,因为是按帧播放,而非字节
     * @param frameByte 表示一帧数据的数组(作为输出参数)
     * @return 返回是否还有帧数据可读取
     */
    public boolean readByFrame(byte[] frameByte)
    {
        int readTotal = 0;
        offset -= frameByte.length;
        if (offset < -1 || data.length % frameByte.length != 0)//检查是否为整数帧
        {
            return false;
        }
        for (int i = 0; i < frameByte.length; i++)
        {
            frameByte[i] = data[offset + i + 1];
            readTotal++;
        }
       
        return true;
    }
   
}

猜你喜欢

转载自yangxiutian.iteye.com/blog/1399370