【问题标题】:Is it possible to malloc the Gralloc memory in Android Java layer?是否可以在 Android Java 层中分配 Gralloc 内存?
【发布时间】:2015-09-08 06:50:32
【问题描述】:

我将“csd-0”和“csd-1”设置为MediaCodec by MediaFormat 如下:

byte[] sps = { 0, 0, 0, 1, 103, 100, 0, 40, -84, 52, -59, 1, -32, 17, 31, 120, 11, 80, 16, 16, 31, 0, 0, 3, 3, -23, 0, 0, -22, 96, -108 };
byte[] pps = { 0, 0, 0, 1, 104, -18, 60, -128 };
MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height);
format.setByteBuffer("csd-0", ByteBuffer.wrap(sps));
format.setByteBuffer("csd-1", ByteBuffer.wrap(pps));
...

但我得到了这样的错误:

E/MtkOmxVenc( 6724): Error: BufferType is not Gralloc Source !!!!
F/libc    ( 6724): Fatal signal 11 (SIGSEGV) at 0x28006467 (code=1), thread 7500 (MtkOmxVencEncod)

所以我想尝试设置 Gralloc 源来修复它。有什么建议吗?

【问题讨论】:

    标签: android encode android-mediacodec


    【解决方案1】:

    gralloc 是用于分配图形缓冲区的内存分配器。它由内核驱动程序提供。您传入宽度、高度和颜色格式,它会返回对具有必要属性的缓冲区的引用,同时考虑到任何特定于平台的填充和对齐限制。

    编解码器特定的数据值不应保存在 gralloc 缓冲区中。 CTS EncodeDecodeTest 确实运行 setByteBuffer(),所以如果它完全坏了我会感到惊讶。

    我的猜测是 MtkOmxVenc 有一个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-20
      • 2020-02-19
      • 2014-01-06
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      相关资源
      最近更新 更多