歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux 下使用S3C6410的post處理器的進行硬件縮放

在嵌入式下,在移植軟件時經常會碰到這樣的問題,就是顯示分辯率的變化.一般軟件往往針對桌面機的環境編譯沒有太多問題,但是在嵌入式環境下,受限的LCD顯示有著很大的問題.
這種情況下,一種方法是修改代碼,讓其在嵌入式的LCD上顯示.另外一種是使用軟件進行顯示縮放. 這兩個方法只在部分條件有效,而且修改的工作量極大,更多情況是無法修改,比如SDL下的Dosbox是針對 640*480,修改源碼的分辯率成 480*272 後,基本屏幕顯示完全錯位.軟件無法正常運行.
這裡有一種思路是使用s3c6410的post process.它是一個硬件進行圖像和視頻縮放的的模塊.用POST後,只需要簡單調整frame buffer顯示庫代碼,即可以讓原來無法移植的軟件在嵌入式環境下自由縮放.
 一.Post Process 說明    s3c6410的Post Process支持圖像和視頻縮放和格式轉換,因為是硬件操作,所以速度非常之快.   這是DataSheet 對其功能說明.
  •  Dedicated DMA with offset address  • 3 Channel scaling pipelines for video/graphic scaling up/down or zooming in/out  • Video input format: 420, 422 format  • Graphic input format: 16-bit (565format) or 24-bit  • Graphics Output format to Memory: 16-bit (565 format) / 24-bit graphic data (progressive only)  • Video Output format to Memory: YCbCr420, YCbCr422  • Output format to external FIFO: YCbCr444 / RGB (30-bit) for interlace and progressive  • FreeRun Mode Operation   • Programmable source image size up to 4096 × 4096 resolution  • Programmable destination image size up to 2048 × 2048 resolution  • Programmable scaling ratio  • Format conversion for video signals  • Color space conversion from YCbCr to RGB  • Color Space conversion from RGB to YCbCr  
  它的主要處理流程是在系一種統內存中開辟一個PP的幀內存.其中數據被PP處理後,有兩個流向,一個是通過DMA直接傳到例如顯存當中,這樣可以直接顯示,另外一種是傳到硬件隊列當中,然後可以發送到LCD,TV等設備當中.         二.官方的Linux PP測試程序.      官方有一個Linux下的測試程序,是演示的如果使用Post Process的驅動 s3c-pp的演示代碼.它是用雙緩沖的把兩幅640*480的原始圖像,在任意分辯率下進行縮放後,交替在屏幕上顯示.       這裡有兩個版本,我選擇是 Multimedia_DD\PP_V2.5\v3.xx\pp_app 的測試程序.   我是在4.3"的s3c6410開發板上運行.fb的信息是 480*272 bpp采用16.
  這樣需要對原有的代碼post_test.c進行簡單修改.      1.23行,設備結點修改為 #define PP_DEVICE_FILE_NAME "/dev/s3c-pp"
  2. 25,26行,分辯率修改為4.3"的配置      #define LCD_WIDTH 480      #define LCD_HEIGHT 272
  Makefile 的修改,將CC=....的值調整為 CC=arm-linux-gcc
  編譯成功後,可以選擇如下兩種方式運行.     ./post_test 0 10000    其中第一個參數是PP的輸出方式,0是采用DMA輸出,1是采用FIFO,兩種情況測試均成功.    第二個參數是兩幅圖像交錯顯示時,每次顯示的時間.單位是微秒.
這是在我的開發板顯示效果,結果是比較令人滿意.
   
Copyright © Linux教程網 All Rights Reserved