-------------------------------------------------------------------------------
【  名  称  】 mpg123 - MPEG Audio Decoder
【ファイル名】 kbmpg123.kpi
【バージョン】 2.28
【対応拡張子】 mp1/mp2/mp3/rmp
【 Platform 】 x86(32bit)/x64(64bit)
【 公 開 日 】 2024/03/16
-------------------------------------------------------------------------------

【概要】

libmpg123 をベースとした MP3 デコードプラグインです。
対応拡張子は MP1/MP2/MP3/RMP です。

libmpg123 については

http://www.mpg123.de/

を参照して下さい。

【kbmad.kpi と kbmpg123.kpi】

本体に標準で同梱されているもう１つの MP3 プラグイン(kbmad.kpi) と音質が異なる
ようですが、私には違いが分かりません。再生時の CPU 負荷は kbmad.kpi の方が
kbmpg123.kpiよりも高めです。

音質と負荷以外は kbmpg123.kpi も kbmad.kpi もほぼ同じです。後述の LAME タグ情
報通知も同じですので、どちらを使うかは好みで決めて下さい。

kbmpg123.kpi を使う場合は、「ツール」->「プラグイン設定」で kbmpg123.kpi よりも
上に表示されているプラグインのうち、対応拡張子が MP3 のものをすべて無効にして下
さい。

kbmpg123.kpi は kbmad.kpi よりもプラグインの使用優先度が高くなっていますので、
何も設定しなければ kbmpg123.kpi の方が使用されます。（他に MP3 対応プラグインを
導入していない場合）

【LAME タグ】

kbmpg123.kpi と kbmad.kpi はともに LAME タグを認識し、ギャップレス再生に対応し
ています。

VBR タグと LAME タグの詳細情報を KbMedia Player に通知します。情報は「ドキュメ
ント」部に表示されます。

通知する情報は以下の通りです。

　・header   (Xing/Info/VBRI)
　・revision (LAME Tag revision 0, LAME Tag not found, VBRI version 1)
　・encoder  (LAME3.xx, unknown)
　・quality  (50 (V5 and q0) etc...)
　・delay    (VBRI の場合だけ表示)
　・method   (cbr, abr, vbr mt etc...)  (以下、LAME Tag を含む場合だけ表示)
　・lowpass  (19000Hz etc...)
　・replaygain track peak (本体に通知。プラグイン側では処理しない）
　・replaygain track gain (本体に通知。プラグイン側では処理しない）
　・replaygain album gain (本体に通知。プラグイン側では処理しない）
　・nspsytune   (yes/no)
　・nssafejoint (yes/no)
　・nogap continued    (yes/no)
　・nogap continuation (yes/no)
　・ATH type (0 〜 15)
　・bitrate (minimal (-b) bitrate 32 etc...)
　・encoder delay (xxxx samples)
　・padded at end (xxxx samples)
　・noise shaping (0/1/2/3)
　・stereo mode   (mono, stereo, dual, joint, force, auto, intensity...)
　・unwise settings (yes/no)
　・source sample freq (32kHz or smaller, 44.1kHz, 48kHz, higher than 48kHz)
　・mp3 gain      (-1.5dB etc...)(表示のみ対応。再生には不使用)
　・surround info (none, DPL/DPL2 encoding, Ambisonic encoding)
　・preset flags  (01000011100) (11 桁のフラグ値の表示)
　・music length  (XXXX bytes)
　・music CRC     (タグに書き込まれた値、実際の値は非表示)
　・info tag CRC  (タグに書き込まれた値、実際の値は非表示)

LAME タグにリプレイゲイン情報が含まれる場合は本体に通知します。ただし、ID3v2 か
ApeTagv2 にもリプレイゲイン情報が含まれる場合、ID3v2 か ApeTagv2 の方を優先しま
す。

【ライセンス】

kbmpg123.kpi には Thomas Orgis 氏、 Michael Hipp 氏作の libmpg123 が組み込まれ
ています。

libmpg123 は LGPL ですので、kbmpg123.kpi も LGPL に準拠します。
ソースコードが欲しい方は Kobarin のホームページからダウンロードして下さい。
もし最新のソースコードがない場合は催促して頂ければ差し上げます。


-------------------------------------------------------------------------------

【更新履歴】

Version 2.28(2024/03/16)

・libmpg123 を 1.32.5(2024/02/17) に更新
・プラグイン設定で選択可能なデコーダの数を増やした

/*---------------------------------------------------------------------------*/

Version 2.27(2022/09/16)

・libmpg123 を 1.30.2(2022/08/02) に更新

/*---------------------------------------------------------------------------*/

Version 2.26(2021/06/21)

・libmpg123 を 1.28.0(2021/06/05) に更新

/*---------------------------------------------------------------------------*/

Version 2.25(2021/04/18)

・libmpg123 を 1.26.5(2021/03/22) に更新

/*---------------------------------------------------------------------------*/
Version 2.24(2020/01/03)

・libmpg123 を 1.25.13(2019/10/26) に更新

/*---------------------------------------------------------------------------*/

Version 2.23(2019/10/03)

・libmpg123 を 1.25.12(2019/08/24) に更新

/*---------------------------------------------------------------------------*/

Version 2.22(2019/02/24)

・libmpg123 を 1.25.10(2018/03/05) に差し替え
・64bit 版でも ASM による最適化コードを使えるようになった
　(64bit float での出力は出来なくなった)
・デコーダ(ASM による最適化コード)を選択出来るようにした
　・32bit 版では
　　SSE
　　MMX
　　i586
　　i386
　　generic
　　のうち CPU が対応しているものを使用可能
　・64bit 版では
　　AVX
　　x86-64
　　generic
　　のうち CPU が対応しているものを使用可能

/*---------------------------------------------------------------------------*/

Version 2.21(2017/04/09)

・コンパイラを VS2017 に変更
・ライブラリを libmpg123 1.24.0(2017/03/02) に差し替え

/*---------------------------------------------------------------------------*/

Version 2.20(2017/01/09)

・正式版公開に向けての細かい修正(ドキュメント/ソースコードの整理等)

/*---------------------------------------------------------------------------*/

Version 2.19(2016/11/20)

・コンパイラの最適化オプションを変更(32bit版のみ)
　・データによっては再生時にノイズが発生するのを修正

/*---------------------------------------------------------------------------*/

Version 2.18(2016/11/06)

・ライブラリを libmpg123 1.23.8(2016/09/27) に差し替え

/*---------------------------------------------------------------------------*/

Version 2.17(2016/09/12)

・本体が持つタグ取得を以下の順で呼ぶように変更
　・ID3v2 => ApeTag => RIFF => Lyrics3Tag => ID3v1

/*---------------------------------------------------------------------------*/

Version 2.16(2016/08/22)

・ライブラリを libmpg123 1.23.6(2016/6/30) に差し替え

/*---------------------------------------------------------------------------*/

Version 2.15(2016/08/22)

・v2.80beta23 のプラグイン仕様に対応
・本体が持つタグ取得を以下の順で呼ぶようにした
　・ApeTag => ID3v2/v1 => RIFF
　・↑で本体がリプレイゲインを取得した場合、LameTag から得たリプレイゲインが
　　あっても適用されないようにした
　・v2.80beta22 以前では本体側でどちらを優先するかを決めていた
　　(LameTag の方が優先度が低かったので結果は変わらないが)

/*---------------------------------------------------------------------------*/

Version 2.14(2016/08/01)

・v2.80beta19 のプラグイン仕様に対応(インターフェースのみ)

/*---------------------------------------------------------------------------*/

Version 2.13(2016/07/11)

・コンパイラを VS2015 update3 に変更
・v2.80beta17 のプラグイン仕様に対応(インターフェースのみ)

/*---------------------------------------------------------------------------*/

Version 2.12(2016/06/12)

・libmpg123 を 1.23.4(2016/05/11版)に差し替え

/*---------------------------------------------------------------------------*/

Version 2.11(2016/03/13)

・libmpg123 を 1.23.2(2016/02/23版)に差し替え

/*---------------------------------------------------------------------------*/

Version 2.10alpha(2015/11/30)

・2.70alpha8 のプラグイン仕様変更に対応

/*---------------------------------------------------------------------------*/

Version 2.09alpha5(2015/10/25)

・プラットフォームツールセットを Visual Studio 2015 - Windows XP (v140_xp) に
　変更(Windows XP でも動作するように)

/*---------------------------------------------------------------------------*/

Version 2.09alpha4(2015/10/18)

・コンパイラを VisualStudio2015 に変更
・64bit 版を作成

/*---------------------------------------------------------------------------*/

Version 2.08alpha(2015/09/24)

・KbMedia Player Version 2.70alpha の新プラグイン仕様に対応
　・アーカイブ形式によってはテンポラリファイルを作成せずに再生可能

/*---------------------------------------------------------------------------*/

Version 2.07(2015/09/15)

・LAME タグに書き込まれている LAME のバージョン取得の方法を変更
　・LAME 3.100alpha でエンコードされた曲の情報取得が出来るようになった

/*---------------------------------------------------------------------------*/

Version 2.06(2015/09/06)

・バージョン番号を飛ばして 2.06 にした
　・kbmp3.kpi を開発終了して kbmpg123.kpi を公開したときに 2.xx に変わったと
　　見なすことに
　・kbmp3.kpi を含む古いバージョンから上書きしたときに kbmp3.kpi よりも優先的
　　に使われるようにするため
・LAME3.90 未満でエンコードされた MP3 が VBR でも CBR と表示されるのを修正
・LAME タグに書き込まれたリプレイゲイン情報を本体に通知するようにした
　・リプレイゲインの処理は本体側で行う

/*---------------------------------------------------------------------------*/

Version 2.05(2015/08/30)

・VBRI の delay 値を反映させるようにした
　・vbri delay - 1152 - 529 を encoder delay 値と見なす
　・末尾の捨てるべきサンプル数が分からないのでギャップレス再生は不可

/*---------------------------------------------------------------------------*/

Version 2.04(2015/08/23)

・libmpg123 を 1.22.4(2015/8/12) に差し替え

/*---------------------------------------------------------------------------*/

Version 2.03(2015/08/15)

・VBRI ヘッダを含む VBR の演奏時間取得が正確になった
　・ギャップレス再生には未対応
　・ギャップレス再生に使えそうな情報(delay) があるが、解釈の仕方が不明
・kmp_GetTestTagInfo で以下の情報を通知するようにした
　・ビットレート(CBR/VBR/ABR を含む)
　・MPEG (MPEG 1.0 layer 3 etc...)
　・Stereo Mode (stereo/joint stereo/dual channel/mono)
　・VBR Tag の各種情報
　　・header (Xing/Info/VBRI)
　　・revision (LAME Tag revision 0, LAME Tag not found, VBRI version 1)
　　・encoder  (LAME3.xx, unknwon)
　　・quality  (50 (V5 and q0) etc...)
　　・delay    (VBRI の場合だけ表示)
　　・method   (cbr, abr, vbr mt etc...)  (以下、LAME Tag を含む場合だけ表示)
　　・lowpass  (19000Hz etc...)
　　・replaygain track peak (表示のみ対応。再生には不使用）
　　・replaygain track gain (表示のみ対応。再生には不使用）
　　・replaygain album gain (表示のみ対応。再生には不使用）
　　・nspsytune   (yes/no)
　　・nssafejoint (yes/no)
　　・nogap continued    (yes/no)
　　・nogap continuation (yes/no)
　　・ATH type (0 〜 15)
　　・bitrate (minimal (-b) bitrate 32 etc...)
　　・encoder delay (xxxx samples)
　　・padded at end (xxxx samples)
　　・noise shaping (0/1/2/3)
　　・stereo mode   (mono, stereo, dual, joint, force, auto, intensity...)
　　・unwise settings (yes/no)
　　・source sample freq (32kHz or smaller, 44.1kHz, 48kHz, higher than 48kHz)
　　・mp3 gain      (-1.5dB etc...)(表示のみ対応。再生には不使用)
　　・surround info (none, DPL/DPL2 encoding, Ambisonic encoding)
　　・preset flags  (01000011100) (11 桁のフラグ値の表示)
　　・music length  (XXXX bytes)
　　・music CRC     (タグに書き込まれた値、実際の値は非表示)
　　・info tag CRC  (タグに書き込まれた値、実際の値は非表示)
　　・LameTag 0.4.1
　　　https://phwip.wordpress.com/home/audio/
　　　を参考（ほぼ同様の表示）
　・タイトル等の情報取得は本体に任せる

/*---------------------------------------------------------------------------*/

Version 2.02(2015/06/28)

・データによっては末尾で無限ループに陥ってフリーズすることがあるバグを修正

/*---------------------------------------------------------------------------*/

Version 2.01(2015/06/21)

・SSE 対応 CPU 向けの最適化コードを組み込み
　・出力が 32bit float になった
　・本体が一旦 64bit に変換するので高速化の恩恵があまりないかも
・ID3 タグの処理等、使わないコードを省いて省サイズ化
・Info タグに対応(LAME でエンコードされた CBR のギャップレス再生に対応)
・シークテーブルを作成することにより2回目以降のシークが高速化
　・再生しながらシークテーブルを作成はしないので初回のシークは低速

/*---------------------------------------------------------------------------*/

Version 2.00(2015/06/14)

・初版(kbmp3.kpi の後継バージョン)
・ベースとした libmpg123 は 1.22.2(2015/5/24)
・LAME タグを認識し、ギャップレス再生に対応
・本体からのビット数要求を無視して常に 64bit float で出力

-------------------------------------------------------------------------------
Kobarin(hidkob@pb.highway.ne.jp)
https://kobarin.sakura.ne.jp/
