1 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
一、創(chuàng)建一個(gè)VideoPicture結(jié)構(gòu)體用來(lái)保存解碼出來(lái)的圖像。
二、添加數(shù)據(jù)隊(duì)列的初始化、添加以及讀取的函數(shù)。
三、audio_decode_frame():解碼音頻
四、audio_callback(): 回調(diào)函數(shù),向SDL緩沖區(qū)填充數(shù)據(jù)
五、創(chuàng)建視頻刷新相關(guān)的函數(shù):
schedule_refresh():它主要的作用是告訴系統(tǒng)指定的毫秒數(shù)后推FF_REFRESH_EVENT。當(dāng)我們看到它在事件隊(duì)列時(shí),將依次調(diào)用視頻刷新功能。
六、添加視頻顯示函數(shù):
因?yàn)槲覀兊钠聊豢梢允侨我獯笮。ㄎ覀冊(cè)O(shè)定我們?yōu)?40×480,并有一些方法來(lái)設(shè)置它,所以它是由用戶(hù)調(diào)整大?。?,我們需要?jiǎng)討B(tài)地計(jì)算出我們有多大的矩形。因此,首先我們需要弄清楚我們的電影的顯示比例,這僅僅是寬度除以身高。某些編解碼器將有一個(gè)奇怪的樣本縱橫比,這就是一個(gè)像素,或樣品的寬度/高度。因?yàn)樵谖覀兊木?a >解碼器的上下文中的高度和寬度值以像素為單位測(cè)量,實(shí)際的寬高比等于寬高比數(shù)倍的樣品長(zhǎng)寬比。一些編解碼器將顯示0-5的寬高比,這表示每個(gè)像素僅僅是大小1x1的。然后,我們擴(kuò)展了電影,以適應(yīng)在我們的屏幕上。
七、分配顯示輸出內(nèi)存空間:
使用隊(duì)列中,我們有兩個(gè)指針 - 寫(xiě)入索引和閱讀索引。我們還跟蹤實(shí)際的照片有多少是在緩沖區(qū)中。要寫(xiě)入隊(duì)列中,我們將首先等待我們的緩沖清除,所以我們足夠的空間來(lái)存儲(chǔ)我們VideoPicture。然后我們檢查,看看是否已經(jīng)分配了覆蓋在我們的寫(xiě)作索引。如果沒(méi)有,我們就必須分配一定的空間。如果窗口的大小發(fā)生了變化, 我們也要重新分配緩沖區(qū)。
八、解碼線(xiàn)程,將解碼器,建立音頻線(xiàn),保存重要信息到數(shù)據(jù)結(jié)構(gòu)中。
九、編寫(xiě)Main函數(shù)用來(lái)調(diào)用解碼線(xiàn)程。
- 1 回答
- 0 關(guān)注
- 749 瀏覽
添加回答
舉報(bào)