[問題] ndk AnativeWindowfromSurface

看板AndroidDev作者 (HK)時間12年前 (2013/06/05 00:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
最近正在嘗試在ndk上使用ffmpeg 加上 libstagefright寫出一個簡單的player 歷經千辛萬苦終於搞定了.mk 與sharelibrary 需要的各式路徑跟include檔案 成功編譯完成 但目前遇到一個很神奇的問題 我仿造Awesomeplayer的方法開啟OMXclient 將decoder設為 OMXcodec 接著讀取檔案並解出一張frame的資料進MediaBuffer 然後設定timestamp (native_window_set_buffers_timestamp 最後將oputbuffer丟進 queueBuffer內等待顯示 但Runtime的時候出現 SIGESEGV code=1(SEGV_MAPPERR) at 0x0000000000 研究了一下執行流程 發現是在 mNativeWindow->queueBuffer 的地方出錯 mNativeWindow->queueBuffer 居然是指向NULL 我一併確認了一些函式同樣包含在SurfaceTextureClient內的 例如 perform(非Null, query(非Null, dqueuebuffer(NULL) 想請問為啥會這樣? 難道我不該使用 sp<aNativeWindow> mNativeWinodw = ANativeWindow_fromSurface(env, jsurface); 的方法將Surface傳遞下來? 之後我也有嘗試在Decorder解出一張frame後用Nativewindow API畫一張白色的畫面 但是看似OMXcodec佔用了mNativeWindow,所以我一執行 NativeWindow_lock 就會出錯 現在我在思考到底是我使用的OMXcodec出了問題 或是我對ANativeWindow類的理解錯誤 還是有啥奇怪的環境問題沒設定好 各位大大有想法嗎 Q.Q -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.156.244 ※ 編輯: paul0904 來自: 140.117.156.244 (06/05 02:10)
文章代碼(AID): #1HhXYynm (AndroidDev)