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

# ACP_COMMAND_UPDATE_EQCOMP_CONTEXT_ENTRY

> ACP_COMMAND_UPDATE_EQCOMP_CONTEXT_ENTRY

# ACP\_COMMAND\_UPDATE\_EQCOMP\_CONTEXT\_ENTRY

用于更新 `SHAPE_EQCOMP_CONTEXT` 的条目。

## 语法

```cpp theme={null}
typedef struct ACP_COMMAND_UPDATE_EQCOMP_CONTEXT_ENTRY {  
    UINT32 contextIndex;  
    UINT32 eqAB0Target : 24;  
    UINT32 eqAB1Target_L : 8;  
    UINT32 eqAB1Target_H : 16;  
    UINT32 eqAB2Target_L : 16;  
    UINT32 eqAB2Target_H : 8;  
    UINT32 eqAA1Target : 24;  
    UINT32 eqAA2Target : 24;  
    UINT32 eqBB0Target_L : 8;  
    UINT32 eqBB0Target_H : 16;  
    UINT32 eqBB1Target_L : 16;  
    UINT32 eqBB1Target_H : 8;  
    UINT32 eqBB2Target : 24;  
    UINT32 eqBA1Target : 24;  
    UINT32 eqBA2Target_L : 8;  
    UINT32 eqBA2Target_H : 16;  
    UINT32 eqCB0Target_L : 16;  
    UINT32 eqCB0Target_H : 8;  
    UINT32 eqCB1Target : 24;  
    UINT32 eqCB2Target : 24;  
    UINT32 eqCA1Target_L : 8;  
    UINT32 eqCA1Target_H : 16;  
    UINT32 eqCA2Target_L : 16;  
    UINT32 eqCA2Target_H : 8;  
    UINT32 reserved : 24;  
    UINT32 compGainTarget;  
} ACP_COMMAND_UPDATE_EQCOMP_CONTEXT_ENTRY  
```

### 成员

*contextIndex*\
类型:UINT32

范围为 0 至 `ACP_MAX_NUM_EQCOMP_CONTEXTS` 的索引。

*eqAB0Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAB0Target` 的现有值。

*eqAB1Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAB1Target_L` 的现有值。

*eqAB1Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAB1Target_H` 的现有值。

*eqAB2Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAB2Target_L` 的现有值。

*eqAB2Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAB2Target_H` 的现有值。

*eqAA1Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAA1Target` 的现有值。

*eqAA2Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqAA2Target` 的现有值。

*eqBB0Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBB0Target_L` 的现有值。

*eqBB0Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBB0Target_H` 的现有值。

*eqBB1Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBB1Target_L` 的现有值。

*eqBB1Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBB1Target_H` 的现有值。

*eqBB2Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBB2Target` 的现有值。

*eqBA1Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBA1Target` 的现有值。

*eqBA2Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBA2Target_L` 的现有值。

*eqBA2Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqBA2Target_H` 的现有值。

*eqCB0Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCB0Target_L` 的现有值。

*eqCB0Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCB0Target_H` 的现有值。

*eqCB1Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCB1Target` 的现有值。

*eqCB2Target*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCB2Target` 的现有值。

*eqCA1Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCA1Target_L` 的现有值。

*eqCA1Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCA1Target_H` 的现有值。

*eqCA2Target\_L*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCA2Target_L` 的现有值。

*eqCA2Target\_H*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::eqCA2Target_H` 的现有值。

*Reserved*\
类型:UINT32

保留字段。

*compGainTarget*\
类型:UINT32

替换 `SHAPE_EQCOMP_CONTEXT::compGainTarget` 的现有值。

## 备注

此结构体由 `ACP_COMMAND_UPDATE_CONTEXTS` 和 `ACP_COMMAND_UPDATE_ALL_CONTEXTS` 命令使用以更新单个 EQ/Comp 上下文。请仅在每个音频帧内使用该命令更新少量上下文;更新大量上下文的效率不高。有关更多详细信息,请参阅 [ACP 概述中的"渲染音频"部分](/build/console-features/audio/overviews/acp-overview#ID4E6C)。

此结构体还包含内联方法:

```cpp theme={null}
inline void SetRawFilterATargetCoefficients(INT32 a1, INT32 a2, INT32 b0, INT32 b1, INT32 b2)
{
    eqAA1Target   = ShapeSignedToU24(a1);
    eqAA2Target   = ShapeSignedToU24(a2);
    eqAB0Target   = ShapeSignedToU24(b0);
    eqAB1Target_L = ShapeSignedToLowU8(b1);
    eqAB1Target_H = ShapeSignedToHighU16(b1);
    eqAB2Target_L = ShapeSignedToLowU16(b2);
    eqAB2Target_H = ShapeSignedToHighU8(b2);
}

inline void SetRawFilterBTargetCoefficients(INT32 a1, INT32 a2, INT32 b0, INT32 b1, INT32 b2)
{
    eqBA1Target   = ShapeSignedToU24(a1);
    eqBA2Target_L = ShapeSignedToLowU8(a2);
    eqBA2Target_H = ShapeSignedToHighU16(a2);
    eqBB0Target_L = ShapeSignedToLowU8(b0);
    eqBB0Target_H = ShapeSignedToHighU16(b0);
    eqBB1Target_L = ShapeSignedToLowU16(b1);
    eqBB1Target_H = ShapeSignedToHighU8(b1);
    eqBB2Target   = ShapeSignedToU24(b2);
}

inline void SetRawFilterCTargetCoefficients(INT32 a1, INT32 a2, INT32 b0, INT32 b1, INT32 b2)
{
    eqCA1Target_L = ShapeSignedToLowU8(a1);
    eqCA1Target_H = ShapeSignedToHighU16(a1);
    eqCA2Target_L = ShapeSignedToLowU16(a2);
    eqCA2Target_H = ShapeSignedToHighU8(a2);
    eqCB0Target_L = ShapeSignedToLowU16(b0);
    eqCB0Target_H = ShapeSignedToHighU8(b0);
    eqCB1Target   = ShapeSignedToU24(b1);
    eqCB2Target   = ShapeSignedToU24(b2);
};

inline void SetGainTarget(float gainTarget) // Gain target (amplitude, not dB)
{
    compGainTarget = ShapeUnsignedToU16((UINT32)(gainTarget * SHAPE_Q13));
}  
```

## 要求

**头文件:** acphal.h

**支持的平台:** XBOX One 系列主机和 XBOX Series 主机

## 另请参阅

[ACP\_COMMAND\_TYPE](/reference/audio/acphal/enums/acp_command_type)\
[SubmitCommand](/reference/audio/acphal/interfaces/IAcpHal/methods/iacphal_submitcommand)\
[AcpHal](/reference/audio/acphal/acphal_members)


## Related topics

- [AcpHal](/zh-CN/reference/audio/acphal/acphal_members.md)
- [ACP_COMMAND_UPDATE_CONTEXTS](/zh-CN/reference/audio/acphal/structs/acp_command_update_contexts.md)
- [ACP_COMMAND_UPDATE_EQCOMP_CONTEXT](/zh-CN/reference/audio/acphal/structs/acp_command_update_eqcomp_context.md)
- [ACP_COMMAND_UPDATE_ALL_CONTEXTS](/zh-CN/reference/audio/acphal/structs/acp_command_update_all_contexts.md)
- [ACP_COMMAND_UPDATE_FILTVOL_CONTEXT_ENTRY](/zh-CN/reference/audio/acphal/structs/acp_command_update_filtvol_context_entry.md)
