> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 高级功能并发

> 在 QCS6490 平台上通过优化的硬件加速管线同时运行 SHDR、EIS 和 LDC 功能。

<div style={{display:'flex',gap:'8px',flexWrap:'wrap',marginBottom:'16px'}}>
  <span style={{background:'#ede9fe',color:'#5b21b6',padding:'2px 10px',borderRadius:'999px',fontSize:'12px',fontWeight:600}}>QCS6490</span>
  <span style={{background:'#f0fdf4',color:'#166534',padding:'2px 10px',borderRadius:'999px',fontSize:'12px',fontWeight:600}}>稳定</span>
</div>

<CardGroup cols={3}>
  <Card title="SHDR" icon="layer-group">交错 HDR</Card>
  <Card title="EIS" icon="bolt">防抖</Card>
  <Card title="LDC" icon="camera">镜头校正</Card>
</CardGroup>

<Note>
  **平台适用范围：**<br />
  本节仅适用于 **QCS6490**。
</Note>

***

## 01 · 并发逻辑

本节介绍运行 SHDR、EIS 和 LDC 的可能并发用例。以下是可用于并发运行 SHDR、EIS 和 LDC 的组合：

| **GST 命令选项**         | **说明**                          |
| :------------------- | :------------------------------ |
| `vhdr=2 eis=1`       | 在所有流上应用 SHDR v3。在第一个流上应用 EIS    |
| `vhdr=2 eis=2`       | 在两个流上应用 SHDR v3 和 EIS           |
| `vhdr=2 ldc=1`       | 在所有（1 个或 2 个）流上应用 SHDR v3+LDC   |
| `vhdr=1 ldc=1`       | 在所有（1 个或 2 个）流上应用 SHDR v2+LDC   |
| `eis=1 vhdr=2 ldc=1` | 在两个流上应用 SHDRV3。在第一个流上应用 EIS+LDC |
| `eis=2 vhdr=2 ldc=1` | 在两个流上应用 SHDRV3+EIS+LDC          |

***

## 02 · 验证设置

在运行任何并发管线之前，请确保您的环境已配置为可收集日志。

<Steps>
  <Step title="连接到设备">
    使用 SSH 连接到设备控制台。
  </Step>

  <Step title="启用日志收集">
    在设备上运行以下命令以收集所需的系统日志和 CamX 日志：

    ```bash Log Collection theme={null}
    # journalctl -f > /opt/log.txt
    ```
  </Step>
</Steps>

***

## 03 · SHDR v3 与 EIS 并发

SHDR 与 EIS 并发仅在 SHDR v3 下启用。此功能使用 SHDR v3 传感器模式，先进行 SHDR v3 处理，然后进行 EIS 处理。

<Steps>
  <Step title="启用单流并发">
    使用以下 GStreamer 命令启用 SHDR v3+EIS 单流用例：

    ```bash GStreamer (SHDR v3 + EIS) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=1 vhdr=2 ! video/x-raw,format=NV12,\
    width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! \
    mp4mux ! filesink location=/opt/cam_1080p.mp4
    ```
  </Step>

  <Step title="验证单流状态">
    使用以下日志验证 SHDR v3 + EIS 单流用例：

    ```text Log Verification theme={null}
    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_ON
    ```
  </Step>

  <Step title="启用双流并发">
    使用以下 GStreamer 命令启用在两个流上运行 SHDR v3 + EIS 的用例：

    ```bash GStreamer (Dual Stream) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=2 vhdr=2 video_0::type=preview ! \
    video/x-raw,format= NV12,width=1920,height=1080,framerate=30/1 ! \
    v4l2h264enc capture-io-mode=4 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,format=NV12,width=1280,height=720,\
    framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 \
    output-io-mode=5 extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" \
    ! h264parse ! mp4mux ! filesink location=/opt/cam_vid.mp4
    ```
  </Step>

  <Step title="验证双流状态">
    使用以下日志验证在两个流上运行 SHDR v3 + EIS 的用例：

    ```text Log Verification theme={null}
    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
    ```
  </Step>
</Steps>

***

## 04 · SHDR v3 与 LDC 并发

此功能使用 SHDR v3 传感器模式，先进行 SHDR v3 处理，然后进行 LDC 处理。

<Steps>
  <Step title="启用管线">
    使用以下 GStreamer 命令启用此用例：

    ```bash GStreamer (SHDR v3 + LDC) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc vhdr=2 ldc=1 ! video/x-raw,\
    format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! mp4mux ! \
    filesink location=/opt/cam_1080p.mp4
    ```
  </Step>

  <Step title="验证状态">
    使用以下日志验证已选择此用例：

    ```text Log Verification theme={null}
    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
    ```
  </Step>
</Steps>

***

## 05 · SHDR v2 与 LDC 并发

此功能使用 SHDR v2 传感器模式，先进行 SHDR v2 处理，然后进行 LDC 处理。

<Steps>
  <Step title="启用管线">
    使用以下 GStreamer 命令启用此用例：

    ```bash GStreamer (SHDR v2 + LDC) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc vhdr=1 ldc=1 ! video/x-raw,\
    format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! mp4mux ! \
    filesink location=/opt/cam_1080p.mp4
    ```
  </Step>

  <Step title="验证状态">
    使用以下日志验证已选择此用例：

    ```text Log Verification theme={null}
    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
    ```
  </Step>
</Steps>

***

## 06 · SHDR v3、EIS 与 LDC 并发

SHDR、EIS 和 LDC 并发在 SHDR v3 下启用。此功能使用 SHDR v3 传感器模式，先进行 SHDR v3 处理，然后进行 EIS 和 LDC 处理。

<Steps>
  <Step title="启用单流并发">
    使用以下 GStreamer 命令在单个流上启用 SHDR v3、EIS 和 LDC 并发用例：

    ```bash GStreamer (SHDR v3 + EIS + LDC) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=1 vhdr=2 ldc=1 ! video/x-raw,\
    format=NV12,width=1920,height=1080,framerate=30/1 ! v4l2h264enc capture-io-mode=4 output-io-mode=5 \
    extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! h264parse ! mp4mux ! \
    filesink location=/opt/cam_1080p.mp4
    ```
  </Step>

  <Step title="验证单流状态">
    使用以下日志验证在单个流上运行 SHDR v3、EIS 和 LDC 并发的用例：

    ```text Log Verification theme={null}
    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
    ```
  </Step>

  <Step title="启用双流并发">
    使用以下 GStreamer 命令在两个流上启用 SHDR v3、EIS 和 LDC 并发用例：

    ```bash GStreamer (Dual Stream) theme={null}
    gst-launch-1.0 -e qtiqmmfsrc name=camsrc eis=2 vhdr=2 ldc=1 video_0::type=preview ! \
    video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! \
    v4l2h264enc capture-io-mode=4 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,format=NV12,width=1280,height=720,\
    framerate=30/1,interlace-mode=progressive,colorimetry=bt601 ! v4l2h264enc capture-io-mode=4 \
    output-io-mode=5 extra-controls="controls,video_bitrate=6000000,video_bitrate_mode=0;" ! \
    h264parse ! mp4mux ! filesink location=/opt/cam_vid.mp4
    ```
  </Step>

  <Step title="验证双流状态">
    使用以下日志验证在两个流上运行 SHDR v3、EIS 和 LDC 并发的用例：

    ```text Log Verification theme={null}
    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
    ```
  </Step>
</Steps>
