看板 C_and_CPP 關於我們 聯絡資訊
對聲音不是很清楚啊,還請大大指點: 現在有聲音 原為32 bit 想costdown為 16 bit ,甚至8 bit 請問程式要怎寫呢?? 我是假設原本聲音為 32bit ,可用int(DWORD)表式 16就是short(WORD) 所以 int input;/*輸入*/ short output;/*輸出 被cost down的結果*/ output = (short)( SHRT_MAX*((double)input/INT_MAX) ) 請問是這樣轉換的嗎 還有wave裡面的資料型態到底是signed還是unsigned啊 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.158.204
stool100:把數值 右移 16 或是 24 bit 11/26 19:15
DrStein:右移不是把振幅小的給砍了? 而不是等比例縮放啊。。 11/26 19:23
shuckmol:& 0xFFFF 11/26 19:38
shuckmol:把在之前你應該先把 32bit的值除以 16bit的最大值65536 11/26 19:40
真的不是很懂啊。 32bit的最大值可以寫成 0xffffffff, 不過最大值不是 -INT_MAX嗎 還是聲音訊號是用unsigned ? 那我上面寫的 output = (short)( SHRT_MAX*((double)input/INT_MAX) ) 該怎麼修正呢? 還請釋疑 謝謝。 ※ 編輯: DrStein 來自: 58.115.143.194 (11/26 23:48)
DrStein:有人可以回答一下嗎 謝謝 11/27 21:48