HarmonyOS C++ 接口VideoDecoder软解相关咨询?

通过C++ 层VideoDecoder相关接口创建软件解码器(如下),可以正常解码数据。

OH_AVCapability *capability = OH_AVCodec_GetCapabilityByCategory(OH_AVCODEC_MIMETYPE_VIDEO_AVC, false, SOFTWARE);
const char *name = OH_AVCapability_GetName(capability);
videoDec = OH_VideoDecoder_CreateByName(name);

需要确认以下两个问题:

1、对于硬解,可以遵循参考帧数量,比如参考帧数量为2,一般send 2个数据,必然会有解码数据输出,但是软解这里需要多send几个数据,才会有解码数据输出,请问这里的逻辑?由于解码是异步的,不可能无限制的send数据,需要根据一个条件来决定是否等待解码数据,比如输入多少个数据,肯定会有解码数据输出,硬解可以通过参考帧数量判断,软解这里呢?

2、由于软件解码后的数据无法从OH\_AVBuffer *获取 OH\_NativeBuffer *,那就需要读取yuv数据,API文档中只有下列接口:

uint8_t *OH_AVBuffer_GetAddr(OH_AVBuffer *buffer); 
int32_t OH_AVBuffer_GetCapacity(OH_AVBuffer *buffer); 

实际需要的是类似ffmpeg AVFrame中的下列数据格式,请问如何获取?

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