
Android
anyshu1
这个作者很懒,什么都没留下…
展开
-
stagefright框架(六)-Audio Playback的流程
到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。(1) 當上層應用程式要求播放影音時,AudioPlayer同時被建立出來,並且被啟動status_t AwesomePlayer::play_l(){ ... mAudioPlayer = new AudioPlayer(mAudioSink, ...)转载 2011-03-31 10:29:00 · 400 阅读 · 0 评论 -
MediaServer简单分析
<br /><br />android上的多媒体服务是有一个叫做mediaserver的服务进程提供的。这个进程通过binder的进程间通信方式来完成其他进程(如音乐播放器)的请求。<br /> <br />mediaserver服务器进程的实现代码在/frameworks/base/media/mediaserver目录下,代码很小。<br /> <br />该目录下的Android.mk文件:<br /> <br /><br />LOCAL_PATH:= $(call my-dir)<br /><br转载 2011-03-31 10:58:00 · 1627 阅读 · 0 评论 -
stagefright框架(三)-選擇Video Decoder
在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的OMXCodec::Create()會回傳video decoder給mVideoSource。status_t AwesomePlayer::initVideoDecoder(){ mV转载 2011-03-31 10:41:00 · 447 阅读 · 0 评论 -
stagefright框架(二)- 和OpenMAX的運作
Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。(1) OMX_InitOMXClient mClient;AwesomePlayer::AwesomePlayer(){ mClient.connect();}status_t OMXClient::connect(){ mOMX = service->getOMX();}sp MediaPlayerService::getOMX(){ mO转载 2011-03-31 10:36:00 · 366 阅读 · 0 评论 -
stagefright框架(四)-Video Buffer傳輸流程
這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來status_t OMXCodec::read(...){ if (mInitialBufferSubmit) { mInitialBufferSubmit = false; drainInputBuffers(); fillOutputBuffe转载 2011-03-31 10:32:00 · 340 阅读 · 0 评论 -
stagefright框架(一)Video Playback的流程
在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢 (註1)。[圖1] Stagefright在Android多媒體架構中的位置。[圖2] Stagefright所涵蓋的模組 (註2)。以下我們就先转载 2011-03-31 10:09:00 · 732 阅读 · 0 评论 -
新的多媒体框架 stagefright与opencore对比
http://blog.chinaunix.net/u2/61880/showart_2339481.html1引言 Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。Stagefright 自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障。不过转载 2011-03-31 09:55:00 · 797 阅读 · 0 评论 -
stagefright框架(七)-Audio和Video的同步
<br />講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:<br /><br />(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,AudioPlayer會取转载 2011-03-31 10:49:00 · 409 阅读 · 0 评论 -
stagefright框架(五)-Video Rendering
AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。(1) 要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderervoid AwesomePlayer::onVideoEvent(){ ... if (mVideoRenderer == NULL) { initRenderer_l(); } ...}void转载 2011-03-31 10:47:00 · 499 阅读 · 0 评论 -
opencore和stagefright对比
<br /><br />1引言<br />Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。<br />Stagefright 自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障。不过,从目前 android代码看,opencore有被stagef转载 2011-03-31 11:19:00 · 474 阅读 · 0 评论