看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《LPH66 (-858993460)》之銘言: : 那還不如就直接去掉 -1 來算) : 所以式子就變成 (sample - OLDMIN) / 2^(A-B) + NEWMIN : = sample/2^(A-B) - OLDMIN/2^(A-B) + NEWMIN : 32 -> 16 的情形中 OLDMIN = -2^A NEWMIN = -2^B : 也就是正好 OLDMIN/2^(A-B) 和 NEWMIN 一正一負抵消 式子剩下 sample/2^(A-B) : 所以才有「直接右移就行了」的結論 : 而 down sample to 8 bit 時 : OLDMIN = -2^(A-1) 所以 OLDMIN/2^(A-B) = -2^(B-1) = -2^(8-1) = -128 : 但 NEWMIN 是 0 所以才說右移後要加 128 : 以上 現在用這方法去實作32bit轉16bit ,出來聲音雜音很大。 很不合理啊。。。隨便用個轉檔軟體都不會這樣。 那請問還有什麼技巧在其中呢? 是要四捨五入,而不是無條件捨去嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204
LPH66:既然是 24-bit 那每個 sample 就要佔 3 byte 12/01 17:02
LPH66:不能佔 4-byte 不然解釋出來就是錯的 12/01 17:02
※ 編輯: DrStein 來自: 59.120.158.204 (12/01 17:35)
DrStein:報歉 打錯 是轉為16bit 12/01 17:35
tropical72:你介意po部份 code 嗎? 12/01 23:10
DrStein:沒事 原來是原資料為float不是int。。。囧 12/02 16:00