/*
* myLib - https://github.com/taktod/myLib
* Copyright (c) 2014 ttProject. All rights reserved.
*
* Licensed under The MIT license.
*/
package com.ttProject.chunk.aac;
import java.util.ArrayList;
import java.util.List;
import com.ttProject.media.aac.frame.Aac;
/**
* aacのframeをためる動作、ここにデータをためてaacChunkManagerに必要に応じてデータを取り出させる。
* コーデックデータは一定であることを期待します。
* @author taktod
*/
public class AacDataList {
/** 保持データリスト */
private final List<Aac> aacDataList = new ArrayList<Aac>();
/** 取得フレーム数 */
private long counter;
/** 転送済みフレーム数 */
private long sendedCounter = 0;
/** サンプルレート */
private int sampleRate = -1;
/**
* 保持データリストサイズ参照
* @return
*/
public int getListCount() {
return aacDataList.size();
}
/**
* データを追加する
* @param data
*/
public void addAacData(Aac frame) {
counter += frame.getSampleNum();
sampleRate = frame.getSampleRate();
aacDataList.add(frame);
}
/**
* 保持データの終端のframeカウント
* @return
*/
public long getCounter() {
return counter;
}
/**
* 保持データの先頭のframeカウント
* @return
*/
public long getFirstCounter() {
return sendedCounter;
}
/**
* 動作サンプルレートを応答
* @return
*/
public int getSampleRate() {
return sampleRate;
}
/**
* 先頭データを取り出す
* @return
*/
public Aac shift() {
if(aacDataList.size() == 0) {
return null;
}
Aac frame = aacDataList.remove(0);
sendedCounter += frame.getSampleNum();
return frame;
}
/**
* 先頭にデータを戻す
* @param frame
*/
public void unshift(Aac frame) {
if(frame == null) {
return;
}
sendedCounter -= frame.getSampleNum();
aacDataList.add(0, frame);
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
StringBuilder data = new StringBuilder();
data.append("mp3DataList:").append(aacDataList.size());
return data.toString();
}
}