1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<html xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <meta http-equiv="Content-Style-Type" content="text/css" /> 6 <link rel="stylesheet" href="../../../css/manpage.css" type="text/css" /> 7 <style type="text/css"><!-- 8 span.static_style 9 { 10 font-size : 8pt; 11 color : white; 12 font-weight : bold; 13 background : #44f; 14 border-left : solid 1px #aaf; 15 border-top : solid 1px #aaf; 16 border-right : solid 1px #00c; 17 border-bottom : solid 1px #00c; 18 padding-left : 2px; 19 padding-right : 2px; 20 } 21 span.virtual_style 22 { 23 font-size : 8pt; 24 color : white; 25 font-weight : bold; 26 background : #0a0; 27 border-left : solid 1px #0f0; 28 border-top : solid 1px #0f0; 29 border-right : solid 1px #060; 30 border-bottom : solid 1px #060; 31 padding-left : 2px; 32 padding-right : 2px; 33 } 34 span.protected_style 35 { 36 font-size : 8pt; 37 color : white; 38 font-weight : bold; 39 background : #444; 40 border-left : solid 1px #ccc; 41 border-top : solid 1px #ccc; 42 border-right : solid 1px #222; 43 border-bottom : solid 1px #222; 44 padding-left : 2px; 45 padding-right : 2px; 46 } 47 --></style> 48<title>nn::snd::CTR</title> 49 </head> 50 <body> 51<h1><CODE>nn::snd::CTR</CODE> Namespace</h1> 52<h2>Description</h2> 53 <div class="section"> 54<p>Sound (SND) namespace. (This can also be written with "<CODE>CTR</CODE>" omitted.)</p><p> 55Sound processing is carried out while synchronizing with the DSP by sound threads that include the <a href="../../../nn/snd/CTR/WaitForDspSync.html"><CODE>nn::snd::CTR::WaitForDspSync</CODE></a> and <a href="../../../nn/snd/CTR/SendParameterToDsp.html"><CODE>nn::snd::CTR::SendParameterToDsp</CODE></a> functions. Sound operations and parameter settings are configured after using the <a href="../../../nn/snd/CTR/WaitForDspSync.html"><CODE>nn::snd::CTR::WaitForDspSync</CODE></a> function to wait for an interrupt from the DSP that occurs approximately every 4.889 milliseconds, and then applying those operations and parameter settings to the DSP using the <a href="../../../nn/snd/CTR/SendParameterToDsp.html"><CODE>nn::snd::CTR::SendParameterToDsp</CODE></a> function. The <a href="../../../nn/snd/CTR/WaitForDspSync.html"><CODE>nn::snd::CTR::WaitForDspSync</CODE></a> and <a href="../../../nn/snd/CTR/SendParameterToDsp.html"><CODE>nn::snd::CTR::SendParameterToDsp</CODE></a> functions must be called alternately. 56 </p><p> 57The snd library uses an <a href="../../../nn/os/Event/Overview.html">nn::os::Event</a> object held internally to perform the above synchronization. 58</p><p>The <a href="../../../nn/dsp/CTR/Initialize.html"><CODE>nn::dsp::CTR::Initialize</CODE></a> function and functions for loading DSP components (such as the <a href="../../../nn/dsp/CTR/LoadDefaultComponent.html"><CODE>nn::dsp::CTR::LoadDefaultComponent</CODE></a> function), must be called before the <a href="../../../nn/snd/CTR/Initialize.html"><CODE>nn::snd::CTR::Initialize</CODE></a> function. 59 </p></div> 60 <a name="class" id="class"> 61<h2>Classes</h2> 62 <div class="section"> 63 <table class="members"> 64 <tr> 65<th class="category" colspan="2"><CODE>Result</CODE></th> 66 </tr> 67 <tr> 68 <th> 69<a href="../../../nn/snd/CTR/ResultAlreadyInitialized/Overview.html"><CODE>nn::snd::CTR::ResultAlreadyInitialized</CODE></a> 70 </th> 71<td>Indicates that initialization has already finished.</td> 72 </tr> 73 <tr> 74 <th> 75<a href="../../../nn/snd/CTR/ResultNoDspComponentLoaded/Overview.html"><CODE>nn::snd::CTR::ResultNoDspComponentLoaded</CODE></a> 76 </th> 77<td>Indicates that <CODE>dspcomponent</CODE> has not been loaded.</td> 78 </tr> 79 <tr> 80 <th> 81<a href="../../../nn/snd/CTR/ResultInvalidUsage/Overview.html"><CODE>nn::snd::CTR::ResultInvalidUsage</CODE></a> 82 </th> 83<td>Indicates a usage error, such as the order of arguments and function calls.</td> 84 </tr> 85 <tr> 86<th class="category" colspan="2">Other</th> 87 </tr> 88 <tr> 89 <th> 90<a href="../../../nn/snd/CTR/Bcwav/Overview.html"><CODE>nn::snd::CTR::Bcwav</CODE></a> 91 </th> 92<td>Definition of a class that handles BCWAV files.</td> 93 </tr> 94 <tr> 95 <th> 96<a href="../../../nn/snd/CTR/FxDelay/Overview.html"><CODE>nn::snd::CTR::FxDelay</CODE></a> 97 </th> 98<td>The delay effect class.</td> 99 </tr> 100 <tr> 101 <th> 102<a href="../../../nn/snd/CTR/FxReverb/Overview.html"><CODE>nn::snd::CTR::FxReverb</CODE></a> 103 </th> 104<td>The reverb effect class.</td> 105 </tr> 106 <tr> 107 <th> 108<a href="../../../nn/snd/CTR/OutputCapture/Overview.html"><CODE>nn::snd::CTR::OutputCapture</CODE></a> 109 </th> 110<td>The class for getting the DSP's final output.</td> 111 </tr> 112 <tr> 113 <th> 114<a href="../../../nn/snd/CTR/Voice/Overview.html"><CODE>nn::snd::CTR::Voice</CODE></a> 115 </th> 116<td>A class used to control <CODE>Voice</CODE> objects.</td> 117 </tr> </table> 118 </div> 119 </a> <a name="struct" id="struct"> 120<h2>Structures</h2> 121 <div class="section"> 122 <table class="members"> 123 <tr> 124 <th> 125<a href="../../../nn/snd/CTR/AdpcmParam/Overview.html"><CODE>nn::snd::CTR::AdpcmParam</CODE></a> 126 </th> 127<td>A structure that stores ADPCM coefficients.</td> 128 </tr> 129 <tr> 130 <th> 131<a href="../../../nn/snd/CTR/AdpcmContext/Overview.html"><CODE>nn::snd::CTR::AdpcmContext</CODE></a> 132 </th> 133<td>A structure that stores an ADPCM context.</td> 134 </tr> 135 <tr> 136 <th> 137<a href="../../../nn/snd/CTR/MonoFilterCoefficients/Overview.html"><CODE>nn::snd::CTR::MonoFilterCoefficients</CODE></a> 138 </th> 139<td>Structure that stores monopole filter coefficients.</td> 140 </tr> 141 <tr> 142 <th> 143<a href="../../../nn/snd/CTR/BiquadFilterCoefficients/Overview.html"><CODE>nn::snd::CTR::BiquadFilterCoefficients</CODE></a> 144 </th> 145<td>Structure that stores biquad filter coefficients.</td> 146 </tr> 147 <tr> 148 <th> 149<a href="../../../nn/snd/CTR/MixParam/Overview.html"><CODE>nn::snd::CTR::MixParam</CODE></a> 150 </th> 151<td>A structure that stores the gain for each channel.</td> 152 </tr> 153 <tr> 154 <th> 155<a href="../../../nn/snd/CTR/WaveBuffer/Overview.html"><CODE>nn::snd::CTR::WaveBuffer</CODE></a> 156 </th> 157<td>Structure that stores information about a buffer storing sample data.</td> 158 </tr> 159 <tr> 160 <th> 161<a href="../../../nn/snd/CTR/AuxBusData/Overview.html"><CODE>nn::snd::CTR::AuxBusData</CODE></a> 162 </th> 163<td>Structure for functions containing the code that processes <CODE>Aux</CODE> bus data in each sound frame.</td> 164 </tr> </table> 165 </div> 166 </a> <a name="enum" id="enum"> 167<h2>Enumerated Types</h2> 168 <div class="section"> 169 <table class="members"> 170 <tr> 171 <td width="100"> </td> 172 <th> 173<a href="../../../nn/snd/CTR/ChannelIndex.html"><CODE>ChannelIndex</CODE></a> 174 </th> 175<td>Enumerated type representing channel positions.</td> 176 </tr> 177 <tr> 178 <td width="100"> </td> 179 <th> 180<a href="../../../nn/snd/CTR/OutputMode.html"><CODE>OutputMode</CODE></a> 181 </th> 182<td>Enumerated type representing a mixer's output mode.</td> 183 </tr> 184 <tr> 185 <td width="100"> </td> 186 <th> 187<a href="../../../nn/snd/CTR/ClippingMode.html"><CODE>ClippingMode</CODE></a> 188 </th> 189<td>Enumerated type representing the clipping mode.</td> 190 </tr> 191 <tr> 192 <td width="100"> </td> 193 <th> 194<a href="../../../nn/snd/CTR/SurroundSpeakerPosition.html"><CODE>SurroundSpeakerPosition</CODE></a> 195 </th> 196<td>Enumerated type indicating the virtual speaker position for 3D surround sound.</td> 197 </tr> 198 <tr> 199 <td width="100"> </td> 200 <th> 201<a href="../../../nn/snd/CTR/InterpolationType.html"><CODE>InterpolationType</CODE></a> 202 </th> 203<td>An enumerated type representing the interpolation method.</td> 204 </tr> 205 <tr> 206 <td width="100"> </td> 207 <th> 208<a href="../../../nn/snd/CTR/FilterType.html"><CODE>FilterType</CODE></a> 209 </th> 210<td>Enumerated type representing the filter type.</td> 211 </tr> 212 <tr> 213 <td width="100"> </td> 214 <th> 215<a href="../../../nn/snd/CTR/AuxBusId.html"><CODE>AuxBusId</CODE></a> 216 </th> 217<td>Enumerated type representing the <CODE>Aux</CODE> bus ID.</td> 218 </tr> 219 <tr> 220 <td width="100"> </td> 221 <th> 222<a href="../../../nn/snd/CTR/SampleFormat.html"><CODE>SampleFormat</CODE></a> 223 </th> 224<td>Enumerated type representing sample formats.</td> 225 </tr> </table> 226 </div> 227 </a> <a name="typedef" id="typedef"> 228<h2><CODE>typedef</CODE> Definitions</h2> 229 <div class="section"> 230 <table class="members"> 231 <tr> 232 <td width="100" /> 233 <th> 234<a href="../../../nn/snd/CTR/AuxCallback.html"><CODE>AuxCallback</CODE></a> 235 </th> 236<td>Typedef for the <CODE>Aux</CODE> callback function pointer.</td> 237 </tr> 238 <tr> 239 <td width="100" /> 240 <th> 241<a href="../../../nn/snd/CTR/VoiceDropCallbackFunc.html"><CODE>VoiceDropCallbackFunc</CODE></a> 242 </th> 243<td>Typedef for the callback function to invoke when the library frees a voice.</td> 244 </tr> </table> 245 </div> 246 </a> <a name="constant" id="constant"> 247<h2>Constants</h2> 248 <div class="section"> 249 <table class="members"> 250 <tr> 251 <td width="100"> 252<span class="static_style" title="static">S</span> 253 </td> 254 <th> 255<span class="argument"><a href="../../../nn/snd/CTR/VOICE_PRIORITY_NODROP.html"><CODE>VOICE_PRIORITY_NODROP</CODE></a></span> 256 </th> 257<td>This is the highest possible priority and is also given special treatment.</td> 258 </tr> 259 <tr> 260 <td width="100"> 261<span class="static_style" title="static">S</span> 262 </td> 263 <th> 264<span class="argument"><a href="../../../nn/snd/CTR/NN_SND_DSP_MAXIMUM_CYCLES.html"><CODE>NN_SND_DSP_MAXIMUM_CYCLES</CODE></a></span> 265 </th> 266<td>Maximum number of DSP cycles per sound frame.</td> 267 </tr> </table> 268 </div> 269 </a> <a name="function" id="function"> 270<h2>Functions</h2> 271 <div class="section"> 272 <table class="members"> 273 <tr> 274<th class="category" colspan="3">Initialize/Finalize</th> 275 </tr> 276 <tr> 277 <td width="100"> </td> 278 <th> 279<a href="../../../nn/snd/CTR/Initialize.html"><CODE>Initialize</CODE></a> 280 </th> 281<td>Initializes the sound library.</td> 282 </tr> 283 <tr> 284 <td width="100"> </td> 285 <th> 286<a href="../../../nn/snd/CTR/Finalize.html"><CODE>Finalize</CODE></a> 287 </th> 288<td>Finalizes the sound library.</td> 289 </tr> 290 <tr> 291 <td width="100"> </td> 292 <th> 293<a href="../../../nn/snd/CTR/InitializeWaveBuffer.html"><CODE>InitializeWaveBuffer</CODE></a> 294 </th> 295<td>Initializes a buffer information structure.</td> 296 </tr> 297 <tr> 298<th class="category" colspan="3">Cache Operations</th> 299 </tr> 300 <tr> 301 <td width="100"> </td> 302 <th> 303<a href="../../../nn/snd/CTR/FlushDataCache.html"><CODE>FlushDataCache</CODE></a> 304 </th> 305<td>Writes data for the specified cache range back into memory and invalidates the cache.</td> 306 </tr> 307 <tr> 308<th class="category" colspan="3">Synchronous Processing</th> 309 </tr> 310 <tr> 311 <td width="100"> </td> 312 <th> 313<a href="../../../nn/snd/CTR/WaitForDspSync.html"><CODE>WaitForDspSync</CODE></a> 314 </th> 315<td>Receives the result of DSP processing.</td> 316 </tr> 317 <tr> 318 <td width="100"> </td> 319 <th> 320<a href="../../../nn/snd/CTR/SendParameterToDsp.html"><CODE>SendParameterToDsp</CODE></a> 321 </th> 322<td>Applies the configured parameters to the DSP.</td> 323 </tr> 324 <tr> 325<th class="category" colspan="3">Master Controls, Auxiliary Bus Controls</th> 326 </tr> 327 <tr> 328 <td width="100"> </td> 329 <th> 330<a href="../../../nn/snd/CTR/SetMasterVolume.html"><CODE>SetMasterVolume</CODE></a> 331 </th> 332<td>This function sets the master volume.</td> 333 </tr> 334 <tr> 335 <td width="100"> </td> 336 <th> 337<a href="../../../nn/snd/CTR/SetAuxReturnVolume.html"><CODE>SetAuxReturnVolume</CODE></a> 338 </th> 339<td>Sets the <CODE>Aux</CODE> bus volume.</td> 340 </tr> 341 <tr> 342 <td width="100"> </td> 343 <th> 344<a href="../../../nn/snd/CTR/GetAuxReturnVolume.html"><CODE>SetAuxReturnVolume</CODE></a> 345 </th> 346<td>Gets the <CODE>Aux</CODE> bus volume.</td> 347 </tr> 348 <tr> 349 <td width="100"> </td> 350 <th> 351<a href="../../../nn/snd/CTR/RegisterAuxCallback.html"><CODE>RegisterAuxCallback</CODE></a> 352 </th> 353<td>Sets the <CODE>Aux</CODE> bus callback function.</td> 354 </tr> 355 <tr> 356 <td width="100"> </td> 357 <th> 358<a href="../../../nn/snd/CTR/GetAuxCallback.html"><CODE>GetAuxCallback</CODE></a> 359 </th> 360<td>Gets the <CODE>Aux</CODE> bus callback function.</td> 361 </tr> 362 <tr> 363 <td width="100"> </td> 364 <th> 365<a href="../../../nn/snd/CTR/ClearAuxCallback.html"><CODE>ClearAuxCallback</CODE></a> 366 </th> 367<td>Clears the <CODE>Aux</CODE> bus callback function.</td> 368 </tr> 369 <tr> 370 <td width="100"> </td> 371 <th> 372<a href="../../../nn/snd/CTR/SetAuxFrontBypass.html"><CODE>SetAuxFrontBypass</CODE></a> 373 </th> 374<td>Configures whether to bypass the front channels of an Aux bus.</td> 375 </tr> 376 <tr> 377<th class="category" colspan="3">3D Surround Sound</th> 378 </tr> 379 <tr> 380 <td width="100"> </td> 381 <th> 382<a href="../../../nn/snd/CTR/SetSoundOutputMode.html"><CODE>SetSoundOutputMode</CODE></a> 383 </th> 384<td>Sets the sound output mode.</td> 385 </tr> 386 <tr> 387 <td width="100"> </td> 388 <th> 389<a href="../../../nn/snd/CTR/GetSoundOutputMode.html"><CODE>GetSoundOutputMode</CODE></a> 390 </th> 391<td>Gets the sound output mode.</td> 392 </tr> 393 <tr> 394 <td width="100"> </td> 395 <th> 396<a href="../../../nn/snd/CTR/SetClippingMode.html"><CODE>SetClippingMode</CODE></a> 397 </th> 398<td>Sets the clipping mode.</td> 399 </tr> 400 <tr> 401 <td width="100"> </td> 402 <th> 403<a href="../../../nn/snd/CTR/GetClippingMode.html"><CODE>GetClippingMode</CODE></a> 404 </th> 405<td>Gets the clipping mode.</td> 406 </tr> 407 <tr> 408 <td width="100"> </td> 409 <th> 410<a href="../../../nn/snd/CTR/SetSurroundDepth.html"><CODE>SetSurroundDepth</CODE></a> 411 </th> 412<td>Sets the surround sound depth.</td> 413 </tr> 414 <tr> 415 <td width="100"> </td> 416 <th> 417<a href="../../../nn/snd/CTR/SetSurroundSpeakerPosition.html"><CODE>SetSurroundSpeakerPosition</CODE></a> 418 </th> 419<td>Sets the virtual speaker position for 3D surround sound.</td> 420 </tr> 421 <tr> 422<th class="category" colspan="3">Get the DSP final output</th> 423 </tr> 424 <tr> 425 <td width="100"> </td> 426 <th> 427<a href="../../../nn/snd/CTR/GetMixedBusData.html"><CODE>GetMixedBusData</CODE></a> 428 </th> 429<td>Copies the <CODE>Mix</CODE> bus data to the specified buffer.</td> 430 </tr> 431 <tr> 432 <td width="100"> </td> 433 <th> 434<a href="../../../nn/snd/CTR/SetOutputCapture.html"><CODE>SetOutputCapture</CODE></a> 435 </th> 436<td>Configures the capture for getting the DSP final output.</td> 437 </tr> 438 <tr> 439<th class="category" colspan="3">Dropped Processing Detection</th> 440 </tr> 441 <tr> 442 <td width="100"> </td> 443 <th> 444<a href="../../../nn/snd/CTR/GetDroppedSoundFrameCount.html"><CODE>GetDroppedSoundFrameCount</CODE></a> 445 </th> 446<td>Gets the number of dropped sound frames.</td> 447 </tr> 448 <tr> 449 <td width="100"> </td> 450 <th> 451<a href="../../../nn/snd/CTR/ClearDroppedSoundFrameCount.html"><CODE>ClearDroppedSoundFrameCount</CODE></a> 452 </th> 453<td>Initializes the number of dropped sound frames.</td> 454 </tr> 455 <tr> 456<th class="category" colspan="3">DSP-ADPCM-Related</th> 457 </tr> 458 <tr> 459 <td width="100"> </td> 460 <th> 461<a href="../../../nn/snd/CTR/EncodeAdpcmData.html"><CODE>EncodeAdpcmData</CODE></a> 462 </th> 463<td>Encodes 16-bit PCM data into DSP-ADPCM format.</td> 464 </tr> 465 <tr> 466 <td width="100"> </td> 467 <th> 468<a href="../../../nn/snd/CTR/DecodeAdpcmData.html"><CODE>DecodeAdpcmData</CODE></a> 469 </th> 470<td>Decodes DSP-ADPCM data.</td> 471 </tr> 472 <tr> 473 <td width="100"> </td> 474 <th> 475<a href="../../../nn/snd/CTR/GetAdpcmOutputBufferSize.html"><CODE>GetAdpcmOutputBufferSize</CODE></a> 476 </th> 477<td>Returns the size of the output buffer that is required during encoding.</td> 478 </tr> 479 <tr> 480 <td width="100"> </td> 481 <th> 482<a href="../../../nn/snd/CTR/ConvertAdpcmPos2Nib.html"><CODE>ConvertAdpcmPos2Nib</CODE></a> 483 </th> 484<td>Converts the sample position to a number of nibbles.</td> 485 </tr> 486 <tr> 487 <td width="100"> </td> 488 <th> 489<a href="../../../nn/snd/CTR/ConvertAdpcmNib2Pos.html"><CODE>ConvertAdpcmNib2Pos</CODE></a> 490 </th> 491<td>Converts the number of nibbles to a sample position.</td> 492 </tr> 493 <tr> 494<th class="category" colspan="3">Effect</th> 495 </tr> 496 <tr> 497 <td width="100"> </td> 498 <th> 499<a href="../../../nn/snd/CTR/SetEffect.html"><CODE>SetEffect</CODE></a> 500 </th> 501<td>Configures the delay effect.</td> 502 </tr> 503 <tr> 504 <td width="100"> </td> 505 <th> 506<a href="../../../nn/snd/CTR/ClearEffect.html"><CODE>ClearEffect</CODE></a> 507 </th> 508<td>Clears an effect setting.</td> 509 </tr> 510 <tr> 511<th class="category" colspan="3">Voice Controls</th> 512 </tr> 513 <tr> 514 <td width="100"> </td> 515 <th> 516<a href="../../../nn/snd/CTR/AllocVoice.html"><CODE>AllocVoice</CODE></a> 517 </th> 518<td>Gets a voice.</td> 519 </tr> 520 <tr> 521 <td width="100"> </td> 522 <th> 523<a href="../../../nn/snd/CTR/FreeVoice.html"><CODE>FreeVoice</CODE></a> 524 </th> 525<td>Frees a voice.</td> 526 </tr> 527 <tr> 528<th class="category" colspan="3">Other</th> 529 </tr> 530 <tr> 531 <td width="100"> </td> 532 <th> 533<a href="../../../nn/snd/CTR/GetSampleLength.html"><CODE>GetSampleLength</CODE></a> 534 </th> 535<td>Gets the sample length.</td> 536 </tr> 537 <tr> 538 <td width="100"> </td> 539 <th> 540<a href="../../../nn/snd/CTR/SetMaximumDspCycles.html"><CODE>SetMaximumDspCycles</CODE></a> 541 </th> 542<td>Sets the number of DSP cycles that sound can use.</td> 543 </tr> 544 <tr> 545 <td width="100"> </td> 546 <th> 547<a href="../../../nn/snd/CTR/GetMaximumDspCycles.html"><CODE>GetMaximumDspCycles</CODE></a> 548 </th> 549<td>Gets the number of DSP cycles allocated to sound.</td> 550 </tr> 551 <tr> 552 <td width="100"> </td> 553 <th> 554<a href="../../../nn/snd/CTR/GetDspCycles.html"><CODE>GetDspCycles</CODE></a> 555 </th> 556<td>Gets the number of cycles consumed by the DSP to create the last audio frame.</td> 557 </tr> 558 <tr> 559 <td width="100"> </td> 560 <th> 561<a href="../../../nn/snd/CTR/GetHeadphoneStatus.html"><CODE>GetHeadphoneStatus</CODE></a> 562 </th> 563<td>Gets whether headphones are plugged in.</td> 564 </tr> 565 <tr> 566 <td width="100"> </td> 567 <th> 568<a href="../../../nn/snd/CTR/UpdateHeadphoneStatus.html"><CODE>UpdateHeadphoneStatus</CODE></a> 569 </th> 570<td>Updates and gets the headphone insertion state.</td> 571 </tr> 572 <tr> 573 <td width="100"> </td> 574 <th> 575<a href="../../../nn/snd/CTR/SetOutputBufferCount.html"><CODE>SetOutputBufferCount</CODE></a> 576 </th> 577<td>Sets the number of buffers for the DSP final output level.</td> 578 </tr> </table> 579 </div> 580 </a> 581<h2>Revision History</h2> 582 <div class="section"> 583 <dl class="history"> 584 <dt>2011/02/02</dt> 585<dd>Added a note regarding the synchronization performed by sound threads and a note regarding initialization.<BR> 586 </dd> 587 <dt>2010/02/09</dt> 588<dd>Initial version.<br /> 589 </dd> 590 </dl> 591 </div> 592 <hr><p>CONFIDENTIAL</p></body> 593</html> 594