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

正文內(nèi)容

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

2025-06-24 16:39本頁(yè)面
  

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