WebRTC中音訊能量計算

2021-10-11 16:32:25 字數 1179 閱讀 7295

webrtc中實現獲取音訊能量計算的方法是:獲取音訊資料最大的振幅(即絕對值最大)(範圍是0-32767),然後再除以1000,得到0-32之間的數值。從陣列中獲取相應索引所對應的能量level等級。

我們看下webrtc中level_indicator.cc中對音訊level判斷的處理。

namespace webrtc ;

audiolevel::audiolevel() :

_absmax(0),

_count(0),

_currentlevel(0),

_currentlevelfullrange(0)

audiolevel::~audiolevel()

void audiolevel::clear()

void audiolevel::computelevel(const audioframe& audioframe)

//算出position的位置後,從上面的音訊能量陣列中獲取當前的level等級。

_currentlevel = permutation[position];

// decay the absolute maximum (divide by 4)

_absmax >>= 2;

}}/**

*獲取音訊能量,範圍0-9

*/int8_t audiolevel::level() const

/***獲取音訊能量,範圍0-32767

*/int16_t audiolevel::levelfullrange() const

} // namespace voe

} // namespace webrtc

看下webrtcspl_maxabsvaluew16c函式,函式主要是獲取vector中的絕對值的最大值,同時不能超過int16的最大值32767。

int16_t webrtcspl_maxabsvaluew16c(const int16_t* vector, size_t length) 

}if (maximum > 32767)

return (int16_t)maximum;

}

這個最終獲取的值就可以用來實時獲取音訊的音量值了。

我們可以看到這裡取的是最大值,為了得到的結果更加準確的話,音訊的能量計算最好放在去噪後。

視音訊資料量計算

d1 480i 720x480 行頻 15.25khz d2 480p 720x480 行頻 31.5khz d3 1080i 1920 1080 行頻 33.75khz d4 720p 1280 720 行頻 45khz d5 1080p 1920 1080 行頻 67.5khz pal sdtv...

EEPROM與記憶體Flash消耗能量計算

本篇文章要介紹的是非易失性儲存器eeprom與記憶體flash消耗能量計算。首先,我們來看看非易失性儲存器在典型的3.3v eeprom寫入過程中所消耗的能量待機電流為1 a,寫入時間為5 ms,寫入電流為3 ma 表1 我們假設 一旦vdd上公升到工作限制內 上電時間 eeprom就準備開始工作零...

SDRAM容量計算

行位址12位,列位址8位,資料16位,片內有四個組。那麼這塊晶元的容量大小是多少?怎麼計算的?具體計算如下 行位址12位,說明行數是2的12次方。列位址8位,說明列數是2的8次方。資料個數就有2的20次方,就是1mb。即bank大小為1mb。在1mb中,每個資料16位 bit 每位元組為8bit。所...