# SHDR, EIS, and LDC concurrency use cases

Source: [https://docs.qualcomm.com/doc/80-70015-17/topic/shdr_eis_and_ldc_concurrency_use_cases_public.html](https://docs.qualcomm.com/doc/80-70015-17/topic/shdr_eis_and_ldc_concurrency_use_cases_public.html)

This section describes the possible concurrency use cases for running SHDR, EIS, and
        LDC.

The following are the combinations available to run SHDR, EIS, and LDC in
            concurrency:

| GST command option | Description |
| --- | --- |
| `vhdr=2 eis=1` | SHDR v3 applied on all streams. EIS applied on first<br>                                stream |
| `vhdr=2 eis=2` | SHDR v3 and EIS applied on two streams |
| `vhdr=2 ldc=1` | SHDR v3+ LDC applied on all (1 or 2) streams |
| `vhdr=1 ldc=1` | SHDR v2+ LDC applied on all (1 or 2) streams |
| `eis=1 vhdr=2 ldc=1` | SHDRV3 applied on two streams. EIS+LDC applied on first<br>                                stream |
| `eis=2 vhdr=2 ldc=1` | SHDRV3+EIS+LDC applied on two streams |

Note: Connect to the device console using SSH. See [How To SSH?](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-254/how_to.html#use-ssh) for instructions.

To collect the log, run the following command in the
            device:

    # journalctl -f > /opt/log.txtCopy to clipboard

## SHDR v3 and EIS concurrency use case

SHDR and EIS concurrency is enabled with SHDR v3 only. This feature uses SHDR v3
                sensor mode and does SHDR v3 processing first followed by EIS processing.

Use the following GStreamer command to enable the SHDR v3+EIS single stream use
                case:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=1 vhdr=2 ! video/x-raw\(memory:GBM\),format=NV12,\
    width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=5 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! \
    mp4mux ! filesink location=/opt/cam_1080p.mp4
    Copy to clipboard

Verify the SHDR v3 + EIS single stream use case using the following
                logs:

    cam-server[882]: [INFO]: RecorderCameraContext : OpenCamera: EIS on single stream is ON..
    cam-server[882]: CamX: [ INFO]882 975 [CHI    ] camxchinodeeisdgv26.cpp:1346 Initialize() m_nodeCaps 131072
    cam-server[882]: CamX: [CORE_CFG]882 1877 [CORE   ] camxpipeline.h:3024 SetPipelineStatus() RealTimeYUVSHDREISIOT_0 status is now PipelineStatus::STREAM_ONCopy to clipboard

Use the following GStreamer command to enable the SHDR v3 + EIS on two streams use
                case:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=2 vhdr=2 video_0::type=preview ! \
    video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! \
    v4l2h264enc capture-io-mode=5 output-io-mode=5 extra-controls="controls,video_bitrate=6000000,\
    video_bitrate_mode=0;" ! h264parse ! mp4mux ! filesink location=/opt/cam_prev.mp4 \
    camsrc. ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,\
    framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=5 \
    output-io-mode=5 extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! \
    h264parse ! mp4mux ! filesink location=/opt/cam_vid.mp4
    Copy to clipboard

Verify SHDR v3 + EIS on two streams use case using the following
                logs:

    cam-server[882]: [INFO]: RecorderCameraContext : OpenCamera: EIS on dual stream is ON..
    cam-server[882]: CamX: [ INFO]882 952 [CHI    ] camxchinodeeisdgv26.cpp:1346 Initialize() m_nodeCaps 131072
    cam-server[882]: CamX: [CORE_CFG]882 2058 [CORE   ] camxpipeline.h:3024 SetPipelineStatus() RealTimeYUVSHDREISIOT_0 status is now PipelineStatus::STREAM_ON
    Copy to clipboard

## SHDR v3 and LDC concurrency use case

This feature uses SHDR v3 sensor mode and does SHDR v3 processing followed by LDC
                processing.

Use the following GStreamer command to enable this use
                case:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc vhdr=2 ldc=1 ! video/x-raw\(memory:GBM\),\
    format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=5 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! mp4mux ! \
    filesink location=/opt/cam_1080p.mp4Copy to clipboard

Verify this use case is selected using the following
                logs:

    cam-server[2089]: [INFO]: RecorderCameraContext : OpenCamera: EIS is disabled
    cam-server[2089]: CamX: [ INFO]2089 2090 [CHI    ] camxchinodeeisdgv26.cpp:1346 Initialize() m_nodeCaps 524288
    cam-server[2089]: CamX: [CORE_CFG]2089 2324 [CORE   ] camxpipeline.h:3024 SetPipelineStatus() RealTimeYUVSHDREISIOT_0 status is now PipelineStatus::STREAM_ON
    Copy to clipboard

## SHDR v2 and LDC concurrency use case

This feature uses SHDR v2 sensor mode and does SHDR v2 processing followed by LDC
                processing.

Use the following GStreamer command to enable this use
                case:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc vhdr=1 ldc=1 ! video/x-raw\(memory:GBM\),\
    format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=5 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! mp4mux ! \
    filesink location=/opt/cam_1080p.mp4Copy to clipboard

Verify this use case is selected using the following
                logs:

    cam-server[2358]: [INFO]: RecorderCameraContext : OpenCamera: EIS is disabled
    cam-server[2358]: CamX: [ INFO]2358 2366 [CHI    ] camxchinodeeisdgv26.cpp:1346 Initialize() m_nodeCaps 524288
    cam-server[2358]: CamX: [CORE_CFG]2358 2527 [CORE   ] camxpipeline.h:3024 SetPipelineStatus() RealTimeSHDRIOTLDC_0 status is now PipelineStatus::STREAM_ON
    Copy to clipboard

## SHDR v3, EIS, and LDC concurrency use case

SHDR, EIS, and LDC concurrency is enabled with SHDR v3. This feature uses SHDR v3
                sensor mode and does SHDR v3 processing followed by EIS and LDC processing.

Use the following GStreamer command to enable the SHDR v3, EIS, and LDC concurrency
                use case on a single
                stream:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=1 vhdr=2 ldc=1 ! video/x-raw\(memory:GBM\),\
    format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=5 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! mp4mux ! \
    filesink location=/opt/cam_1080p.mp4
    Copy to clipboard

Verify the SHDR v3, EIS, and LDC concurrency on a single stream use case using the
                following
                logs:

    cam-server[2555]: [INFO]: RecorderCameraContext : OpenCamera: EIS on single stream is ON..
    cam-server[2555]: CamX: [ INFO]2555 2560 [CHI    ] camxchinodeeisdgv26.cpp:1346 Initialize() m_nodeCaps 262144
    cam-server[2555]: CamX: [CORE_CFG]2555 2764 [CORE   ] camxpipeline.h:3024 SetPipelineStatus() RealTimeYUVSHDREISIOT_0 status is now PipelineStatus::STREAM_ON
    Copy to clipboard

Use the following GStreamer command to enable the SHDR v3, EIS, and LDC concurrency
                use case on two
                streams:

    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=2 vhdr=2 ldc=1 video_0::type=preview ! \
    video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! \
    v4l2h264enc capture-io-mode=5 output-io-mode=5 extra-controls="controls,video_bitrate=6000000,\
    video_bitrate_mode=0;" ! h264parse ! mp4mux ! filesink location=/opt/cam_prev.mp4 \
    camsrc. ! video/x-raw\(memory:GBM\),format=NV12,width=1280,height=720,\
    framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=5 \
    output-io-mode=5 extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! \
    h264parse ! mp4mux ! filesink location=/opt/cam_vid.mp4Copy to clipboard

Verify the SHDR v3, EIS, and LDC concurrency on two streams use case using the
                following
                logs:

    cam-server[907]: [INFO]: RecorderCameraContext : OpenCamera: EIS on dual stream is ON..
    cam-server[907]: CamX: [ INFO]907 984 [CHI    ] camxchinodeeisdgv26.cpp:1346 Initialize() m_nodeCaps 262144
    cam-server[907]: CamX: [CORE_CFG]907 1586 [CORE   ] camxpipeline.h:3024 SetPipelineStatus() RealTimeYUVSHDREISIOT_0 status is now PipelineStatus::STREAM_ON
    Copy to clipboard

**Parent Topic:** Advanced Camera Features

Last Published: Oct 17, 2024

Previous Topic
 
EIS and LDC use cases Next Topic

Multiple ROI streams from single camera input stream