ただし書きが悲しいですよね…。x86版の方は形になりましたのでここまででいったん公開です。
放置しすぎたためにGUIDが違うわライブラリがビルドできないわ…
発端は「使ったときにWMVやWebMがうまく再生できない」というメールでした。少しだけ時間の余裕ができたので調べてみようと思いビルド環境を組み上げ…ることがなんと至難なことか。
まあ、わかりやすく言うとさすがに10年ほど前にビルドしたものなので環境が違いすぎること。特に
- VisualStudioのバージョンを2010から2017への変更
- WebM系のライブラリをできる限り最新環境へとアップデート
の2点を行ったのですが、特に後者がかなり難しかったというのが大変だった理由で、今回x64版がビルドできなかった理由だったりします。
webmdshow(WebMをDirectShow経由で再生するライブラリ)が2015年以降ほぼ更新されていない!
そう、今回の最大の問題点がこれだったわけです。つまりVisualStudio2017(やそれよりも新しいVisualStudio)を前提にしていないコードのままになっていた、というのが問題だったわけです。特に
- DirectShowの基本ライブラリ(BaseClasses)と同じ名前を使っているために名前空間の分離が必要(これは前から)
- オーディオの読み取り部分でVorbisを読み込むパターンしかなく、Opusを読み込むパターンが用意されていない
- 付属のlibvpxが古いため最新のlibvpxをビルドする必要がある
の3点が問題になりました。1点目は根性で相変わらずカバーです。2点目については今回Opusに関しては元から変換フィルタだけは用意されていたのでwebmdshow側でOpusが来たときにフォーマットを認識するコードを追加することでこれはなんとか回避しました。ところが3点目についてlibvpxはx86版はビルドできたのですが、x64版はアセンブラがコンパイルできないためにライブラリの生成に失敗する、という現象でストップしてしまいました。ソリューションの作成はLinux側で作ることで回避できるのですが、アセンブラがコンパイルできない問題はさすがに予定外です。何が悪いのか今現在はさっぱりわからないのでこちらは保留状態になっています。
Visual Studio 2017に対応していないライブラリ群は除外することに
一部のライブラリが古すぎてコンパイラのコード生成に失敗したりライブラリのリンクに失敗するという問題がありましたので0.15の段階でサポートを外すことにしました。もし使いたい場合は一応0.14版も残しておきますのでそちらを利用してみてください。何のサポートがなくなったはソフトウェアのページで確認してみてください。