3

ビデオでのアルファの使用を妨げている libvpx のバグを見つけました。私はバグを修正しましたが、libvpx を再構築する必要があることを意味します (ヘッダーとライブラリを除いて、以前のビルドは時の霧の中で失われます)。バージョン 1.6.1 を取得し、https://github.com/webmproject/libvpxの指示に従い、 Windows 10 の Bash で次のコマンド ラインを使用して Visual Studio 2015 ソリューションを生成しました。

configure --target=x86_64-win64-vs14 --as=auto --enable-vp9-highbitdepth --enable-vp8 --enable-vp9 --enable-error-concealment --enable-runtime-cpu-detect --enable-libyuv

すべて問題ないようです: Visual Studio 2015 でソリューションを開いて vpx プロジェクトをビルドしようとしましたが、多くのオブジェクト ファイルとアセンブリ ソースが生成されましたが、最終的に次のエラーが発生しました。

LINK : fatal error LNK1181: cannot open input file 'x64\Debug\vpx\vpx_ports_emms_asm.obj'

この名前のソース ファイルは存在しないため、対応する obj ファイルはありません。プロジェクトを調べると、多数の .mk ファイルがあり、そのうちの 1 つは vpx_ports という名前で、次のテキストが含まれています。

PORTS_SRCS-yes += vpx_ports.mk

PORTS_SRCS-yes += bitops.h
PORTS_SRCS-yes += mem.h
PORTS_SRCS-yes += msvc.h
PORTS_SRCS-yes += system_state.h
PORTS_SRCS-yes += vpx_timer.h

ifeq ($(ARCH_X86)$(ARCH_X86_64),yes)
PORTS_SRCS-yes += emms.asm
PORTS_SRCS-yes += x86.h
PORTS_SRCS-yes += x86_abi_support.asm
endif

PORTS_SRCS-$(ARCH_ARM) += arm_cpudetect.c
PORTS_SRCS-$(ARCH_ARM) += arm.h

これは、私がよく知らないメイクファイルの魔法のようなものに見えます。プロジェクトには他の vpx_ports_* ファイルはありません。プロジェクトには他にもいくつかの .mk ファイルがあります。

Cygwin が推奨されており、Windows では Bash ではなく Cygwin を使用してみましたが、同じ結果が得られました。最終的には、バグを修正して生活を続けたいと思っています。リンカーのバグを解決する方法を説明したり、別のビルド メカニズムを提案したりするなど、どんな助けも歓迎します。

[編集 1]
進行状況: ビルド スクリプトは、次のような asm ファイルのカスタム ビルド コマンドを作成します。

yasm -Xvc -g cv8 -f win64  -I"." -I".." "%(FullPath)" -o $(IntDir)vpx_ports_emms_asm.obj

ただし、yasm の最新バージョンでは、-o は出力ファイル名ではなく出力ディレクトリを指定します (ドキュメントに記載されている内容にもかかわらず)。ファイルは実際に正常に emms.obj にアセンブルされました。残念ながら、出力ファイル名を指定するオプションはないようです。

4

1 に答える 1