How do I change the output of ISP?

Please provide the following info (check/uncheck the boxes after clicking “+ Create Topic”):
Software Version
DRIVE OS Linux 5.2.0
DRIVE OS Linux 5.2.0 and DriveWorks 3.5
NVIDIA DRIVE™ Software 10.0 (Linux)
NVIDIA DRIVE™ Software 9.0 (Linux)
other DRIVE OS version

Target Operating System

Hardware Platform
NVIDIA DRIVE™ AGX Xavier DevKit (E3550)
NVIDIA DRIVE™ AGX Pegasus DevKit (E3550)

SDK Manager Version

Host Machine Version
native Ubuntu 18.04


I want to get an image of yuv444_8b or RGBA_8b using sipl_camera sample.
I changed the AllocateAndRegisterBuffers() of CNvSIPLMaster.hpp as follows.

        if (isp0Enabled) {
        // Get attributes
        NvSIPLImageAttr attr;
        status = m_pCamera->GetImageAttributes(pip, INvSIPLClient::ConsumerDesc::OutputType::ISP0, attr);
        if (status != NVSIPL_STATUS_OK) {
            LOG_ERR("GetImageAttributes failed\n");
            return status;
        NVM_SURF_FMT_SET_ATTR_YUV (surfFormatAttrs, YUV, 444, SEMI_PLANAR, UINT, 8, BL);

        attr.surfaceType =NvMediaSurfaceFormatGetType(surfFormatAttrs, NVM_SURF_FMT_ATTR_MAX);

        std::vector<NvMediaImage*> images;
        status = AllocateImages(pDevice, attr.surfaceType, attr.surfaceAllocAttr, images);
        if (status != NVSIPL_STATUS_OK) {
            LOG_ERR("AllocateImages failed\n");
            return status;
        printf("resigter image start \n");
        status = m_pCamera->RegisterImages(pip, INvSIPLClient::ConsumerDesc::OutputType::ISP0, images);
        printf("resigter image end \n");
        if (status != NVSIPL_STATUS_OK) {
            LOG_WARN("RegisterImageGroups failed\n");
            return status;

But when I run it, I get an error in the RegisterAutoControl().
How can I change the output of ISP to something like YUV444?

./nvsipl_camera -c “IMX390_RGGB_CPHY_x4” -m “0x0001 0x0000 0x0000 0x0000” -d 0 -w 1 --disableISP1Output -f “test.yuv”
nvsipl_camera: Opened NITO file for module “IMX390_RGGB”
[SiplControlIspCheckImageInfo:210] [SiplControlIspCheckImageInfo:210] Bad input parameter : Out SURF
[SiplControlIspInitRangeCheck:1439] [SiplControlIspInitRangeCheck:1439] Bad input parameter
[SiplControlIspInit:68] [SiplControlIspInit:68] Bad init parameter
Main: CNvMISPBlock.cpp: 216: RegisterAutoControlPlugin: createSiplControlIsp: Failed to create Sipl Control ISP
Main: CNvMSensorPipeline.cpp: 263: RegisterAutoControlPlugin: ISP block register auto control plugin failed
Main: CNvMCamera.cpp: 342: RegisterAutoControlPlugin: RegisterAutoControlPlugin type:0 failed for pipeline:0
nvsipl_camera: ERROR: SetSiplControl(NV) failed for ISP output of sensor:0

In addition, I would like to know how to use the data of NVM_SURF_ATTR_COLOR_STD_SENSOR_RGBA.

Hi @N.Miya ,

Could you elucidate your use case? the unprocessed output of your image sensor isn’t raw but yuv444? What’s the input format of your camera sensor?

Our image sensor output RGGB raw data.
I want to get a color image from raw using HW ISP.

I want a color image of YUV444 or RGBA that does not deteriorate the image quality because it deteriorates with YUV420.

Hi @N.Miya ,

Are you trying to bring up a new camera module/sensor? That’s not supported in the forum and Sony team works directly with nvidia camera team for that.

Hi @VickNV

Are you trying to bring up a new camera module/sensor?

No. I think IMX390 is supported by DriveOS5.2.

In the sipl_camera sample, ISP converts raw to yuv420.
I want to change the ISP setting from yuv420 to yuv444.

Does the ISP not support the output of yuv444?

Please try if nvsipl_reprocess can do the process. Thanks.

Hi, @VickNV
Thank you for your reply.

I tried nvsipl_reprocess and confirmed that it can output yuv444_8b.
What do I need to change to do the same with sipl_camera?