NVIDIA-ISAAC-ROS / NVIDIA-ISAAC-ROS/isaac_ros_compression

isaac_ros_h264_encoder failed with NV24 input format

Open
#19 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
73
Forks
16
PR merge metrics
No merged PRs in 30d

Description

Hello
I am currently trying to set up the isaac_ros_h264_encoder to work with NV24 input format (to be able to feed more image information into the encoder).

According to the code in videoencoder_request.cpp, NV24 should be supported:
result &= registrar->parameter(input_format_, "input_format", "Input color format, nv12,nv24,yuv420planar", "nv12", gxf::EncoderInputFormat::kNV12);

I adapted the nitros_encoder_node.yaml accordingly by changing the appearances of nv12/NV12 to nv24/NV24.

However upon running the encoder pipeline, i get an error from "set_output_plane_format":

2025-01-08 10:15:44.081 ERROR /workspaces/isaac_ros-dev/src/isaac_ros_compression/isaac_ros_h264_encoder/gxf/codec/video_encoder/videoencoder_request.cpp@166: Error in set_output_plane_format, Error:-1

[component_container_mt-1] 2025-01-08 10:15:44.081 ERROR external/com_nvidia_gxf/gxf/std/entity_executor.cpp@630: Entity [CQAZECVWSZ_encoder] must be in Started, Tick Pending, Ticking or Idle stage before stopping. Current state is StartPending

[component_container_mt-1] Opening in BLOCKING MODE 

[component_container_mt-1] 2025-01-08 10:15:44.081 WARN  external/com_nvidia_gxf/gxf/std/entity_executor.cpp@539: Failed to start entity [CQAZECVWSZ_encoder]

[component_container_mt-1] 2025-01-08 10:15:44.081 WARN  external/com_nvidia_gxf/gxf/std/event_based_scheduler.cpp@329: Error while executing entity E125 named 'CQAZECVWSZ_encoder': GXF_FAILURE

[component_container_mt-1] 2025-01-08 10:15:45.081 ERROR external/com_nvidia_gxf/gxf/std/entity_executor.cpp@212: Entity with eid 113 not found!

It seems to me, that the nv12 format somehow is not supported, even though it can be used with the h264 encoder over gstreamer according to this NVIDIA guide.

About my system:

  • NVIDIA Jetson Orin NX 16 GB on a custom carrier board
  • Running Isaac ROS within the Docker, built as supposed with isaac_ros_common
  • I tested different video inputs (MIPI CSI-2 Camera devices & USB-Cameras)
  • Encoding with NV12 works fine.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with gxf/codec/video_encoder/videoencoder_request.cpp, especially the set_output_plane_format error, and compare its NV24 handling with the format configuration in nitros_encoder_node.yaml. Reproduce the reported pipeline failure on the stated Jetson setup, then verify that NV24 initialization succeeds while preserving the existing working NV12 behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, docker
Domain
audio-video-rtc, embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.