/*	
 *	clipwin.h
 *
 *	Windows専用ルーチンを集めました。
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2017 Naoyuki Sawa
 *
 *	* Wed Aug 16 22:59:27 JST 2017 Naoyuki Sawa
 *	- 既存のclipwin.h,clipwin.cを破棄して、同じ名前で全く別のモジュールとして、clipwin.h,clipwin.cを作成開始しました。
 *	  詳細は、以下の通りです。
 *	- 既存のclipwin.h,clipwin.cは、2002年当時に、P/ECE APIと互換のAPIをWindows上で実装する目的で作成していたものです。
 *	  しかしその後、ほとんど作成が進まないまま、放棄していました。
 *	  また、実際のWindows用プログラムにおいても、P/ECE APIと互換のAPIをWindows上で使用したい場面は、有りませんでした。
 *	  なぜなら、P/ECE APIの仕様では低水準の機能過ぎて、Windows用プログラムで使用するには少々使い辛いからです。
 *	  結局、既存のclipwin.h,clipwin.cは、使用もせず,libclipにも含めず,コンパイルすらもせずに、残されていただけでした。
 *	- 実際の所、P/ECE APIと互換のAPIよりも、clippce.cモジュールに存在するP/ECE特有の機能をWindows上で使用したいケースの方が多いです。
 *	  そこで、clippce.cモジュールに存在するP/ECE特有の機能の内、Windows上で使用したい機能を実装するモジュールとして、clipwin.h,clipwin.cを位置付ける事にしました。
 *	- 現在の所、特に、Windows上で使用したい機能は、stream_play(),stream_stop()です。
 *	  stream_play(),stream_stop()が使用出来れば、それに依存するサウンドドライバ(clipmod.cやclipadp.cなど)が、Windows上でも使えるようになる事が期待出来るからです。
 *	  まずは、stream_play(),stream_stop()を実装し、その後、clippce.c内のその他の機能の内、使いたい機能を、必要に応じて、当モジュール内に実装して行こうと思います。
 *	- 尚、変更を開始する前に、既存のclipwin.h,clipwin.cを、「22_clipwin_h_clipwin_c_用途変更前保存.20170816」に保存しておきました。
 *	  前述の通り、既存のclipwin.h,clipwin.cはこれまでも使っていなかったので、参照する必要が生じる事は無いと思いますが、念のためです。
 *	  また同様に、clip.dsp,clip.dswも使っていなかったので、「22_clipwin_h_clipwin_c_用途変更前保存.20170816」に保存しておきました。
 *	  clip.dsp,clip.dswは、2002年当時にCLiPライブラリをWindows用にビルドするために一時期使用していたVC++6.0用プロジェクトですが、その後すぐに使用しなくなり長い間メンテナンスもしておらずもう使えなくなっていました。
 *	  現在は、Windows用のCLiPライブラリのビルドは、libclip/,libclip.x64/,libclip.net/で行っており、clip.dsp,clip.dswを使用する事はもう有りません。
 *	  今後、clip.dsp,clip.dswを参照する必要が生じる事は無いと思いますが、念のため、これらも上記のフォルダに保存しておく事にしました。
 */
#ifndef __CLIP_WIN_H__
#define __CLIP_WIN_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
//*****************************************************************************
//	ユーティリティ：ストリーム再生
//*****************************************************************************
#define STREAM_PLAY_STACK_SWITCH_FRAM4 (1<<0) //┬P/ECE用のソースとの互換性のためだけに定義しています。Windows版では指定しても無視されます。
#define STREAM_PLAY_CALLBACK_USES_HEAP (1<<1) //┘
typedef int STREAMCALLBACK(short* wbuff, intptr_t param);
void stream_play(int BLKS, STREAMCALLBACK* callback, intptr_t param, int flags/*Windows版では指定しても無視されます*/);
void stream_stop();
int stream_stat();
typedef void STREAMFILTER(short wbuff[/*len*/], int len);
void stream_filter_install(STREAMFILTER* filter);
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_WIN_H__
