自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

转载 將 SDL整合至Android平台

<br />網路上有很多文章在講解如何將SDL整合到Android的平台上,我自己也試著動手做看看,順便將一些步驟及心得整理起來。<br /><br />以下是這次我所用到的開發環境。<br /><br />- Cygwin<br />- Android NDK:android-ndk-r4b-windows<br />- SDL:1.2.14<br /><br /><br />《Step 1》<br />將SDL中的Makefile.minimal修改如下 (紅體字) :<br /><br />#

2011-01-10 10:11:00 4738

转载 在 Android上實作一個FFmpeg+SDL的media player

<br />我們想要在Android上面開發自己的media player,第一個想到的就是利用FFmpeg來實作。FFmpeg是一個跨平台的編解碼函式庫,我們可以呼叫它所提供的API來完成。另外,FFmpeg有提供一個小程式ffplay,它本身就是一個media player,所以我們打算以ffplay作為程式的基礎。<br /><br />以下是這次我所用到的開發環境:<br /><br />- Cygwin<br />- Android NDK:android-ndk-r4b-window

2011-01-10 10:11:00 5490 2

转载 將 FFmpeg整合至Android平台

<br /><br />FFmpeg是一個跨平台的影音編解碼函式庫,我們可以用來實作一個在Android平台上的media player。首先先build出一個Android版本的FFmpeg。<br /><br />以下是這次我所用到的開發環境:<br /><br />- Cygwin<br />- Android NDK:android-ndk-r4b-windows<br />- FFmpeg:0.6.1<br /><br /><br />《Step 1》<br />在Android NDK上

2011-01-10 10:10:00 3857 2

转载 Stagefright (7) - Audio和Video的同步

<br /><br />講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:<br /><br />(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,A

2011-01-10 09:41:00 1112

转载 Stagefright (7) - Audio和Video的同步

<br /><br />講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:<br /><br />(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,A

2011-01-10 09:41:00 1244 1

转载 Stagefright (6) - Audio Playback的流程

<br />到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。<br /><br />Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。<br /><br /><br />(1) 當上層應用程式要求播放影音時,AudioPlayer同時被建立出來,並且被啟動<br /><br />status_t AwesomePlayer::play_l()<

2011-01-10 09:40:00 884

转载 Stagefright (5) - Video Rendering

<br />AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。<br /><br />(1) 要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderer<br /><br />void AwesomePlayer::onVideoEvent()<br />{<br />  ...<br /><br />  if (

2011-01-10 09:39:00 1172

转载 Stagefright (4) - Video Buffer傳輸流程

<br />這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。<br /><br />(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來<br /><br />status_t OMXCodec::read(...)<br />{<br />  if (mInitialBufferSubmit)<br />  {<br />    mInitialBuf

2011-01-10 09:38:00 1222

转载 Stagefright (2) - 和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(

2011-01-10 09:37:00 1461

转载 Stagefright (3) - 選擇Video Decoder

<br />在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。<br /><br />(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的<br /><br />OMXCodec::Create()會回傳video decoder給mVideoSource。<br /><br /

2011-01-10 09:37:00 1440

转载 Stagefright (1) - Video Playback的流程

<br /><br />在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相當穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢。以下我們就先來看看Stagefright是如何播放一個影片檔。<br /><br />Stagefright在

2011-01-10 09:34:00 1918

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除