nvjmi

所属分类:GPU/显卡
开发工具:C++
文件大小:112KB
下载次数:0
上传日期:2022-07-25 06:47:48
上 传 者sh-1993
说明:  封装Jetson Multimedia API的编解码库,基于[https: github.com jocover jetson- ffmpeg基础进行的修改,未集成于ffmpeg,可单独使用。](https: github.com jocover jetson- ffmpeg%E5%9F%BA%E7%A1%80%E8%BF%9B%E8%A1%8C%E7%9A%84%E4%BF%AE%E6%94%B9%EF%BC%8C%E6%9C%AA%E9%9B%86%E6%88%90%E4%BA%8Effmpeg%EF%BC%8C%E5%8F%AF%E5%8D%95%E7%8B%AC%E4%BD%BF%E7%94%A8%E3%80%82)
(The codec library encapsulating the Jetson Multimedia API, based on [https: github.com jocover jetson - ffmpeg basis, is not integrated into ffmpeg and can be used alone.] (https: github.com jocover jetson - ffmpeg% E5% 9F% BA% E7% A1% 80% E8% BF% 9B% E8% A1% 8C% E7% 9A% 84% E4% BF% AE% E6% 94% B9% EF% BC% 8C% E6% 9C% AA% E9% 9B% 86% E6% 88% 90% E4% BA% 8Effmpeg% EF% BC% 8C% E5% 8F% AF% E5% 8D% 95% E7% 8B% AC% E4% BD% BF% E7% 94% A8% E3% 80% 82))

文件列表:
LICENSE (1062, 2022-07-25)
Makefile (3351, 2022-07-25)
common (0, 2022-07-25)
common\NvBuffer.cpp (11642, 2022-07-25)
common\NvElement.cpp (2324, 2022-07-25)
common\NvElementProfiler.cpp (8073, 2022-07-25)
common\NvLogging.cpp (1692, 2022-07-25)
common\NvV4l2Element.cpp (6849, 2022-07-25)
common\NvV4l2ElementPlane.cpp (24530, 2022-07-25)
common\NvVideoConverter.cpp (10101, 2022-07-25)
common\NvVideoDecoder.cpp (11785, 2022-07-25)
common\NvVideoEncoder.cpp (28193, 2022-07-25)
converter (0, 2022-07-25)
converter\cuda_converter.cu (8662, 2022-07-25)
converter\cuda_converter.h (759, 2022-07-25)
converter\fd_egl_frame_map.cpp (4834, 2022-07-25)
converter\fd_egl_frame_map.h (3108, 2022-07-25)
converter\vic_onverter.h (877, 2022-07-25)
cuda_utils (0, 2022-07-25)
cuda_utils\cudaMappedMemory.h (5948, 2022-07-25)
cuda_utils\cudaUtility.h (4048, 2022-07-25)
image (0, 2022-07-25)
image\imageFormat.h (8559, 2022-07-25)
image\imageFormat.inl (6444, 2022-07-25)
include (0, 2022-07-25)
include\NvBuffer.h (11106, 2022-07-25)
include\NvElement.h (4342, 2022-07-25)
include\NvElementProfiler.h (7915, 2022-07-25)
include\NvLogging.h (7605, 2022-07-25)
include\NvV4l2Element.h (7191, 2022-07-25)
include\NvV4l2ElementPlane.h (22067, 2022-07-25)
include\NvVideoConverter.h (9451, 2022-07-25)
include\NvVideoDecoder.h (9976, 2022-07-25)
include\NvVideoEncoder.h (22739, 2022-07-25)
include\libv4l2.h (4726, 2022-07-25)
include\nvbuf_utils.h (18779, 2022-07-25)
include\v4l2_nv_extensions.h (65403, 2022-07-25)
log (0, 2022-07-25)
... ...

# nvjmi:palm_tree: ## 1. 简介 封装Jetson Multimedia API的编解码库,基于 https://github.com/jocover/jetson-ffmpeg 和 https://github.com/dusty-nv/jetson-utils 基础进行的修改,未集成于ffmpeg,可单独使用。功能如下。 1. 支持H.2***解码。 2. 支持解码后直接硬件完成缩放操作。 3. 支持解码后直接硬件完成颜色空间转换操作。 4. 支持Jetpack 4.3、4.4。 5. 对于Jetpack 4.5需要使用对应的multimedia api,即使用Jetpack 4.5中/usr/src/jetson_multimedia_api更新include/和common/中的文件。 当前仅完成解码器的修改,还未完成编码器的修改。 关于解码API的使用,详见nvjmi.h接口说明。 ## 2. 使用说明 1. 编译 直接使用make编译nvjmi动态库。 2. 示例 nvjmi接口使用示例如下: ```cpp if(jmi_ctx_ == nullptr) { jmi::nvJmiCtxParam jmi_ctx_param{}; if(rsz_w > 0 && rsz_h > 0){ jmi_ctx_param.resize_width = rsz_w; jmi_ctx_param.resize_height = rsz_h; } if ("H2***" == m_pRtspClient->GetCodeName()) { jmi_ctx_param.coding_type =jmi::NV_VIDEO_CodingH2***; } else if ("H265" == m_pRtspClient->GetCodeName()) { jmi_ctx_param.coding_type = jmi::NV_VIDEO_CodingHEVC; } string dec_name = "dec-" + session_id(); jmi_ctx_ = jmi::nvjmi_create_decoder(dec_name.data(), &jmi_ctx_param); } //基于jetson nvdec解码 jmi::nvPacket nvpacket; nvpacket.payload_size = dataLen; nvpacket.payload = data; int ret{}; ret = jmi::nvjmi_decoder_put_packet(jmi_ctx_, &nvpacket); if(ret == jmi::NVJMI_ERROR_STOP) { LOG_INFO(VDO_RTSP_LOG, "[{}] frameCallback: nvjmi decode error, frame callback EOF!", m_ip); } while (ret >= 0) { jmi::nvFrameMeta nvframe_meta; ret = jmi::nvjmi_decoder_get_frame_meta(jmi_ctx_, &nvframe_meta); if (ret < 0) break; Buffer buf; buf.allocate(nvframe_meta.width, nvframe_meta.height, 3, nvframe_meta.payload_size / nvframe_meta.height); jmi::nvjmi_decoder_retrieve_frame_data(jmi_ctx_, &nvframe_meta, (void*)buf.getData()); } ``` ## 3. 常见问题 1. **Q:** 出现错误nvbuf_utils: Could not get EGL display connection,并且eglGetDisplay(EGL_DEFAULT_DISPLAY)返回NULL? **A:** 1>在ssh终端输入unset DISPLAY,然后再运行程序即可。 2>vim /etc/profile,添加unset DISPLAY,然后souce /etc/profile生效,然后重启机器reboot。

近期下载者

相关文件


收藏者