【发布时间】:2015-12-04 00:25:18
【问题描述】:
我正在使用 MediaCodec API 开发 H.264 解码器。我正在尝试在 JNI 层中调用 MediaCodec java API,例如:
void Decompress(const unsigned char *encodedInputdata, unsigned int inputLength, unsigned char **outputDecodedData, int &width, int &height) {
// encodedInputdata is encoded H.264 remote stream
// .....
// outputDecodedData = call JNI function of MediaCodec Java API to decode
// .....
}
稍后我会将outputDecodedData 发送到我现有的视频渲染管道并在Surface 上进行渲染。
我希望我能够编写一个 Java 函数来解码输入流,但这将是一个挑战 -
- resource 声明 -
...你不能对解码的视频帧做任何事情,但要渲染它们 浮出水面
这里Surface 已传递decoder.configure(format, surface, null, 0) 以在表面上渲染输出ByteBuffer 并声明We can't use this buffer but render it due to the API limit。
那么,我能否将输出 ByteBuffer 发送到本机层以转换为 unsigned char* 并传递给我的渲染管道,而不是传递 Surface 或 configure()?
【问题讨论】:
标签: android c++ android-mediacodec