Changeset 31357 in vbox for trunk/src/VBox
- Timestamp:
- Aug 4, 2010 1:04:21 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 64407
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp
r31347 r31357 928 928 dac_init: 929 929 memset(pNode->dac.B_params, 0, AMPLIFIER_SIZE); 930 //** @todo r=michaln: 0x2 in the low bits means 3 channels, not 2?? 931 pNode->dac.u32A_param = RT_BIT(14)|(0x1 << 4)|0x2; /* 441000Hz/16bit/2ch */ 930 pNode->dac.u32A_param = RT_BIT(14)|(0x1 << 4)|0x1; /* 441000Hz/16bit/2ch */ 932 931 933 932 AMPLIFIER_REGISTER(pNode->dac.B_params, AMPLIFIER_OUT, AMPLIFIER_LEFT, 0) = 0x7F | RT_BIT(7); 934 933 AMPLIFIER_REGISTER(pNode->dac.B_params, AMPLIFIER_OUT, AMPLIFIER_RIGHT, 0) = 0x7F | RT_BIT(7); 935 934 936 pNode->dac.node.au32F00_param[9] = (0x d<< 16) | RT_BIT(11) | RT_BIT(10) | RT_BIT(2) | RT_BIT(0);935 pNode->dac.node.au32F00_param[9] = (0xf << 16) | RT_BIT(11) | RT_BIT(10) | RT_BIT(2) | RT_BIT(0); 937 936 pNode->dac.node.au32F00_param[5] = (0x3 << 4) | 0x3; 938 937 pNode->dac.u32F0c_param = 0; … … 947 946 pNode->node.au8F02_param[0] = 0x18; 948 947 adc_init: 949 //** @todo r=michaln: Shouldn't that be (0x1 << 4)? Same problem with no. of channels. 950 pNode->adc.u32A_param = RT_BIT(14)|(0x1 << 3)|0x2; /* 441000Hz/16bit/2ch */ 948 pNode->adc.u32A_param = RT_BIT(14)|(0x1 << 3)|0x1; /* 441000Hz/16bit/2ch */ 951 949 pNode->adc.node.au32F00_param[0xE] = RT_BIT(0); 952 950 pNode->adc.u32F03_param = RT_BIT(0); … … 980 978 pNode->port.u32F07_param = RT_BIT(6); 981 979 pNode->port.u32F08_param = 0; 982 pNode->port.u32F09_param = RT_BIT(31)| RT_BIT(30); /* 39.2 kOm */980 pNode->port.u32F09_param = RT_BIT(31)|0x9920; /* 39.2 kOm */ 983 981 pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x20, 0x40, 0x21, 0x02); 984 982 goto port_init; … … 1176 1174 return rc; 1177 1175 } 1178 #define CODEC_FMT_BASE_FRQ_SHIFT (14) 1179 #define CODEC_FMT_BASE_FRQ_MASK (RT_BIT(CODEC_FMT_BASE_FRQ_SHIFT)) 1180 #define CODEC_FMT_DIV_FRQ_SHIFT 8 1181 #define CODEC_FMT_DIV_FRQ_MASK ((0x7) << CODEC_FMT_DIV_FRQ_SHIFT) 1182 #define CODEC_FMT_MUL_FRQ_SHIFT 11 1183 #define CODEC_FMT_MUL_FRQ_MASK ((0x7) << CODEC_FMT_MUL_FRQ_SHIFT) 1184 #define CODEC_FMT_BASE_FRQ(fmt) ((fmt & CODEC_FMT_BASE_FRQ_MASK) >> CODEC_FMT_BASE_FRQ_SHIFT) 1185 #define CODEC_FMT_DIV_FRQ(fmt) ((fmt & CODEC_FMT_DIV_FRQ_MASK) >> CODEC_FMT_DIV_FRQ_SHIFT) 1186 #define CODEC_FMT_MUL_FRQ(fmt) ((fmt & CODEC_FMT_MUL_FRQ_MASK) >> CODEC_FMT_MUL_FRQ_SHIFT) 1187 #define CODEC_DAC_CHANELS(reg) (1 << ((reg) & 0x3)) 1188 static int codecFrequencyCalculate(uint32_t dacFmt) 1189 { 1190 uint32_t baseFrq = CODEC_FMT_BASE_FRQ(dacFmt); 1191 uint32_t divFrq = CODEC_FMT_DIV_FRQ(dacFmt); 1192 uint32_t multFrq = CODEC_FMT_MUL_FRQ(dacFmt); 1193 switch (baseFrq) 1194 { 1195 case 0: baseFrq = 48000; break; 1196 case 0x1: baseFrq = 44100; break; 1197 default: 1198 AssertMsgFailed(("Unsupported Freq.")); 1199 } 1200 switch(multFrq) 1201 { 1202 case 0: multFrq = 1; break; 1203 case 0x1: multFrq = 2; break; 1204 case 0x3: multFrq = 4; break; 1205 default: 1206 AssertMsgFailed(("Unsupported Freq. multiplier")); 1207 } 1208 switch(divFrq) 1209 { 1210 case 0: divFrq = 1; break; 1211 case 0x1: divFrq = 2; break; 1212 case 0x2: divFrq = 3; break; 1213 case 0x3: divFrq = 4; break; 1214 case 0x4: divFrq = 5; break; 1215 case 0x5: divFrq = 6; break; 1216 case 0x6: divFrq = 7; break; 1217 case 0x7: divFrq = 8; break; 1218 } 1219 return baseFrq * multFrq / divFrq; 1220 } 1176 1221 1177 static int codec_dac_to_aud(CODECState *pState, int dacnum, audsettings_t *paud) 1222 1178 { 1223 uint32_t dacfmt = pState->pNodes[dacnum].dac.u32A_param; 1224 paud->freq = 44100;//codecFrequencyCalculate(dacfmt); 1225 paud->nchannels = 2;//CODEC_DAC_CHANELS(dacfmt); 1179 paud->freq = 44100; 1180 paud->nchannels = 2; 1226 1181 paud->fmt = AUD_FMT_U16; 1227 1182
Note:
See TracChangeset
for help on using the changeset viewer.