CHECKSBPARAM(3x) — NEWS-OS Programmer’s Manual
名称
CheckSbparam, GetTransFormatLength, DoTransFormat, InitTransFormat, GetBaseLength − サウンドデータのフォーマットを扱う
形式
#include <newsiodev/sound.h>
#include <soundlib.h>
result = CheckSbparam( sb_param )
intresult;
struct sbparam ∗sb_param;
newLength = GetTransFormatLength( oldSB, newSB, oldLength )
struct sbparam∗oldSB, ∗newSB;
intnewLength, oldLength;
newLength = DoTransFormat( oldSB, newSB, oldSound, newSound, oldLength )
struct sbparam∗oldSB, ∗newSB;
charoldSound[ oldLength ], newSound[ LONG_ENOUGH ];
intnewLength, oldLength;
InitTransFormat()
baseLength = GetBaseLength( oldSB, newSB )
intbaseLength;
struct sbparam∗oldSB, newSB;
解説
CheckSbparam はサウンドデータのフォーマットをチェックします。 sb_param の内容が sb(4) で扱うフォーマットであれば 0 、それ以外であれば −1 を返します。 なお sb_compress と sb_format のフィールドは、それぞれ LOGPCM、ADPCM のフォーマットが選択された時だけチェックします。
GetTransFormatLength はフォーマット変換後のデータ長を求めます。 形式 oldSB でバイト長 oldLength の音声を newSB に変換した時のバイト長を返します。内部で oldSB、newSB に対して CheckSbparam を実行し、未定義フォーマットだった場合は、エラー −1 が返ります。
DoTransFormat は、サウンドデータのフォーマット変換を行います。 oldSB で表されるフォーマットで oldSound に格納されたバイト長 oldLength の音声を、 newSB で表されるフォーマットに変換して newSound に格納します。変換に成功したサウンドデータの長さを返します。
InitTransFormat は、 DoTransFormat 内部で使うフィルタを初期化します。 DoTransFormat を呼ぶ前に一度だけコールする必要があります。また、 前回と異なるデータ変換をする時にもこのルーチンをコールする必要があります。
GetBaseLength はフォーマット変換ルーチンに渡すデータの長さ制限を求めます。 DoTransFormat は、内部で使用するフィルタに制約があるため、 一度に変換できるデータ長に制限がつきます。 実際には、変換前後のサウンドフォーマットによって決まるある データ長を一度に変換する必要があります。 あるいは、このデータ長の整数倍の長さならば、問題なく一度に変換できます。 GetBaseLength は、この定数を求めます。第一引数は変換前のフォーマットで、 第二引数は変換後のフォーマットです。 この定数は、変換前もしくは変換後のフォーマットが ADPCM のときや、 周波数変換を行うときに大きな値になります。
関連ファイル
/usr/sony/lib/libsound.a
/sys/newsiodev/sound.h
/usr/sony/include/soundlib.h
関連事項
NEWS-OSRelease 4.2.1R