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
298浏览 • 1回复 待解决
ffmpeg调用 ,需要一个HarmonyOS调用ffmpeg的demo
719浏览 • 1回复 待解决
HarmonyOS XComponent绘制
198浏览 • 1回复 待解决
HarmonyOS 有视频渲染,基于XComponent,OpenGL ES使用native接口的的demo,或者使用示例吗
323浏览 • 1回复 待解决
提供Webview demo有哪些?
357浏览 • 1回复 待解决
需要提供c++到js通信demo
843浏览 • 1回复 待解决
HarmonyOS有ArkTS可以直接调用的ffmpeg库吗?
347浏览 • 1回复 待解决
使用HarmonyOS提供的lycium无法成功编译ffmpeg
261浏览 • 1回复 待解决
HarmonyOS 想问下关于音视频编解码,有相关的c++示例demo吗
184浏览 • 1回复 待解决
HarmonyOS webrtc拉流,视频解码后的数据不对
699浏览 • 1回复 待解决
HarmonyOS HarmonyOS想实现阅读翻页功能,官方有什么demo可提供吗?
293浏览 • 1回复 待解决
HarmonyOS 有什么系统方法可以让 ResourceColor 转换成普通. RGBA 吗?
372浏览 • 1回复 待解决
HarmonyOS 是否有提供从相册选择照片,然后绘制水印的示例
195浏览 • 1回复 待解决
XComponent、NativeDrawing实现2D图形绘制
1438浏览 • 1回复 待解决
HarmonyOS ffmpeg编译成功,运行到项目报错
1081浏览 • 1回复 待解决
求鸿蒙视频编码解码的具体demo
6747浏览 • 1回复 待解决
解码后的数据帧送显的三种方式
593浏览 • 1回复 待解决
HarmonyOS color文件不支持rgba吗
211浏览 • 1回复 待解决
请提供一个okhttp HarmonyOS化后的demo供参考
592浏览 • 1回复 待解决
XComponent 使用demo,怎么动态创建、销毁 XComponent,及怎样将XComponent当做容器来使用
551浏览 • 1回复 待解决
HarmonyOS Swiper能接口请求完成后更新数据吗,给个具体demo吗?
575浏览 • 1回复 待解决
HarmonyOS PlatformView更新后是否有最新Demo?
447浏览 • 1回复 待解决
HarmonyOS 华为授权登录,能提供相对应的完整Demo吗?
205浏览 • 1回复 待解决
【播放器】硬解码支持的Demo
2105浏览 • 1回复 待解决
可以参考如下demo:https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Native/NdkNativeWindow