多媒體處理工具方法之尋找StartCode

尋找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;
    }
發佈了74 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章