freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm的linux多媒體播放器mplayer的設(shè)計與實現(xiàn)畢業(yè)設(shè)計-資料下載頁

2025-06-24 16:39本頁面
  

【正文】 ns(2)ARM 匯編宏 pld 的問題armv4l/:64: Error: invalid character 39。=39。 in operand 2armv4l/:65: Error: expecting operand after 39。,39。 got nothingarmv4l/:66: Error: too many memory references for `add39。armv4l/:68: Error: no such instruction: `ldrsh r0,[lr,39。armv4l/:69: Error: no such instruction: `ldrsh r1,[lr,39。armv4l/:71: Error: junk at end of line, first unrecognized character is `@39。armv4l/:72: Error: junk at end of line, first unrecognized character is `@39。armv4l/:73: Error: no such instruction: `ldr r5,[lr,39。armv4l/:74: Error: no such instruction: `ldr r2,[lr, 在報錯文件 :ifndef HAVE_PLD.macro pld reg.endmendif(這段代碼意思是定義一個空的 ARM 匯編宏 pld,這樣當(dāng)代碼出現(xiàn) pld 指令,就變成一條空指令)(3)PATH_MAX 沒有定義In file included from :60: :51: error: 39。PATH_MAX39。 undeclared here (not in a function) make[1]: *** [] Error 1 make[1]: Leaving directory `/home/xie/39。 make: *** [libdvdcss/] error進入 添加定義define PATH_MAX 260windows 文件名的長度限制是 255(如 ),完整的路徑長度限制為 260(如25c:/)(4)S3C2410 自帶編譯器的問題這個問題是我剛開始用 S3C2410 自帶編譯器 armv4lunknownlinux 時報的錯誤,libc 庫/opt/host/armv4l/armv4lu nknownlinux/lib/ 有問題,里面缺了很多函數(shù)的實現(xiàn)。/opt/host/armv4l/armv4lunknownlinux/lib/()(.data+0x64): undefined reference to `_nss_files_getaliasent_r39。 /opt/host/armv4l/armv4lunknownlinux/lib/()(.data+0x6c): undefined reference to `_nss_files_endaliasent39。 /opt/host/armv4l/armv4lunknownlinux/lib/()(.data+0x74): undefined reference to `_nss_files_setaliasent39。 /opt/host/armv4l/armv4lunknownlinux/lib/()(.data+0x84): undefined reference to `_nss_files_getetherent_r39。 /opt/host/armv4l/armv4lunknownlinux/lib/()(.data+0x8c): undefined reference to `_nss_files_endetherent39。 /opt/host/armv4l/armv4lunknownlinux/lib/()(.data+0x94): undefined 2410 發(fā)行的 里做了拆分, 庫文件(例如 )里面去了,導(dǎo)致 里面的庫函數(shù)不全。? 再合并回來到 里面即可。 具體命令就是: /opt/host/armv4l/bin/armv4lunknownlinuxar ru xxx xxx ? 還有一種辦法,上面的編譯參數(shù)里面有static ,這說明我采用的是靜態(tài)編譯,我可換用動態(tài)編譯方式,去掉 Makefile 里面的static 即可順利的通過編譯。我采用的是第二種方法。(5)找不到結(jié)構(gòu)體 WIN32_FIND_DATA在 文件中加入下面的定義typedef struct _WIN32_FIND_DATA {DWORD dwFileAttributes。 //文件屬性FILETIME ftCreationTime。 // 文件創(chuàng)建時間26FILETIME ftLastAccessTime。 // 文件最后一次訪問時間FILETIME ftLastWriteTime。 // 文件最后一次修改時間DWORD nFileSizeHigh。 // 文件長度高 32 位DWORD nFileSizeLow。 // 文件長度低 32 位DWORD dwReserved0。 // 系統(tǒng)保留DWORD dwReserved1。 // 系統(tǒng)保留TCHAR cFileName[ MAX_PATH ]。 // 長文件名TCHAR cAlternateFileName[ 14 ]。 // 格式文件名} WIN32_FIND_DATA, *PWIN32_FIND_DATA。 移植 Mplayer 到開發(fā)板測試在配置 mplayer 有prefix=/tmp/mplayer 這樣一句話,進入/tmp/mplayer/bin/找到生成文件 mplayer,將其拷貝到根目錄下,用 usb 轉(zhuǎn)串口線和網(wǎng)線把開發(fā)板和電腦連接起來,進入 mini,使用 mount –o soft,timeo=100,rsize=1024 :/ /mnt命令把開發(fā)板根目錄掛載到電腦上,使用./mnt/mplayer /mnt/ 命令播放視頻文件,出現(xiàn)如圖 12 所示的錯誤。 圖 12 開發(fā)板報錯經(jīng)過各種嘗試,最后我發(fā)現(xiàn)在 解壓縮后的文件夾 內(nèi)也存在一個編譯好的 mplayer,把這個傳到板子上,可以播放視頻,播放效果圖如圖 13 所示。應(yīng)該是/mnt/mplayer/bin 目錄下的 mplayer 格式不正確。27 圖 13 播放 MP4 文件效果圖6 Mplayer 功能及實現(xiàn) 播放器的工作流程媒體播放器要具備解碼、音視頻同步、播放的功能。其工作流程如圖 14。首先,播放器進行自身的初始化,包括檢測硬件平臺、出錯信息處理,打開實時時鐘等。然后讀入媒體數(shù)據(jù)文件,并對文件格式進行解析。通過解析文件格式選擇相應(yīng)的分流器對音視頻數(shù)據(jù)進行分流,并將分流后的數(shù)據(jù)存入到音視頻各自的緩沖區(qū)中等待處理。下一步讀取緩沖區(qū)中音視頻各自的頭信息,初始化解碼器,開始進行解碼。解碼后收集時間戳,音視頻做同步處理。最后,將處理后的音視頻分別送到各自的輸出設(shè)備上進行播出。媒體文件讀取媒體文件數(shù)據(jù)分流音頻解碼器選擇音頻解碼音視頻同步音頻輸出視頻解碼器選擇視頻解碼 視頻輸出28圖 14 播放器的邏輯結(jié)構(gòu) 播放器的邏輯結(jié)構(gòu)嵌入式播放器 Mplayer 的邏輯結(jié)構(gòu)主要分為 4 個功能層,它們分別是:(1) 輸入層(input layer):包含讀取媒體文件模塊,主要負(fù)責(zé)將文件中的媒體數(shù)據(jù)按照流的方式讀入進來,并將數(shù)據(jù)存放到一塊緩沖區(qū)中,解析文件頭從而判斷該流屬于何種音視頻文件。(2) 分流層(demuxer layer): 即圖中的分流部分,其主要功能模塊為分流器,它的功能是依靠數(shù)據(jù)頭來判斷音視頻在這段文件數(shù)據(jù)中的各自位置,繼而對音視頻數(shù)據(jù)進行分離。分立后的音視頻數(shù)據(jù)將被保存到各自的緩沖區(qū)。分離器同時將提取時間戳,隨音視頻數(shù)據(jù)一同傳輸。通過時間戳我們可以很方便的控制音頻和視頻的同步輸出。(3) 解碼層(decoder layer)該層不但包含音視頻的解碼模塊,也包含了音視頻解碼器的選擇模塊。在解碼層中,由音視頻解碼模塊根據(jù)分流器分離出的音視頻數(shù)據(jù)的壓縮格式。初始化對應(yīng)的音視頻的解碼器以便將數(shù)據(jù)進行解碼,并將解碼出的信息輸出,傳遞給下一級的輸出層。(4) 輸出層(output layer):主要包含音視頻同步,音頻輸出和視頻輸出三個模塊。這一層由輸出模塊選擇最合適的設(shè)備驅(qū)動,根據(jù)時間戳確定的同步機制進行音視頻的播放以達到同步的目的。 播放器的目錄文件組織結(jié)構(gòu)29為了實現(xiàn) mplayer 媒體播放器的強大功能,其源代碼的文件非常龐大,其中一部分功能是嵌入式播放器所不需要的,因此我們要對其進行必要的刪改。目錄名 目錄功能libmpdemux 媒體數(shù)據(jù)分析分流庫libmpcodecs 媒體編解碼庫libao2 音頻輸出庫libvo 視頻輸出庫input 外設(shè)輸入osdep 與 OS 相關(guān)的文件libaf 音頻過濾器庫文件名 文件功能 播放器出錯信息處理功能實現(xiàn) 播放列表功能實現(xiàn) CPU 類型定義 檢測 CPU 類型 主程序播放器開始運行后,主程序文件 負(fù)責(zé)分流,解碼和輸出三個模塊的文件調(diào)度,如圖 15 所示。(1) 分流對輸入的媒體數(shù)據(jù)進行分流索要調(diào)用的文件都存放在媒體數(shù)據(jù)分析分流庫libmpdemux中。首先調(diào)用 文件,判斷數(shù)據(jù)流類型,播放器一共定義六種文件流類型,因而存在六種文件,分別是 。從中挑選出正確的文件進行數(shù)據(jù)流處理。下一步調(diào)用 文件,判斷媒體類型繼而調(diào)用對應(yīng)的分流器文件對媒體數(shù)據(jù)進行音視頻的分流。播放器包含的分流器類型很多,常用的有 等等。Libmpdemux libmpcodecs libaf libmpcodecsdisplayaudiolibvolibao2分流 輸出解碼過濾表二 MPLAYER 文件30(2) 解碼解碼分為視頻解碼和音頻解碼。以視頻解碼為例,媒體編碼庫libmpcodecs中的 文件先讀取視頻數(shù)據(jù)的相關(guān)編碼信息,判斷視頻格式。下一步調(diào)用視頻編碼庫libvcodec中的 文件,從中選擇對應(yīng)的解碼器。最后由 (以 ffmpeg 解碼器為例)對視頻數(shù)據(jù)進行解碼。若要對視頻進行控制,如亮度設(shè)置,對比度設(shè)置、圖像翻轉(zhuǎn)、放大縮小等,還要從 文件中選擇相應(yīng)濾波器對視頻進行濾波處理。(3) 輸出輸出也分為視頻輸出和音頻輸出。一視頻輸出為例,視頻輸出庫libvo中的文件 首先判斷輸出設(shè)備類型,繼而調(diào)用相應(yīng)的設(shè)備驅(qū)動。通過 將解碼后的視頻按照幀的方式從 framebuffer 設(shè)備上播放。圖 15 播放器的目錄文件組織結(jié)構(gòu)31 播放器對解碼器和輸出設(shè)備的管理方式媒體文件格式的多樣性決定了媒體播放器要處理各種類型的音視頻數(shù)據(jù),媒體播放器高效的全局變量調(diào)用關(guān)系,使其能夠為特定的音視頻數(shù)據(jù)快速準(zhǔn)確的找到相應(yīng)的解碼器,為不同的輸出設(shè)備安裝相應(yīng)的設(shè)備驅(qū)動。播放器將解碼函數(shù)相關(guān)的指針放入一個結(jié)構(gòu)體中,這個結(jié)構(gòu)體在某種意義上講就是一個接口,這些接口被連接在一起形成一個接口表,通過對接口表的查詢找到恰當(dāng)?shù)慕獯a接口參與解碼操作,如圖 16 所示,播放器通過分析輸入進來的媒體文件頭信息,從數(shù)據(jù)流列表(auto_open_streams)中選取對應(yīng)的數(shù)據(jù)流類型,進而在分流器列表中選擇正確的分流器來對媒體文件進行音視頻數(shù)據(jù)分流。以視頻 ffmpeg解碼器為例,這個解碼器本身支持多種解碼格式。播放器首先從視頻驅(qū)動解碼列表(mpcodecs_vd_drivers)中選擇 ffmpeg 視頻庫解碼驅(qū)動(mpcodecs_vd_ffmpeg),ffmpeg 對每種壓縮格式所提供的解碼接口函數(shù)都記錄在 AVCodec 的結(jié)構(gòu)體中,所有的這寫結(jié)構(gòu)被連接成一個鏈表,表頭存放在一個靜態(tài)變量之中,通過avcodec_find_decoder()函數(shù)來查找鏈表中的結(jié)構(gòu),去的需要的 AVCodec 結(jié)構(gòu)進行解碼。在這種方式下,要添加一個或一系列新的解碼器是非常容易的事,只需要將解碼器的解碼接口函數(shù)加入一個新的 AVCodec 結(jié)構(gòu)之中并將這個結(jié)構(gòu)添加在鏈表之中,這樣就可以用同樣的方法使用新加入的解碼器了。Audio_open_streams數(shù)據(jù)流列表Demuxer分流器Audio_out_drivers音頻輸出設(shè)備驅(qū)動列表Video_out_drivers視頻輸出設(shè)備驅(qū)動列表Mpcodecs_admp3libMP3 音頻庫解碼列表Mpcodecs_admp3libMP3 音頻庫解碼驅(qū)動 Filter_list音頻過濾器列表Mpcodecs_admp3libMP3 音頻庫解碼驅(qū)動Audio_out_ossOSS 音頻輸出音頻輸出Mpcodecs_vd_drivers視頻驅(qū)動解碼列表Mpcodecs_vd_ffmpeg視頻庫解碼驅(qū)動Filter_list視頻過濾器列表 Mpcodecs_vd_ffmpeg視頻庫解碼驅(qū)動Vudio_out_fbdevframebuffer 輸出視頻輸出32對輸入設(shè)備的管理與對解碼器的管理十分相似,他將所有的輸出函數(shù)指針都放到一個 vo_functions_t 的結(jié)構(gòu)體中,這些結(jié)構(gòu)被
點擊復(fù)制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1