寻找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;
}