尋找StartCode
在打包,處理數據的時候,很多時候需要尋找startcode,來尋找Nal單元.以下代碼只支持[0x00 0x00 0x00 0x01]的起始碼.還有地方有待優化,以後再補充.
public static List findStartCodeOffSet(byte[] data, int postion) {
List<Integer> result = new ArrayList<Integer>();
//合法性檢驗
if (data.length < 5 || (data.length - postion) < 5) {
return result;
}
//進行檢測
for (int i = postion + 3; i < data.length; i++) {
System.out.println("i = " + i);
if (data[i] != 1) {//i 非1
if (data[i] != 0) {//i 非0
i += 3;
continue;
} else {//i 0
//FIXME i=0的時候需要優化
continue;
}
} else {//i 1 在這個分支下纔可以能有StartCode
if ((data [i-1] == 0) && (data [i-2] == 0) && (data [i-3] == 0)) {
result.add(i + 1);
}
}
}
return result;
}