三 回調函數

所謂回調函數(call-back),就是不被程序員調用而是被其他函數或過程調用的函數。通常利用函數指針實現。回調函數一般都具有指定的參數表格式以便正確地分配地址。

madlib開放給用戶的唯一接口就是6個回調函數,這6個回調函數都是以enum mad_flow爲返回值。enum mad_flow ,這個枚舉在頭文件decode.hmad.h中均有定義:

解碼器每次調用回調函數後都會檢查返回值,根據返回值決定下一個動作。最基本的解碼器至少要實現6個回調函數中的兩個——inputdecoder_init函數的第三個參數)和output(decoder_init函數的第六個參數)。其中input回調函數在解碼器開始運行前將mp3文件在內存中鏡像的起始指針和結束指針傳遞給mad_stream,然後不再起作用(爲簡單起見,這裏使輸入的mp3文件在一開始就全部映射進內存,實際當中input回調函數可以只將部分mp3幀映射進內存緩衝,而後在解碼過程中被反覆調用來重新填充“Refill”緩衝區);而output回調函數會在整個解碼過程中被反覆調用,來處理PCM的最終輸出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章