ffmpeg libx264視訊編碼過程中幀內預測模式a->i_predict4x4[idx]的獲取問題
阿新 • • 發佈:2018-12-16
analyse.c的函式static void x264_mb_analyse_intra(...)中有這麼一段程式碼:
- if( i_best > 0 ) //註釋來自leixiaohua大神
- {
- for( ; *predict_mode >= 0; predict_mode++ )//遍歷所有Intra4x4幀內模式,最多9種
- {
- ...
- //i_predict4x4[idx]中儲存了代價最小的預測模式(idx為4x4小塊的序號)
- COPY2_IF_LT( i_best, i_satd, a->i_predict4x4[idx], i_mode );
- }
- }
其中a->i_predict4x4[idx]對於4x4的塊,按道理應該是0~8的9種幀內預測模式,
然鵝我讀出來一看:“11”、“0”、“10”...困惑了整整兩天。
實際上,根據另一行程式碼“ if( i_pred_mode == x264_mb_pred_mode4x4_fix(i_mode) )”,猜測應該是x264_mb_pred_mode4x4_fix(a->i_predict4x4[idx])才對應0~8的9種幀內預測模式。
一家之言,如有錯誤私信或者留言都非常感謝!