在ffmpeg中,常使用AVOption的API來進行參數設置。AVOption的API主要分爲設置參數以及提取參數兩種,不管是哪種API都主要分爲兩大步驟:html
本文主要討論第一步,即定位參數所在的內存位置(av_opt_find2)。數組
在調用av_opt_set這一類函數的時候,會傳入一個結構體,如AVCodecContext,AVFormatContext,AVFilterContext,SwrContext,SwsContext等。這些是能夠被用於參數查找的結構體,這些結構體都有一個特徵:以AVClass做爲結構體的頭部。函數
AVClass主要做用有兩個:提供用於參數查找所必須的材料;指示所在的結構體相關的log顯示樣式(如log level,log顏色等)。spa
AVClass中用於參數查找所必須的材料有兩個:指針
option | 用於保存描述參數項的列表,即AVOption數組。 |
child_next | 若是所查找的結構體中存在可被進行參數查找的子結構體,那麼child_next函數應該返回指向該子結構體的指針,如此一來就能夠經過子結構體進行參數查找。 |
在定位參數內存地址的時候都會用到AVOption,其中在定位時用到的AVOption中比較重要的成員有:orm
name | 參數名稱,用於與av_opt_set所輸入的參數名稱進行匹配,若是名稱相同則表示成功找到該參數。 |
offset | 參數所在位置與目標結構體頭部的位置差。 |
定位參數的內存地址能夠分爲兩個步驟:htm