使用AVCodec kit 硬解时,OH\_VideoDecoder\_SetSurface要求输入nativeWindow,文档中介绍要求是XComponent对应的nativeWindow,这里可以不是由XComponent转换过来的nativeWindow吗,比起是否可以自己构造一个,类似于友商平台由SurfaceTexture构造的Surface,然后解码完后外部可以直接得到解码完后的纹理信息
使用AVCodec kit 硬解时,OH\_VideoDecoder\_SetSurface要求输入nativeWindow,文档中介绍要求是XComponent对应的nativeWindow,这里可以不是由XComponent转换过来的nativeWindow吗,比起是否可以自己构造一个,类似于友商平台由SurfaceTexture构造的Surface,然后解码完后外部可以直接得到解码完后的纹理信息
1 回答897 阅读✓ 已解决
1 回答1.2k 阅读
1 回答1k 阅读
1 回答985 阅读
1 回答967 阅读
1 回答852 阅读
1 回答812 阅读
这种场景可以参考使用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 获取数据。