プラグイン SDK とソースコード一式 2024/07/12 版(本体 v3.15)

このフォルダにはプラグイン SDK とプラグインのソースコードが含まれています。
開発者向けです。一般ユーザーの方が見る必要は全くありません。

【使用条件】

ソースコードの使用はプラグインごとのライセンスの範囲内で自由です。もし不具合を
修正、改良した場合は出来るだけ連絡頂けると助かります。ただし、連絡は義務ではあ
りませんので、あんまり深刻にならずに気軽にご使用下さい。

KbMedia Player のプラグインの配布はもちろんのこと、KbMedia Player のプラグイン
を使用するアプリケーションを作成して配布することが出来ます。

プラグインを使用するアプリケーションに Kobarin が作成したプラグインを同梱して配
布することも出来ます。その場合、添付ドキュメントも同梱することが条件です。

ただし、ドキュメントに再配布禁止と記載しているものは除きます。本体標準同梱のう
ち、Kobarin が作成したもので、再配布条件について特に記載がないものは再配布可能
と解釈して結構です。「プラグイン置き場」にあるものや、Kobarin が作成したのでは
ないプラグインについてはこの限りではありません。

ソースコードを改変して配布することも自由です。プラグインごとにライセンスが異な
るのでそれだけ注意して下さい。


【ビルド方法】

ソースコードは VS2022 でビルド可能です。kbungca.kpi に含まれる kbungca.dll のみ
VC6 でのみ ビルド出来ます。(VS2022 にプロジェクトを移行しても GCA SDK が対応し
ないためビルド出来ません)

新仕様のデコーダプラグインは仕様が確定しています。仕様が確定したのはデコーダプ
ラグインのみで、デバイス/演奏/アーカイブプラグインについては今後仕様変更される
予定です。

_all\kbmplay_all\kbmplay_all.sln を開くとソースコード同梱のプラグインを全てビル
ドすることが出来ます。(kbungca.kpi に含まれる kbungca.dll は除く)
読み込めないプロジェクトは、今のところソースコード非公開です。公開するソースコ
ードは増やしていく予定です。たくさんあって煩わしい場合はプラグインごとに .sln
ファイルがありますので、そちらを開いて下さい。

開発環境の都合上、出力ディレクトリが変な場所になっています。ビルドの実行前に出
力先を設定し直す必要があります。そのままビルドすると変な場所にファイルが生成さ
れてしまうのでご注意下さい。

表示 => その他のウィンドウ => プロパティマネージャ

どれでも良いので適当なプロジェクト(例えば kbbms)を選択

Debug | Win32 => kbmplay_property_sheet => ユーザーマクロ => KBMPLAY_BASEPATH

KBMPLAY_BASEPATH を適当なフォルダに設定して下さい。全てのプラグインの出力先が
更新されます。

kbmplay_property_sheet.props を直接編集しても良いです。

kbmplay_property_sheet.props がないとプロジェクト自体が開けなくなります。
_all フォルダと各種プロジェクトファイルの位置関係にご注意下さい。
プロジェクトファイルの置き場所を変え(階層が異なるフォルダに移動)たり、_all フ
ォルダの名前を変更すると大変なことになるのでご注意下さい。


【既知の不具合】

・kbm4a.kpi のアルバムアート画像取得が不完全

  複数個含む場合に２個目以降が取得出来ません。mp4 コンテナの仕様がよく分かりま
  せん。誰か直して下さい。

・kbdshow.kpi で、データによってはビット深度を正しく取得出来ない

  再生時に爆音ノイズが発生します。LAV Filter を導入している環境で wavPack の
32bit float と 32bit int の区別が出来ません。wavPack 以外では今のところ不具合を
確認出来ていません。

・kbdshow.kpi で動画再生時、映像と音声がずれることがある

  IReferenceClock の実装が間違ってるのだと思います。
  MediaFoundation に至ってはそもそもまともに同期出来ていません。

・kbdmusic.kpi で、ファイルを開く度に曲長が変わる＆デバイスを開けないとファイル
  オープンにも失敗する

  訳がわからない仕様になっています。WASAPI で別のデータを再生中に演奏リスト上で
  DirectMusic 関係ファイルの曲長計算等が出来ませんし、出来たとしても毎回結果が
  微妙に変わります。直せる方はお願いします。
  64bitビルドも出来ますが、動作しません。OS がサポートを打ち切ったのかもしれま
  せん。

【各種プラグインについて】

・kbpsf2.kpi
  Play! の最新版を組み込めれば、より再現性が向上するかもしれません。
  viopsf2.bin は生成されるバイナリが無駄に大きくなっていると思われます。
  不要なコードを除去出来ればサイズをかなり小さく出来そうです。

・kbbms.kpi
  プラグインから別のプラグインを呼び出す作りになっています。
  今のところ、kbrunkpi.exe 経由だと動作しません。
  IKpiFolder のサンプルにも最適です。

・kbdshow.kpi
  ビット深度取得の不具合と動画再生時の映像と音声がずれる不具合の修正お願いしま
  す。

・kbcstr.kpi/kbdmusic.kpi/kbmov.kpi/kbqt.kpi/kbswf.kpi/kbviv.kpi
  演奏プラグインのサンプルとしてお使い下さい。
  演奏プラグインは仕様が未確定なので注意が必要です。

・kbunarc.kpi/kbungca.kpi
  アーカイブプラグインのサンプルとしてお使い下さい。
  アーカイブプラグインは仕様が未確定なので注意が必要です。
  アーカイブプラグインは作成が困難だと思われますので、作成したい場合は頑張って
  下さい。
  実ファイルを作成せず、展開しながらの再生に対応させる場合は kbunarc.kpi の tar
  展開部が比較的単純で理解しやすいかと思います。lzh と zip も展開しながらの再生
  に対応しています。
  実ファイルを作成するなら、kbungca.kpi が参考になると思います。kbungca.kpi に
  含まれる kbungca.dll をビルドするには VC6 が必要です。VS2022 にプロジェクトを
  移行しても GCA SDK が対応しないためビルド出来ません。(リンカエラーが発生しま
  す)

・kbm4a.kpi
  アルバムアート画像の取得の不具合修正お願いします。

・kbmsxplug.kpi
  MGS 内蔵歌詞表示に本体の再生位置を取得する機構を使用しています。非公式の機能
  のため、将来のバージョンでは動作しなくなる可能性があります。
  設定項目が多いので IKpiConfig のサンプルに最適かもしれません。

・kbnezplug.kpi
  1ファイル複数曲のサンプルになります。kbwsr.kpi より複雑です。
  IKpiConfig のサンプルにもなります。

・kbtta.kpi
  タグ取得もしない、最もシンプルな作りのプラグインです。IKpiFile の使い方の参
  考になると思います。

・kbtak.kpi
  タグ取得と IKpiFile の使い方の参考になると思います。
  ソースコードは最も小さいです。（デコードそのものは DLL 任せなので)
  動作には tak_deco_lib.dll が必要です。

・kbsnesapu.kpi
  タグ取得、IKpiConfig による設定画面の生成、IKpiFolder 対応等、新しい仕様の
  プラグインの機能の多くを使用しています。その分作りが複雑になっています。
  動作には snesapu.dll が必要です。
  IKpiFolder はアーカイブ内の Script700 に対応するために必要です。
  Script700 のファイル自体に別の Script のファイルが指定されている場合にも対
  応しています。データを持ってる人はほとんどいないと思いますが。

・kbwsr.kpi
  1ファイル複数曲対応の参考になると思います。

・kbasio.kpi
  全ての ASIO デバイスで動作するとは限りません。動作しないデバイスに対応出来そ
  うなら修正お願いします。デバイスプラグインは仕様が未確定です。

・kbzlib.dll
  圧縮関係の API を除いてる以外はほぼ zlib そのものです。kbnezplug.kpi などの
  動作に必要なため、含めておきました。

・dde_test
  プラグインではありませんが、KbMedia Player を DDE で制御するためのサンプルで
  す。制御方法は 64bit 版と 32bit 版とで特に違いはありません。

・その他
  他にも色々あります。参考にして下さい。

その他の、現時点でソースコード非公開のプラグインはそのうち公開するかもしれませ
んので、参考にしたい方は気長にお待ちください。
