C++ API works wrong with decode dependencies although process of building from sources is full and successful
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- cmake, cpp, docker
调研方向
先从 example/nvimtrans 和 external/build_deps.sh 开始,特别是第 39 行,然后检查 libtiff 的构建以及用于 C++ API 的 CMake 配置。使用提供的命令重现不支持格式错误,并将其与依赖项构建中的链接器失败进行比较。当依赖项无需手动编辑脚本即可构建,并且示例能够成功处理 JPEG 时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
Version
v0.4.1
Describe the bug.
After I built successfully C++ API on Jetson AGX Orin (Jetpack 6.0) when I run the example by the command-line:
./example/nvimtrans/nvimtrans -i ../example/assets/images/tabby_tiger_cat.jpg -o /app/test.jpg -v 5
I have received the error message as below:
nvImageCodec version: 0.4.1
- extension API version: 0.4.0
- CUDA Runtime version: 12.2
Using GPU: Orin with Compute Capability 8.7
[INFO] [nvimgcodec] Registering extension nvimgcodec_builtin_parsers version:0.4.1
[INFO] [nvimgcodec] Framework is registering parser (id:bmp_parser codec:bmp)
[INFO] [nvimgcodec] Codec bmp not yet registered, registering for first time
[INFO] [nvimgcodec] Framework is registering parser (id:jpeg_parser codec:jpeg)
[INFO] [nvimgcodec] Codec jpeg not yet registered, registering for first time
[INFO] [nvimgcodec] Framework is registering parser (id:jpeg2k_parser codec:jpeg2k)
[INFO] [nvimgcodec] Codec jpeg2k not yet registered, registering for first time
[INFO] [nvimgcodec] Framework is registering parser (id:png_parser codec:png)
[INFO] [nvimgcodec] Codec png not yet registered, registering for first time
[INFO] [nvimgcodec] Framework is registering parser (id:pnm_parser codec:pnm)
[INFO] [nvimgcodec] Codec pnm not yet registered, registering for first time
[INFO] [nvimgcodec] Framework is registering parser (id:tiff_parser codec:tiff)
[INFO] [nvimgcodec] Codec tiff not yet registered, registering for first time
[INFO] [nvimgcodec] Framework is registering parser (id:webp_parser codec:webp)
[INFO] [nvimgcodec] Codec webp not yet registered, registering for first time
Loading /app/nvImageCodec/build/./example/nvimtrans/../example/assets/images/tabby_tiger_cat.jpg file
Error: Unsupported file format
[INFO] [nvimgcodec] Unregistering extension nvimgcodec_builtin_parsers version:0.4.1
[INFO] [nvimgcodec] Framework is unregistering parser (id:bmp_parser codec:bmp)
[INFO] [nvimgcodec] Framework is unregistering parser (id:jpeg_parser codec:jpeg)
[INFO] [nvimgcodec] Framework is unregistering parser (id:jpeg2k_parser codec:jpeg2k)
[INFO] [nvimgcodec] Framework is unregistering parser (id:png_parser codec:png)
[INFO] [nvimgcodec] Framework is unregistering parser (id:pnm_parser codec:pnm)
[INFO] [nvimgcodec] Framework is unregistering parser (id:tiff_parser codec:tiff)
[INFO] [nvimgcodec] Framework is unregistering parser (id:webp_parser codec:webp)
While I checked extensions, it had fully all above dependencies. The following is a trace of my build and installation.
Firstly, I built a docker image using Dockerfile below:
ARG BASE_IMAGE=nvcr.io/nvidia/deepstream:7.0-triton-multiarch
FROM ${BASE_IMAGE}
ENV DEBIAN_FRONTEND=noninteractive
ARG LIB_PREFIX=/usr/local/
ARG CMAKE_VERSION=3.24.3
ENV PATH="/usr/local/cuda-12.2/bin:${PATH}"
ENV LD_LIBRARY_PATH="${LIB_PREFIX}/lib/:/usr/lib/aarch64-linux-gnu/tegra/:${LD_LIBRARY_PATH}"
RUN rm /etc/apt/sources.list.d/cuda.list || true
RUN apt update && \
apt install -y python3-clang python3-pip wget git && \
apt install -y --no-install-recommends python3-pytest
WORKDIR /tmp
RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz && \
tar xvf cmake-${CMAKE_VERSION}.tar.gz && \
cd cmake-${CMAKE_VERSION} && \
./bootstrap --parallel=4 && \
make -j$(nproc) && make install && ldconfig && \
cd .. && rm -f cmake-${CMAKE_VERSION}.tar.gz && rm -rf cmake-${CMAKE_VERSION}
RUN wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.13.0-beta/cvcuda-lib-0.13.0_beta-cuda12-aarch64-linux.tar.xz && \
wget https://github.com/CVCUDA/CV-CUDA/releases/download/v0.13.0-beta/cvcuda-dev-0.13.0_beta-cuda12-aarch64-linux.tar.xz && \
apt install -y ./cvcuda-lib-0.13.0_beta-cuda12-aarch64-linux.deb ./cvcuda-dev-0.13.0_beta-cuda12-aarch64-linux.deb && \
rm cvcuda-*
RUN wget https://github.com/NixOS/patchelf/releases/download/0.17.2/patchelf-0.17.2.tar.gz && \
tar -xvzf patchelf-0.17.2.tar.gz && \
cd patchelf-0.17.2 && \
./configure --prefix=/usr/local/ --docdir=/usr/share/doc/patchelf-0.17.2 && \
make -j$(nproc) && make install && ldconfig && \
cd .. && rm -rf patchelf-0.17.2*
RUN python3 -m pip install sphinx==5.0.0 sphinx_rtd_theme breathe future setuptools wheel clang==14.0 flake8 && \
python3 -m pip install libclang==14.0.1
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES all
RUN apt --fix-broken install
WORKDIR /app
In the container based from the above image, I set up nvImageCodec C++ API as following:
git clone https://github.com/NVIDIA/nvImageCodec.git && \
cd nvImageCodec && \
git checkout v0.4.1 && git switch -c v0.4.1 && \
git submodule update --init --recursive --depth 1 && \
cd external/libtiff/build/ && \
cmake .. && make -j$(nproc) && make install
Because when I directly executed ./build_deps.sh to install libtiff that made error when I build the API:
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMASetupEncode':
tif_lzma.c:(.text+0xb4): undefined reference to `lzma_end'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMASetupDecode':
tif_lzma.c:(.text+0x104): undefined reference to `lzma_end'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMACleanup':
tif_lzma.c:(.text+0x170): undefined reference to `lzma_end'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMAVSetField':
tif_lzma.c:(.text+0x1fc): undefined reference to `lzma_lzma_preset'
/usr/bin/ld: tif_lzma.c:(.text+0x238): undefined reference to `lzma_stream_encoder'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMAEncode':
tif_lzma.c:(.text+0x384): undefined reference to `lzma_code'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMAPostEncode':
tif_lzma.c:(.text+0x564): undefined reference to `lzma_code'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMAPreDecode':
tif_lzma.c:(.text+0x6e0): undefined reference to `lzma_stream_decoder'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMAPreEncode':
tif_lzma.c:(.text+0x864): undefined reference to `lzma_stream_encoder'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `LZMADecode':
tif_lzma.c:(.text+0x9ec): undefined reference to `lzma_code'
/usr/bin/ld: tif_lzma.c:(.text+0xa04): undefined reference to `lzma_memusage'
/usr/bin/ld: tif_lzma.c:(.text+0xa14): undefined reference to `lzma_stream_decoder'
/usr/bin/ld: /usr/local/lib/libtiff.a(tif_lzma.c.o): in function `TIFFInitLZMA':
tif_lzma.c:(.text+0xd98): undefined reference to `lzma_lzma_preset'
collect2: error: ld returned 1 exit status
make[2]: *** [test/CMakeFiles/nvimgcodec_tests.dir/build.make:693: test/nvimgcodec_tests] Error 1
make[1]: *** [CMakeFiles/Makefile2:1002: test/CMakeFiles/nvimgcodec_tests.dir/all] Error 2
make: *** [Makefile:166: all] Error 2
This issue will be fixed if I build it from source in the repo and then comment line 39 in the build_deps.sh file.
cd ../../../ && ./external/build_deps.sh && \
mkdir build && cd build && \
cmake .. -DCMAKE_BUILD_TYPE=Release && \
make -j$(nproc) && \
cmake --install . --config Release --prefix /opt/nvidia/nvimgcodec_cuda12
Please help me correct my processing if it is wrong, or help me debug this issue.
Thanks all in advance.
Minimum reproducible example
Environment details
Relevant log output
Other/Misc.
No response
Check for duplicates
- I have searched the open bugs/issues and have found no duplicates for this bug report
- 主要语言
- Jupyter Notebook
- 星标
- 164
- 派生
- 26
- 平均合并
- 27 分钟
- 30 天内合并 PR
- 1
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NVIDIA/nvImageCodec 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 79/100
NVIDIA/nvImageCodec#65 · 1 条评论 ·
-
难度 3/5 1-2 天 新手友好度 72/100
NVIDIA/nvImageCodec#66 · 1 条评论 ·
-
难度 5/5 一周以上 新手友好度 38/100
NVIDIA/nvImageCodec#64 ·
-
nvjpeg2k error 3 (Bad jpeg) on valid JPEG 2000 aerial photos that OpenJPEG and ffmpeg decode identically可能已有人在做 @mkepa-nv 于 5 天前认领。 未关闭bug
NVIDIA/nvImageCodec#63 · 2 条评论 · 已指派 1 人 ·
-
难度 5/5 一周以上 新手友好度 8/100
NVIDIA/nvImageCodec#60 ·
查看 NVIDIA/nvImageCodec 的全部 Issue
相似的 Issue
-
S3: friction & debt ws:tooling
难度 2/5 1-3 小时 新手友好度 77/100
MedakaLang/medaka#5247 ·
维护者通常 1 天内回复
-
ca-certificates_data-with-certs slice does not have newline at the end in /etc/ca-certificates.conf未关闭
难度 2/5 1-3 小时 新手友好度 68/100
canonical/chisel-releases#1510 ·
维护者通常 2 天内回复
-
maintenance
难度 2/5 1-3 小时 新手友好度 78/100
assistant-ui/assistant-ui#10496 · 1 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 77/100
bmad-code-org/bmad-builder#127 ·
-
feature ➕
难度 2/5 1-3 小时 新手友好度 75/100
comunica/comunica#1969 · 1 条评论 ·
维护者通常 1 天内回复