?? codec.c
字號:
/*++
Copyright (c) 2004 BSQUARE Corporation. All rights reserved.
Module Name:
codec.c
Module Description:
This module contains the codec specific routines for I2S audio
Author:
Ian Rae - January 2004
--*/
#include <windows.h>
#include "psc_i2s.h"
//Global Volume levels
static ULONG gVolume = 0;
/*
Volume passed in is 0xFFFF (max) -> 0x0000 (mute)
Codec has volume range of 0x7F -> 0x30, less than 0x30 is mute
that's a range of 0x50
*/
BOOLEAN
CodecSetVolume(
IN HANDLE hSMBus,
IN ULONG Volume
)
{
ULONG lVolume;
ULONG rVolume;
UCHAR codecLeftVolume, codecRightVolume;
// save for volume query
gVolume = Volume;
lVolume = Volume & 0xffff;
rVolume = (Volume >> 16) & 0xffff;
// scale left to suit codec
if (lVolume == 0x0000) { // check for mute
codecLeftVolume = 0x0000;
} else {
// use a little less than full scale, it seems to work a lot better
codecLeftVolume = (UCHAR)(((lVolume * 0x30) / 0xFFFF ) + 0x4F);
//codecLeftVolume = (UCHAR)(((lVolume * 0x50) / 0xFFFF ) + 0x2F);
}
// scale right to suit codec
if (rVolume == 0x0000) { // check for mute
codecRightVolume = 0x0000;
} else {
// use a little less than full scale, it seems to work a lot better
codecRightVolume = (UCHAR)(((rVolume * 0x30) / 0xFFFF ) + 0x4F);
//codecRightVolume = (UCHAR)(((rVolume * 0x50) / 0xFFFF ) + 0x2F);
}
SMBusWriteReg(hSMBus,WM8731_LHO, LHO_LHPVOL_N(codecLeftVolume) |
LHO_LZCEN );
SMBusWriteReg(hSMBus,WM8731_RHO, RHO_RHPVOL_N(codecRightVolume) |
RHO_RZCEN );
return TRUE;
}
ULONG
CodecGetVolume(
IN HANDLE hSMBus
)
{
DEBUGMSG(1, (TEXT("CodecGetVolume Volume %x\r\n"),gVolume));
return gVolume;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -