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

正文內容

基于arm9的流媒體播放器的設計課程設計(參考版)

2024-09-01 19:48本頁面
  

【正文】 } /* 獲取當前目錄的名字 */ getcwd(cwd_buf,sizeof(cwd_buf))。 if (buttons_fd 0) { perror(open device button)。 void *shmadd=(void *)0。 int memory_id。 char prev_name[WORD]。 int key_tmp。 int ret。 pnode head。 int j=0。 char *p=NULL。 //保存目錄名字 DIR *dir。 } //主函數 int main(int argc, char *argv[]) { int buttons_fd。 kill(share_tmpid_tmp,SIGKILL)。 } else if(id_test 0){ } } //退出播放程序 void stop_play(struct share *share_tmp) { first_press=1。 } id_test=fork()。 if(node_tmp == NULL){ printf(only one song \n)。 kill(id_test,SIGKILL)。 printf(\nkey3 down prev\n)。 } else if(id_test 0){ } } //播放上一文件 void pre_play(struct share *share_tmp,int mem_id,pnode head) { pnode node_tmp。 } id_test = fork()。 if(node_tmp == NULL){ printf(only one file \n)。 // strcpy(next_name, share_tmpname_tmp)。 /* kill 原來的子進程和孫子進程 */ kill(share_tmpid_tmp,SIGKILL)。 play_flags=1。 kill(pid_tmp,SIGCONT)。 } //繼續(xù)播放 void continue_play(pid_t pid_tmp) { play_flags=1。 printf(\nkey1 down, pause\n)。 //創(chuàng)建子進程用于播放文件 //該子進程控制循環(huán)播放,當文件播放完成后,創(chuàng)建一個新的孫子進程來播放 if(id_test == 0){ play(mem_id,head)。 play_flags=1。 29 } else wait(NULL)。 share_paraid_tmp = getpid()。 } /* 將 ID 和文件名信息存入共享內存 */ share_para = (struct share *)shmadd。 if(fork() == 0){ /* 映射共享內存 */ if ((shmadd = shmat(mem_id, (void *)0, 0)) == NULL){ if (shmctl(mem_id, IPC_RMID, NULL) == 1) perror(Failed to remove memory segment)。 node_tmp = paraprev。 void *shmadd=(void *)0。 tmp = tmpnext。 printf(head:%s\n,heads_name)。 } /* 打印雙向鏈表每個節(jié)點的值 */ void print_list(pnode head) { pnode tmp = headnext。 } else { tmp= tmpnext。 if(strcmp(heads_name,para) == 0){ return head。 } /* 遍歷鏈表,返回當前播放文件所對應的節(jié)點 */ pnode search_list(pnode head,char para[]) { pnode tmp = NULL。 tmpnext = head。 tmp = new。 newprev = tmp。 } strcpy(news_name,para[i])。 if(new == NULL){ perror(malloc)。 in。 tmp = head。 headprev = NULL。 exit(EXIT_FAILURE)。 head = (pnode)malloc(sizeof(node))。 pnode new = NULL。 /* 創(chuàng)建雙向循環(huán)鏈表,將媒體文件添加入鏈表中 */ pnode create_list(char para[][40],int n) { int i。 char name_tmp[WORD]。 }node,*pnode。 struct list_node *next。 //子進程 ID char *format[FORMAT_NUM]={ .mp4, .flv, .avi, .mov, .rmvb, .wmv, .3gp, .wma, .wav, .mp3 }。 int play_flags=0。要完成這一步工作本人還需要進一步的學習。其中詳細的介紹了如何把 Linux 移植到 ARM 平臺上,這當中包括 Bootload 的移植,Linux 內核的移植和根文件系統(tǒng)的制作等內容,也詳細的介 紹了如何的移植 MPlayer播放 器,并且為視頻播放器編寫了按鍵控制程序 ,本文基本完成了一個嵌入式視頻播放器的設計工作。下圖為視頻播放器播放視頻的畫面。主要測試的是播放器的應用程序能否按要求工作,對于常見的視頻格式是否能支持,為此準備了以下幾種多媒體格式的文件進行測試: MP MP AVI、 WMV、 MOV、。 詳細的程序設計 請參考 參考 附件 A。按下 2 號鍵時播放器會自動的播放下一個文件,按下 4 號鍵則將播放上一文件 。 圖 按鍵檢測流程圖 播放器控制程序的設計 視頻播放器將通過按鍵來實現 開始播放、暫停播 放、繼續(xù)播放、播放下一個文件和播放 上 一個文件的功能。在驅動程序中會注冊每個按鍵所對應的中斷, 每當有按鍵按下的時候就會進入到中斷處理函數,在中斷處理函數里將記錄具體是哪個按鍵被按下。 GQ2440 開發(fā)板有 6 個按鍵,它們均從 CPU 中斷引腳直接引出,屬于低電平觸發(fā) , 下 表 為各按鍵和中斷 源 的對應關系。 本文將利用 GQ2440 上的按鍵來控制播放器的工作, 例如控制視頻播放器開始播放或者是停止播放等。 ( 3) 編譯好后,執(zhí)行 make install 命令將會在指定的目錄下生成 MPlayer 的可執(zhí)行文件 mplayer,只要把 mplayer 下載到開發(fā)板上就能使用它來播放多媒體文件了。先把下載的 MPlayer 源代碼解壓,進入解壓后得到的 目錄,如果對 MPlayer的配置選項不熟悉,可以如下執(zhí)行命令: ./configure –help 系統(tǒng)將列出 MPlayer 的所有 配置選項,并 附有 簡要的介紹,了解 MPlayer 的 配置 選項 后 就可以 根據自己的需求 對 MPlayer 進行配置了,本文的配置為: ./configure prefix=/home/player hostcc=gcc cc=armlinuxgcc target=arm enablestatic disablewin32dll disableivtv disabledvdread 21 disabledvdreadinternal disabledvdnav disablelibdvdcssinternal enablefbdev disablemencoder disablelive disablemp3lib enablemad withextraincdir=/opt/toolchains/arm920teabi/lib/include withextralibdir=/opt/toolchains/arm920teabi/lib/lib enablelibavcodec_a disablelive 2amp。 ( 1) 配置 MPlayer。 MPlayer 的移植 要使 MPlayer 能運行在 ARM 平臺上,需要在宿主機上對 MPlayer 源代碼進行針對性的配置和編譯, 在進行移植工作之前 首先應該獲得 MPlayer 的源代碼,可以到 MPlayer 的官 方網站 : ,本文選用的版本為 。 MPlayer 幾乎能播放所有流行的音視頻格式文件,例如 MPEG、 AVI、 WMV、 MOV、 FLV、 RMVB、 VOB、OGG 等 [14] [15] [16]。 MPlayer 是 Linux 下的一款 優(yōu)秀的開源播放器軟件, MPlayer 不僅支持X86 平臺,也支持 ARM 平臺,所以本文 選擇了移植 MPlayer 播放器進行移植。制作 yaffs 文件系統(tǒng)的工具是 mkyaffs2image,我們可以從網上下載和安裝好,然后使用如下命令 : makeyaffs2image rootfs 即可生成 根文件系統(tǒng)映像,把 下載到開發(fā)板 Flash 存儲器的指定位置即可工作。 ( 3) 制作根文件系統(tǒng)映像文件。 此外還要向 etc 目錄中添加一些必要的配置文件,其中: etc/initttab、 etc/文件是必須的。 先建立一個系統(tǒng)的根目錄比如 rootfs,然后把上一步生成的 _install 目錄里的內 19 容拷貝到 rootfs 目錄。 Bin目錄和 sbin 目錄中包含了系統(tǒng)命令, usr 中包含的是用戶命令 。先把下載到的代碼使用如下命令解壓: tar jxvf 然后進入解壓后的 目錄執(zhí)行 make menuconfig命令對 Busybox進行配置, Busybox 的配置菜單 如圖 所示: 18 圖 Busybox 的配置菜單 當選好配置選項后,保存并退出。 Busybox 的源代碼可以從 上下載。 本文就將使用BusyBox 來構建一個根文件系統(tǒng) ,下面將詳細講解如何使用 BusyBox 構建一個根文件系統(tǒng) 。第二種方法是使用一些開源的工具構建根文件系統(tǒng),例如使用 BusyBox、 TinyLogin 和 Embutils。 一般來說構建根文件系統(tǒng)的方法有兩種。 根文件系統(tǒng)構建 根文件系統(tǒng)除了應該以 FHS 標準的格式組織外,還應該包含一些必要的命令。根文件系統(tǒng)應該包含的目錄和文件遵循 FHS 標準 (Filesystem Hierarchy Standard,文件系統(tǒng)層次標準 ),這個標準包含了根文件系統(tǒng)中最少應該包含哪些目錄和文件,以及這些目錄的組織原則 [13]。 基于以上比較本文將選用 yaffs 作為根文件系統(tǒng)。在 Cramfs 文件系統(tǒng)中,每一頁 (4k)被單獨壓縮,可隨機頁訪問,其壓縮比高達 2:1,為嵌入式系統(tǒng)節(jié)省大量的 Flash 存儲空間 [10]。 Yaffs 文件系統(tǒng)有 4 個主要 優(yōu)點:速度快、占用內存少、不支持壓縮和只支持 Yaffs 存儲器。 在嵌入式領域,使用哪種文件系統(tǒng)需要根據存儲芯片的類型來決定,在嵌入式 Linux 應用中,主要的存儲設備為 RAM(DRAM, SDRAM)和 ROM(Flash 存儲器 ),常用的基于 Flash 存儲設備的文件系統(tǒng)類型包括 jffs Yaffs、 Cramfs、 Romfs、 Ramdisk 等 ,而作為根文件系統(tǒng)一般 會 選用 Yaffs 和 Cramfs。 若系統(tǒng) 正常 掛載根文件系統(tǒng),則系統(tǒng)會出錯而 退出啟動,所以要為嵌入式系統(tǒng)構建一個根文件系統(tǒng)。 根文件系統(tǒng)的制作 對嵌入式系統(tǒng)來說,除了一個嵌入式操作系統(tǒng)以外,還需要一個嵌入式文件系統(tǒng)用來管理和存儲數據、程序。 此外還要把 UDA1341 設備添加到 mini2440_devices 數組中 以 UDA1341 設備注冊到內核中。 static struct platform_device s3c24xx_uda134
點擊復制文檔內容
法律信息相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1