ffplay分析 (暂停 / 播放处理)
生活随笔
收集整理的這篇文章主要介紹了
ffplay分析 (暂停 / 播放处理)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
《ffplay的數(shù)據(jù)結(jié)構(gòu)分析》
《ffplay分析(從啟動(dòng)到讀取線程的操作)》
《ffplay分析(視頻解碼線程的操作)》
《ffplay分析(音頻解碼線程的操作)》
《ffplay 分析(音頻從Frame(解碼后)隊(duì)列取數(shù)據(jù)到SDL輸出)》
《ffplay分析 (視頻從Frame(解碼后)隊(duì)列取數(shù)據(jù)到SDL輸出)》
《ffplay分析 (音視頻同步:主時(shí)鐘為音頻)》
《ffplay分析 (seek操作處理)》
《ffplay源碼(版本:ffmpeg-4.2.1)》
ffplay分析 (暫停 / 播放處理)
- 一、分析:
- 1、read_thread():線程讀取線程暫停時(shí)的操作
- 2、audio_decode_frame():sdl_audio_callback()調(diào)用audio_decode_frame()判斷is->paused
- 3、sdl_audio_callback():SDL回調(diào)函數(shù)根據(jù)audio_decode_frame()返回值寫入空白數(shù)據(jù)到SDL
- 4、video_refresh():判斷paused不進(jìn)行顯示下一幀
- 5、event_loop():(暫停 / 播放控制)SDLK_p、SDLK_SPACE事件處理
- 6、stream_toggle_pause():(暫停 / 播放控制)stream_toggle_pause()暫停與播放時(shí)的時(shí)鐘控制處理
一、分析:
(1)讀取數(shù)據(jù)線程暫停時(shí):根據(jù)Packet隊(duì)列是否達(dá)到特定的大小后就不再繼續(xù)讀取數(shù)據(jù)。
(2)音頻播放線程暫停時(shí):根據(jù)paused標(biāo)志判斷寫入空白數(shù)據(jù)到SDL。
(3)視頻播放線程暫停時(shí):根據(jù)paused標(biāo)志判斷不繼續(xù)顯示下一幀。
1、read_thread():線程讀取線程暫停時(shí)的操作
2、audio_decode_frame():sdl_audio_callback()調(diào)用audio_decode_frame()判斷is->paused
3、sdl_audio_callback():SDL回調(diào)函數(shù)根據(jù)audio_decode_frame()返回值寫入空白數(shù)據(jù)到SDL
4、video_refresh():判斷paused不進(jìn)行顯示下一幀
5、event_loop():(暫停 / 播放控制)SDLK_p、SDLK_SPACE事件處理
6、stream_toggle_pause():(暫停 / 播放控制)stream_toggle_pause()暫停與播放時(shí)的時(shí)鐘控制處理
總結(jié)
以上是生活随笔為你收集整理的ffplay分析 (暂停 / 播放处理)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ffplay分析 (音视频同步:主时钟为
- 下一篇: ffplay分析 (seek操作处理)