Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(对于fadden)这是同一个Android MediaCodec崩溃吗?_Android_H.264_Android Mediacodec - Fatal编程技术网

(对于fadden)这是同一个Android MediaCodec崩溃吗?

(对于fadden)这是同一个Android MediaCodec崩溃吗?,android,h.264,android-mediacodec,Android,H.264,Android Mediacodec,这个问题是专门针对法登提出的,然后再针对尼基列特提出,尼基列特发布了这个问题。我在前面提到的帖子中没有看到任何后续内容,所以我在这里问这个问题 现在,我再次将这个问题转向法登,或者任何对Android的MediaCodec有深入了解的人: 我有一个应用程序,它使用Android MediaCodec,但不是Surface,在一些手机上崩溃,而在大多数其他手机上运行正常。这是我如何将MediaCodec配置为解码器的: vidDecoder.configure(mVideoDecoderForma

这个问题是专门针对法登提出的,然后再针对尼基列特提出,尼基列特发布了这个问题。我在前面提到的帖子中没有看到任何后续内容,所以我在这里问这个问题

现在,我再次将这个问题转向法登,或者任何对Android的MediaCodec有深入了解的人:

我有一个应用程序,它使用Android MediaCodec,但不是Surface,在一些手机上崩溃,而在大多数其他手机上运行正常。这是我如何将MediaCodec配置为解码器的:

vidDecoder.configure(mVideoDecoderFormat, null, null, 0);
看着日志,我意识到回溯与Nikhillite发布的内容完全相同。这让我相信,我看到的是完全相同的崩溃,也就是说,它可能是由于没有输出曲面造成的

下面是我的简略日志

D/VideoTranscodingLib( 8389): input frame (throughput):  0
D/VideoTranscodingLib( 8389):  inIndex = 0
D/VideoTranscodingLib( 8389): input frame (throughput):  1
D/VideoTranscodingLib( 8389):  inIndex = 2
D/VideoTranscodingLib( 8389): input frame (throughput):  2
D/VideoTranscodingLib( 8389):  inIndex = 3
D/VideoTranscodingLib( 8389): input frame (throughput):  3
D/VideoTranscodingLib( 8389):  inIndex = 1
E/OMX-VDEC-1080P(  268): Streamon on OUTPUT Plane was successful 
E/OMX-VDEC-1080P(  268): 
E/OMX-VDEC-1080P(  268):  VIDC Some Event recieved 
D/VideoTranscodingLib( 8389): input frame (throughput):  4
D/VideoTranscodingLib( 8389):  inIndex = 0
I/ACodec  ( 8389): Sending format change with buffer 0x44809b48
I/ACodec  ( 8389): Update Resolution Change for buffer 0x44809b48
E/OMX-VDEC-1080P(  268): 
E/OMX-VDEC-1080P(  268):  No color conversion required
E/OMX-VDEC-1080P(  268): update_portdef Width = 1280 Height = 736 Stride = 1280 SliceHeight = 736 
I/ACodec  ( 8389): Calling native window update buffer geometry [1280 x 736]
F/libc    ( 8389): Fatal signal 11 (SIGSEGV) at 0x00000058 (code=1), thread 8492 (MediaCodec_loop)
I/DEBUG   (  263): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (  263): Build fingerprint: 'lge/g2_open_cn/g2:4.2.2/JDQ39B/D80210d.1379696461:user/release-keys'
I/DEBUG   (  263): Revision: '10'
I/DEBUG   (  263): pid: 8389, tid: 8492, name: MediaCodec_loop  >>> com.bdti.certimo.transcoding <<<
I/DEBUG   (  263): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000058
I/DEBUG   (  263):     r0 00000000  r1 00000012  r2 00000500  r3 000002e0
I/DEBUG   (  263):     r4 69c20d18  r5 5ca76343  r6 00000000  r7 00000001
I/DEBUG   (  263):     r8 69c20d18  r9 6144ee78  sl 00000000  fp 00000000
I/DEBUG   (  263):     ip 4016fe50  sp 6144ec10  lr 5c9e5af5  pc 5c9e5b00  cpsr 20000030
I/DEBUG   (  263):     d0  20676e696c6c6143  d1  772065766974616e
I/DEBUG   (  263):     d2  707520776f646e69  d3  6675622065746164
I/DEBUG   (  263):     d4  0000000000000000  d5  0000000000000000
I/DEBUG   (  263):     d6  0193000000020000  d7  000000414ecf951d
I/DEBUG   (  263):     d8  4487000000000438  d9  000000004409c000
I/DEBUG   (  263):     d10 0000000000000000  d11 0000000000000000
I/DEBUG   (  263):     d12 0000000000000000  d13 0000000000000000
I/DEBUG   (  263):     d14 0000000000000000  d15 0000000000000000
I/DEBUG   (  263):     d16 8f70b9cae566ee6f  d17 00000000164aa694
I/DEBUG   (  263):     d18 0000001200000012  d19 000000010015a000
I/DEBUG   (  263):     d20 0000000100000001  d21 00000001c0000000
I/DEBUG   (  263):     d22 000002e000000500  d23 000002e000000500
I/DEBUG   (  263):     d24 003e003d003c003b  d25 0040003f003e003c
I/DEBUG   (  263):     d26 0000000000000000  d27 0000000000000000
I/DEBUG   (  263):     d28 001e001d001c001b  d29 0020001f001e001c
I/DEBUG   (  263):     d30 0040004000400040  d31 0000000000000000
I/DEBUG   (  263):     scr 2800001f
I/DEBUG   (  263): 
I/DEBUG   (  263): backtrace:
I/DEBUG   (  263):     #00  pc 00058b00  /system/lib/libstagefright.so (android::ACodec::sendFormatChange()+1003)
I/DEBUG   (  263):     #01  pc 00059bb3  /system/lib/libstagefright.so (android::ACodec::BaseState::onOutputBufferDrained(android::sp<android::AMessage> const&)+186)
I/DEBUG   (  263):     #02  pc 0005a4af  /system/lib/libstagefright.so (android::ACodec::BaseState::onMessageReceived(android::sp<android::AMessage> const&)+46)
I/DEBUG   (  263):     #03  pc 0005a851  /system/lib/libstagefright.so (android::ACodec::ExecutingState::onMessageReceived(android::sp<android::AMessage> const&)+364)
I/DEBUG   (  263):     #04  pc 000066a5  /system/lib/libstagefright_foundation.so (android::AHierarchicalStateMachine::onMessageReceived(android::sp<android::AMessage> const&)+80)
I/DEBUG   (  263):     #05  pc 00007439  /system/lib/libstagefright_foundation.so (android::ALooperRoster::deliverMessage(android::sp<android::AMessage> const&)+188)
I/DEBUG   (  263):     #06  pc 00006ced  /system/lib/libstagefright_foundation.so (android::ALooper::loop()+204)
I/DEBUG   (  263):     #07  pc 00011253  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+94)
I/DEBUG   (  263):     #08  pc 00010dcd  /system/lib/libutils.so
I/DEBUG   (  263):     #09  pc 0000e538  /system/lib/libc.so (__thread_entry+72)
I/DEBUG   (  263):     #10  pc 0000dc24  /system/lib/libc.so (pthread_create+160)
对getOutputBuffers的调用以某种方式触发了对本机窗口缓冲区几何体的更新,该几何体是输出曲面的一部分,而在我的例子中,该几何体没有定义。就这样坠机了

我没有高通MSM8974和安卓4.2.2的设备来重蹈覆辙,因此只能做出有根据的猜测。我查看了AOSP源代码libstagefright/ACodec.cpp,但找不到生成logcat输出的指令

I/ACodec  ( 8389): Calling native window update buffer geometry [1280 x 736]
也许我看错地方了,或者ACodec.cpp已经更新了。一些AOSP/MediaCodec的实现者能帮我解释一下吗?谢谢

编辑1:我的问题最初是针对法登的,他澄清了尼基莱特是上述问题的真实写照。我的问题经过编辑以反映这一点


编辑2:在与Nikhillite交换信息后,我自己做了一些研究。我用一个有根据的猜测更新了我的问题。如果法登或其他有知识的人能够证实或纠正我,并提供解决方案,那就太好了。

我并没有发布那个问题。原来的问题是,张贴的。我只是编辑它来改进格式。它被否决了,并且没有收到任何答案,所以它被社区自动删除♦ 一个月后。出于某种原因,unknownerror.org在抓取内容时使用了错误的用户名。我不能告诉你关于其他问题的任何事情,所以你可能应该编辑你的问题以获得更多的细节,看看我们是否能解决它。@fadden:谢谢你及时的澄清。原来的问题似乎是正确的。我想知道为什么它被否决和删除。我怀疑崩溃可能是由底层视频库引起的,很难排除故障。让我问真正的原始海报,看看他的崩溃发生了什么。@Nikhillite:你还在吗?@fadden:在my和Nikhillite的崩溃中,提交给MediaCodec的缓冲区都是64位对齐的。我想知道是否有办法将缓冲区对齐更改为128位?我的理解是,该应用程序无法配置MediaCodec的缓冲区队列。有解决办法吗?谢谢@hubier在你的例子中,在我的例子中,崩溃发生在使用'false'ie调用releaseOutputbuffer时。不要渲染到曲面,而是访问bytebuffer。在我的例子中,我直接将它渲染到一个曲面上,但我只是惊讶于它会崩溃并且无法访问bytebuffer。我认为有一种方法可以从egl缓冲区创建一个曲面,它可以直接让您访问解码数据rgba/argb。除此之外,由于h/w限制,我没有AOSP设置,因此无法进一步跟踪它,如果您有一个工作AOSP,只需对其进行黑客攻击并查看。。。
I/ACodec  ( 8389): Calling native window update buffer geometry [1280 x 736]