顯示具有 openmax 標籤的文章。 顯示所有文章
顯示具有 openmax 標籤的文章。 顯示所有文章

在 0xdroid 充分發揮 Beagleboard/OMAP3 的硬體特性

最近 0xlab 的開發者持續改善 0xdroid,在 gitorious 的團隊排名維持在前五名的活躍程度,除了稍早提及針對 ARMv7 與底層軟體架構的改進外,0xdroid 也加入了對 Beagleboard / TI OMAP3 硬體更充分的支援。現在與多媒體處理相關的架構圖可參考以下:

紅色的部份是 Android 的 framework 層面 (Media framework, Media server),而藍色則是實做 framework 所需服務的元件 (如 OpenCore),剩下綠色的地方自然是 0xlab 關注、與硬體平台相關的元件,這裡簡要列出:

  • libaudio : 透過 ALSA 處理 Audio In/Out,針對 TI OMAP3 平台做了調整
  • libcamera : 以 V4L2 (Video For Linux) API 為基礎,提供上層 Android framework 對 camera 所需的硬體支援。透過 TI OMAP3 平台的 video overlays 作 preview 影像處理,並善用 TI DSP 的能力作 JPEG 處理
  • libopencorehw : 銜接 OpenCore,允許透過 TI OMAP3 平台的 video overlay 作高效能顯示處理
  • liboverlay : 讓 libcamera 與 libopencorehw 共用的 video overlay 操作模組
  • TI DSP / OMX : 透過 OpenMAX 標準介面,使用 TI DSP 實做的硬體多媒體 codec 運算
  • FFmpeg / OMX : 透過 OpenMAX 標準介面,使用針對 ARMv7/NEON 優化的硬體多媒體 codec 運算,這部份採納 FFmpeg 的基礎
目前上述的硬體特有的元件已有初步實做,待驗證與調整 HAL 後,就會陸續整合到 0xdroid 的公開 repository,至於開發相關的議題,可到 0xlab 的郵件討論群組 0xlab-devel 交流,謝謝。

read on
Posted 張貼者: jserv 於 下午2:38 on 2009年9月18日 星期五 | 0 意見
Filed under: , , , , ,
 

整合 GStreamer 到 Android

Thinker 在「GStreamer 和 OpenMAX IL 的比較」一文提到:

GStreamer 是知名的 open source multimedia framework,相當於 Windows 下的 DirectShow 。而 OpenMAX IL 則是多家知名廠商參與制定的標準,其功能和 GStreamer 也有些類似。目前已有一些 multimedia framework 開始支援 OpenMAX IL,以使用 OpenMAX IL 相容的 component 。 OpenMAX IL 是一個 codec 的標準介面,實作該介面的 codec 可以被任何 OpenMAX IL client 所使用。目前 Android 使用的 opencore 所支援的 codec 實在很少,如果可以透過實作 OpenMAX IL 的 wrapper ,讓 FFmpeg 之類的 multimedia framework 所提供的 codec 能當成 OpenMAX IL 的 component 載入,那麼 opencore 瞬間就多出許多 codec 可以使用。
這個想法已經被 Prajnashi S 初步實現,雖然層面不同,但還是有很大的參考價值。下午將之前的程式碼升級到 Android cupcake (1.5 Release),做了一些微調,在 target 上運作起來,先看看有哪些 plugin:
# gst-inspect-0.10
audiotestsrc: audiotestsrc: Audio test source
videotestsrc: videotestsrc: Video test source
omx: omx_dummy: OpenMAX IL dummy element
omx: omx_mpeg4dec: OpenMAX IL MPEG-4 video decoder
omx: omx_h263dec: OpenMAX IL H.263 video decoder
omx: omx_h264dec: OpenMAX IL H.264 video decoder
omx: omx_mp3dec: OpenMAX IL MP3 audio decoder
omx: omx_amrnbdec: OpenMAX IL AMR-NB audio decoder
omx: omx_amrwbdec: OpenMAX IL AMR-WB audio decoder
omx: omx_aacdec: OpenMAX IL AAC audio decoder
audioflingersink: audioflingersink: Audio Sink (AudioFlinger)
videoflip: videoflip: Video flipper
quicktime: qtdemux: QuickTime demuxer
coreelements: capsfilter: CapsFilter
coreelements: fakesrc: Fake Source
coreelements: fakesink: Fake Sink
coreelements: fdsrc: Filedescriptor Source
coreelements: fdsink: Filedescriptor Sink
coreelements: filesrc: File Source
coreelements: identity: Identity
coreelements: queue: Queue
coreelements: filesink: File Sink
coreelements: tee: Tee pipe fitting
coreelements: typefind: TypeFind
coreelements: multiqueue: MultiQueue
ffmpegcolorspace: ffmpegcolorspace: FFMPEG Colorspace converter
surfaceflingersink: surfaceflingersink: android's surface flinger sink
coreindexers: memindex: A index that stores entries in memory
videoscale: videoscale: Video scaler
staticelements: bin: Generic bin
staticelements: pipeline: Pipeline object

Total count: 12 plugins, 31 features
這表示,透過 GStreamer,Android 瞬間多了許多高品質的 plugin 與外加功能,也就能以 FFmpeg 或既有的 gst-plugins 來處理各式的多媒體資料。現在 video 的處理,可透過 Surface Flinger sink 來操作,測試方式:
# gst-launch-0.10 videotestsrc ! surfaceflingersink
以下是對應的螢幕輸出:

稍後,我們再來探討整合的議題。

read on
Posted 張貼者: jserv 於 下午5:25 on 2009年4月29日 星期三 | 1 意見
Filed under: , ,
 
Developer at 0xlab.