HarmonyOS 硬解是否可以自己构造nativeWindow,然后将解码后的数据转成纹理形式?

使用AVCodec kit 硬解时,OH\_VideoDecoder\_SetSurface要求输入nativeWindow,文档中介绍要求是XComponent对应的nativeWindow,这里可以不是由XComponent转换过来的nativeWindow吗,比起是否可以自己构造一个,类似于友商平台由SurfaceTexture构造的Surface,然后解码完后外部可以直接得到解码完后的纹理信息

阅读 603
1 个回答

这种场景可以参考使用nativeimage

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/native-image-guidelines-V5

1.在OnSurfaceCreatedCB回调函数内根据获取window,根据window初始化EGL环境

2.创建OH\_NativeImage实例。

3.获取OH\_NativeImage对应的数据生产者端NativeWindow。

4.根据解码输出的视频分辨率设置NativeWindow的宽高。

5.调用OH\_VideoDecoder\_SetSurface(decoder,NativeWindow);

6.调用 OH\_VideoDecoder\_RenderOutputBuffer

7.从NativeImage(NativeWindow) 获取输出数据。

8.操作NativeImage,将数据内容更新到OpenGL外部纹理上

获取解码器输出数据的方法:

a.从NativeWindow中获取NativeWindowBuffer.

b.从NativeWindowBuffer 获取数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进