HarmonyOS FFmpeg解码后的rgba数据绘制到Xcomponent有demo提供吗?
FFmpeg解码后的rgba数据怎么绘制到Xcomponent上面有没有参考的demo?
使用了NativeImage:
void OhosSWDisplay::CopyToNativeImage(int width, int height, uint8_t *ragaBuffer) {
if (nativeImage_ == nullptr) {
return;
}
// 获取生产者NativeWindow
OHNativeWindow *nativeWindow = OH_NativeImage_AcquireNativeWindow(nativeImage_);
if (!nativeWindow) {
ALOGE("OH_NativeImage_AcquireNativeWindow failed");
return;
}
// 设置NativeWindow的宽高。
int code = SET_BUFFER_GEOMETRY;
int32_t ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, width, height);
if (ret != 0) {
ALOGE("OH_NativeWindow_NativeWindowHandleOpt failed");
return;
}
// 从NativeWindow中获取NativeWindowBuffer。
OHNativeWindowBuffer *buffer = nullptr;
int fenceFd;
// 通过 OH_NativeWindow_NativeWindowRequestBuffer 获取 OHNativeWindowBuffer 实例
ret = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &buffer, &fenceFd);
if (ret != 0) {
ALOGE("OH_NativeWindow_NativeWindowRequestBuffer failed");
return;
}
BufferHandle *handle = OH_NativeWindow_GetBufferHandleFromNative(buffer);
if (!handle) {
ALOGE("OH_NativeWindow_GetBufferHandleFromNative failed");
return;
}
// 将生产的内容写入NativeWindowBuffer。
// 使用系统mmap接口拿到bufferHandle的内存虚拟地址
void *mappedAddr = mmap(handle->virAddr, handle->size, PROT_READ | PROT_WRITE, MAP_SHARED, handle->fd, 0);
if (mappedAddr == MAP_FAILED) {
ALOGE("mmap failed");
return;
}
uint32_t *pixel = static_cast<uint32_t *>(mappedAddr);
for (uint32_t x = 0; x < width; x++) {
for (uint32_t y = 0; y < height; y++) {
*pixel++ = *ragaBuffer++;
}
}
// 内存使用完记得去掉内存映射
int result = munmap(mappedAddr, handle->size);
if (result == -1) {
ALOGE("munmap failed");
}
// 将NativeWindowBuffer提交到NativeWindow。
// 设置刷新区域,如果Region中的Rect为nullptr,或者rectNumber为0,则认为NativeWindowBuffer全部有内容更改。
Region region{nullptr, 0};
// 通过OH_NativeWindow_NativeWindowFlushBuffer 提交给消费者使用,例如:显示在屏幕上。
OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, buffer, fenceFd, region);
// 用完需要销毁NativeWindow。
OH_NativeWindow_DestroyNativeWindow(nativeWindow);
}
但是在调用几次后OH_NativeWindow_NativeWindowRequestBuffer就是崩溃。
Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x006b6b6b6b6b6b6b
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 是否可以提供 使用opengles 渲染到XComponent 的demo
81浏览 • 1回复 待解决
ffmpeg调用 ,需要一个HarmonyOS调用ffmpeg的demo
413浏览 • 1回复 待解决
HarmonyOS XComponent绘制
17浏览 • 1回复 待解决
提供Webview demo有哪些?
228浏览 • 1回复 待解决
需要提供c++到js通信demo
627浏览 • 1回复 待解决
HarmonyOS HarmonyOS想实现阅读翻页功能,官方有什么demo可提供吗?
71浏览 • 1回复 待解决
HarmonyOS 想问下关于音视频编解码,有相关的c++示例demo吗
24浏览 • 1回复 待解决
HarmonyOS webrtc拉流,视频解码后的数据不对
449浏览 • 1回复 待解决
HarmonyOS 有什么系统方法可以让 ResourceColor 转换成普通. RGBA 吗?
66浏览 • 1回复 待解决
HarmonyOS 是否有提供从相册选择照片,然后绘制水印的示例
51浏览 • 1回复 待解决
请提供一个okhttp HarmonyOS化后的demo供参考
365浏览 • 1回复 待解决
HarmonyOS 华为授权登录,能提供相对应的完整Demo吗?
38浏览 • 1回复 待解决
HarmonyOS ffmpeg编译成功,运行到项目报错
703浏览 • 1回复 待解决
HarmonyOS Swiper能接口请求完成后更新数据吗,给个具体demo吗?
377浏览 • 1回复 待解决
HarmonyOS PlatformView更新后是否有最新Demo?
48浏览 • 1回复 待解决
XComponent、NativeDrawing实现2D图形绘制
1166浏览 • 1回复 待解决
解码后的数据帧送显的三种方式
373浏览 • 1回复 待解决
HarmonyOS 有类似骨架屏的实现demo吗
59浏览 • 1回复 待解决
HarmonyOS怎么反射调用,有demo吗
28浏览 • 1回复 待解决
求鸿蒙视频编码解码的具体demo
6583浏览 • 1回复 待解决
XComponent 使用demo,怎么动态创建、销毁 XComponent,及怎样将XComponent当做容器来使用
288浏览 • 1回复 待解决
HarmonyOS 有提供全局的loading加载框吗?
34浏览 • 1回复 待解决
【播放器】硬解码支持的Demo
1921浏览 • 1回复 待解决
可以参考如下demo:https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Native/NdkNativeWindow