VirtualBox

Changeset 31357 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 4, 2010 1:04:21 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
64407
Message:

Audio/HDA: some todo and clean up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevCodec.cpp

    r31347 r31357  
    928928        dac_init:
    929929            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 */
    932931
    933932            AMPLIFIER_REGISTER(pNode->dac.B_params, AMPLIFIER_OUT, AMPLIFIER_LEFT, 0) = 0x7F | RT_BIT(7);
    934933            AMPLIFIER_REGISTER(pNode->dac.B_params, AMPLIFIER_OUT, AMPLIFIER_RIGHT, 0) = 0x7F | RT_BIT(7);
    935934
    936             pNode->dac.node.au32F00_param[9] = (0xd << 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);
    937936            pNode->dac.node.au32F00_param[5] = (0x3 << 4) | 0x3;
    938937            pNode->dac.u32F0c_param = 0;
     
    947946            pNode->node.au8F02_param[0] = 0x18;
    948947        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 */
    951949            pNode->adc.node.au32F00_param[0xE] = RT_BIT(0);
    952950            pNode->adc.u32F03_param = RT_BIT(0);
     
    980978            pNode->port.u32F07_param = RT_BIT(6);
    981979            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 */
    983981            pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x20, 0x40, 0x21, 0x02);
    984982            goto port_init;
     
    11761174    return rc;
    11771175}
    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
    12211177static int codec_dac_to_aud(CODECState *pState, int dacnum, audsettings_t *paud)
    12221178{
    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;
    12261181    paud->fmt = AUD_FMT_U16;
    12271182
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette