3.1 輸入函數 input

Shwneo原創首發CSDN技術專欄,轉載請註明出處

在壓縮包裏提供的minimad.c示例參考中給出的input回調函數如下:

其中,buffer的類型定義如下:

這個回調函數的原型有兩個參數,一個是用戶自定義消息指針data,用於輸入用戶消息(可以包含任意消息,但消息類型必須定義明確);另一個是輸入流結構mad_stream,用於輸出填充好的輸入流,簡言之就是將mp3文件的內存鏡像傳遞給mad_stream,這個mad_stream就是mad_decodersync結構的stream成員。

在上面的代碼中,input回調函數調用了mad_stream_buffer()函數將文件的內存鏡像映射給了mad_streammad_stream_buffer ()函數原型如下:

第一個參數stream是個輸出參數,將input回調函數的第二個虛參數直接傳遞就行;第二個和第三個參數分別指定mp3文件內存鏡像的起始地址和長度,對於MSVC++,可以這樣獲取這兩個參數的值:

除此之外在input這個回調函數裏我們可以做解碼開始之前的任何工作比如讀取並顯示mp3ID3信息,初始化回放增益等。

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