![](/img/trans.png)
[英]Developing H264 hardware decoder Android - Stagefright or OpenMax IL?
[英]H264 HW accelerated decoding in Android using stagefright library
我正在尝试使用带有Stagefright库的硬件对h264视频进行解码。
我在这里用了一个例子。 我在MedaBuffer
获取解码数据。 用于渲染MediaBuffer->data()
我试图AwesomeLocalRenderer
在AwesomePlayer.cpp。
但是屏幕上的图像失真
这是原始图片和崩溃图片的链接 。
并在示例中也尝试过`
sp<MetaData> metaData = mVideoBuffer->meta_data();
int64_t timeUs = 0;
metaData->findInt64(kKeyTime, &timeUs);
native_window_set_buffers_timestamp(mNativeWindow.get(), timeUs * 1000);
err = mNativeWindow->queueBuffer(mNativeWindow.get(),
mVideoBuffer->graphicBuffer().get(), -1);`
但是我的本机代码崩溃了。 我无法获得真实的照片或它损坏或黑屏。
提前致谢。
如果您使用的是HW
加速解码器,则组件输出端口上的分配将基于本Native Window
。 换句话说,输出缓冲区基本上是由Stagefright
框架传递的gralloc
句柄。 (参考: OMXCodec::allocateOutputBuffersFromNativeWindow
)。 因此, MediaBuffer
将返回的MediaBuffer
解释为普通的YUV
缓冲区。
如果是AwesomeLocalRenderer
,则在调用mTarget->render
时,框架将执行软件颜色转换,如下所示。 如果跟踪代码流,您会发现MediaBuffer
内容直接解释为YUV
缓冲区。
对于HW
加速编解码器,您应该使用AwesomeNativeWindowRenderer
。 如果您有使用AwesomeLocalRenderer
特殊条件,请突出显示相同的内容。 我可以适当地优化此响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.