mplayer 源碼分析_第1頁(yè)
mplayer 源碼分析_第2頁(yè)
mplayer 源碼分析_第3頁(yè)
mplayer 源碼分析_第4頁(yè)
mplayer 源碼分析_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一。多層支持的格式MPlayer是一個(gè)LINUX下的視頻播放器,它支持相當(dāng)多的媒體格式,無(wú)論在音頻播放還是在視頻播放方面,可以說(shuō)它支持的格式是相當(dāng)全面的。視頻格式支持:MPEG、AVI、ASF與WMV,快速時(shí)間與OGG/OGM、SDP、聚乙烯醇、GIF。音頻格式支持:MP3、WAV、OGG/OGM文件(沃爾比斯)、WMA與ASF、MP4、光盤音頻、XMMS。二。多層中頭文件的功能分析1.config.h/各種本地配置宏定義頭2.version.h/版本定義頭# DefineVersion 1.0 pre 7 try 2-3。4 .2 3.mp_msg.h/消息處理頭4.help_mp.h/根據(jù)

2、配置自動(dòng)生成的幫助頭#包含 help/help_mpen.h 5.cfg-mplayer-def.h/Mplayer運(yùn)行時(shí)的選項(xiàng)缺省值頭文件char*6.default_config=7.sub_reader.h/擁有格式自動(dòng)發(fā)現(xiàn)功能的字幕(副標(biāo)題(閱讀器8.libvo/video_out.h/該文件包含libvo視頻輸出的公共函數(shù)、變量9.libvo/font_load.h/有關(guān)字體裝載的例程10.libao2/audio_out.h/音頻輸出驅(qū)動(dòng)程序相關(guān)結(jié)構(gòu)定義和全局?jǐn)?shù)據(jù)11.libmpcodecs/dec_audio.h/音頻解碼12.libmpcodecs/dec_video.h/視頻

3、解碼13.libmpdemux/matroska.h/多路解復(fù)用,媒體容器格式matroska處理頭14.libmpdemux/stream.h/流處理15.libmpdemux/demuxer.h/多路解復(fù)用頭文件16.libmpdemux/s頭球攻門。h/媒體流頭處理17.get_path.c/路徑獲取頭文件18.spudec.h/SPU子畫面單元頭,DVD字幕流19.edl.h/剪輯控制清單20.m_option.h/選項(xiàng)類型處理頭21.m_config.h/配置處理頭文件三主層主流程簡(jiǎn)要說(shuō)明1.intmain()2.1)變量聲明,電影信息movieinfo:3.2)初始化,消息系統(tǒng)4.

4、播放下一個(gè)文件:5.3)播放文件文件名的循環(huán)gotoplay_next_file開始6 .維護(hù):7.4)主處理主要的8.5)播放真正主循環(huán)20103541while(!eof)9.while(!eof)10.5.1)播放音頻播放音頻2017 2064解碼_音頻(sh_audio,);11.5.2)播放視頻PLAYVIDEO,20682300decode_video(sh_video,);12.5.3)處理暫停中止13.5.4)處理EDL14.5.5)鍵盤事件處理,搜索24003216while(!brk_cmd15.(cmd=mp_input_get_cmd(0,0,0)!=空(16.5.6)

5、時(shí)間尋道(秒)if(seek_to_sec)17.5.7)尋道32433306,if(rel_seek_secs|abs_seek_pos)18.5.8)處理圖形用戶界面19.5.9)變更UpdateOSD20.5.10)找到字幕findsub21.5.11)處理X11窗口22.5.12)DVD字幕sub:23.24 .轉(zhuǎn)到下一個(gè)文件:25.6)播放結(jié)束,轉(zhuǎn)到下個(gè)文件goto_next_file:26.四。多層源碼分析從Mplayer.c的主要的開始處理參數(shù)1 . mconfig=m _ config _ new();2 . m _ config _ register _ options(mc

6、onfig,mplayer _ opts);3./ToDo :添加內(nèi)容到集合模塊注冊(cè)它們的選項(xiàng)4.MP _ input _ register _ options(mconfig);5 .解析_ CFG文件(mconfig);初始化mpctx結(jié)構(gòu)體,mpctx應(yīng)該是多層上下文的意思,顧名思義是一個(gè)統(tǒng)籌全局的變量。CPP查看平面圖1 . StaticMPContext * mpctx=mpctx _ s;2./notallfunctionsinmplayer。ctakethecontextas argumentyet3.staticMPContextmpctx_s=4.osd_function=O

7、SD_PLAY,5.開始_跳過(guò)=MP _ NOPTS _值,6.播放樹步=1,7.global_sub_pos=-1,8.set_of_sub_pos=-1,9.文件格式=DEMUXER_TYPE_UNKNOWN,10.loop_times=-1,11.#ifdefHAS_DVBIN_SUPPORT12.last_dvb_step=1,13.#endif14.;原型1./真正統(tǒng)籌全局的結(jié)構(gòu)2 . TypeDefStructumpContext 3.intosd _ show _ osd _ function5 . constao _ functions _ t *

8、 audio _ out6.play _ tree _ t * playtree7 . play _ tree _ ITER _ t * playtree _ ITER;8.play _ tree _ loop _ times11.12 .流_ t *流13.demuxer _ t * demuxer14.sh _音頻_ t * sh _音頻;15.sh _ video _ t * sh _ video16.demux _ stream _ t * d _ audio17.demux _ stream _ t * d _ video18.demux _

9、 stream _ t * d _ sub19.mixer _ tmixer20 . const VO _ functions _ t * video _ out21./為讀取翻轉(zhuǎn)而緩沖的幀。當(dāng)前是0或1路。22./這真的是可變的但是當(dāng)前有效的23./結(jié)構(gòu)。24.intnum _ buffered _ frames25.26./usettoretrydecodingafstartup/尋求startup _ decode _ retry28./顯示當(dāng)前幀29 .浮動(dòng)框架30.31./avsync :新幀應(yīng)顯示此音頻作者32./多(昆蟲綱)b

10、uffereddataleft .當(dāng)有更多數(shù)據(jù)時(shí)增加33./寫入下一幀,減少下一幀。34./在僅用于音頻的情況下,請(qǐng)使用tastimersinclusterseek35./bytheaudioCPUusagemeter .36.雙重延遲;37.38 . float begin _ skip/stream=open _ stream(文件名,0,mpctx-file _ format);2.文件格式文件還是電視流播放列表或DEMUXER_TYPE_UNKNOWN3.數(shù)字電視4.當(dāng)前模塊(_ m)記錄狀態(tài)vobsubopen _ stream handle _ playlistdupstream5

11、 . stream _ reset(mpctx-stream);6.stream_seek(mpctx-stream,mpctx-stream-start _ pos);7.f=fopen(stream_dump_name,“WB”);傾銷文件流8.流類型=流類型_數(shù)字視盤/=打開DEMUXERS 檢測(cè)文件類型=德穆。分離視頻流和音頻流1 . mpctx-demu xer=demux _ open(mpctx-stream,mpctx-2.file_format、audio_id、video_id、dvdsub_id、文件名);3.Demux過(guò)程4.demux_open5.get_demuxe

12、r_type_from_name6.7 . mpctx-d _ audio=mpctx-demu xer-audio;8 . mpctx-d _ video=mpctx-demux er-video;9 . mpctx-d _ sub=mpctx-demux er-sub;10 . mpctx-sh _ audio=mpctx-d _ audio-sh;11 . mpctx-sh _ video=mpctx-d _ video-sh;分離了之后就開始分別播放音頻和錄像這里只關(guān)心播放視頻1./*=PLAYVIDEO=2.VO _ pts=mpctx-sh _ video-timer * 90000.0;3.VO _ fps=mpctx-sh _ video-fps;4.如果(!mpctx-num_buffered_frames)5 .雙幀時(shí)間=

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論