カスタム Electron をビルドしてみた備忘録です.

カスタム Electron をビルドって?
最近使い始めた Wave Terminal ですが,
$ wsh open test.mp4
のようにするだけで,ターミナル内で動画を再生できます.また,macOS, Windows, Linux と環境を問わず使えるのですが,macOS と Windows だと x265(HEVC とも言うらしい)の動画を再生できるのに,なぜか Linux だとできません.

少し調べると Wave Terminal では,デスクトップアプリケーションフレームワーク Electron が使われていて,Electron は Chromium がベースになっていて,Chromium は HEVC の再生機能が省かれている(最新版ならハードウェアデコードはサポートされているらしい)ことが分かりました.
また,
を見ると,HEVC のソフトウェアデコードのパッチがあり,いまのところきちんとメインテナンスもされているようだったので,試しに最新版の Electron にこのパッチをあてたものを作成してみようかな,と思った訳ですね.
なお,結論から言えば,
止めときゃ良かった
とちょっと後悔しています.ものすごく時間がかかるだけじゃなくて,結構たくさん修正しないといけなくて,すごく面倒です.当たり前ですがこれで終わりじゃありませんしね.Wave Terminal もビルドし直さないといけないですからね.
しかし,せっかくやってみたので以下備忘録として方法を記しておきます.

準備
ビルドマシンの準備
まず,ビルド専用の端末(マシン)を使います.手元にあるノートPCとかでも可能でですが,止めといた方が良いです.もちろん適当な仮想マシンでも良いと思います.
理由は,
- ソースコードだけで 130Gbyte 程度ダウンロードが必要で,
- ビルド専用の環境を準備しないといけないですし,
- ものすごく時間がかかる
からです.
私の場合は少し古いですが,すでに使わなくなって放置してあった,
- CPU: Intel Xeon E3-1225 v3(4コア4スレッド)
- Memory: 16GByte
- Storage: 1TByte
のマシンに Ubuntu 24.04 Server を入れ,これに
- podman(環境を汚さないため)
- tmux(スリープ対策)
をインストールしました.このマシンを ssh で遠隔操作してビルドを実行します.


ビルド用コンテナの準備
ベースマシンの Ubuntu 24.04 の環境を壊さないように実際のビルドはさらにそれ専用のコンテナを使います.また,ベースマシンのホームディレクトリで,
$ mkdir ~/src
として,Electron のソースコード等はこのフォルダ以下にダウンロードすることにしました.Dockerfile 等を準備して以下の作業を自動化するのもそれほど難しいことではありませんが,今回は面倒だったのでそこまではしていません.
まず,tmux を起動しておきます(PCのスリープ対策等のため).
$ cd ~/src $ tmux
次に,
$ podman run -it -v $(pwd):/src ubuntu:24.04 bash
でビルドを実行するコンテナを起動します.すると,
root@595bd1818b6a:~#
のようにコンテナのプロンプトが表示されます(595bd1818b6a はビルド用に起動したコンテナの ID です)./src にベースマシンの ~/src がマウントされています.
次は,コンテナに必要なパッケージを追加します.最新版の git を導入するため PPA を追加していることにご注意ください.また,パッケージの導入途中で systemd-network 等にエラーが表示されますが,これは無視して構いません.また Timezone を尋ねられますが,これも適当に設定してOKです(通常は Asia/Tokyo に設定だと思います).
root@595bd1818b6a:/# apt update;apt install software-properties-common -y
root@595bd1818b6a:/# add-apt-repository ppa:git-core/ppa # 途中 ENTER を入力
root@595bd1818b6a:/# apt install build-essential clang libdbus-1-dev libgtk-3-dev \
libnotify-dev libasound2-dev libcap-dev \
libcups2-dev libxtst-dev \
libxss1 libnss3-dev gcc-multilib g++-multilib curl \
gperf bison python3-dbusmock openjdk-8-jre \
git npm htop vim -y
必要なパッケージを導入したら,次は,現時点の最新安定版の node(node 24)を導入します.node 24 を導入し終えたら,Ubuntu 24.04 標準の node 18 を念の為削除します.
root@595bd1818b6a:/# npm install n -g root@595bd1818b6a:/# n stable root@595bd1818b6a:/# apt purge -y nodejs npm;apt autoremove -y
また,念のため,git と node の ver. を確認しておきます.
root@595bd1818b6a:/# git -v git version 2.52.0 root@595bd1818b6a:/# node -v v24.12.0 root@595bd1818b6a:/# npm -v 11.6.2
なお,間違えてコンテナを終了させてしまった場合は以下のような感じで再起動と再接続を行えます.
root@595bd1818b6a:/# exit $ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 595bd1818b6a docker.io/library/ubuntu:24.04 bash About an hour ago Exited (0) About a minute ago charming_einstein $ podman start 595bd1818b6a $ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 595bd1818b6a docker.io/library/ubuntu:24.04 bash About an hour ago Up 11 seconds charming_einstein $ podman exec -it 595bd1818b6a bash root@595bd1818b6a:/# npm -v 11.6.2

Electron のビルド
基本的に公式の案内に従います.公式の Linux でのビルド手順の解説は以下に載せられています.

depot_tools のインストール
Chromium とその依存関係のダウンロードのため,depot_tools をインストールしておきます.
root@595bd1818b6a:~# cd /src root@595bd1818b6a:/src# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git root@595bd1818b6a:/src# export PATH=/src/depot_tools:$PATH root@595bd1818b6a:/src# git config --global user.name "hyt adversaria" root@595bd1818b6a:/src# git config --global user.email "[email protected]" root@595bd1818b6a:/src# git config --global core.autocrlf false root@595bd1818b6a:/src# git config --global core.filemode false root@595bd1818b6a:/src# git config --global color.ui true
コンテナ内のどのディレクトリでコマンドを入力しているのかを
root@595bd1818b6a:/src#
のように示していることにご注意ください.

コードを取得
Electron のソースコードを取得します.
root@595bd1818b6a:/src# mkdir electron-gn && cd electron-gn root@595bd1818b6a:/src/electron-gn# gclient config --name "src/electron" --unmanaged https://github.com/electron/electron WARNING: Your metrics.cfg file was invalid or nonexistent. A new one will be created. root@595bd1818b6a:/src/electron-gn# gclient sync --with_branch_heads --with_tags
公式のドキュメントに,
これはしばらくかかります。コーヒーでも飲みに行きましょう。
と記されていますが,コーヒーのみに行くどころじゃないです.少なく見積もっても半日程度かかりました.また,ダウンロードするソースコードの容量も約 130Gbyte と膨大です.途中スリープで接続を切断される等に備えて,ターミナルをデタッチしておくと良いと思います(tmux をこのために最初に導入しておいた.なお,tmux のデタッチは,CTRL+b のあとに CTRL+d です).
デタッチしておけば,ssh を切断しても処理は続行されますし,復帰(アタッチ)も,
$ tmux a
で簡単にできます.top もしくは htop でプロセスを表示させればダウンロードが終了したかどうかすぐに分かります.

将来に備える
将来公式の electron リポジトリから git pull する可能性がある場合のみ以下を実行しておく必要があるようなのです.
root@595bd1818b6a:/src/electron-gn# cd src/electron root@595bd1818b6a:/src/electron-gn/src/electron# git remote remove origin root@595bd1818b6a:/src/electron-gn/src/electron# git remote add origin https://github.com/electron/electron root@595bd1818b6a:/src/electron-gn/src/electron# git checkout main root@595bd1818b6a:/src/electron-gn/src/electron# git branch --set-upstream-to=origin/main root@595bd1818b6a:/src/electron-gn/src/electron# cd -

Electron の依存関係の解決
Electron の依存関係を解決しておきます.Electron の ver. を指定する場合は(本稿執筆時点だと最新安定版は v39.2.7)以下を実行します.
root@595bd1818b6a:/src/electron-gn# cd src/electron root@595bd1818b6a:/src/electron-gn/src/electron# git checkout v39.2.7 root@595bd1818b6a:/src/electron-gn/src/electron# git pull root@595bd1818b6a:/src/electron-gn/src/electron# gclient sync -f root@595bd1818b6a:/src/electron-gn/src/electron# cd -
リリース情報については,

をご覧ください.最新版の場合は,git checktou v39.2.7 の実行は不要です.

パッチの適用
HEVC と Widevine に対応させるために,以下のパッチを適用します.ただし,Electron は ver. 40 でかなり HEVC のサポートが拡充されているようなので,わざわざ苦労してパッチを当てる必要がないのかもしれないです(細かくは調べてないのでよく分かってません).
まず,patch を取得します.
root@595bd1818b6a:/src/electron-gn# git clone https://github.com/StaZhu/enable-chromium-hevc-hardware-decoding.git
ただし,このまま適用しても途中で失敗するので,以下のパッチのパッチを作成し,
root@595bd1818b6a:/src/electron-gn# cd enable-chromium-hevc-hardware-decoding/
root@595bd1818b6a:/src/electron-gn/enable-chromium-hevc-hardware-decoding# vi add-hevc-ffmpeg-decoder-parser.patch.patch
diff --git a/add-hevc-ffmpeg-decoder-parser.patch b/add-hevc-ffmpeg-decoder-parser.patch
index ce2b106..9d05a78 100644
--- a/add-hevc-ffmpeg-decoder-parser.patch
+++ b/add-hevc-ffmpeg-decoder-parser.patch
@@ -2763,7 +2763,7 @@ diff --git a/ffmpeg_generated.gni b/ffmpeg_generated.gni
index a9d7ad8fad..46eb6b3c35 100644
--- a/ffmpeg_generated.gni
+++ b/ffmpeg_generated.gni
-@@ -226,6 +226,27 @@ if (((current_cpu == "arm64" || current_cpu == "arm64e") &&
+@@ -288,6 +288,27 @@
(is_apple && ffmpeg_branding == "Chrome") ||
(is_win && ffmpeg_branding == "Chrome") ||
(use_linux_config && ffmpeg_branding == "Chrome")) {
@@ -2791,8 +2791,33 @@ index a9d7ad8fad..46eb6b3c35 100644
ffmpeg_c_sources += [
"libavcodec/atsc_a53.c",
"libavcodec/autorename_libavcodec_videodsp.c",
-@@ -343,6 +364,19 @@ if (use_linux_config && current_cpu == "riscv64" &&
-
+@@ -323,6 +344,24 @@
+ if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
+ (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") ||
+ (use_linux_config && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
++
++ ffmpeg_c_sources += [
++ "libavcodec/x86/bswapdsp_init.c",
++ "libavcodec/x86/hevc/dsp_init.c",
++ "libavcodec/x86/h26x/h2656dsp.c"
++ ]
++
++ ffmpeg_asm_sources += [
++ "libavcodec/x86/bswapdsp.asm",
++ "libavcodec/x86/hevc/add_res.asm",
++ "libavcodec/x86/hevc/deblock.asm",
++ "libavcodec/x86/hevc/idct.asm",
++ "libavcodec/x86/hevc/mc.asm",
++ "libavcodec/x86/hevc/sao.asm",
++ "libavcodec/x86/hevc/sao_10bit.asm",
++ "libavcodec/x86/h26x/h2656_inter.asm"
++ ]
++
+ ffmpeg_c_sources += [
+ "libavcodec/x86/autorename_libavcodec_x86_aacpsdsp_init.c",
+ "libavcodec/x86/autorename_libavcodec_x86_h264dsp_init.c",
+@@ -442,6 +481,19 @@
+
if ((current_cpu == "arm64" || current_cpu == "arm64e") &&
ffmpeg_branding == "Chrome") {
+
@@ -2810,8 +2835,8 @@ index a9d7ad8fad..46eb6b3c35 100644
+
ffmpeg_c_sources += [
"libavcodec/aarch64/aacpsdsp_init_aarch64.c",
- "libavcodec/aarch64/autorename_libavcodec_aarch64_videodsp_init.c",
-@@ -458,6 +492,11 @@ if ((is_android && current_cpu == "arm" && arm_use_neon) ||
+ "libavcodec/aarch64/h264chroma_init_aarch64.c",
+@@ -521,6 +573,11 @@
if ((use_linux_config && current_cpu == "arm" && arm_use_neon &&
ffmpeg_branding == "Chrome") ||
(use_linux_config && current_cpu == "arm" && ffmpeg_branding == "Chrome")) {
@@ -2823,33 +2848,8 @@ index a9d7ad8fad..46eb6b3c35 100644
ffmpeg_c_sources += [
"libavcodec/arm/h264chroma_init_arm.c",
"libavcodec/arm/h264dsp_init_arm.c",
-@@ -476,6 +515,24 @@ if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
- (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") ||
- (is_win && current_cpu == "x86" && ffmpeg_branding == "Chrome") ||
- (use_linux_config && current_cpu == "x86" && ffmpeg_branding == "Chrome")) {
-+
-+ ffmpeg_c_sources += [
-+ "libavcodec/x86/bswapdsp_init.c",
-+ "libavcodec/x86/hevc/dsp_init.c",
-+ "libavcodec/x86/h26x/h2656dsp.c"
-+ ]
-+
-+ ffmpeg_asm_sources += [
-+ "libavcodec/x86/bswapdsp.asm",
-+ "libavcodec/x86/hevc/add_res.asm",
-+ "libavcodec/x86/hevc/deblock.asm",
-+ "libavcodec/x86/hevc/idct.asm",
-+ "libavcodec/x86/hevc/mc.asm",
-+ "libavcodec/x86/hevc/sao.asm",
-+ "libavcodec/x86/hevc/sao_10bit.asm",
-+ "libavcodec/x86/h26x/h2656_inter.asm"
-+ ]
-+
- ffmpeg_c_sources += [
- "libavcodec/x86/aacpsdsp_init.c",
- "libavcodec/x86/h264_intrapred_init.c",
-@@ -489,6 +546,18 @@ if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") ||
-
+@@ -537,6 +594,18 @@
+
if (use_linux_config && current_cpu == "arm" && arm_use_neon &&
ffmpeg_branding == "Chrome") {
+
このパッチをパッチファイルに適用します.
root@595bd1818b6a:/src/electron-gn/enable-chromium-hevc-hardware-decoding# git am add-hevc-ffmpeg-decoder-parser.patch.patch
改変したパッチを以下のように適用します.
root@595bd1818b6a:/src/electron-gn/enable-chromium-hevc-hardware-decoding# cd ../src/third_party/ffmpeg root@595bd1818b6a:/src/electron-gn/src/third_party/ffmpeg# git am ../../../enable-chromium-hevc-hardware-decoding/add-hevc-ffmpeg-decoder-parser.patch root@595bd1818b6a:/src/electron-gn/src/third_party/ffmpeg# cd ../.. root@595bd1818b6a:/src/electron-gn/src# git am ../enable-chromium-hevc-hardware-decoding/enable-hevc-ffmpeg-decoding.patch root@595bd1818b6a:/src/electron-gn/src# cp -R ../enable-chromium-hevc-hardware-decoding/widevine/* third_party/widevine/cdm

Electron のビルド
環境変数の設定
まず,CHROMIUM BUILD TOOLS 環境変数をセットします.
root@595bd1818b6a:/src/electron-gn/src# export CHROMIUM_BUILDTOOLS_PATH=`pwd`/buildtools

Release ビルド設定
次に Electron の release ビルド設定を以下のように生成します.
root@595bd1818b6a:/src/electron-gn/src# gn gen out/Release --args="import(\"//electron/build/args/release.gn\")"

ビルドエラーへの対応
ビルドは ninja を使うのですが,このままだと途中でエラーが出るので,対応する部分を修正しておきます(エラーが出る都度修正しても良いと思います).修正内容は以下の通りです.
- third_party/node/linux/node-linux-x64/bin/node に実行権限を追加
- third_party/ffmpeg/libavcodec/hevc 以下にある C のソースのインクルードファイルの在処の一部を親ディレクトリに修正
third_party/node/linux/node-linux-x64/bin/node の実行権限の修正
third_party/node/linux/node-linux-x64/bin/node の実行権限の修正は,
root@595bd1818b6a:/src/electron-gn/src# chmod +x third_party/node/linux/node-linux-x64/bin/node
とするだけです.
third_party/ffmpeg/libavcodec/hevc 以下の修正
third_party/ffmpeg/libavcodec/hevc 以下の修正内容は以下の通りです.単にインクルードファイルをひとつ上の親ディレクトリから読み込むだけの変更なのですが,書き換え箇所が多いので,以下の内容のパッチファイルを作成して git am で適用するのが早いと思います.
root@595bd1818b6a:/src/electron-gn/src/third_party/ffmpeg/libavcodec/hevc# git diff .
diff --git a/libavcodec/hevc/cabac.c b/libavcodec/hevc/cabac.c
index 55d5741f87..a276681925 100644
--- a/libavcodec/hevc/cabac.c
+++ b/libavcodec/hevc/cabac.c
@@ -24,7 +24,7 @@
#include "libavutil/attributes.h"
#include "libavutil/common.h"
-#include "cabac_functions.h"
+#include "../cabac_functions.h"
#include "data.h"
#include "hevc.h"
#include "hevcdec.h"
diff --git a/libavcodec/hevc/dsp_template.c b/libavcodec/hevc/dsp_template.c
index a0f79c2673..4c90f0ba3f 100644
--- a/libavcodec/hevc/dsp_template.c
+++ b/libavcodec/hevc/dsp_template.c
@@ -20,13 +20,13 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "get_bits.h"
+#include "../get_bits.h"
#include "hevcdec.h"
-#include "bit_depth_template.c"
+#include "../bit_depth_template.c"
#include "dsp.h"
-#include "h26x/h2656_sao_template.c"
-#include "h26x/h2656_inter_template.c"
+#include "../h26x/h2656_sao_template.c"
+#include "../h26x/h2656_inter_template.c"
static void FUNC(put_pcm)(uint8_t *_dst, ptrdiff_t stride, int width, int height,
GetBitContext *gb, int pcm_bit_depth)
@@ -817,7 +817,7 @@ static void FUNC(put_hevc_epel_bi_w_hv)(uint8_t *_dst, ptrdiff_t _dststride,
#define TQ2 pix[2 * xstride + 3 * ystride]
#define TQ3 pix[3 * xstride + 3 * ystride]
-#include "h26x/h2656_deblock_template.c"
+#include "../h26x/h2656_deblock_template.c"
static void FUNC(hevc_loop_filter_luma)(uint8_t *_pix,
ptrdiff_t _xstride, ptrdiff_t _ystride,
diff --git a/libavcodec/hevc/filter.c b/libavcodec/hevc/filter.c
index 68ae0e9ef6..7195b08b42 100644
--- a/libavcodec/hevc/filter.c
+++ b/libavcodec/hevc/filter.c
@@ -26,7 +26,7 @@
#include "libavutil/internal.h"
#include "hevcdec.h"
-#include "progressframe.h"
+#include "../progressframe.h"
#define LUMA 0
#define CB 1
diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c
index 7be175a1eb..2884382f46 100644
--- a/libavcodec/hevc/hevcdec.c
+++ b/libavcodec/hevc/hevcdec.c
@@ -39,24 +39,24 @@
#include "libavutil/tdrdi.h"
#include "libavutil/timecode.h"
-#include "aom_film_grain.h"
-#include "bswapdsp.h"
-#include "cabac_functions.h"
-#include "codec_internal.h"
-#include "decode.h"
-#include "golomb.h"
-#include "h274.h"
+#include "../aom_film_grain.h"
+#include "../bswapdsp.h"
+#include "../cabac_functions.h"
+#include "../codec_internal.h"
+#include "../decode.h"
+#include "../golomb.h"
+#include "../h274.h"
#include "hevc.h"
#include "parse.h"
#include "hevcdec.h"
-#include "hwaccel_internal.h"
-#include "hwconfig.h"
-#include "internal.h"
-#include "profiles.h"
-#include "progressframe.h"
+#include "../hwaccel_internal.h"
+#include "../hwconfig.h"
+#include "../internal.h"
+#include "../profiles.h"
+#include "../progressframe.h"
#include "libavutil/refstruct.h"
-#include "thread.h"
-#include "threadprogress.h"
+#include "../thread.h"
+#include "../threadprogress.h"
static const uint8_t hevc_pel_weight[65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 };
diff --git a/libavcodec/hevc/mvs.c b/libavcodec/hevc/mvs.c
index 55f115ad0c..9f6de98347 100644
--- a/libavcodec/hevc/mvs.c
+++ b/libavcodec/hevc/mvs.c
@@ -23,7 +23,7 @@
#include "hevc.h"
#include "hevcdec.h"
-#include "progressframe.h"
+#include "../progressframe.h"
static const uint8_t l0_l1_cand_idx[12][2] = {
{ 0, 1, },
diff --git a/libavcodec/hevc/parse.c b/libavcodec/hevc/parse.c
index 29f21a5966..cb7c946d06 100644
--- a/libavcodec/hevc/parse.c
+++ b/libavcodec/hevc/parse.c
@@ -16,8 +16,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "bytestream.h"
-#include "h2645_parse.h"
+#include "../bytestream.h"
+#include "../h2645_parse.h"
#include "hevc.h"
#include "parse.h"
diff --git a/libavcodec/hevc/parser.c b/libavcodec/hevc/parser.c
index 62bcd91172..e9d02b0c7a 100644
--- a/libavcodec/hevc/parser.c
+++ b/libavcodec/hevc/parser.c
@@ -23,14 +23,14 @@
#include "libavutil/common.h"
#include "libavutil/mem.h"
-#include "golomb.h"
+#include "../golomb.h"
#include "hevc.h"
-#include "parser_internal.h"
+#include "../parser_internal.h"
#include "parse.h"
#include "ps.h"
#include "sei.h"
-#include "h2645_parse.h"
-#include "parser.h"
+#include "../h2645_parse.h"
+#include "../parser.h"
#define START_CODE 0x000001 ///< start_code_prefix_one_3bytes
diff --git a/libavcodec/hevc/pred_template.c b/libavcodec/hevc/pred_template.c
index b4c2fcf506..07eb849540 100644
--- a/libavcodec/hevc/pred_template.c
+++ b/libavcodec/hevc/pred_template.c
@@ -22,7 +22,7 @@
#include "libavutil/pixdesc.h"
-#include "bit_depth_template.c"
+#include "../bit_depth_template.c"
#include "pred.h"
#define POS(x, y) src[(x) + stride * (y)]
diff --git a/libavcodec/hevc/ps.c b/libavcodec/hevc/ps.c
index 7b9dbbcff8..3089c891b5 100644
--- a/libavcodec/hevc/ps.c
+++ b/libavcodec/hevc/ps.c
@@ -25,11 +25,11 @@
#include "libavutil/imgutils.h"
#include "libavutil/mem.h"
-#include "golomb.h"
-#include "h2645_vui.h"
+#include "../golomb.h"
+#include "../h2645_vui.h"
#include "data.h"
#include "ps.h"
-#include "profiles.h"
+#include "../profiles.h"
#include "libavutil/refstruct.h"
static const uint8_t default_scaling_list_intra[] = {
diff --git a/libavcodec/hevc/refs.c b/libavcodec/hevc/refs.c
index ccf7258ec4..f31bc9f149 100644
--- a/libavcodec/hevc/refs.c
+++ b/libavcodec/hevc/refs.c
@@ -25,11 +25,11 @@
#include "libavutil/mem.h"
#include "libavutil/stereo3d.h"
-#include "decode.h"
+#include "../decode.h"
#include "hevc.h"
#include "hevcdec.h"
-#include "progressframe.h"
-#include "thread.h"
+#include "../progressframe.h"
+#include "../thread.h"
#include "libavutil/refstruct.h"
void ff_hevc_unref_frame(HEVCFrame *frame, int flags)
diff --git a/libavcodec/hevc/sei.c b/libavcodec/hevc/sei.c
index 5fd4e763b3..466520db4c 100644
--- a/libavcodec/hevc/sei.c
+++ b/libavcodec/hevc/sei.c
@@ -22,8 +22,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "bytestream.h"
-#include "golomb.h"
+#include "../bytestream.h"
+#include "../golomb.h"
#include "ps.h"
#include "sei.h"

ninja でのビルド
修正後,ninja でビルドを開始します.
root@595bd1818b6a:/src/electron-gn/src# ninja -C out/Release electron
もちろんビルドが終わるまでにかなりの時間がかかります(ninja の表示だと約 45000 ステップほどあるらしい).
最後に zip ファイルにまとめます.
root@595bd1818b6a:/src/electron-gn/src# ninja -C out/Release electron:electron_dist_zip
これは5分くらいでしょうか.完了すると,~/src/electron-gn/src/out/Release 以下(コンテナ内だと /src/electron-gn/src/out/Release 以下)に dist.zip というファイル名で保存されます.お疲れ様でした.
ただし,最初の節に書きましたが,私の場合は Wave Terminal で HEVC ファイルが再生できるようにしたいので Electron をカスタムビルドしたのですから,まだこれでも道なかばです.しかし,いい加減記事としては長大になってしまったので,これについては別記事で紹介したいと思います.
以上!

