作者paul0904 (HK)
看板AndroidDev
标题[问题] ndk AnativeWindowfromSurface
时间Wed Jun 5 00:41:30 2013
最近正在尝试在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)