Mr-Ojii / ifheif

HEIF/AVIF Susie plugin
MIT License
9 stars 1 forks source link

GetPluginInfoで期待する応答が返らない為、拡張子とファイルが紐付かない #3

Closed reina-n closed 8 months ago

reina-n commented 8 months ago

GetPluginInfoの応答は、 2n+2と2n+3で拡張子とそのファイルの説明を羅列していくとありました。 この説明自体少し分かりづらいですが、nは0から始まるようです。

https://www2f.biglobe.ne.jp/~kana/spi_api/spi_getplugininfo.html

情報番号0と1はすべてのバージョンで共通とします。 2以降は二つづつ組みでSusieのOPENダイアログで用いる情報です。 一つのplug-inで複数の画像フォーマットに対応している場合はその数だけ拡張子とファイル形式名を用意します。

どう応答が違ってファイルと紐づかないのかと思ったのですが crwtoolsのソースコードを参照した所、spi.cpp内で2と3で.crwを、4と5で.cr2を記述しており、説明の通りでした。

一方、ifheif.hppでは 2が".heif;.heic;.avif"となっており、特にifheif.cppでも加工されていないので ローダーは.heif;.heic;*.avifという拡張子を探しているのではないかと思いました。

Mr-Ojii commented 8 months ago

ご提示いただいた https://www2f.biglobe.ne.jp/~kana/spi_api/spi_getplugininfo.html には

情報番号 意味
0 Plug-in APIバージョン
1 Plug-in名、バージョン及びcopyright.
SusieのAbout..に表示されます
2n+2 代表的な拡張子("*.JPG" "*.RGB;*.Q0"など)
2n+3 ファイル形式名
SusieのOpenダイアログに表示されます

とあり、

"*.RGB;*.Q0"など

;区切りで複数拡張子を列挙して記述することは規格として認められていることが伺えます。 これは、同じJPEGファイルでも*.jpeg, *.jpgといった複数拡張子が存在するためであると考えられます。

また、ifheifでは同一ファイル形式ではなく、複数ファイル形式を;区切りで列挙しています。 これは、AviUtlの拡張編集に正常に読み込ませるためには、このように記述する必要があったためです。 非常に紛らわしい実装になってしまっていることについて、この場でお詫び申し上げます。 当該事項について言及したコメントアウトを追記いたします。

規格としては認められているはずの記述であるため、何らかの不具合が発生していた場合はSusie-Pluginを読み込む側の問題である可能性があります。 こちらでも検証ができれば行いたいため、何というアプリケーションに用いたのかお伺いしたいです。 よろしくお願いいたします。

reina-n commented 8 months ago

ご確認いただきありがとうございます。 改めて検証した所、IFJPEGXをバイナリで見てみると同じような書き方になっており、 *.jpgには反応するものの、*.jfifが反応していない状態でした。 全体を拡張子として見ているのではなく、最初の区切りだけは拾っているようでした。

また、この方法になっている経緯も確認いたしました。 確かにバグではなく許容されている形式で問題ないと思います。失礼いたしました。

使用したローダーはWinFDのMIELモードで、開発がすでに終了しております。 heicに反応すれば良いので、バイナリエディタでheifとheicを逆にパッチした所、反応いたしました。

本件クローズして問題ございません。

Mr-Ojii commented 8 months ago

承知いたしました。

当該事項については、コメントアウトとしてifheif.hppに追記いたしました。

ご報告ありがとうございました。