HarmonyOS videodecoder解码API和nativewindow api 使用问题
解码模块:解码器创建后注册的回调函数中OH_AVCodecOnNeedInputBuffer和OnNewOutputBuffer 回调index的时机具体是在什么时间?
需要以队列形式储存吗?
OH_AVBuffer_GetAddr函数的解释获取到的是buffer的虚拟地址,是否可以进行数据拷贝?
渲染模块: HarmonyOS系统中使用XComponent控件,sdk层使用XComponent控件创建view,native层需要通过XComponent相关接口获取nativewindow实例吗?
nativewindow中支持传metadata的接口弃用,使用 videodecoder 和 nativewindow 是否可以进行vivid解码播放?还是要进行额外的操作?
ohnativewindow有类似 ANativeWindow_lock、 ANativeWindow_unlockAndPost的接口吗?
gitee上开源ijkplayer使用ffmpeg软解之后使用EGL和nativewindow进行渲染,软解码之后如果不使用EGL的话是否可以渲染?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS关于API使用的问题
389浏览 • 1回复 待解决
HarmonyOS VideoDecoder无法找到输入视频文件或数据的API
171浏览 • 1回复 待解决
HarmonyOS API调用崩溃问题
454浏览 • 1回复 待解决
HarmonyOS 获取系统的时区和语言使用哪个api
24浏览 • 1回复 待解决
HarmonyOS VideoDecoder使用OpenGL渲染
168浏览 • 1回复 待解决
HarmonyOS 关于C API的问题
190浏览 • 1回复 待解决
HarmonyOS 使用convertXML.convertToJSObject()api遇到解析错误问题
249浏览 • 1回复 待解决
使用WebviewController.loadUrl时,由于url是编码过的,是否有url解码的api?
2011浏览 • 1回复 待解决
元服务的api集和应用api集 如何区分
1645浏览 • 1回复 待解决
HarmonyOS C++ VideoDecoder组件使用
184浏览 • 1回复 待解决
开发者使用HarmonyOS时,是否需要考虑接口兼容性,例如API10和API11
1922浏览 • 1回复 待解决
HarmonyOS视频解码问题
694浏览 • 1回复 待解决
API9和API10实现沉浸式窗口的方式
411933浏览 • 1回复 待解决
HarmonyOS api8 是否支持使用js api来开发输入法?
3021浏览 • 1回复 待解决
HarmonyOS消息订阅该使用哪个api
392浏览 • 1回复 待解决
HarmonyOS 使用华为登录API 报错1001500001
491浏览 • 1回复 待解决
HarmonyOS 使用 api11 地图不显示
501浏览 • 1回复 待解决
HarmonyOS API11限制使用标准库
346浏览 • 1回复 待解决
HarmonyOS调用相机设备API获取失败问题
439浏览 • 1回复 待解决
对于获取权限的api的问题
1817浏览 • 1回复 待解决
HarmonyOS CBOR编解码问题
381浏览 • 1回复 待解决
HarmonyOS uri编码解码问题
17浏览 • 1回复 待解决
iimsimsiHarmonyOS 获取和清理缓存的API方法
371浏览 • 1回复 待解决
解码模块:https://gitee.com/harmonyos_samples/AVCodecVideo
1、具体实现原理:解码器Start后,解码器每拿到一帧,OnNeedInputBuffer就会被调起一次,avcodec框架会给用户一个OH_AVBuffer。
在输入回调中,用户需手动把帧bufer、index存入输入队列中,并同时输入线程解锁。
在输入线程中,把上一步的帧信息储存为bufferInfo后,pop出队。
在输入线程中,使用上一步的bufferInfo,调用ReadSample接口解封装帧数据。
在输入线程中,使用解封装后的bufferInfo,调用解码的PushInputData接口,此时这片buffer用完,返回框架,实现buffer轮转。
PushInputData后,这一帧开始解码,每解码完成一帧,输出回调会被调起一次,用户需手动把帧buffer、index存入输出队列中
在输出线程中,把上一步的帧信息储存为bufferInfo后,pop出队。
在输出线程中,调用FreeOutputData接口后,就会送显并释放buffer。释放的buffer会返回框架,实现buffer轮转。2、 队列形式以及储存都不是必须的。用队列方便,储存是为了配合线程用条件变量来控制,避免在进行stop()等耗时操作时,出现阻塞死锁等问题