作者legnaleurc (CA)
看板C_and_CPP
標題[問題] PCM 的音量
時間Thu Mar 17 01:21:36 2011
現在在研究如何調整 PCM 的音量(沒修好這門課 orz)
看到 FFmpeg 這麼寫:
// int audio_volume = 256;
// short * volp = 目前的 sample
int v = ( ( *volp ) * audio_volume + 128 ) >> 8;
if( v < -32768 ) v = -32768;
if( v > 32767 ) v = 32767;
*volp++ = v;
我想問的是,乘以 audio_volume 再除以 256 我可以理解
它假設 100% 是 256 (我猜是因為 65536 的平方根,short 的值域)
但它加的 128 是什麼意思?
是為了那 0.5 的精確度嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.205.248.119
推 LPH66:四捨五入吧? 和浮點數用 floor(some_double+0.5) 同理的樣子 03/17 01:31
→ loveme00835:就離散化囉 03/17 01:38
→ legnaleurc:了解,看來的確是四捨五入沒錯 03/17 02:08
推 purpose:用int做原本實數除法+四捨五入的工作?沒想到可以這樣寫 03/17 02:54
→ loveme00835:XD 這個用整數模擬浮點數的時候常用到阿 03/17 03:02
推 VictorTom:推整數來偷浮點數工作, 之前某些Color Convert會用XD 03/17 23:45