mirror of
https://github.com/rvtr/TwlIPL_commit-99.git
synced 2025-10-31 06:21:11 -04:00
155 lines
5.5 KiB
HTML
Executable File
155 lines
5.5 KiB
HTML
Executable File
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
|
|
<title>NNSSndStrmCallback</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>NNSSndStrmCallback</h1>
|
|
<h2>構文</h2>
|
|
<dl>
|
|
<dd><pre class="funcsynopsisinfo"><code>#include <nnsys/snd.h></code></pre></dd>
|
|
<dd><pre class="funcprototype"><code class="funcprototype">typedef void (*NNSSndStrmCallback)(
|
|
NNSSndStrmCallbackStatus <var>status</var>,
|
|
int <var>numChannles</var>,
|
|
void* <var>buffer</var>[],
|
|
u32 <var>len</var>,
|
|
NNSSndStrmFormat <var>format</var>,
|
|
void* <var>arg</var> );</code><br></pre></dd>
|
|
</dl>
|
|
<div class="refsection" lang="ja"><a name="IDAMMWT"></a>
|
|
<h2>引数</h2>
|
|
|
|
<div class="variablelist">
|
|
<table border="0">
|
|
<col align="left" valign="top">
|
|
<tbody>
|
|
<tr>
|
|
<td><em><strong><code>status</code></strong></em></td>
|
|
<td>コールバックの状態です。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><em><strong><code>numChannles</code></strong></em></td>
|
|
<td>チャンネル数です。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><em><strong><code>buffer</code></strong></em></td>
|
|
<td>各チャンネル毎のバッファの先頭アドレスの配列です。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><em><strong><code>len</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>arg</code></strong></em></td>
|
|
<td>ユーザー引数です。</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="refsection" lang="ja"><a name="IDA4NWT"></a>
|
|
<h2>返り値</h2>
|
|
|
|
<p>なし。</p>
|
|
</div>
|
|
<div class="refsection" lang="ja"><a name="IDAFOWT"></a>
|
|
<h2>説明</h2>
|
|
<p>
|
|
ストリーム再生時に、波形データの補充が必要になったとき呼びだされるコールバック関数です。
|
|
</p>
|
|
<p>
|
|
このコールバック関数は、
|
|
<tt class="function"><a href="NNS_SndStrmSetup.html">NNS_SndStrmSetup</a></tt>関数、
|
|
<tt class="function"><a href="NNS_SndArcStrmStartEx2.html">NNS_SndArcStrmStartEx2</a></tt>関数、
|
|
<tt class="function"><a href="NNS_SndArcStrmPrepareEx2.html">NNS_SndArcStrmPrepareEx2</a></tt>関数
|
|
で登録されます。
|
|
</p>
|
|
<p>
|
|
<tt class="function">NNS_SndStrmSetup</tt>関数で登録したコールバック関数は、
|
|
渡されたバッファに対して、波形データを供給する義務があります。
|
|
<tt class="function">NNS_SndArcStrmStartEx2</tt>関数または、
|
|
<tt class="function">NNS_SndArcStrmPrepareEx2</tt>関数で登録したコールバック関数は、
|
|
サウンドアーカイブストリームライブラリによって、波形データが供給された後、呼びだされますので、
|
|
波形データ供給の義務はありません。
|
|
ただし、波形データを加工することは可能です。
|
|
</p>
|
|
<p>
|
|
コールバック関数は、2種類のタイミングで呼びだされます。
|
|
1つは、ストリーム再生を始める前に、あらかじめストリームバッファ全体に波形データを満たしておく必要があるために
|
|
呼びだされます。この時、コールバックの状態<em><strong><code>status</code></strong></em>に、
|
|
<span class="symbol">NNS_SND_STRM_CALLBACK_SETUP</span>が渡されます。
|
|
もう1つのコールバック呼び出しのタイミングは、ストリーム再生中に呼びだされるものです。
|
|
これは、再生によって消費されたバッファに、続きの波形データを補充する必要があるために呼びだされます。
|
|
この時は、コールバックの状態<em><strong><code>status</code></strong></em>に、
|
|
<span class="symbol">NNS_SND_STRM_CALLBACK_INTERVAL</span>が渡されます。
|
|
</p>
|
|
<p>
|
|
チャンネル数<em><strong><code>numChannles</code></strong></em>には、ストリーム再生のために使用している
|
|
チャンネル数が渡されます。
|
|
バッファの先頭アドレスの配列<em><strong><code>buffer</code></strong></em>の要素数は、
|
|
<em><strong><code>numChannles</code></strong></em>個になります。
|
|
各チャンネル毎のバッファサイズは、<em><strong><code>len</code></strong></em>バイトです。
|
|
</p>
|
|
<p>
|
|
サンプルデータフォーマット<em><strong><code>format</code></strong></em>は、下記の値のいずれかです。
|
|
</p>
|
|
<div class="table"><a name="IDAEQWT"></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>
|
|
|
|
<div class="note">
|
|
<h3 class="title">注意</h3>
|
|
<p>
|
|
波形データを補充(加工)した後は、メインメモリに確実に書き込まれるように、
|
|
<tt class="function">DC_FlushRange</tt>関数などを呼びだすようにしてください。
|
|
</p>
|
|
<p>
|
|
<tt class="function">NNS_SndStrmSetup</tt>関数で登録したコールバック関数は、割り込み禁止状態で呼びだされることに注意してください。
|
|
一方、<tt class="function">NNS_SndArcStrmStartEx2</tt>関数または、
|
|
<tt class="function">NNS_SndArcStrmPrepareEx2</tt>関数
|
|
で登録したコールバック関数は、ストリームスレッドから呼びだされることに注意してください。
|
|
</p>
|
|
<p>
|
|
必ずしもコールバック関数で、波形データの補充を完了させる必要はありませんが、
|
|
次にその領域が再生されるまでに補充を完了しないと、
|
|
正常な音声が出力されなくなります。
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<h2>参照</h2>
|
|
<p><a href="NNS_SndStrmSetup.html">NNS_SndStrmSetup</a>, <a href="NNS_SndArcStrmStartEx2.html">NNS_SndArcStrmStartEx2</a>, <a href="NNS_SndArcStrmPrepareEx2.html">NNS_SndArcStrmPrepareEx2</a></p>
|
|
<h2>履歴</h2>
|
|
<p>2004/11/26 NNS_SndStrmSetup関数の説明から分離<br></p>
|
|
</div>
|
|
</body>
|
|
</html>
|