> ## 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.

# ShapePeakMagnitudeToDecibel

> ShapePeakMagnitudeToDecibel

# ShapePeakMagnitudeToDecibel

將峰值振幅值轉換為分貝值。

## 語法

```cpp theme={null}
float ShapePeakMagnitudeToDecibel(  
         UINT32 peakMagnitude  
)  
```

### 參數

*peakMagnitude*   \
類型: UINT32

要轉換的峰值振幅值。

### 傳回值

類型: float

產生的分貝值。

## 備註

在遊戲的音訊引擎中，管理動態餘量 (headroom) 可能非常困難。因此，每個 [SHAPE](/zh-TW/build/console-features/audio/overviews/shape-overview) 區塊都會維護與訊號餘量及增益相關聯的狀態。每個區塊 (SRC 區塊除外) 都會記錄處理期間是否發生內部飽和。

除了內部飽和旗標之外，每個硬體區塊也會維護兩個 4 位元數字，代表硬體區塊輸出的振幅。振幅的計算方式是判斷音訊框架期間的峰值輸出，並計算峰值絕對值的前置零數目。其中一個 4 位元數字會維護持續性的峰值振幅；另一個則由硬體在每個音訊框架重設。

除了監視每個個別硬體區塊的峰值振幅之外，也會維護混音緩衝區的峰值振幅。當硬體區塊的輸出加入混音緩衝區時，會以相同方式 (計算前置零) 計算峰值振幅。每個硬體區塊狀態都會額外維護一組 4 位元峰值振幅值。這些值代表硬體區塊的輸出累加到混音緩衝區之後，混音緩衝區的峰值振幅。其中一個 4 位元數字代表持續進行中的持續性峰值振幅；另一個則在每個音訊框架更新。峰值振幅值會儲存在 SHAPE 區塊的內容中，即使其實際代表的是混音緩衝區的狀態。

峰值振幅依照下表進行編碼。

| 二進位值 | 描述 |
| - | - |
| 0B0000 | 飽和：為產生輸出而計算出的值已溢位超出帶正負號的 24 位元範圍，並以最接近的極值取代。具體來說，大於 8,388,607 (0x7F\_FFFF) 的值會以 8,388,607 取代，或小於 -8,388,608 (0x80\_0000) 的值會以 -8,388,608 取代。 |
| 0B0001 | 峰值的絕對值大於 MAX >> 1 (0x3F\_FFFF)。 |
| 0B0010 | 峰值的絕對值大於 MAX >> 2 (0x1F\_FFFF)。 |
| 0B0011 | 峰值的絕對值大於 MAX >> 3。 |
| 0B0100 | 峰值的絕對值大於 MAX >> 4。 |
| 0B0101 | 峰值的絕對值大於 MAX >> 5。 |
| 0B0110 到 0B1101 | 峰值的絕對值大於 MAX >> 6 到 13 (依序對應)。 |
| 0B1110 | 峰值的絕對值大於 MAX >> 14。 |
| 0B1111 | 峰值的絕對值小於或等於 MAX >> 14。 |

為了協助管理餘量並避免溢位和飽和，除了精細的增益設定之外，還可以在硬體區塊的輸出累加到輸出混音緩衝區之前，對其執行 0 到 7 位元的右移。這會在每個 SHAPE 硬體區塊的內容中指定。

## 需求

**標頭：** shapecontexts.h

**支援的平台：** XBOX One 系列主機和 XBOX Series 主機

## 另請參閱

[SHAPE 概觀](/zh-TW/build/console-features/audio/overviews/shape-overview)\
[ShapeContexts](/zh-TW/reference/audio/shapecontexts/shapecontexts_members)


## Related topics

- [ShapePeakMagnitudeToDecibel](/reference/audio/shapecontexts/functions/shapepeakmagnitudetodecibel.md)
- [ShapeContexts](/reference/audio/shapecontexts/shapecontexts_members.md)
