TwlIPL_commit-99/add-ins/TwlSystem/man/ja_JP/snd/NNS_SndStrmSetup.html

151 lines
5.6 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>NNS_SndStrmSetup</title>
<link rel="stylesheet" href="../css/nitro.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
</head>
<body>
<div class="refentry" lang="ja"><a name="IDAKKWT"></a><div class="titlepage">
<div></div>
<div></div>
</div>
<h1>NNS_SndStrmSetup</h1>
<h2>構文</h2>
<dl>
<dd><pre class="funcsynopsisinfo"><code>#include &lt;nnsys/snd.h&gt;</code></pre></dd>
<dd><pre class="funcprototype"><code class="funcprototype">BOOL NNS_SndStrmSetup(
NNSSndStrm* <var>stream</var>,
NNSSndStrmFormat <var>format</var>,
void* <var>buffer</var>,
u32 <var>bufSize</var>,
int <var>timer</var>,
int <var>interval</var>,
NNSSndStrmCallback <var>callback</var>,
void* <var>arg</var> );</code><br></pre></dd>
</dl>
<div class="refsection" lang="ja"><a name="IDA1MWT"></a>
<h2>引数</h2>
<div class="variablelist">
<table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><em><strong><code>stream</code></strong></em></td>
<td>ストリーム構造体のポインタです。</td>
</tr>
<tr>
<td><em><strong><code>format</code></strong></em></td>
<td>ストリームデータフォーマットです。</td>
</tr>
<tr>
<td><em><strong><code>buffer</code></strong></em></td>
<td>ストリームバッファの先頭アドレスです。32バイトアライメントされている必要があります。</td>
</tr>
<tr>
<td><em><strong><code>bufSize</code></strong></em></td>
<td>ストリームバッファサイズです。<var>interval</var> * (チャンネル数) * 32の倍数で無ければなりません。</td>
</tr>
<tr>
<td><em><strong><code>timer</code></strong></em></td>
<td>ストリームチャンネルのタイマー値です。</td>
</tr>
<tr>
<td><em><strong><code>interval</code></strong></em></td>
<td>コールバックインターバルです。2以上の値を指定します。</td>
</tr>
<tr>
<td><em><strong><code>callback</code></strong></em></td>
<td>ストリームコールバック関数のポインタです。</td>
</tr>
<tr>
<td><em><strong><code>arg</code></strong></em></td>
<td>ストリームコールバック関数のユーザー引数です。</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="refsection" lang="ja"><a name="IDA4OWT"></a>
<h2>返り値</h2>
<p>セットアップに成功したかどうかを返します。</p>
</div>
<div class="refsection" lang="ja"><a name="IDAFPWT"></a>
<h2>説明</h2>
<p>
ストリームのセットアップを行います。
あらかじめ、<tt class="function"><a href="NNS_SndStrmAllocChannel.html">NNS_SndStrmAllocChannel</a></tt>関数で、
チャンネルを確保しておく必要があります。
ストリームを再生するためには、この関数の後で
<tt class="function"><a href="NNS_SndStrmStart.html">NNS_SndStrmStart</a></tt>関数を呼びだします。
</p>
<p>
ストリームデータフォーマット<em><strong><code>format</code></strong></em>は、下記から選択します。
16ビットの方が音質は良くなりますが、8ビットの時と比べて倍の頻度でコールバック関数が呼びだされます。
8ビットの時と同じ頻度で呼びだされるようにするためには、
ストリームバッファを2倍のサイズ用意する必要があります。
</p>
<div class="table"><a name="IDA1PWT"></a><p class="title"><b>表 . NNSSndStrmFormat</b></p>
<table summary="NNSSndStrmFormat" border="1">
<colgroup><col><col></colgroup>
<thead>
<tr>
<th>ラベル</th>
<th>説明</th>
</tr>
</thead>
<tbody>
<tr>
<td>NNS_SND_STRM_FORMAT_PCM8</td>
<td>8ビットPCM</td>
</tr>
<tr>
<td>NNS_SND_STRM_FORMAT_PCM16</td>
<td>16ビットPCM</td>
</tr>
</tbody>
</table>
</div>
<p>
ストリーム再生を行うためには、ストリームバッファが必要になります。
ストリームバッファが小さいほど頻繁にコールバック関数が呼びだされます。
ストリームバッファの先頭アドレス<em><strong><code>buffer</code></strong></em>は、
32バイトアライメントされている必要があります。
また、ストリームバッファサイズ<em><strong><code>bufSize</code></strong></em>は、
interval * (チャンネル数) * 32の倍数で無ければなりません。
この(チャンネル数)とは、<tt class="function">NNS_SndStrmAllocChannel</tt>関数で確保したチャンネル数を指します。
</p>
<p>
ストリームチャンネルのタイマー値<em><strong><code>timer</code></strong></em>は、ストリームの再生速度を制御するパラメータです。
値の単位は、1サンプル再生するクロック数です。1秒あたりのクロック数は、
<span class="symbol">NNS_SND_STRM_TIMER_CLOCK</span>として定義されています。
例えば、サンプリングレート<em><strong><code>sampleRate</code></strong></em>で再生するためには、
<span class="symbol">NNS_SND_STRM_TIMER_CLOCK</span> / <em><strong><code>sampleRate</code></strong></em>をタイマー値として指定します。
</p>
<p>
コールバックインターバル<em><strong><code>interval</code></strong></em>は、ストリームバッファ全体を再生する間に、
何回コールバック関数が呼びだされるのかを指定します。
例えば、2を指定した場合、バッファの半分を再生中に、残り半分に波形データを書き込むようにします。
</p>
<p>
コールバック関数<em><strong><code>callback</code></strong></em>は、波形データの補充が必要になったときに呼びだされる関数です。
コールバック関数のユーザー引数<em><strong><code>arg</code></strong></em>は、
コールバック関数<em><strong><code>callback</code></strong></em>の引数にそのまま渡されます。
コールバック関数については、
<tt class="function"><a href="NNSSndStrmCallback.html">NNSSndStrmCallback</a></tt>の説明を参照してください。
</p>
</div>
<h2>参照</h2>
<p><a href="NNS_SndStrmAllocChannel.html">NNS_SndStrmAllocChannel</a>, <a href="NNS_SndStrmStart.html">NNS_SndStrmStart</a>, <a href="NNSSndStrmCallback.html">NNSSndStrmCallback</a></p>
<h2>履歴</h2>
<p>2004/11/26 NNSSndStrmCallbackの説明を分離<br>2004/08/10 初版<br></p>
</div>
</body>
</html>