0

我面临一个我无法解决的奇怪问题。我在 android 上使用 SDL 来显示由 ffmpeg 解码的帧。如果直接在main函数中创建SDL渲染器,然后初始化,就没有问题了

05-31 09:24:11.442: V/SDL(11376): pixel format RGB_565
05-31 09:24:11.442: I/SDL(11376): SDL_Android_Init()
05-31 09:24:11.442: I/Main(11376): Entering main
05-31 09:24:13.817: I/SDLRenderer(11376): Entering SDLRenderer::init
05-31 09:24:13.817: I/SDLRenderer(11376): SDLRenderer::init -> About to create screen with w=704 h=480
05-31 09:24:13.817: I/SDL(11376): [STUB] GL_LoadLibrary
05-31 09:24:13.822: V/SDL(11376): Starting up OpenGL ES 2.0
05-31 09:24:13.827: D/libEGL(11376): loaded /system/lib/egl/libEGL_mali.so
05-31 09:24:13.832: D/libEGL(11376): loaded /system/lib/egl/libGLESv1_CM_mali.so
05-31 09:24:13.832: D/libEGL(11376): loaded /system/lib/egl/libGLESv2_mali.so
05-31 09:24:13.837: D/(11376): Device driver API match
05-31 09:24:13.837: D/(11376): Device driver API version: 10
05-31 09:24:13.837: D/(11376): User space API version: 10 
05-31 09:24:13.837: D/(11376): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Fri May  4 10:32:42 KST 2012 
05-31 09:24:13.862: I/SDL(11376): [STUB] GL_SetSwapInterval
05-31 09:24:13.862: I/SDL(11376): [STUB] GL_GetSwapInterval
05-31 09:24:13.932: I/SDLRenderer(11376): SDLRenderer::init -> screen created with w=704 h=480
05-31 09:24:13.932: I/SDLRenderer(11376): SDLRenderer::init -> About to create YUV Overlay with SDL_YV12_OVERLAY and w=704 h=480
05-31 09:24:13.932: I/SDLRenderer(11376): SDLRenderer::init -> YUV Overlay created with SDL_YV12_OVERLAY and w=704 h=480

但是如果在主函数中,我创建了一个线程来完成之前的工作(创建渲染器并初始化它)它会崩溃..

05-31 10:33:04.462: V/SDL(23043): pixel format RGB_565
05-31 10:33:04.462: I/SDL(23043): SDL_Android_Init()
05-31 10:33:04.462: I/Main(23043): Entering main
05-31 10:33:05.882: I/Main(23043): Main: About to create thread DecodeVideo
05-31 10:33:05.882: I/Main(23043): Starting DecodeVideo
05-31 10:33:06.457: I/SDLRenderer(23043): Entering SDLRenderer::init
05-31 10:33:06.462: I/SDLRenderer(23043): SDLRenderer::init -> About to create screen with w=704 h=480
05-31 10:33:06.462: I/SDL(23043): [STUB] GL_LoadLibrary
05-31 10:33:06.462: A/libc(23043): Fatal signal 11 (SIGSEGV) at 0x00000364 (code=1)

有谁知道是否有什么特别的事情要做来解决这个问题?谢谢你。Zbb

4

1 回答 1

1

从文档中引用。

*注3:此函数应在应用程序的主线程中调用。*

于 2013-06-01T19:47:54.227 回答